From c38778a24ea10e8e4791b4e3f3ce3f92a3ef49ba Mon Sep 17 00:00:00 2001
From: Julian Andres Klode <jak@debian.org>
Date: Sun, 16 Feb 2025 17:58:07 +0100
Subject: [PATCH] Import Debian version 2.9.30

---
 .gitlab-ci.yml                                |   21 +-
 CMake/Documentation.cmake                     |    4 +-
 CMake/FindGCRYPT.cmake                        |   25 -
 CMake/Misc.cmake                              |    2 -
 CMake/Translations.cmake                      |    1 +
 CMake/config.h.in                             |    7 +
 CMake/vendor_substitute.cmake                 |    3 +-
 CMakeLists.txt                                |   25 +-
 COPYING                                       |   43 +-
 README.md                                     |    1 -
 abicheck/apt_build.xml.in                     |    9 +
 abicheck/apt_installed.xml.in                 |    9 +
 abicheck/symbol-merge.py                      |  217 +
 apt-pkg/CMakeLists.txt                        |   20 +-
 apt-pkg/acquire-item.cc                       |  164 +-
 apt-pkg/acquire-item.h                        |  228 +-
 apt-pkg/acquire-method.cc                     |   34 +-
 apt-pkg/acquire-method.h                      |    7 +-
 apt-pkg/acquire-worker.cc                     |  203 +-
 apt-pkg/acquire.cc                            |   64 +-
 apt-pkg/acquire.h                             |   12 +-
 apt-pkg/algorithms.cc                         |  129 +-
 apt-pkg/algorithms.h                          |   39 +-
 apt-pkg/aptconfiguration.cc                   |   72 +-
 apt-pkg/aptconfiguration.h                    |    8 +-
 apt-pkg/cachefile.cc                          |   16 +-
 apt-pkg/cachefile.h                           |    2 +-
 apt-pkg/cachefilter-patterns.cc               |  145 +-
 apt-pkg/cachefilter-patterns.h                |   59 +-
 apt-pkg/cachefilter.cc                        |    2 +-
 apt-pkg/cachefilter.h                         |   68 +-
 apt-pkg/cacheiterators.h                      |   62 +-
 apt-pkg/cacheset.cc                           |   12 +-
 apt-pkg/cacheset.h                            |   35 +-
 apt-pkg/cdrom.cc                              |   11 +-
 apt-pkg/cdrom.h                               |    3 +-
 apt-pkg/clean.cc                              |    2 +-
 apt-pkg/contrib/arfile.cc                     |    2 +-
 apt-pkg/contrib/cdromutl.cc                   |   38 +-
 apt-pkg/contrib/cmndline.cc                   |    6 +-
 apt-pkg/contrib/configuration.cc              |  210 +-
 apt-pkg/contrib/configuration.h               |   11 +-
 apt-pkg/contrib/error.cc                      |   49 +-
 apt-pkg/contrib/error.h                       |   29 +-
 apt-pkg/contrib/extracttar.cc                 |   16 +-
 apt-pkg/contrib/fileutl.cc                    |  796 ++--
 apt-pkg/contrib/fileutl.h                     |   52 +-
 apt-pkg/contrib/gpgv.cc                       |  511 ++-
 apt-pkg/contrib/gpgv.h                        |   26 +-
 apt-pkg/contrib/hashes.cc                     |  203 +-
 apt-pkg/contrib/hashes.h                      |   12 +-
 apt-pkg/contrib/macros.h                      |   52 +-
 apt-pkg/contrib/mmap.cc                       |    4 +-
 apt-pkg/contrib/progress.cc                   |   15 +-
 apt-pkg/contrib/progress.h                    |    4 +-
 apt-pkg/contrib/proxy.cc                      |   53 +-
 apt-pkg/contrib/proxy.h                       |    4 +-
 apt-pkg/contrib/srvrec.cc                     |    7 +-
 apt-pkg/contrib/string_view.h                 |  163 -
 apt-pkg/contrib/strutl.cc                     |  191 +-
 apt-pkg/contrib/strutl.h                      |   63 +-
 apt-pkg/contrib/weakptr.h                     |    2 +-
 apt-pkg/deb/debfile.cc                        |    4 +-
 apt-pkg/deb/debfile.h                         |   11 +-
 apt-pkg/deb/debindexfile.cc                   |   16 +-
 apt-pkg/deb/debindexfile.h                    |  114 +-
 apt-pkg/deb/deblistparser.cc                  |  264 +-
 apt-pkg/deb/deblistparser.h                   |   78 +-
 apt-pkg/deb/debmetaindex.cc                   |  188 +-
 apt-pkg/deb/debmetaindex.h                    |   32 +-
 apt-pkg/deb/debrecords.cc                     |   42 +-
 apt-pkg/deb/debrecords.h                      |   40 +-
 apt-pkg/deb/debsrcrecords.cc                  |   32 +-
 apt-pkg/deb/debsrcrecords.h                   |   35 +-
 apt-pkg/deb/debsystem.cc                      |   54 +-
 apt-pkg/deb/debsystem.h                       |   20 +-
 apt-pkg/deb/debversion.cc                     |    6 +-
 apt-pkg/deb/debversion.h                      |   12 +-
 apt-pkg/deb/dpkgpm.cc                         |  166 +-
 apt-pkg/deb/dpkgpm.h                          |   17 +-
 apt-pkg/depcache.cc                           |  140 +-
 apt-pkg/depcache.h                            |   23 +-
 apt-pkg/dirstream.cc                          |    2 +-
 apt-pkg/edsp.cc                               |   74 +-
 apt-pkg/edsp.h                                |    2 +-
 apt-pkg/edsp/edspindexfile.cc                 |   18 +-
 apt-pkg/edsp/edspindexfile.h                  |   32 +-
 apt-pkg/edsp/edsplistparser.cc                |   20 +-
 apt-pkg/edsp/edsplistparser.h                 |   22 +-
 apt-pkg/edsp/edspsystem.cc                    |    4 +-
 apt-pkg/edsp/edspsystem.h                     |   40 +-
 apt-pkg/indexcopy.cc                          |   84 +-
 apt-pkg/indexcopy.h                           |   24 +-
 apt-pkg/indexfile.cc                          |    3 +
 apt-pkg/indexfile.h                           |   48 +-
 apt-pkg/init.cc                               |   26 +-
 apt-pkg/install-progress.cc                   |   16 +-
 apt-pkg/install-progress.h                    |   97 +-
 apt-pkg/metaindex.cc                          |   18 +-
 apt-pkg/metaindex.h                           |   19 +-
 apt-pkg/orderlist.cc                          |    4 +-
 apt-pkg/packagemanager.cc                     |   22 +-
 apt-pkg/packagemanager.h                      |   19 +-
 apt-pkg/pkgcache.cc                           |  189 +-
 apt-pkg/pkgcache.h                            |   81 +-
 apt-pkg/pkgcachegen.cc                        |  290 +-
 apt-pkg/pkgcachegen.h                         |   66 +-
 apt-pkg/pkgrecords.cc                         |   15 +-
 apt-pkg/pkgrecords.h                          |    3 +-
 apt-pkg/policy.cc                             |   32 +-
 apt-pkg/policy.h                              |   14 +-
 apt-pkg/solver3.cc                            | 1016 +++++
 apt-pkg/solver3.h                             |  500 +++
 apt-pkg/sourcelist.cc                         |   20 +-
 apt-pkg/sourcelist.h                          |    2 +-
 apt-pkg/srcrecords.cc                         |    2 +-
 apt-pkg/tagfile-keys.list                     |    1 +
 apt-pkg/tagfile.cc                            |  212 +-
 apt-pkg/tagfile.h                             |   79 +-
 apt-pkg/upgrade.cc                            |  144 +-
 apt-pkg/upgrade.h                             |    2 +-
 apt-pkg/version.cc                            |    4 +-
 apt-pkg/versionmatch.cc                       |   20 +-
 apt-pkg/versionmatch.h                        |    4 +-
 apt-pkg/versionscript.in                      |   22 +
 apt-private/acqprogress.cc                    |   69 +-
 apt-private/acqprogress.h                     |   24 +-
 apt-private/private-cachefile.cc              |    4 +-
 apt-private/private-cacheset.cc               |    2 +-
 apt-private/private-cacheset.h                |   17 +-
 apt-private/private-cmndline.cc               |   62 +-
 apt-private/private-depends.cc                |    2 +-
 apt-private/private-download.cc               |   38 +-
 apt-private/private-download.h                |    1 +
 apt-private/private-install.cc                |  406 +-
 apt-private/private-json-hooks.cc             |   36 +-
 apt-private/private-list.cc                   |    8 +-
 apt-private/private-main.cc                   |   13 +-
 apt-private/private-moo.cc                    |    8 +-
 apt-private/private-output.cc                 |  390 +-
 apt-private/private-output.h                  |   56 +-
 apt-private/private-search.cc                 |    5 +-
 apt-private/private-show.cc                   |   48 +-
 apt-private/private-source.cc                 |   18 +-
 apt-private/private-sources.cc                |  227 +-
 apt-private/private-sources.h                 |    1 +
 apt-private/private-unmet.cc                  |    2 +-
 apt-private/private-update.cc                 |  150 +-
 apt-private/private-update.h                  |    1 +
 apt-private/private-upgrade.cc                |    4 +
 cmdline/CMakeLists.txt                        |   15 +-
 cmdline/apt-cache.cc                          |   96 +-
 cmdline/apt-cdrom.cc                          |    8 +-
 cmdline/apt-config.cc                         |    2 +-
 cmdline/apt-dump-solver.cc                    |   11 +-
 cmdline/apt-extracttemplates.cc               |   36 +-
 cmdline/apt-extracttemplates.h                |    8 +-
 cmdline/apt-get.cc                            |   14 +-
 cmdline/apt-helper.cc                         |   53 +-
 cmdline/apt-internal-planner.cc               |   12 +-
 cmdline/apt-internal-solver.cc                |   11 +-
 cmdline/apt-key.in                            |  831 ----
 cmdline/apt-mark.cc                           |   10 +-
 cmdline/apt-sortpkgs.cc                       |   32 +-
 cmdline/apt.cc                                |    3 +
 completions/bash/apt                          |    7 +-
 debian/NEWS                                   |   52 +-
 debian/apt-utils.install                      |    1 -
 debian/apt-utils.links                        |    2 +
 debian/apt.install                            |    7 +-
 debian/apt.manpages                           |    2 -
 debian/changelog                              |  994 ++++-
 debian/control                                |   30 +-
 debian/copyright                              |   43 +-
 debian/default-sequoia.config                 |    4 +
 debian/gbp.conf                               |    2 +-
 debian/libapt-pkg6.0.symbols                  | 1378 ------
 ...t-pkg6.0.install => libapt-pkg7.0.install} |    0
 debian/libapt-pkg7.0.symbols                  | 1318 ++++++
 debian/rules                                  |    2 +-
 debian/tests/control                          |   12 +-
 doc/CMakeLists.txt                            |    8 +-
 doc/apt-cache.8.xml                           |    8 +-
 doc/apt-get.8.xml                             |   56 +-
 doc/apt-key.8.xml                             |  246 --
 doc/apt-mark.8.xml                            |    5 +-
 doc/apt-patterns.7.xml                        |   11 +-
 doc/apt-secure.8.xml                          |   60 +-
 doc/apt-verbatim.ent                          |   41 +-
 doc/apt.8.xml                                 |   23 +-
 doc/apt.conf.5.xml                            |  182 +-
 doc/apt.ent                                   |   23 +-
 doc/apt_preferences.5.xml                     |   10 +-
 doc/design.dbk                                |   18 +-
 doc/examples/CMakeLists.txt                   |    2 +-
 doc/examples/configure-index                  |  137 +-
 doc/examples/ftp-archive.conf                 |    8 +-
 doc/files.dbk                                 |    3 -
 doc/guide.dbk                                 |   16 +-
 doc/json-hooks-protocol.md                    |   32 +-
 doc/method.dbk                                |    2 +-
 doc/po/apt-doc.pot                            |  911 ++--
 doc/po/de.po                                  | 2321 +++++-----
 doc/po/es.po                                  | 2189 +++++-----
 doc/po/fr.po                                  | 3764 ++++++++++-------
 doc/po/it.po                                  | 2499 ++++++-----
 doc/po/ja.po                                  | 2404 ++++++-----
 doc/po/nl.po                                  | 2125 +++++-----
 doc/po/pl.po                                  | 1933 +++++----
 doc/po/pt.po                                  | 2600 +++++++-----
 doc/po/pt_BR.po                               | 1283 +++---
 doc/po4a.conf                                 |    1 -
 doc/progress-reporting.md                     |    2 +-
 doc/sources.list.5.xml                        |   77 +-
 dselect/setup                                 |    4 +-
 ftparchive/apt-ftparchive.cc                  |   18 +-
 ftparchive/cachedb.cc                         |    4 +-
 ftparchive/cachedb.h                          |   15 +-
 ftparchive/contents.cc                        |  259 +-
 ftparchive/contents.h                         |   51 +-
 ftparchive/multicompress.cc                   |   15 +-
 ftparchive/multicompress.h                    |    4 +-
 ftparchive/override.cc                        |   68 +-
 ftparchive/override.h                         |   24 +-
 ftparchive/sources.cc                         |    8 +-
 ftparchive/writer.cc                          |  195 +-
 ftparchive/writer.h                           |   22 +-
 git-clang-format.sh                           |    2 +
 methods/CMakeLists.txt                        |   19 +-
 methods/aptmethod.h                           |   31 +-
 methods/basehttp.cc                           |   39 +-
 methods/basehttp.h                            |   11 +-
 methods/cdrom.cc                              |    6 +-
 methods/connect.cc                            |  408 +-
 methods/connect.h                             |    2 +-
 methods/copy.cc                               |   92 +-
 methods/file.cc                               |  111 +-
 methods/ftp.cc                                | 1188 ------
 methods/ftp.h                                 |   91 -
 methods/gpgv.cc                               |  181 +-
 methods/http.cc                               |   33 +-
 methods/http.h                                |   42 +-
 methods/mirror.cc                             |   25 +-
 methods/rfc2553emu.cc                         |    6 +-
 methods/rred.cc                               |   14 +-
 methods/rsh.cc                                |  561 ---
 methods/rsh.h                                 |   75 -
 methods/sqv.cc                                |  351 ++
 methods/store.cc                              |   19 +-
 po/CMakeLists.txt                             |    2 +-
 po/apt-all.pot                                |  460 +-
 po/ar.po                                      |  544 ++-
 po/ast.po                                     |  614 ++-
 po/bg.po                                      |  643 ++-
 po/bs.po                                      |  487 ++-
 po/ca.po                                      |  684 ++-
 po/cs.po                                      |  705 +--
 po/cy.po                                      |  609 ++-
 po/da.po                                      |  641 ++-
 po/de.po                                      |  662 ++-
 po/dz.po                                      |  620 ++-
 po/el.po                                      |  628 ++-
 po/es.po                                      |  661 ++-
 po/eu.po                                      |  616 ++-
 po/fi.po                                      |  611 ++-
 po/fr.po                                      |  661 ++-
 po/gl.po                                      |  638 ++-
 po/he.po                                      |   10 +-
 po/hu.po                                      |  641 ++-
 po/it.po                                      | 1125 +++--
 po/ja.po                                      |  639 ++-
 po/km.po                                      |  610 ++-
 po/ko.po                                      |  612 ++-
 po/ku.po                                      |  497 ++-
 po/lt.po                                      |  504 ++-
 po/mr.po                                      |  611 ++-
 po/nb.po                                      |  632 ++-
 po/ne.po                                      |  612 ++-
 po/nl.po                                      |  546 ++-
 po/nn.po                                      |  606 ++-
 po/pl.po                                      | 1900 ++++-----
 po/pt.po                                      |  635 ++-
 po/pt_BR.po                                   | 1691 +++++---
 po/ro.po                                      | 2166 ++++++----
 po/ru.po                                      |  694 ++-
 po/sk.po                                      |  638 ++-
 po/sl.po                                      |  636 ++-
 po/sv.po                                      | 1078 +++--
 po/th.po                                      |  629 ++-
 po/tl.po                                      |  612 ++-
 po/tr.po                                      |  823 ++--
 po/uk.po                                      |  643 ++-
 po/vi.po                                      |  634 ++-
 po/zh_CN.po                                   |  683 ++-
 po/zh_TW.po                                   |  611 ++-
 prepare-release                               |   15 +-
 test/integration/framework                    |  185 +-
 test/integration/run-tests                    |   70 +-
 test/integration/solver3.broken               |    9 +
 ...test-allow-scores-for-all-dependency-types |   54 +-
 test/integration/test-apt-by-hash-update      |    8 +-
 test/integration/test-apt-cache-showsrc       |    6 +
 test/integration/test-apt-cdrom               |    2 +
 test/integration/test-apt-cli-json-hooks      | 1130 ++++-
 test/integration/test-apt-cli-pager           |  127 +
 test/integration/test-apt-cli-show            |    7 +
 test/integration/test-apt-ftparchive-cachedb  |   73 +-
 .../test-apt-ftparchive-corner-cases          |   49 +
 test/integration/test-apt-get-autoremove      |   90 +-
 ...t-apt-get-autoremove-real-virtual-provider |   10 +
 test/integration/test-apt-get-build-dep       |    1 +
 .../test-apt-get-build-dep-barbarian          |   19 +-
 test/integration/test-apt-get-build-dep-file  |    5 +-
 test/integration/test-apt-get-clean           |   40 +-
 test/integration/test-apt-get-install-deb     |    7 +-
 test/integration/test-apt-get-install-update  |  111 +
 test/integration/test-apt-get-mark-auto       |   30 +
 test/integration/test-apt-get-satisfy         |    8 +-
 test/integration/test-apt-get-source-only     |  140 +
 .../test-apt-get-update-sourceslist-warning   |   57 +-
 .../test-apt-get-update-unauth-warning        |   74 +-
 test/integration/test-apt-get-upgrade         |   76 +
 .../test-apt-get-upgrade-by-source            |    8 +-
 test/integration/test-apt-helper              |   48 +-
 test/integration/test-apt-install-file-reltag |   29 +-
 test/integration/test-apt-key                 |  428 --
 test/integration/test-apt-key-net-update      |   41 -
 .../test-apt-key-used-in-maintainerscript     |   43 -
 test/integration/test-apt-modernize-sources   |   97 +
 .../test-apt-never-markauto-sections          |   17 +-
 test/integration/test-apt-progress-fd-error   |    2 +-
 test/integration/test-apt-update-ims          |    2 +-
 .../test-apt-update-incomplete-file-mirror    |   68 +
 test/integration/test-apt-update-nofallback   |   23 +-
 .../test-apt-update-repeated-ims-hit          |    4 +
 test/integration/test-apt-update-rollback     |    9 +-
 .../test-bug-1053887-regex-return-failure     |   21 +
 ...69874-working-with-not-normalized-packages |   57 +
 ...test-bug-470115-new-and-tighten-recommends |    2 -
 ...ug-549968-install-depends-of-not-installed |   22 +-
 test/integration/test-bug-591882-conkeror     |    3 +-
 .../test-bug-596498-trusted-unsigned-repo     |   13 +-
 ...bug-598669-install-postfix-gets-exim-heavy |    2 +
 test/integration/test-bug-601961-install-info |   15 +-
 .../test-bug-604222-new-and-autoremove        |   67 +-
 .../test-bug-611729-mark-as-manual            |    9 +-
 .../test-bug-612099-multiarch-conflicts       |    1 +
 .../test-bug-612557-garbage-upgrade           |    4 +-
 .../test-bug-613420-new-garbage-dependency    |    9 +-
 ...st-bug-618848-always-respect-user-requests |   23 +-
 ...t-bug-632221-cross-dependency-satisfaction |   11 +-
 ...bug-64141-install-dependencies-for-on-hold |   33 +
 ...est-bug-657695-resolver-breaks-on-virtuals |    9 +
 .../test-bug-675449-essential-are-protected   |   15 +-
 ...t-bug-683786-build-dep-on-virtual-packages |   10 +-
 ...st-bug-686346-package-missing-architecture |    1 +
 ...12116-dpkg-pre-install-pkgs-hook-multiarch |    1 +
 .../test-bug-720597-build-dep-purge           |    1 +
 ...est-bug-723586-any-stripped-in-single-arch |   15 +
 .../test-bug-733028-gpg-resource-limit        |    1 -
 .../test-bug-735967-lib32-to-i386-unavailable |   12 +-
 ...est-bug-745046-candidate-propagation-fails |   16 +-
 .../test-bug-747261-arch-specific-conflicts   |    1 +
 ...test-bug-758153-versioned-provides-support |   10 +-
 ...ug-769609-triggers-still-pending-after-run |    1 +
 .../test-bug-796070-downgrade-simulate        |    1 +
 .../test-bug-869859-retry-downloads           |   40 +-
 .../test-bug-921685-binary-detached-signature |    7 +-
 ...-propagate-protected-to-satisfied-conflict |   21 +-
 ...5-propagate-protected-to-satisfied-depends |   34 +-
 .../test-bug-961266-hold-means-hold           |   47 +-
 ...test-bug-lp1562402-nomark-removals-as-keep |    9 +
 test/integration/test-crossgrades             |    1 +
 test/integration/test-disappearing-packages   |   13 +-
 ...forget-conflicts-via-unknown-architectures |   44 +
 .../test-dpkg-i-apt-install-fix-broken        |   26 +-
 .../test-explore-or-groups-in-markinstall     |   42 +-
 .../test-external-dependency-solver-protocol  |   36 +-
 ...est-external-installation-planner-protocol |    1 +
 ...test-handle-redirect-as-used-mirror-change |   13 +-
 .../integration/test-handling-broken-orgroups |    6 +-
 test/integration/test-history                 |   40 +
 .../test-ignore-provides-if-versioned-breaks  |   10 +-
 ...est-ignore-provides-if-versioned-conflicts |    9 +-
 test/integration/test-ignored-files           |   42 +
 .../integration/test-kernel-helper-autoremove |   10 +-
 test/integration/test-method-gpgv             |  143 +-
 .../test-method-gpgv-legacy-keyring           |   45 +-
 test/integration/test-method-mirror           |   16 +-
 test/integration/test-multiarch-allowed       |   45 +-
 test/integration/test-multiarch-barbarian     |    1 +
 test/integration/test-multiarch-foreign       |    7 +-
 .../test-not-upgrading-removed-depends        |   51 +
 test/integration/test-or-group-substitution   |   45 +
 .../test-parse-all-archs-into-cache           |    1 +
 test/integration/test-pdiff-usage             |   28 +-
 .../test-phased-updates-new-depends           |   96 +
 test/integration/test-phased-updates-upgrade  |  144 +-
 test/integration/test-policy-pinning          |   17 +-
 .../test-prefer-higher-priority-providers     |    4 +-
 .../test-release-candidate-switching          |   24 +-
 .../integration/test-releasefile-verification |  132 +-
 .../test-releasefile-verification-noflat      |    2 +-
 .../test-resolve-by-keep-obsolete-removals    |   47 +
 .../test-resolver-delays-remove-decisions     |   60 +-
 .../test-resolver-provider-exchange           |    2 +
 .../test-same-version-but-different           |   11 +
 test/integration/test-signed-by-option        |   50 +-
 test/integration/test-snapshot                |  340 ++
 test/integration/test-snapshot-upgrades       |  156 +
 .../test-solver-recommends-depends            |   46 +
 test/integration/test-solver3-dependencies    |   75 +
 test/integration/test-solver3-obsoleted-by    |   90 +
 .../test-specific-architecture-dependencies   |    7 +-
 .../test-suggests-promoted-to-recommends      |   65 +
 ...ntu-bug-1304403-obsolete-priority-standard |    1 +
 test/integration/test-ubuntu-bug-1974196      |   23 +-
 ...est-ubuntu-bug-2025462-phased-dist-upgrade |   52 +
 test/integration/test-ubuntu-bug-614993       |   23 +-
 .../test-unpack-different-version-unpacked    |    2 +-
 test/interactive-helper/CMakeLists.txt        |    2 +
 test/interactive-helper/aptwebserver.cc       |   25 +-
 .../createdeb-cve-2020-27350.cc               |   10 +-
 test/interactive-helper/mthdcat.cc            |    5 +-
 test/interactive-helper/rpmver.cc             |    6 +-
 test/interactive-helper/teestream.h           |    8 +-
 test/interactive-helper/test_fileutl.cc       |    2 +-
 test/interactive-helper/test_udevcdrom.cc     |    4 +-
 test/interactive-helper/testdeb.cc            |    2 +-
 test/interactive-helper/testkeep.cc           |   57 +
 test/libapt/CMakeLists.txt                    |   10 +-
 test/libapt/acqprogress_test.cc               |    6 +-
 test/libapt/assert_pubkeyalgo_test.cc         |   56 +
 test/libapt/authconf_test.cc                  |    2 +-
 test/libapt/cachefilter_test.cc               |    2 +-
 test/libapt/cdrom_test.cc                     |    4 +-
 test/libapt/cdromfindpackages_test.cc         |    4 +-
 test/libapt/commandline_test.cc               |    2 +-
 test/libapt/common.h                          |   11 +
 test/libapt/compareversion_test.cc            |    4 +-
 test/libapt/configuration_test.cc             |   34 +-
 test/libapt/extracttar_test.cc                |   12 +-
 test/libapt/file-helpers.cc                   |    2 +-
 test/libapt/fileutl_test.cc                   |    8 +-
 test/libapt/getarchitectures_test.cc          |    2 +-
 test/libapt/getlanguages_test.cc              |    2 +-
 test/libapt/getlistoffilesindir_test.cc       |    2 +-
 test/libapt/globalerror_test.cc               |    8 +-
 test/libapt/gtest_runner.cc                   |    2 +-
 test/libapt/hashsums_test.cc                  |    4 +-
 test/libapt/indexcopytosourcelist_test.cc     |   12 +-
 test/libapt/install_progress_test.cc          |   22 +-
 test/libapt/json_test.cc                      |    2 +-
 test/libapt/openmaybeclearsignedfile_test.cc  |    2 +-
 test/libapt/parsedepends_test.cc              |   89 +-
 test/libapt/pattern_test.cc                   |    2 +-
 test/libapt/priority_test.cc                  |    2 +-
 test/libapt/sourcelist_test.cc                |    6 +-
 test/libapt/srvrecs_test.cc                   |    2 +-
 test/libapt/stringview_test.cc                |   95 -
 test/libapt/strutil_test.cc                   |   26 +-
 test/libapt/tagfile_test.cc                   |    6 +-
 test/libapt/tagsection_test.cc                |    2 +-
 test/libapt/teestream_test.cc                 |    2 +-
 test/libapt/uri_test.cc                       |    2 +-
 vendor/CMakeLists.txt                         |   16 +-
 vendor/README                                 |   11 +-
 vendor/blankon/apt-vendor.ent                 |    4 -
 vendor/debian/apt-vendor.ent                  |   14 +-
 vendor/debian/debian.sources.in               |   36 +
 vendor/debian/sources.list.in                 |    8 -
 vendor/getinfo                                |    2 +-
 vendor/procursus/apt-vendor.ent               |    4 -
 vendor/raspbian/apt-vendor.ent                |    4 -
 vendor/steamos/apt-vendor.ent                 |    4 -
 vendor/ubuntu/apt-vendor.ent                  |   14 +-
 vendor/ubuntu/sources.list.in                 |   10 -
 vendor/ubuntu/ubuntu.sources.in               |   44 +
 478 files changed, 49390 insertions(+), 31936 deletions(-)
 delete mode 100644 CMake/FindGCRYPT.cmake
 create mode 100644 abicheck/symbol-merge.py
 delete mode 100644 apt-pkg/contrib/string_view.h
 create mode 100644 apt-pkg/solver3.cc
 create mode 100644 apt-pkg/solver3.h
 create mode 100644 apt-pkg/versionscript.in
 delete mode 100644 cmdline/apt-key.in
 create mode 100644 debian/apt-utils.links
 create mode 100644 debian/default-sequoia.config
 delete mode 100644 debian/libapt-pkg6.0.symbols
 rename debian/{libapt-pkg6.0.install => libapt-pkg7.0.install} (100%)
 create mode 100644 debian/libapt-pkg7.0.symbols
 delete mode 100644 doc/apt-key.8.xml
 delete mode 100644 methods/ftp.cc
 delete mode 100644 methods/ftp.h
 delete mode 100644 methods/rsh.cc
 delete mode 100644 methods/rsh.h
 create mode 100644 methods/sqv.cc
 create mode 100644 test/integration/solver3.broken
 create mode 100755 test/integration/test-apt-cli-pager
 create mode 100755 test/integration/test-apt-ftparchive-corner-cases
 create mode 100755 test/integration/test-apt-get-install-update
 create mode 100755 test/integration/test-apt-get-mark-auto
 create mode 100755 test/integration/test-apt-get-source-only
 delete mode 100755 test/integration/test-apt-key
 delete mode 100755 test/integration/test-apt-key-net-update
 delete mode 100755 test/integration/test-apt-key-used-in-maintainerscript
 create mode 100755 test/integration/test-apt-modernize-sources
 create mode 100755 test/integration/test-apt-update-incomplete-file-mirror
 create mode 100755 test/integration/test-bug-1053887-regex-return-failure
 create mode 100755 test/integration/test-bug-1069874-working-with-not-normalized-packages
 create mode 100755 test/integration/test-dont-forget-conflicts-via-unknown-architectures
 create mode 100755 test/integration/test-history
 create mode 100755 test/integration/test-ignored-files
 create mode 100755 test/integration/test-not-upgrading-removed-depends
 create mode 100755 test/integration/test-or-group-substitution
 create mode 100755 test/integration/test-phased-updates-new-depends
 create mode 100755 test/integration/test-resolve-by-keep-obsolete-removals
 create mode 100755 test/integration/test-snapshot
 create mode 100755 test/integration/test-snapshot-upgrades
 create mode 100755 test/integration/test-solver-recommends-depends
 create mode 100755 test/integration/test-solver3-dependencies
 create mode 100755 test/integration/test-solver3-obsoleted-by
 create mode 100755 test/integration/test-suggests-promoted-to-recommends
 create mode 100755 test/integration/test-ubuntu-bug-2025462-phased-dist-upgrade
 create mode 100644 test/interactive-helper/testkeep.cc
 create mode 100644 test/libapt/assert_pubkeyalgo_test.cc
 create mode 100644 test/libapt/common.h
 delete mode 100644 test/libapt/stringview_test.cc
 create mode 100644 vendor/debian/debian.sources.in
 delete mode 100644 vendor/debian/sources.list.in
 delete mode 100644 vendor/ubuntu/sources.list.in
 create mode 100644 vendor/ubuntu/ubuntu.sources.in

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index da5b0a5..4a6d56c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,11 @@
-image: debian:bookworm
+image: debian:testing
 variables:
   DEBIAN_FRONTEND: noninteractive
   CCACHE_DIR: $CI_PROJECT_DIR/.ccache
   CCACHE_BASEDIR: $CI_PROJECT_DIR
   APT_CMAKE_BUILD_OPTIONS: ''
   DEB_BUILD_PROFILES: ''
+  BUILD_PRE: ':'
 cache:
   paths:
     - .ccache
@@ -12,11 +13,12 @@ before_script:
     - rm -f /etc/dpkg/dpkg.cfg.d/excludes
     - apt-get update
     - apt-get install --no-install-recommends -qq build-essential expect sudo ccache moreutils adduser
-    - adduser --home /home/travis travis --quiet --disabled-login --gecos "" --uid 1000
+    - adduser --home /home/travis travis --quiet --disabled-login --gecos "" --shell /bin/sh
     - chmod 755 /root
     - chmod -R o+rwX $PWD
     - ./prepare-release travis-ci
     - sudo -u travis mkdir -p build .ccache
+    - $BUILD_PRE
     - sudo -u travis env -C build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${APT_CMAKE_BUILD_OPTIONS} -G Ninja ..
     - sudo -u travis --preserve-env=CCACHE_DIR,CCACHE_BASEDIR ninja -C build
 
@@ -29,8 +31,21 @@ test as root:
     - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test
     - unbuffer ./test/integration/run-tests -q -j 4
 
+test solver3 and gpgv:
+  stage: test
+  variables:
+    APT_CMAKE_BUILD_OPTIONS: '-DWITH_DOC=OFF -DUSE_NLS=OFF'
+    DEB_BUILD_PROFILES: 'nodoc'
+    BUILD_PRE: 'rm /usr/bin/sqv'
+  script:
+    - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test
+    - unbuffer ./test/integration/run-tests -q -j 4 --solver 3.0 --skip solver3.broken
+
 test as user:
-  image: i386/debian:bookworm
+  image:
+    name: debian:testing
+    docker:
+      platform: linux/i386
   stage: test
   script:
     - apt-get install --no-install-recommends -qq libxml2-utils
diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake
index f3eb4c5..d7f1360 100644
--- a/CMake/Documentation.cmake
+++ b/CMake/Documentation.cmake
@@ -154,14 +154,16 @@ function(xsltproc_one)
     if (DOC_MANPAGE)
         if (language)
         set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${section}")
+        set(manpage_l10npath "/${language}")
         else()
+        set(manpage_l10npath "")
         set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.${section}")
         endif()
         set(manpage_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/manpage-style.xsl")
         set(manpage_params)
 
         install(FILES ${manpage_output}
-                DESTINATION ${CMAKE_INSTALL_MANDIR}/${language}/man${section}
+                DESTINATION ${CMAKE_INSTALL_MANDIR}${manpage_l10npath}/man${section}
                 OPTIONAL)
     endif()
     if (DOC_HTML)
diff --git a/CMake/FindGCRYPT.cmake b/CMake/FindGCRYPT.cmake
deleted file mode 100644
index 56bfc9f..0000000
--- a/CMake/FindGCRYPT.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# - Try to find GCRYPT
-# Once done, this will define
-#
-#  GCRYPT_FOUND - system has GCRYPT
-#  GCRYPT_INCLUDE_DIRS - the GCRYPT include directories
-#  GCRYPT_LIBRARIES - the GCRYPT library
-find_package(PkgConfig)
-
-pkg_check_modules(GCRYPT_PKGCONF libgcrypt)
-
-find_path(GCRYPT_INCLUDE_DIRS
-  NAMES gcrypt.h
-  PATHS ${GCRYPT_PKGCONF_INCLUDE_DIRS}
-)
-
-
-find_library(GCRYPT_LIBRARIES
-  NAMES gcrypt
-  PATHS ${GCRYPT_PKGCONF_LIBRARY_DIRS}
-)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(GCRYPT DEFAULT_MSG GCRYPT_INCLUDE_DIRS GCRYPT_LIBRARIES)
-
-mark_as_advanced(GCRYPT_INCLUDE_DIRS GCRYPT_LIBRARIES)
diff --git a/CMake/Misc.cmake b/CMake/Misc.cmake
index 8cb18b6..83a2eaf 100644
--- a/CMake/Misc.cmake
+++ b/CMake/Misc.cmake
@@ -74,8 +74,6 @@ function(add_version_script target)
                        COMMAND echo "${name} {global: *; };" > "${script}"
                        VERBATIM )
     add_custom_target(${target}-versionscript DEPENDS "${script}")
-    target_link_libraries(${target} PRIVATE -Wl,-version-script="${script}")
-    add_dependencies(${target} ${target}-versionscript)
 endfunction()
 
 function(path_join out path1 path2)
diff --git a/CMake/Translations.cmake b/CMake/Translations.cmake
index 2492510..a7fe6c9 100644
--- a/CMake/Translations.cmake
+++ b/CMake/Translations.cmake
@@ -16,6 +16,7 @@ function(apt_add_translation_domain)
     set(domain ${NLS_DOMAIN})
     set(xgettext_params
         --add-comments
+        --from-code=utf-8
         --foreign
         --package-name=${PROJECT_NAME}
         --package-version=${PACKAGE_VERSION}
diff --git a/CMake/config.h.in b/CMake/config.h.in
index e875c37..b2c5eac 100644
--- a/CMake/config.h.in
+++ b/CMake/config.h.in
@@ -79,3 +79,10 @@
 
 /* Group of the root user */
 #cmakedefine ROOT_GROUP "${ROOT_GROUP}"
+
+/* Whether to check for and require merged usr if a usrmerge package is available. */
+#cmakedefine REQUIRE_MERGED_USR
+
+#cmakedefine DEFAULT_PAGER "${DEFAULT_PAGER}"
+#cmakedefine PAGER_ENV "${PAGER_ENV}"
+#cmakedefine SQV_EXECUTABLE "${SQV_EXECUTABLE}"
diff --git a/CMake/vendor_substitute.cmake b/CMake/vendor_substitute.cmake
index 71449c9..277cb3a 100644
--- a/CMake/vendor_substitute.cmake
+++ b/CMake/vendor_substitute.cmake
@@ -2,7 +2,8 @@ file(READ ${IN} input)
 foreach(variable ${VARS})
     execute_process(COMMAND ${PROJECT_SOURCE_DIR}/vendor/getinfo
                             --vendor ${CURRENT_VENDOR} ${variable}
-                    OUTPUT_VARIABLE value OUTPUT_STRIP_TRAILING_WHITESPACE)
+                    OUTPUT_VARIABLE value OUTPUT_STRIP_TRAILING_WHITESPACE
+                    COMMAND_ERROR_IS_FATAL ANY)
     string(REPLACE "&${variable};" "${value}" input "${input}")
 endforeach()
 file(WRITE ${OUT} "${input}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b5ac2a5..40d23bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,14 +2,15 @@
 # Licensed under the same terms as APT; i.e. GPL 2 or later.
 
 # set minimum version
+cmake_minimum_required(VERSION 3.13)
 project(apt)
-cmake_minimum_required(VERSION 3.4.0)
 # Generic header locations
 include_directories(${PROJECT_BINARY_DIR}/include)
 
 
 enable_testing()
 
+option(REQUIRE_MERGED_USR "Require merged-usr." ON)
 option(WITH_DOC "Build all documentation." ON)
 include(CMakeDependentOption)
 cmake_dependent_option(WITH_DOC_MANPAGES "Force building manpages." OFF "NOT WITH_DOC" OFF)
@@ -45,6 +46,7 @@ find_package(Iconv REQUIRED)
 find_package(Perl REQUIRED)
 
 find_program(TRIEHASH_EXECUTABLE NAMES triehash)
+find_program(SQV_EXECUTABLE NAMES sqv)
 
 if (NOT TRIEHASH_EXECUTABLE)
   message(FATAL_ERROR "Could not find triehash executable")
@@ -84,16 +86,14 @@ add_optional_compile_options(Wdouble-promotion)
 add_optional_compile_options(Wsuggest-override)
 add_optional_compile_options(Werror=suggest-override)
 add_optional_compile_options(Werror=return-type)
+add_optional_compile_options(Wp,-D_GLIBCXX_ASSERTIONS)
 # apt-ftparchive dependencies
 find_package(Berkeley REQUIRED)
 if (BERKELEY_FOUND)
   set(HAVE_BDB 1)
 endif()
 
-find_package(GnuTLS REQUIRED)
-if (GNUTLS_FOUND)
-  set(HAVE_GNUTLS 1)
-endif()
+find_package(OpenSSL REQUIRED)
 
 # (De)Compressor libraries
 find_package(ZLIB REQUIRED)
@@ -139,7 +139,6 @@ if (SECCOMP_FOUND)
   set(HAVE_SECCOMP 1)
 endif()
 
-find_package(GCRYPT REQUIRED)
 find_package(XXHASH REQUIRED)
 
 # Mount()ing and stat()ing and friends
@@ -205,22 +204,25 @@ endif()
 # Configure some variables like package, version and architecture.
 set(PACKAGE ${PROJECT_NAME})
 set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>")
-set(PACKAGE_VERSION "2.6.1")
+set(PACKAGE_VERSION "2.9.30")
 string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION})
 
 if (NOT DEFINED DPKG_DATADIR)
   execute_process(COMMAND ${PERL_EXECUTABLE} -MDpkg -e "print $Dpkg::DATADIR;"
-                  OUTPUT_VARIABLE DPKG_DATADIR_CMD OUTPUT_STRIP_TRAILING_WHITESPACE)
+                  OUTPUT_VARIABLE DPKG_DATADIR_CMD OUTPUT_STRIP_TRAILING_WHITESPACE
+                  COMMAND_ERROR_IS_FATAL ANY)
   message(STATUS "Found dpkg data dir: ${DPKG_DATADIR_CMD}")
   set(DPKG_DATADIR "${DPKG_DATADIR_CMD}" CACHE PATH "dpkg data directory")
 endif()
 if (NOT DEFINED COMMON_ARCH)
   execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH
-                  OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+                  OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE
+                  COMMAND_ERROR_IS_FATAL ANY)
 endif()
 if (NOT DEFINED ROOT_GROUP)
   execute_process(COMMAND id -gn root
-                  OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE)
+                  OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE
+                  COMMAND_ERROR_IS_FATAL ANY)
   message(STATUS "Found root group: ${ROOT_GROUP}")
 endif()
 set(ROOT_GROUP "${ROOT_GROUP}" CACHE STRING "Group of root (e.g.: wheel or root)")
@@ -233,6 +235,9 @@ set(CONF_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt" CACHE PATH "Your /etc/apt")
 set(LIBEXEC_DIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/apt" CACHE PATH "Your /usr/libexec/apt")
 set(BIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}")
 
+# Setup the default pager and the environment
+set(DEFAULT_PAGER "pager" CACHE STRING "The default pager to use for commands that support it.")
+set(PAGER_ENV "LESS=FRX\\nMORE=FRX\\nLV=C" CACHE STRING "Environment to pass to the pager. One variable per line, with escaped newlines")
 
 # Configure our configuration headers (config.h and apti18n.h)
 configure_file(CMake/config.h.in ${PROJECT_BINARY_DIR}/include/config.h)
diff --git a/COPYING b/COPYING
index 21b874f..0f0e3f6 100644
--- a/COPYING
+++ b/COPYING
@@ -16,11 +16,8 @@ Comment:
  for the project has always been GPL-2+, so we cannot be sure that contributors
  meant to grant additional permissions.
  .
- Translation files are considered to generally be GPL-2+,
- but they also include strings used by methods/rsh.cc which appears to be GPL-2.
- As the translations are split into separate domains later on,
- these strings are not loaded by library users outside of apt
- (they are in the 'apt' translation domain).
+ Translation files are also considered to generally be GPL-2+,
+ but they might include strings used in code with other licenses.
  .
  The apt-pkg/contrib/fileutl.cc file states "RunScripts()" is "GPLv2".
  We believe that this was not meant to exclude later versions of the GPL,
@@ -52,22 +49,9 @@ Copyright: 1997-1999 Jason Gunthorpe and others
            2014 Anthony Towns
 License: GPL-2+
 
-Files: methods/rsh.cc
-Copyright: 2000 Ben Collins <bcollins@debian.org>
-License: GPL-2
-Comment:
- This file stated:
- Licensed under the GNU General Public License v2 [no exception clauses]
- .
- We believe that this was intended to be not a statement against future
- versions of the GPL, but meant to exclude the Qt license exception in
- place in APT until that time.
- .
- We received permission from Ben in 2021 to relicense under GPL-2+,
- contributions from Adam Heath and Daniel Hartwig may still have to
- be considered GPL-2 for the time being.
- .
- Other contributions are GPL-2+
+Files: methods/connect.c
+Copyright: Copyright (c) 1996 - 2023, Daniel Stenberg, <daniel@haxx.se>, and many contributors
+License: GPL-2+ and curl
 
 Files: CMake/FindBerkeley.cmake
 Copyright: 2006, Alexander Dymo, <adymo@kdevelop.org>
@@ -153,3 +137,20 @@ License: GPL-2+
 Comment:
  On Debian systems, the complete text of the GNU General
  Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+License: curl
+ Permission to use, copy, modify, and distribute this software for any purpose
+ with or without fee is hereby granted, provided that the above copyright
+ notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+ OR OTHER DEALINGS IN THE SOFTWARE.
+ .
+ Except as contained in this notice, the name of a copyright holder shall not
+ be used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization of the copyright holder.
diff --git a/README.md b/README.md
index b2a0fdb..58c3497 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,6 @@ Included tools are:
   as well as available packages
 * **apt-cdrom** to use removable media as a source for packages
 * **apt-config** as an interface to the configuration settings
-* **apt-key** as an interface to manage authentication keys
 * **apt-extracttemplates** to be used by debconf to prompt for configuration
   questions before installation
 * **apt-ftparchive** creates Packages and other index files
diff --git a/abicheck/apt_build.xml.in b/abicheck/apt_build.xml.in
index ec39466..0e5fcb3 100644
--- a/abicheck/apt_build.xml.in
+++ b/abicheck/apt_build.xml.in
@@ -9,3 +9,12 @@
  <libs>
   @build_path@/apt-pkg/
  </libs>
+
+ <skip_types>
+  SubstVar
+  _ns_flagdata
+ </skip_types>
+
+ <defines>
+  #define APT_COMPILING_APT 1
+ </defines>
diff --git a/abicheck/apt_installed.xml.in b/abicheck/apt_installed.xml.in
index c3ddd08..fbc74d3 100644
--- a/abicheck/apt_installed.xml.in
+++ b/abicheck/apt_installed.xml.in
@@ -9,3 +9,12 @@
 <libs>
  @installed_libapt@
 </libs>
+
+<skip_types>
+ SubstVar
+ _ns_flagdata
+</skip_types>
+
+<defines>
+ #define APT_COMPILING_APT 1
+</defines>
diff --git a/abicheck/symbol-merge.py b/abicheck/symbol-merge.py
new file mode 100644
index 0000000..1b4048e
--- /dev/null
+++ b/abicheck/symbol-merge.py
@@ -0,0 +1,217 @@
+"""
+Download packages from the archive and generate a symbols file for them.
+"""
+
+import argparse
+import glob
+import os
+import subprocess
+import re
+import sys
+import urllib.request
+
+import distro_info
+
+import apt_pkg
+import apt_inst
+
+import apt.progress.text
+
+STDLIB = (
+    "^typeinfo for std::"
+    "|^vtable for std::"
+    "|^typeinfo name for std::"
+    "|^guard variable for std::"
+    "|^std::"
+    "|^[a-z]* std::"
+    "|^typeinfo for __gnu_cxx::"
+    "|^vtable for __gnu_cxx::"
+    "|^typeinfo name for __gnu_cxx::"
+    "|^guard variable for __gnu_cxx::"
+    "|^__gnu_cxx::"
+    "|^[a-z]* __gnu_cxx::"
+)
+STDLIB_RE = re.compile(STDLIB)
+
+
+def get_archs(dist: str) -> set[str]:
+    if dist in distro_info.UbuntuDistroInfo().all:
+        url = f"https://snapshot.ubuntu.com/ubuntu/dists/{dist}/InRelease"
+    else:
+        url = f"https://deb.debian.org/debian/dists/{dist}/InRelease"
+    with urllib.request.urlopen(url) as rel:
+        for line in rel:
+            line = line.decode("utf-8")
+            if line.startswith("Architectures:"):
+                return set(line.split(":")[1].split()) - {"all"}
+    raise ValueError("Invalid Release file")
+
+
+def download_debs(dist: str) -> list[str]:
+    """Download the debs and return the list of filenames."""
+    runtime_dir = os.getenv("XDG_RUNTIME_DIR")
+    if runtime_dir is None:
+        raise ValueError("Need to set XDG_RUNTIME_DIR")
+    tmpdir = f"{runtime_dir}/apt/symbol-merger"
+    os.makedirs(f"{tmpdir}/etc/apt/sources.list.d", exist_ok=True)
+    os.makedirs(f"{tmpdir}/etc/apt/apt.conf.d", exist_ok=True)
+    os.makedirs(f"{tmpdir}/etc/apt/trusted.gpg.d", exist_ok=True)
+    os.makedirs(f"{tmpdir}/var/lib/apt/lists/partial", exist_ok=True)
+    os.makedirs(f"{tmpdir}/var/cache/apt/archives/partial", exist_ok=True)
+
+    if dist in distro_info.UbuntuDistroInfo().all:
+        url = "https://snapshot.ubuntu.com/ubuntu/"
+        keyring = "/usr/share/keyrings/ubuntu-archive-keyring.gpg"
+        suites = f"{dist} {dist}-updates"
+    else:
+        url = "https://deb.debian.org/debian/"
+        keyring = "/usr/share/keyrings/debian-archive-keyring.gpg"
+        suites = f"{dist}"
+
+    with open(f"{tmpdir}/etc/apt/sources.list.d/debian.sources", "w") as sources:
+        print("Types: deb", file=sources)
+        print(f"URIs: {url}", file=sources)
+        print(f"Suites: {suites}", file=sources)
+        print("Components: main", file=sources)
+        print(f"Signed-By: {keyring}", file=sources)
+        print(f"Architectures: {" ".join(archs)}", file=sources)
+        print("Targets: Packages", file=sources)
+        print("", file=sources)
+
+    apt_pkg.config.set("Dir", tmpdir)
+    apt_pkg.config.set("Dir::State::status", "/dev/null")
+    apt_pkg.config.set("APT::List-Cleanup", "false")
+    apt_pkg.init()
+    cache = apt_pkg.Cache()
+    sl = apt_pkg.SourceList()
+    sl.read_main_list()
+    cache.update(apt.progress.text.AcquireProgress(), sl, 500000)
+    cache = apt_pkg.Cache()
+    depcache = apt_pkg.DepCache(cache)
+
+    for arch in archs:
+        for _, _, ver in cache[("libapt-pkg", arch)].provides_list:
+            print("Mark", ver.parent_pkg.get_fullname(False), "for", arch, ver.ver_str)
+            depcache.mark_install(ver.parent_pkg, False)
+
+    acq = apt_pkg.Acquire(apt.progress.text.AcquireProgress())
+    pm = apt_pkg.PackageManager(depcache)
+    recs = apt_pkg.PackageRecords(cache)
+    pm.get_archives(acq, sl, recs)
+    acq.run()
+
+    return [itm.destfile for itm in acq.items]
+
+
+def read_main_symbols() -> dict[str, str]:
+    """Read the versions of already known symbols."""
+    symbols = {}
+    with open(glob.glob("debian/libapt-pkg*.symbols")[0]) as sf:
+        for line in sf:
+            if not line.startswith(" "):
+                if not symbols:
+                    prelude.append(line.strip())
+                continue
+            if line.startswith(" "):
+                symbol, version = line.strip().rsplit(None, 1)
+                if '"' in symbol:
+                    print(symbol.strip().split('"'))
+                    prefix="(c++|optional=std)" if "optional=std" in symbol else "(c++)"
+                    symbol = '{}"{}"'.format(prefix, symbol.strip().split('"')[1])
+                symbols[symbol] = version
+                # Register the symbol so we keep the ordering later.
+                print("SYMBOL", symbol)
+                symbol_archs[symbol] = set()
+    return symbols
+
+
+def read_symbol_file(debname: str) -> None:
+    deb = apt_inst.DebFile(debname)
+    arch = debname.split("_")[-1].split(".")[0]
+    symbols = deb.control.extractdata("symbols").decode("utf-8")
+    decoded_symbols = subprocess.Popen(
+        ["c++filt"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True
+    ).communicate(symbols)[0]
+    for line, decoded_line in zip(symbols.splitlines(), decoded_symbols.splitlines()):
+        if not line.startswith(" "):
+            continue
+        symbol, version = decoded_line.strip().rsplit(None, 1)
+        symbol = symbol.strip()
+        # Our version is higher than the registered one, so lower it again
+        if line != decoded_line:
+            if STDLIB_RE.search(symbol):
+                symbol = '(c++|optional=std)"{}"'.format(symbol)
+            else:
+                symbol = '(c++)"{}"'.format(symbol)
+        if (
+            symbol not in smallest_symbol_version
+            or apt_pkg.version_compare(version, smallest_symbol_version[symbol]) < 0
+        ):
+            smallest_symbol_version[symbol] = version
+
+        try:
+            symbol_archs[symbol].add(arch)
+        except KeyError:
+            symbol_archs[symbol] = {arch}
+        try:
+            latest_symbol_archs[symbol].add(arch)
+        except KeyError:
+            latest_symbol_archs[symbol] = {arch}
+
+
+def print_merged() -> None:
+    for line in prelude:
+        print(line)
+
+    for optional in False, True:
+        if optional:
+            print("# Optional C++ standard library symbols")
+            print("# These are inlined libstdc++ symbols and not supposed to be part of our ABI")
+            print("# but we cannot stop stuff from linking against it, sigh.")
+
+        for symbol, line_archs in symbol_archs.items():
+            if optional != ("optional=std" in symbol):
+                continue
+            if archs == line_archs:
+                print("", symbol, smallest_symbol_version[symbol])
+
+        for symbol, line_archs in symbol_archs.items():
+            if optional != ("optional=std" in symbol):
+                continue
+            if archs != line_archs and line_archs:
+                print_archs = " ".join(sorted(line_archs))
+                if len(line_archs) > len(archs - line_archs):
+                    print_archs = " ".join("!" + a for a in sorted(archs - line_archs))
+
+                if "(c++" in symbol:
+                    print(
+                        "",
+                        symbol.replace("(c++", f"(arch={print_archs}|c++"),
+                        smallest_symbol_version[symbol],
+                    )
+                else:
+                    print(
+                        f" (arch={print_archs}){symbol} {smallest_symbol_version[symbol]}"
+                    )
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument("dist", nargs="+")
+    args = parser.parse_args()
+    prelude: list[str] = []
+    symbol_archs: dict[str, set[str]] = {}
+    smallest_symbol_version: dict[str, str] = read_main_symbols()
+    for dist in args.dist:
+        latest_symbol_archs: dict[str, set[str]] = {}
+        archs = get_archs(dist)
+        for deb in download_debs(dist):
+            read_symbol_file(deb)
+    # Clean up removed symbols
+    for symbol in list(symbol_archs):
+        if symbol not in latest_symbol_archs:
+            del symbol_archs[symbol]
+        else:
+            symbol_archs[symbol] = latest_symbol_archs[symbol]
+    with open(glob.glob("debian/libapt-pkg*.symbols")[0], "w") as sys.stdout:
+        print_merged()
diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt
index d13aed9..7aaacd9 100644
--- a/apt-pkg/CMakeLists.txt
+++ b/apt-pkg/CMakeLists.txt
@@ -3,7 +3,8 @@ include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg)
 
 file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/apt-pkg/)
 execute_process(COMMAND grep -v "^#" "${CMAKE_CURRENT_SOURCE_DIR}/tagfile-keys.list"
-		OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list")
+		OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list"
+		COMMAND_ERROR_IS_FATAL ANY)
 execute_process(COMMAND ${TRIEHASH_EXECUTABLE}
                         --ignore-case
                          --header ${PROJECT_BINARY_DIR}/include/apt-pkg/tagfile-keys.h
@@ -13,7 +14,8 @@ execute_process(COMMAND ${TRIEHASH_EXECUTABLE}
                          --function-name pkgTagHash
                          --include "<apt-pkg/tagfile.h>"
                          --include "<apt-pkg/header-is-private.h>"
-                         "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list")
+                         "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list"
+                COMMAND_ERROR_IS_FATAL ANY)
 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "tagfile-keys.list")
 set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc" PROPERTIES COMPILE_DEFINITIONS APT_COMPILING_APT)
 
@@ -22,16 +24,19 @@ set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc" PROPER
 execute_process(COMMAND awk -v ORS=. "/^\#define APT_PKG_M/ {print \$3}"
                 COMMAND sed "s/\\.\$//"
                 INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
-                OUTPUT_VARIABLE MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+                OUTPUT_VARIABLE MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE
+                COMMAND_ERROR_IS_FATAL ANY)
 execute_process(COMMAND grep "^#define APT_PKG_RELEASE"
                 COMMAND cut -d " " -f 3
                 INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
-                OUTPUT_VARIABLE MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+                OUTPUT_VARIABLE MINOR OUTPUT_STRIP_TRAILING_WHITESPACE
+                COMMAND_ERROR_IS_FATAL ANY)
 
 message(STATUS "Building libapt-pkg ${MAJOR} (release ${MINOR})")
 set(APT_PKG_MAJOR ${MAJOR} PARENT_SCOPE) # exporting for methods/CMakeLists.txt
 
 configure_file(apt-pkg.pc.in ${CMAKE_CURRENT_BINARY_DIR}/apt-pkg.pc @ONLY)
+configure_file(versionscript.in ${CMAKE_CURRENT_BINARY_DIR}/versionscript @ONLY)
 
 # Definition of the C++ files used to build the library - note that this
 # is expanded at CMake time, so you have to rerun cmake if you add or remove
@@ -41,7 +46,6 @@ file(GLOB_RECURSE headers "*.h")
 
 # Create a library using the C++ files
 add_library(apt-pkg SHARED ${library})
-add_dependencies(apt-pkg apt-pkg-versionscript)
 # Link the library and set the SONAME
 target_include_directories(apt-pkg
                            PRIVATE ${ZLIB_INCLUDE_DIRS}
@@ -52,7 +56,7 @@ target_include_directories(apt-pkg
                                    $<$<BOOL:${UDEV_FOUND}>:${UDEV_INCLUDE_DIRS}>
                                    $<$<BOOL:${SYSTEMD_FOUND}>:${SYSTEMD_INCLUDE_DIRS}>
                                    ${ICONV_INCLUDE_DIRS}
-                                   $<$<BOOL:${GCRYPT_FOUND}>:${GCRYPT_INCLUDE_DIRS}>
+                                   ${OPENSSL_INCLUDE_DIRS}
                                    $<$<BOOL:${XXHASH_FOUND}>:${XXHASH_INCLUDE_DIRS}>
 )
 
@@ -67,13 +71,13 @@ target_link_libraries(apt-pkg
                              $<$<BOOL:${UDEV_FOUND}>:${UDEV_LIBRARIES}>
                              $<$<BOOL:${SYSTEMD_FOUND}>:${SYSTEMD_LIBRARIES}>
                              ${ICONV_LIBRARIES}
-                             $<$<BOOL:${GCRYPT_FOUND}>:${GCRYPT_LIBRARIES}>
+                             OpenSSL::Crypto
                              $<$<BOOL:${XXHASH_FOUND}>:${XXHASH_LIBRARIES}>
 )
 set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR})
 set_target_properties(apt-pkg PROPERTIES SOVERSION ${MAJOR})
 set_target_properties(apt-pkg PROPERTIES CXX_VISIBILITY_PRESET hidden)
-add_version_script(apt-pkg)
+target_link_libraries(apt-pkg PRIVATE -Wl,-version-script="${CMAKE_CURRENT_BINARY_DIR}/versionscript")
 
 # Install the library and the header files
 install(TARGETS apt-pkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 7df6483..87e5dde 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -5,7 +5,7 @@
    Acquire Item - Item to acquire
 
    Each item can download to exactly one file at a time. This means you
-   cannot create an item that fetches two uri's to two files at the same 
+   cannot create an item that fetches two uri's to two files at the same
    time. The pkgAcqIndex class creates a second class upon instantiation
    to fetch the other index files because of this.
 
@@ -32,8 +32,15 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <array>
+#include <cerrno>
 #include <ctime>
 #include <chrono>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
 #include <iostream>
 #include <memory>
 #include <numeric>
@@ -42,11 +49,6 @@
 #include <string>
 #include <unordered_set>
 #include <vector>
-#include <errno.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -140,10 +142,11 @@ static void ReportMirrorFailureToCentral(pkgAcquire::Item const &I, std::string
    if(!FileExists(report))
       return;
 
+   const auto DescURI = I.DescURI();
    std::vector<char const*> const Args = {
       report.c_str(),
       I.UsedMirror.c_str(),
-      I.DescURI().c_str(),
+      DescURI.c_str(),
       FailCode.c_str(),
       Details.c_str(),
       NULL
@@ -276,6 +279,15 @@ static HashStringList GetExpectedHashesFromFor(metaIndex * const Parser, std::st
    return R->Hashes;
 }
 									/*}}}*/
+static void RemoveOldLeftoverDiffIndex(IndexTarget const &Target)	/*{{{*/
+{
+   std::string const FinalFile = GetFinalFileNameFromURI(GetDiffIndexURI(Target));
+   RemoveFile("TransactionCommit", FinalFile);
+   for (auto const &ext: APT::Configuration::getCompressorExtensions())
+      if (not ext.empty() && ext != ".")
+	 RemoveFile("TransactionCommit", FinalFile + ext);
+}
+									/*}}}*/
 
 class pkgAcquire::Item::Private /*{{{*/
 {
@@ -414,12 +426,16 @@ bool pkgAcqTransactionItem::QueueURI(pkgAcquire::ItemDesc &Item)
 	 std::clog << "Skip " << Target.URI << " as transaction was already dealt with!" << std::endl;
       return false;
    }
-   std::string const FinalFile = GetFinalFilename();
-   if (TransactionManager->IMSHit == true && FileExists(FinalFile) == true)
+   if (TransactionManager->IMSHit)
    {
-      PartialFile = DestFile = FinalFile;
-      Status = StatDone;
-      return false;
+      std::string const FinalFile = GetFinalFilename();
+      if (FinalFile.empty() || FileExists(FinalFile))
+      {
+	 if (not FinalFile.empty())
+	    PartialFile = DestFile = FinalFile;
+	 Status = StatDone;
+	 return false;
+      }
    }
    // this ensures we rewrite only once and only the first step
    auto const OldBaseURI = Target.Option(IndexTarget::BASE_URI);
@@ -457,15 +473,16 @@ bool pkgAcqTransactionItem::QueueURI(pkgAcquire::ItemDesc &Item)
       // now add the actual by-hash uris
       auto const Expected = GetExpectedHashes();
       auto const TargetHash = Expected.find(nullptr);
-      auto const PushByHashURI = [&](std::string U) {
+      auto const PushByHashURI = [&](std::string const &U) {
 	 if (unlikely(TargetHash == nullptr))
 	    return false;
-	 auto const trailing_slash = U.find_last_of("/");
+	 ::URI uri{U};
+	 auto const trailing_slash = uri.Path.find_last_of("/");
 	 if (unlikely(trailing_slash == std::string::npos))
 	    return false;
-	 auto byhashSuffix = "/by-hash/" + TargetHash->HashType() + "/" + TargetHash->HashValue();
-	 U.replace(trailing_slash, U.length() - trailing_slash, std::move(byhashSuffix));
-	 PushAlternativeURI(std::move(U), {}, false);
+	 auto altPath = uri.Path.substr(0, trailing_slash) + "/by-hash/" + TargetHash->HashType() + "/" + TargetHash->HashValue();
+	 std::swap(uri.Path, altPath);
+	 PushAlternativeURI(uri, {{"Alternate-Paths", "../../"s += flNotDir(altPath)}}, false);
 	 return true;
       };
       PushByHashURI(Item.URI);
@@ -508,11 +525,7 @@ std::string pkgAcquire::Item::GetFinalFilename() const
 }
 std::string pkgAcqDiffIndex::GetFinalFilename() const
 {
-   std::string const FinalFile = GetFinalFileNameFromURI(GetDiffIndexURI(Target));
-   // we don't want recompress, so lets keep whatever we got
-   if (CurrentCompressionExtension == "uncompressed")
-      return FinalFile;
-   return FinalFile + "." + CurrentCompressionExtension;
+   return {};
 }
 std::string pkgAcqIndex::GetFinalFilename() const
 {
@@ -533,7 +546,7 @@ std::string pkgAcqMetaBase::GetFinalFilename() const
 }
 std::string pkgAcqArchive::GetFinalFilename() const
 {
-   return _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename);
+   return _config->FindDir("Dir::Cache::Archives") += flNotDir(StoreFilename);
 }
 									/*}}}*/
 // pkgAcqTransactionItem::GetMetaKey and specialisations for child classes	/*{{{*/
@@ -675,12 +688,11 @@ bool pkgAcqDiffIndex::TransactionState(TransactionStates const state)
 
    switch (state)
    {
-      case TransactionStarted: _error->Fatal("Item %s changed to invalid transaction start state!", Target.URI.c_str()); break;
+      case TransactionStarted: _error->Fatal("Item %s changed to invalid transaction start state!", GetDiffIndexURI(Target).c_str()); break;
       case TransactionCommit:
+	 RemoveOldLeftoverDiffIndex(Target);
 	 break;
       case TransactionAbort:
-	 std::string const Partial = GetPartialFileNameFromURI(Target.URI);
-	 RemoveFile("TransactionAbort", Partial);
 	 break;
    }
 
@@ -708,15 +720,15 @@ bool pkgAcqIndexDiffs::AcquireByHash() const
 }
 									/*}}}*/
 
-class APT_HIDDEN NoActionItem : public pkgAcquire::Item			/*{{{*/
+class APT_HIDDEN NoActionItem final : public pkgAcquire::Item		/*{{{*/
 /* The sole purpose of this class is having an item which does nothing to
    reach its done state to prevent cleanup deleting the mentioned file.
    Handy in cases in which we know we have the file already, like IMS-Hits. */
 {
    IndexTarget const Target;
    public:
-   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI;};
-   virtual HashStringList GetExpectedHashes()  const APT_OVERRIDE {return HashStringList();};
+   [[nodiscard]] std::string DescURI() const override {return Target.URI;};
+   [[nodiscard]] HashStringList GetExpectedHashes() const override {return {};};
 
    NoActionItem(pkgAcquire * const Owner, IndexTarget const &Target) :
       pkgAcquire::Item(Owner), Target(Target)
@@ -732,15 +744,15 @@ class APT_HIDDEN NoActionItem : public pkgAcquire::Item			/*{{{*/
    }
 };
 									/*}}}*/
-class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem		/*{{{*/
+class APT_HIDDEN CleanupItem final : public pkgAcqTransactionItem	/*{{{*/
 /* This class ensures that a file which was configured but isn't downloaded
    for various reasons isn't kept in an old version in the lists directory.
    In a way its the reverse of NoActionItem as it helps with removing files
    even if the lists-cleanup is deactivated. */
 {
    public:
-   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI;};
-   virtual HashStringList GetExpectedHashes()  const APT_OVERRIDE {return HashStringList();};
+   [[nodiscard]] std::string DescURI() const override {return Target.URI;};
+   [[nodiscard]] HashStringList GetExpectedHashes() const override {return {};};
 
    CleanupItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) :
       pkgAcqTransactionItem(Owner, TransactionManager, Target)
@@ -748,7 +760,7 @@ class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem		/*{{{*/
       Status = StatDone;
       DestFile = GetFinalFileNameFromURI(Target.URI);
    }
-   bool TransactionState(TransactionStates const state) APT_OVERRIDE
+   bool TransactionState(TransactionStates const state) override
    {
       switch (state)
       {
@@ -761,6 +773,7 @@ class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem		/*{{{*/
 	       std::clog << "rm " << DestFile << " # " << DescURI() << std::endl;
 	    if (RemoveFile("TransItem::TransactionCommit", DestFile) == false)
 	       return false;
+	    RemoveOldLeftoverDiffIndex(Target);
 	    break;
       }
       return true;
@@ -833,8 +846,17 @@ void pkgAcquire::Item::PushAlternativeURI(std::string &&NewURI, std::unordered_m
       d->AlternativeURIs.emplace_front(std::move(NewURI), std::move(fields));
 }
 									/*}}}*/
-void pkgAcquire::Item::RemoveAlternativeSite(std::string &&OldSite) /*{{{*/
+void pkgAcquire::Item::RemoveAlternativeSite(std::string const &AltUriStr)/*{{{*/
 {
+   ::URI AltUri{AltUriStr};
+   // the hostnames for these methods are empty for absolute paths which would result
+   // in the elimination of all sites accessed via those methods. On the upside, those
+   // methods are local and fast to reply with failure, so it doesn't hurt that much to
+   // keep them in the loop – so we just exit here rather than trying to guess the site.
+   std::array const badhosts{"file", "copy", "cdrom"};
+   if (std::find(badhosts.begin(), badhosts.end(), AltUri.Access) != badhosts.end())
+      return;
+   auto const OldSite = URI::SiteOnly(AltUriStr);
    d->AlternativeURIs.erase(std::remove_if(d->AlternativeURIs.begin(), d->AlternativeURIs.end(),
 					   [&](decltype(*d->AlternativeURIs.cbegin()) AltUri) {
 					      return URI::SiteOnly(AltUri.URI) == OldSite;
@@ -929,7 +951,7 @@ void pkgAcquire::Item::FailMessage(string const &Message)
       failreason = WEAK_HASHSUMS;
    else if (FailReason == "RedirectionLoop")
       failreason = REDIRECTION_LOOP;
-   else if (Status == StatAuthError)
+   else if (Status == StatAuthError || FailReason == "HashSumMismatch")
       failreason = HASHSUM_MISMATCH;
 
    if(ErrorText.empty())
@@ -954,7 +976,7 @@ void pkgAcquire::Item::FailMessage(string const &Message)
 	    break;
       }
 
-      if (Status == StatAuthError)
+      if (Status == StatAuthError || failreason == HASHSUM_MISMATCH)
       {
 	 auto const ExpectedHashes = GetExpectedHashes();
 	 if (ExpectedHashes.empty() == false)
@@ -966,13 +988,25 @@ void pkgAcquire::Item::FailMessage(string const &Message)
 	 if (failreason == HASHSUM_MISMATCH)
 	 {
 	    out << "Hashes of received file:" << std::endl;
+	    size_t hashes = 0;
 	    for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
 	    {
 	       std::string const tagname = std::string(*type) + "-Hash";
 	       std::string const hashsum = LookupTag(Message, tagname.c_str());
-	       if (hashsum.empty() == false)
+	       if (not hashsum.empty())
+	       {
 		  formatHashsum(out, HashString(*type, hashsum));
+		  ++hashes;
+	       }
 	    }
+	    if (hashes == 0)
+	       for (char const *const *type = HashString::SupportedHashes(); *type != nullptr; ++type)
+	       {
+		  std::string const tagname = std::string("Alt-") + *type + "-Hash";
+		  std::string const hashsum = LookupTag(Message, tagname.c_str());
+		  if (not hashsum.empty())
+		     formatHashsum(out, HashString(*type, hashsum));
+	       }
 	 }
 	 auto const lastmod = LookupTag(Message, "Last-Modified", "");
 	 if (lastmod.empty() == false)
@@ -1014,8 +1048,7 @@ void pkgAcquire::Item::Start(string const &/*Message*/, unsigned long long const
 bool pkgAcquire::Item::VerifyDone(std::string const &Message,
 	 pkgAcquire::MethodConfig const * const /*Cnf*/)
 {
-   std::string const FileName = LookupTag(Message,"Filename");
-   if (FileName.empty() == true)
+   if (LookupTag(Message,"Filename").empty() && LookupTag(Message, "Alt-Filename").empty())
    {
       Status = StatError;
       ErrorText = "Method gave a blank filename";
@@ -1390,7 +1423,15 @@ string pkgAcqMetaBase::Custom600Headers() const
 void pkgAcqMetaBase::QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature)
 {
    AuthPass = true;
+#ifdef SQV_EXECUTABLE
+   if (not _config->Find("APT::Key::GPGVCommand").empty() || not FileExists(SQV_EXECUTABLE))
+      I->Desc.URI = "gpgv:" + pkgAcquire::URIEncode(Signature);
+   else {
+      I->Desc.URI = "sqv:" + pkgAcquire::URIEncode(Signature);
+   }
+#else
    I->Desc.URI = "gpgv:" + pkgAcquire::URIEncode(Signature);
+#endif
    I->DestFile = File;
    QueueURI(I->Desc);
    I->SetActiveSubprocess("gpgv");
@@ -1403,7 +1444,7 @@ bool pkgAcqMetaBase::CheckDownloadDone(pkgAcqTransactionItem * const I, const st
    // verified yet)
 
    // Save the final base URI we got this Release file from
-   if (I->UsedMirror.empty() == false && _config->FindB("Acquire::SameMirrorForAllIndexes", true))
+   if (not I->Local && not I->UsedMirror.empty() && _config->FindB("Acquire::SameMirrorForAllIndexes", true))
    {
       auto InReleasePath = Target.Option(IndexTarget::INRELEASE_PATH);
       if (InReleasePath.empty())
@@ -1704,9 +1745,6 @@ void pkgAcqMetaClearSig::QueueIndexes(bool const verify)			/*{{{*/
 	 if (filename.empty() == false)
 	 {
 	    new NoActionItem(Owner, Target, filename);
-	    std::string const idxfilename = GetFinalFileNameFromURI(GetDiffIndexURI(Target));
-	    if (FileExists(idxfilename))
-	       new NoActionItem(Owner, Target, idxfilename);
 	    targetsSeen.emplace(Target.Option(IndexTarget::CREATED_BY));
 	    continue;
 	 }
@@ -2007,6 +2045,8 @@ void pkgAcqMetaClearSig::Failed(string const &Message,pkgAcquire::MethodConfig c
 	    return;
       }
 
+      _error->Audit(_("Repositories should provide a clear-signed InRelease file, but none found at %s."), Target.URI.c_str());
+
       // Queue the 'old' InRelease file for removal if we try Release.gpg
       // as otherwise the file will stay around and gives a false-auth
       // impression (CVE-2012-0214)
@@ -2380,7 +2420,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile)	/*{{{*/
 
       string hash;
       unsigned long long size;
-      std::stringstream ss(tmp.to_string());
+      std::istringstream ss(std::string{tmp});  // TODO: replace with std::string_view_stream in C++23
       ss.imbue(posix);
       ss >> hash >> size;
       if (unlikely(hash.empty() == true))
@@ -2450,7 +2490,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile)	/*{{{*/
 
       string hash, filename;
       unsigned long long size;
-      std::stringstream ss(tmp.to_string());
+      std::stringstream ss(std::string{tmp});  // TODO: replace with std::string_view_stream in C++23
       ss.imbue(posix);
 
       while (ss >> hash >> size >> filename)
@@ -2507,7 +2547,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile)	/*{{{*/
 
       string hash, filename;
       unsigned long long size;
-      std::stringstream ss(tmp.to_string());
+      std::stringstream ss(std::string{tmp});  // TODO: replace with std::string_view_stream in C++23
       ss.imbue(posix);
 
       while (ss >> hash >> size >> filename)
@@ -2545,7 +2585,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile)	/*{{{*/
 
       string hash, filename;
       unsigned long long size;
-      std::stringstream ss(tmp.to_string());
+      std::stringstream ss(std::string{tmp});  // TODO: replace with std::string_view_stream in C++23
       ss.imbue(posix);
 
       // FIXME: all of pdiff supports only .gz compressed patches
@@ -2703,12 +2743,8 @@ void pkgAcqDiffIndex::Failed(string const &Message,pkgAcquire::MethodConfig cons
    new pkgAcqIndex(Owner, TransactionManager, Target);
 }
 									/*}}}*/
-bool pkgAcqDiffIndex::VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const)/*{{{*/
+bool pkgAcqDiffIndex::VerifyDone(std::string const &/*Message*/, pkgAcquire::MethodConfig const * const)/*{{{*/
 {
-   string const FinalFile = GetFinalFilename();
-   if(StringToBool(LookupTag(Message,"IMS-Hit"),false))
-      DestFile = FinalFile;
-
    if (ParseDiffIndex(DestFile))
       return true;
 
@@ -2748,7 +2784,7 @@ void pkgAcqDiffIndex::Done(string const &Message,HashStringList const &Hashes,	/
       }
    }
 
-   TransactionManager->TransactionStageCopy(this, DestFile, GetFinalFilename());
+   TransactionManager->TransactionStageRemoval(this, DestFile);
 
    Complete = true;
    Status = StatDone;
@@ -2819,7 +2855,7 @@ void pkgAcqIndexDiffs::Failed(string const &Message,pkgAcquire::MethodConfig con
 void pkgAcqIndexDiffs::Finish(bool allDone)
 {
    if(Debug)
-      std::clog << "pkgAcqIndexDiffs::Finish(): " 
+      std::clog << "pkgAcqIndexDiffs::Finish(): "
                 << allDone << " "
                 << Desc.URI << std::endl;
 
@@ -3249,7 +3285,7 @@ void pkgAcqIndex::Done(string const &Message,
 {
    Item::Done(Message,Hashes,Cfg);
 
-   switch(Stage) 
+   switch(Stage)
    {
       case STAGE_DOWNLOAD:
          StageDownloadDone(Message);
@@ -3274,7 +3310,7 @@ void pkgAcqIndex::StageDownloadDone(string const &Message)
    if (StringToBool(LookupTag(Message, "IMS-Hit"), false))
    {
       Filename = GetExistingFilename(GetFinalFileNameFromURI(Target.URI));
-      EraseFileName = DestFile = flCombine(flNotFile(DestFile), flNotDir(Filename));
+      EraseFileName = DestFile = flCombine(flNotFile(DestFile), std::string{flNotDir(Filename)});
       if (symlink(Filename.c_str(), DestFile.c_str()) != 0)
 	 _error->WarningE("pkgAcqIndex::StageDownloadDone", "Symlinking file %s to %s failed", Filename.c_str(), DestFile.c_str());
       Stage = STAGE_DECOMPRESS_AND_VERIFY;
@@ -3462,7 +3498,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc
 	 StoreFilename = QuoteString(Version.ParentPkg().Name(), "_:") + '_' +
 			 QuoteString(Version.VerStr(), "_:") + '_' +
 			 QuoteString(Version.Arch(), "_:.") +
-			 "." + flExtension(poolfilename);
+			 '.' += flExtension(poolfilename);
 
 	 Desc.URI = Index->ArchiveURI(poolfilename);
 	 Desc.Description = Index->ArchiveInfo(Version);
@@ -3491,7 +3527,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc
 
    // Check if we already downloaded the file
    struct stat Buf;
-   auto FinalFile = _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename);
+   auto FinalFile = _config->FindDir("Dir::Cache::Archives") += flNotDir(StoreFilename);
    if (stat(FinalFile.c_str(), &Buf) == 0)
    {
       // Make sure the size matches
@@ -3510,7 +3546,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc
    }
 
    // Check the destination file
-   DestFile = _config->FindDir("Dir::Cache::Archives") + "partial/" + flNotDir(StoreFilename);
+   DestFile = (_config->FindDir("Dir::Cache::Archives") += "partial/") += flNotDir(StoreFilename);
    if (stat(DestFile.c_str(), &Buf) == 0)
    {
       // Hmm, the partial file is too big, erase it
@@ -3917,9 +3953,9 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *const Owner, string const &URI, HashStringLis
    if(!DestFilename.empty())
       DestFile = DestFilename;
    else if(!DestDir.empty())
-      DestFile = DestDir + "/" + DeQuoteString(flNotDir(url.Path));
+      DestFile = DestDir + "/" + DeQuoteString(std::string{flNotDir(url.Path)});
    else
-      DestFile = DeQuoteString(flNotDir(url.Path));
+      DestFile = DeQuoteString(std::string{flNotDir(url.Path)});
 
    // Create the item
    Desc.URI = std::string(url);
@@ -3983,7 +4019,7 @@ void pkgAcqFile::Done(string const &Message,HashStringList const &CalcHashes,
 	 _error->PushToStack();
 	 _error->Errno("pkgAcqFile::Done", "Symlinking file %s failed", DestFile.c_str());
 	 std::stringstream msg;
-	 _error->DumpErrors(msg, GlobalError::DEBUG, false);
+	 _error->DumpErrors(msg, GlobalError::NOTICE, false);
 	 _error->RevertToStack();
 	 ErrorText = msg.str();
 	 Status = StatError;
@@ -4061,7 +4097,7 @@ static std::string GetAuxFileNameFromURIInLists(std::string const &uri)
    auto const dirname = flCombine(_config->FindDir("Dir::State::lists"), "auxfiles/");
    char const * const filetag = ".apt-acquire-privs-test.XXXXXX";
    std::string const tmpfile_tpl = flCombine(dirname, filetag);
-   std::unique_ptr<char, decltype(std::free) *> tmpfile { strdup(tmpfile_tpl.c_str()), std::free };
+   std::unique_ptr<char, FreeDeleter> tmpfile { strdup(tmpfile_tpl.c_str()) };
    int const fd = mkstemp(tmpfile.get());
    if (fd == -1)
       return "";
@@ -4077,7 +4113,7 @@ static std::string GetAuxFileNameFromURI(std::string const &uri)
 
    std::string tmpdir_tpl;
    strprintf(tmpdir_tpl, "%s/apt-auxfiles-XXXXXX", GetTempDir().c_str());
-   std::unique_ptr<char, decltype(std::free) *> tmpdir { strndup(tmpdir_tpl.data(), tmpdir_tpl.length()), std::free };
+   std::unique_ptr<char, FreeDeleter> tmpdir { strndup(tmpdir_tpl.data(), tmpdir_tpl.length()) };
    if (mkdtemp(tmpdir.get()) == nullptr)
    {
       _error->Errno("GetAuxFileNameFromURI", "mkdtemp of %s failed", tmpdir.get());
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
index 22da981..5861d48 100644
--- a/apt-pkg/acquire-item.h
+++ b/apt-pkg/acquire-item.h
@@ -212,7 +212,7 @@ class APT_PUBLIC pkgAcquire::Item : public WeakPointable				/*{{{*/
     *  \sa pkgAcqMethod
     */
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf);
+		     pkgAcquire::MethodConfig const *const Cnf);
 
    /** \brief Invoked when the worker starts to fetch this object.
     *
@@ -240,7 +240,7 @@ class APT_PUBLIC pkgAcquire::Item : public WeakPointable				/*{{{*/
    APT_HIDDEN bool PopAlternativeURI(std::string &NewURI);
    APT_HIDDEN bool IsGoodAlternativeURI(std::string const &AltUri) const;
    APT_HIDDEN void PushAlternativeURI(std::string &&NewURI, std::unordered_map<std::string, std::string> &&fields, bool const at_the_back);
-   APT_HIDDEN void RemoveAlternativeSite(std::string &&OldSite);
+   APT_HIDDEN void RemoveAlternativeSite(std::string const &AltUri);
 
    /** \brief A "descriptive" URI-like string.
     *
@@ -372,7 +372,7 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item		/*{{{*/
    protected:
    HashStringList GetExpectedHashesFor(std::string const &MetaKey) const;
 
-   bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+   bool QueueURI(pkgAcquire::ItemDesc &Item) override;
 
    public:
    IndexTarget const Target;
@@ -390,14 +390,14 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item		/*{{{*/
    };
    virtual bool TransactionState(TransactionStates const state);
 
-   virtual std::string DescURI() const APT_OVERRIDE { return Target.URI; }
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual std::string GetMetaKey() const;
-   virtual bool HashesRequired() const APT_OVERRIDE;
-   virtual bool AcquireByHash() const;
+   [[nodiscard]] std::string DescURI() const override { return Target.URI; }
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] virtual std::string GetMetaKey() const;
+   [[nodiscard]] bool HashesRequired() const override;
+   [[nodiscard]] virtual bool AcquireByHash() const;
 
    pkgAcqTransactionItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) APT_NONNULL(2, 3);
-   virtual ~pkgAcqTransactionItem();
+   ~pkgAcqTransactionItem() override;
 
    friend class pkgAcqMetaBase;
    friend class pkgAcqMetaClearSig;
@@ -428,7 +428,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem		/*{{{*/
    /** \brief Queue the downloaded Signature for verification */
    void QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature);
 
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   [[nodiscard]] std::string Custom600Headers() const override;
 
    /** \brief Called when authentication succeeded.
     *
@@ -452,7 +452,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem		/*{{{*/
     */
    bool VerifyVendor(std::string const &Message);
 
-   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
+   bool TransactionState(TransactionStates state) override;
 
  public:
    // This refers more to the Transaction-Manager than the actual file
@@ -460,9 +460,9 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem		/*{{{*/
    TransactionStates State;
    std::string BaseURI;
 
-   virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual bool HashesRequired() const APT_OVERRIDE;
+   bool QueueURI(pkgAcquire::ItemDesc &Item) override;
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] bool HashesRequired() const override;
 
    // transaction code
    void Add(pkgAcqTransactionItem * const I);
@@ -480,11 +480,11 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem		/*{{{*/
    void TransactionStageRemoval(pkgAcqTransactionItem * const I, const std::string &FinalFile);
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
 
    pkgAcqMetaBase(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
 		  IndexTarget const &DataTarget) APT_NONNULL(2, 3);
-   virtual ~pkgAcqMetaBase();
+   ~pkgAcqMetaBase() override;
 };
 									/*}}}*/
 /** \brief An item that is responsible for downloading the meta-index	{{{
@@ -507,17 +507,17 @@ class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase
    void Init(std::string const &URIDesc, std::string const &ShortDesc);
 
    public:
-   virtual std::string DescURI() const APT_OVERRIDE;
+   [[nodiscard]] std::string DescURI() const override;
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+		     pkgAcquire::MethodConfig const *Cnf) override;
 
    /** \brief Create a new pkgAcqMetaIndex. */
    pkgAcqMetaIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
 		   IndexTarget const &DataTarget, IndexTarget const &DetachedSigTarget) APT_NONNULL(2, 3);
-   virtual ~pkgAcqMetaIndex();
+   ~pkgAcqMetaIndex() override;
 
    friend class pkgAcqMetaSig;
 };
@@ -530,7 +530,7 @@ class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase
  *
  *  \sa pkgAcqMetaIndex
  */
-class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem
+class APT_HIDDEN pkgAcqMetaSig final : public pkgAcqTransactionItem
 {
    void * const d;
 
@@ -542,25 +542,25 @@ class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem
    protected:
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
 
    public:
-   virtual bool HashesRequired() const APT_OVERRIDE { return false; }
+   [[nodiscard]] bool HashesRequired() const override { return false; }
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+		     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
 
    /** \brief Create a new pkgAcqMetaSig. */
    pkgAcqMetaSig(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
 	 IndexTarget const &Target, pkgAcqMetaIndex * const MetaIndex) APT_NONNULL(2, 3, 5);
-   virtual ~pkgAcqMetaSig();
+   ~pkgAcqMetaSig() override;
 };
 									/*}}}*/
 /** \brief An item responsible for downloading clearsigned metaindexes	{{{*/
-class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
+class APT_HIDDEN pkgAcqMetaClearSig final : public pkgAcqMetaIndex
 {
    void * const d;
    IndexTarget const DetachedDataTarget;
@@ -570,12 +570,12 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
    metaIndex *MetaIndexParser;
    metaIndex *LastMetaIndexParser;
 
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
-   virtual bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Finished() APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
+   bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+		     pkgAcquire::MethodConfig const *Cnf) override;
+   void Finished() override;
 
    /** \brief Starts downloading the individual index files.
     *
@@ -593,7 +593,7 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
 		IndexTarget const &DetachedDataTarget,
 		IndexTarget const &DetachedSigTarget,
 		metaIndex * const MetaIndexParser);
-   virtual ~pkgAcqMetaClearSig();
+   ~pkgAcqMetaClearSig() override;
 };
 									/*}}}*/
 /** \brief Common base class for all classes that deal with fetching indexes	{{{*/
@@ -603,12 +603,12 @@ class APT_HIDDEN pkgAcqBaseIndex : public pkgAcqTransactionItem
 
  public:
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
 
    pkgAcqBaseIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                    IndexTarget const &Target) APT_NONNULL(2, 3);
-   virtual ~pkgAcqBaseIndex();
+   ~pkgAcqBaseIndex() override;
 };
 									/*}}}*/
 /** \brief An acquire item that is responsible for fetching an index	{{{
@@ -660,22 +660,22 @@ class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex
    void InitByHashIfNeeded();
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
 
-   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
+   bool TransactionState(TransactionStates state) override;
 
    public:
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
-   virtual std::string GetMetaKey() const APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+		     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
+   [[nodiscard]] std::string DescURI() const override { return Desc.URI; };
+   [[nodiscard]] std::string GetMetaKey() const override;
 
    pkgAcqIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                IndexTarget const &Target, bool const Derived = false) APT_NONNULL(2, 3);
-   virtual ~pkgAcqIndex();
+   ~pkgAcqIndex() override;
 
    protected:
    APT_HIDDEN void Init(std::string const &URI, std::string const &URIDesc,
@@ -707,7 +707,7 @@ struct APT_HIDDEN DiffInfo {						/*{{{*/
  *
  *  \sa pkgAcqIndexDiffs, pkgAcqIndex
  */
-class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex
+class APT_HIDDEN pkgAcqDiffIndex final : public pkgAcqIndex
 {
    void * const d;
    std::vector<pkgAcqIndexMergeDiffs*> * diffs;
@@ -719,19 +719,20 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex
    bool Debug;
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
 
-   virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+   bool QueueURI(pkgAcquire::ItemDesc &Item) override;
 
-   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
- public:
+   bool TransactionState(TransactionStates state) override;
+
+   public:
    // Specialized action members
-   virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
-   virtual std::string GetMetaKey() const APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+		     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string DescURI() const override { return Target.URI + "Index"; };
+   [[nodiscard]] std::string GetMetaKey() const override;
 
    /** \brief Parse the Index file for a set of Packages diffs.
     *
@@ -757,7 +758,7 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex
     */
    pkgAcqDiffIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                    IndexTarget const &Target) APT_NONNULL(2, 3);
-   virtual ~pkgAcqDiffIndex();
+   ~pkgAcqDiffIndex() override;
  private:
    APT_HIDDEN void QueueOnIMSHit() const;
 };
@@ -773,7 +774,7 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex
  *
  *  \sa pkgAcqDiffIndex, pkgAcqIndex
  */
-class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
+class APT_HIDDEN pkgAcqIndexMergeDiffs final : public pkgAcqBaseIndex
 {
    protected:
 
@@ -810,14 +811,14 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
     *  This method will fall back to downloading the whole index file
     *  outright; its arguments are ignored.
     */
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-	 pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual bool HashesRequired() const APT_OVERRIDE;
-   virtual bool AcquireByHash() const APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+	     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
+   [[nodiscard]] std::string DescURI() const override { return Target.URI + "Index"; };
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] bool HashesRequired() const override;
+   [[nodiscard]] bool AcquireByHash() const override;
 
    /** \brief Create an index merge-diff item.
     *
@@ -834,7 +835,7 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
    pkgAcqIndexMergeDiffs(pkgAcquire *const Owner, pkgAcqMetaClearSig *const TransactionManager,
 			 IndexTarget const &Target, DiffInfo const &patch,
 			 std::vector<pkgAcqIndexMergeDiffs *> const *const allPatches) APT_NONNULL(2, 3, 6);
-   virtual ~pkgAcqIndexMergeDiffs();
+   ~pkgAcqIndexMergeDiffs() override;
 };
 									/*}}}*/
 /** \brief An item that is responsible for fetching server-merge patches {{{
@@ -848,7 +849,7 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
  *
  *  \sa pkgAcqDiffIndex, pkgAcqIndex
  */
-class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
+class APT_HIDDEN pkgAcqIndexDiffs final : public pkgAcqBaseIndex
 {
    private:
 
@@ -910,15 +911,15 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
     *  This method will fall back to downloading the whole index file
     *  outright; its arguments are ignored.
     */
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
 
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "IndexDiffs";};
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual bool HashesRequired() const APT_OVERRIDE;
-   virtual bool AcquireByHash() const APT_OVERRIDE;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+	     pkgAcquire::MethodConfig const * Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
+   [[nodiscard]] std::string DescURI() const override { return Target.URI + "IndexDiffs"; };
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] bool HashesRequired() const override;
+   [[nodiscard]] bool AcquireByHash() const override;
 
    /** \brief Create an index diff item.
     *
@@ -936,7 +937,7 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
    pkgAcqIndexDiffs(pkgAcquire *const Owner, pkgAcqMetaClearSig *const TransactionManager,
 		    IndexTarget const &Target,
 		    std::vector<DiffInfo> const &diffs = std::vector<DiffInfo>()) APT_NONNULL(2, 3);
-   virtual ~pkgAcqIndexDiffs();
+   ~pkgAcqIndexDiffs() override;
 };
 									/*}}}*/
 /** \brief An item that is responsible for fetching a package file.	{{{
@@ -979,19 +980,18 @@ class APT_PUBLIC pkgAcqArchive : public pkgAcquire::Item
    bool QueueNext();
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetFinalFilename() const override;
 
    public:
-
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &Hashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE;
-   virtual std::string ShortDesc() const APT_OVERRIDE;
-   virtual void Finished() APT_OVERRIDE;
-   virtual bool IsTrusted() const APT_OVERRIDE;
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual bool HashesRequired() const APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const * Cnf) override;
+   void Done(std::string const &Message, HashStringList const &Hashes,
+	     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string DescURI() const override;
+   [[nodiscard]] std::string ShortDesc() const override;
+   void Finished() override;
+   [[nodiscard]] bool IsTrusted() const override;
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] bool HashesRequired() const override;
 
    /** \brief Create a new pkgAcqArchive.
     *
@@ -1014,7 +1014,7 @@ class APT_PUBLIC pkgAcqArchive : public pkgAcquire::Item
    pkgAcqArchive(pkgAcquire * const Owner,pkgSourceList * const Sources,
 		 pkgRecords * const Recs,pkgCache::VerIterator const &Version,
 		 std::string &StoreFilename);
-   virtual ~pkgAcqArchive();
+   ~pkgAcqArchive() override;
 };
 									/*}}}*/
 /** \brief Retrieve the changelog for the given version			{{{
@@ -1033,14 +1033,14 @@ class APT_PUBLIC pkgAcqChangelog : public pkgAcquire::Item
    public:
    // we will never have hashes for changelogs.
    // If you need verified ones, download the deb and extract the changelog.
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
-   virtual bool HashesRequired() const APT_OVERRIDE { return false; }
+   [[nodiscard]] HashStringList GetExpectedHashes() const override { return {}; }
+   [[nodiscard]] bool HashesRequired() const override { return false; }
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override;
+   void Done(std::string const &Message, HashStringList const &CalcHashes,
+	     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string DescURI() const override { return Desc.URI; };
 
    /** returns the URI to the changelog of this version
     *
@@ -1126,7 +1126,7 @@ class APT_PUBLIC pkgAcqChangelog : public pkgAcquire::Item
 	 char const * const SrcName, char const * const SrcVersion,
 	 std::string const &DestDir="", std::string const &DestFilename="");
 
-   virtual ~pkgAcqChangelog();
+   ~pkgAcqChangelog() override;
 
 private:
    APT_HIDDEN void Init(std::string const &DestDir, std::string const &DestFilename);
@@ -1147,14 +1147,14 @@ class APT_PUBLIC pkgAcqFile : public pkgAcquire::Item
 
    HashStringList const ExpectedHashes;
    public:
-   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
-   virtual bool HashesRequired() const APT_OVERRIDE;
+   [[nodiscard]] HashStringList GetExpectedHashes() const override;
+   [[nodiscard]] bool HashesRequired() const override;
 
    // Specialized action members
-   virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
-		     pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
-   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   void Done(std::string const &Message, HashStringList const &CalcHashes,
+	     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string DescURI() const override { return Desc.URI; };
+   [[nodiscard]] std::string Custom600Headers() const override;
 
    /** \brief Create a new pkgAcqFile object.
     *
@@ -1191,26 +1191,26 @@ class APT_PUBLIC pkgAcqFile : public pkgAcquire::Item
 	      std::string const &Desc, std::string const &ShortDesc,
 	      std::string const &DestDir="", std::string const &DestFilename="",
 	      bool const IsIndexFile=false);
-   virtual ~pkgAcqFile();
+   ~pkgAcqFile() override;
 };
 									/*}}}*/
-class APT_HIDDEN pkgAcqAuxFile : public pkgAcqFile /*{{{*/
+class APT_HIDDEN pkgAcqAuxFile final : public pkgAcqFile		/*{{{*/
 {
    pkgAcquire::Item *const Owner;
    pkgAcquire::Worker *const Worker;
    unsigned long long MaximumSize;
 
    public:
-   virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const *const Cnf) APT_OVERRIDE;
-   virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
-		     pkgAcquire::MethodConfig const *const Cnf) APT_OVERRIDE;
-   virtual std::string Custom600Headers() const APT_OVERRIDE;
-   virtual void Finished() APT_OVERRIDE;
+   void Failed(std::string const &Message, pkgAcquire::MethodConfig const * Cnf) override;
+   void Done(std::string const &Message, HashStringList const &CalcHashes,
+	     pkgAcquire::MethodConfig const *Cnf) override;
+   [[nodiscard]] std::string Custom600Headers() const override;
+   void Finished() override;
 
    pkgAcqAuxFile(pkgAcquire::Item *const Owner, pkgAcquire::Worker *const Worker,
 		 std::string const &ShortDesc, std::string const &Desc, std::string const &URI,
 		 HashStringList const &Hashes, unsigned long long const MaximumSize);
-   virtual ~pkgAcqAuxFile();
+   ~pkgAcqAuxFile() override;
 };
 									/*}}}*/
 /** @} */
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc
index 0895825..4739f8c 100644
--- a/apt-pkg/acquire-method.cc
+++ b/apt-pkg/acquire-method.cc
@@ -24,15 +24,15 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <iterator>
 #include <sstream>
 #include <string>
 #include <vector>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 									/*}}}*/
 
@@ -145,9 +145,15 @@ void pkgAcqMethod::Fail(bool Transient)
 
    Fail("", Transient);
 }
+
+void pkgAcqMethod::Fail(std::string Err, bool Tansient)
+{
+   std::unordered_map<std::string, std::string> fields;
+   FailWithContext(Err, Tansient, fields);
+}
 									/*}}}*/
 // AcqMethod::Fail - A fetch has failed					/*{{{*/
-void pkgAcqMethod::Fail(string Err, bool Transient)
+void pkgAcqMethod::FailWithContext(std::string Err, bool Transient, std::unordered_map<std::string, std::string> &fields)
 {
 
    if (not _error->empty())
@@ -175,7 +181,6 @@ void pkgAcqMethod::Fail(string Err, bool Transient)
    if (IP.empty() == false && _config->FindB("Acquire::Failure::ShowIP", true) == true)
       Err.append(" ").append(IP);
 
-   std::unordered_map<std::string, std::string> fields;
    if (Queue != nullptr)
       try_emplace(fields, "URI", Queue->Uri);
    else
@@ -459,23 +464,6 @@ int pkgAcqMethod::Run(bool Single)
    return 0;
 }
 									/*}}}*/
-// AcqMethod::PrintStatus - privately really send a log/status message	/*{{{*/
-void pkgAcqMethod::PrintStatus(char const * const header, const char* Format,
-			       va_list &args) const
-{
-   string CurrentURI = "<UNKNOWN>";
-   if (Queue != 0)
-      CurrentURI = Queue->Uri;
-   if (UsedMirror.empty() == true)
-      fprintf(stdout, "%s\nURI: %s\nMessage: ",
-	      header, CurrentURI.c_str());
-   else
-      fprintf(stdout, "%s\nURI: %s\nUsedMirror: %s\nMessage: ",
-	      header, CurrentURI.c_str(), UsedMirror.c_str());
-   vfprintf(stdout,Format,args);
-   std::cout << "\n\n" << std::flush;
-}
-									/*}}}*/
 // AcqMethod::Log - Send a log message					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h
index b4b238c..b8944e9 100644
--- a/apt-pkg/acquire-method.h
+++ b/apt-pkg/acquire-method.h
@@ -22,8 +22,8 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/macros.h>
 
-#include <stdarg.h>
-#include <time.h>
+#include <cstdarg>
+#include <ctime>
 
 #include <string>
 #include <unordered_map>
@@ -92,6 +92,7 @@ class APT_PUBLIC pkgAcqMethod
 
    // Outgoing messages
    void Fail(bool Transient = false);
+   void FailWithContext(std::string Why, bool Transient, std::unordered_map<std::string, std::string> &fields);
    inline void Fail(const char *Why, bool Transient = false) {Fail(std::string(Why),Transient);};
    virtual void Fail(std::string Why, bool Transient = false);
    virtual void URIStart(FetchResult &Res);
@@ -101,8 +102,6 @@ class APT_PUBLIC pkgAcqMethod
    bool MediaFail(std::string Required,std::string Drive);
    virtual void Exit() {};
 
-   APT_DEPRECATED_MSG("Use SendMessage instead") void PrintStatus(char const * const header, const char* Format, va_list &args) const;
-
    public:
    enum CnfFlags
    {
diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc
index 1bf07e8..5589794 100644
--- a/apt-pkg/acquire-worker.cc
+++ b/apt-pkg/acquire-worker.cc
@@ -20,6 +20,7 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/hashes.h>
+#include <apt-pkg/metaindex.h>
 #include <apt-pkg/proxy.h>
 #include <apt-pkg/strutl.h>
 
@@ -28,11 +29,11 @@
 #include <string>
 #include <vector>
 
+#include <cerrno>
+#include <csignal>
+#include <cstdio>
+#include <cstdlib>
 #include <sstream>
-#include <errno.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -98,8 +99,6 @@ bool pkgAcquire::Worker::Start()
    std::string Method;
    if (_config->Exists(confItem))
 	 Method = _config->FindFile(confItem.c_str());
-   else if (Access == "ftp" || Access == "rsh" || Access == "ssh")
-      return _error->Error(_("The method '%s' is unsupported and disabled by default. Consider switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."), Access.c_str(), Access.c_str(), Access.c_str());
    else
 	 Method = _config->FindDir(methodsDir) + Access;
    if (FileExists(Method) == false)
@@ -200,6 +199,7 @@ enum class APT_HIDDEN MessageType
    STATUS = 102,
    REDIRECT = 103,
    WARNING = 104,
+   AUDIT = 105,
    URI_START = 200,
    URI_DONE = 201,
    AUX_REQUEST = 351,
@@ -388,6 +388,10 @@ bool pkgAcquire::Worker::RunMessages()
 	    _error->Warning("%s: %s", Itm ? Itm->Owner ? Itm->Owner->DescURI().c_str() : Access.c_str() : Access.c_str(), LookupTag(Message, "Message").c_str());
 	    break;
 
+	 case MessageType::AUDIT:
+	    _error->Audit("%s: %s", Itm ? Itm->Owner ? Itm->Owner->DescURI().c_str() : Access.c_str() : Access.c_str(), LookupTag(Message, "Message").c_str());
+	    break;
+
 	 case MessageType::URI_START:
 	 {
 	    if (Itm == nullptr)
@@ -431,11 +435,18 @@ bool pkgAcquire::Worker::RunMessages()
 		  Log->Pulse((*O)->GetOwner());
 
 	    HashStringList ReceivedHashes;
+	    bool AltFile = false;
 	    {
-	       std::string const givenfilename = LookupTag(Message, "Filename");
-	       std::string const filename = givenfilename.empty() ? Itm->Owner->DestFile : givenfilename;
+	       std::string filename;
+	       if (filename = LookupTag(Message, "Filename"); filename.empty())
+	       {
+		  if (filename = LookupTag(Message, "Alt-Filename"); not filename.empty())
+		     AltFile = true;
+		  else
+		     filename = Itm->Owner->DestFile;
+	       }
 	       // see if we got hashes to verify
-	       ReceivedHashes = GetHashesFromMessage("", Message);
+	       ReceivedHashes = GetHashesFromMessage(AltFile ? "Alt-" : "", Message);
 	       // not all methods always sent Hashes our way
 	       if (ReceivedHashes.usable() == false)
 	       {
@@ -446,64 +457,107 @@ bool pkgAcquire::Worker::RunMessages()
 		     FileFd file(filename, FileFd::ReadOnly, FileFd::None);
 		     calc.AddFD(file);
 		     ReceivedHashes = calc.GetHashStringList();
+		     for (auto const &h : ReceivedHashes)
+		     {
+			std::string tagname;
+			if (AltFile)
+			   tagname = "Alt-";
+			tagname.append(h.HashType()).append("-Hash");
+			if (not LookupTag(Message, tagname.c_str()).empty())
+			   continue;
+			if (not APT::String::Endswith(Message, "\n"))
+			   Message.append("\n");
+			Message.append(tagname).append(": ").append(h.HashValue());
+		     }
 		  }
 	       }
 
 	       // only local files can refer other filenames and counting them as fetched would be unfair
-	       if (Log != NULL && Itm->Owner->Complete == false && Itm->Owner->Local == false && givenfilename == filename)
+	       if (Log != nullptr && not Itm->Owner->Complete && not Itm->Owner->Local && not AltFile && Itm->Owner->DestFile == filename)
 		  Log->Fetched(ReceivedHashes.FileSize(),atoi(LookupTag(Message,"Resume-Point","0").c_str()));
 	    }
 
 	    std::vector<Item*> const ItmOwners = Itm->Owners;
+	    for (auto const Owner : ItmOwners)
+	       Owner->ErrorText.clear();
 	    OwnerQ->ItemDone(Itm);
 	    Itm = NULL;
 
 	    bool const isIMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false) ||
 	       StringToBool(LookupTag(Message,"Alt-IMS-Hit"),false);
 	    auto const forcedHash = _config->Find("Acquire::ForceHash");
+
+	    bool consideredOkay = true;
+	    HashStringList ExpectedHashes;
+	    bool const DebugAuth = _config->FindB("Debug::pkgAcquire::Auth", false);
+	    if (DebugAuth)
+	    {
+	       std::clog << "201 URI Done: " << URI << endl
+			 << "ReceivedHash:" << endl;
+	       for (auto const &hs : ReceivedHashes)
+		  std::clog << "\t- " << hs.toStr() << std::endl;
+	       std::clog << "ExpectedHash:" << endl;
+	    }
 	    for (auto const Owner: ItmOwners)
 	    {
-	       HashStringList const ExpectedHashes = Owner->GetExpectedHashes();
-	       if(_config->FindB("Debug::pkgAcquire::Auth", false) == true)
-	       {
-		  std::clog << "201 URI Done: " << Owner->DescURI() << endl
-		     << "ReceivedHash:" << endl;
-		  for (HashStringList::const_iterator hs = ReceivedHashes.begin(); hs != ReceivedHashes.end(); ++hs)
-		     std::clog <<  "\t- " << hs->toStr() << std::endl;
-		  std::clog << "ExpectedHash:" << endl;
-		  for (HashStringList::const_iterator hs = ExpectedHashes.begin(); hs != ExpectedHashes.end(); ++hs)
-		     std::clog <<  "\t- " << hs->toStr() << std::endl;
-		  std::clog << endl;
-	       }
-
-	       // decide if what we got is what we expected
-	       bool consideredOkay = false;
-	       if ((forcedHash.empty() && ExpectedHashes.empty() == false) ||
-		     (forcedHash.empty() == false && ExpectedHashes.usable()))
-	       {
-		  if (ReceivedHashes.empty())
+	       HashStringList const OwnerExpectedHashes = [&]() {
+		  if (AltFile)
 		  {
-		     /* IMS-Hits can't be checked here as we will have uncompressed file,
-			but the hashes for the compressed file. What we have was good through
-			so all we have to ensure later is that we are not stalled. */
-		     consideredOkay = isIMSHit;
+		     auto const * const transOwner = dynamic_cast<pkgAcqTransactionItem const * const>(Owner);
+		     if (transOwner != nullptr && transOwner->TransactionManager != nullptr && transOwner->TransactionManager->MetaIndexParser != nullptr)
+		     {
+			auto const * const hashes = transOwner->TransactionManager->MetaIndexParser->Lookup(transOwner->Target.MetaKey);
+			if (hashes != nullptr)
+			   return hashes->Hashes;
+		     }
 		  }
-		  else if (ReceivedHashes == ExpectedHashes)
-		     consideredOkay = true;
-		  else
+		  return Owner->GetExpectedHashes();
+	       }();
+	       for (auto const &h : OwnerExpectedHashes)
+	       {
+		  if (not ExpectedHashes.push_back(h))
+		  {
 		     consideredOkay = false;
-
+		     std::clog << "\t- " << h.toStr() << " [conflict]" << std::endl;
+		  }
+		  else if (DebugAuth)
+		     std::clog << "\t- " << h.toStr() << std::endl;
 	       }
+	    }
+	    if (DebugAuth)
+	       std::clog << endl;
+
+	    // decide if what we got is what we expected
+	    if (not consideredOkay)
+	       ;
+	    else if ((forcedHash.empty() && not ExpectedHashes.empty()) ||
+		     (not forcedHash.empty() && ExpectedHashes.usable()))
+	    {
+	       if (ReceivedHashes.empty())
+	       {
+		  /* IMS-Hits can't be checked here as we will have uncompressed file,
+		     but the hashes for the compressed file. What we have was good through
+		     so all we have to ensure later is that we are not stalled. */
+		  consideredOkay = isIMSHit;
+	       }
+	       else if (ReceivedHashes == ExpectedHashes)
+		  consideredOkay = true;
 	       else
-		  consideredOkay = !Owner->HashesRequired();
-
-	       if (consideredOkay == true)
-		  consideredOkay = Owner->VerifyDone(Message, Config);
-	       else // hashsum mismatch
-		  Owner->Status = pkgAcquire::Item::StatAuthError;
+		  consideredOkay = false;
+	    }
+	    else
+	       consideredOkay = std::none_of(ItmOwners.begin(), ItmOwners.end(), [](auto const * const O) { return O->HashesRequired(); });
 
+	    bool otherReasons = false;
+	    if (consideredOkay && not std::all_of(ItmOwners.begin(), ItmOwners.end(), [&](auto * const O) { return O->VerifyDone(Message, Config); }))
+	    {
+	       consideredOkay = false;
+	       otherReasons = true;
+	    }
 
-	       if (consideredOkay == true)
+	    if (consideredOkay)
+	    {
+	       for (auto const Owner : ItmOwners)
 	       {
 		  if (isDoomedItem(Owner) == false)
 		     Owner->Done(Message, ReceivedHashes, Config);
@@ -515,22 +569,21 @@ bool pkgAcquire::Worker::RunMessages()
 			Log->Done(Owner->GetItemDesc());
 		  }
 	       }
+	    }
+	    else
+	    {
+	       if (otherReasons)
+		  HandleFailure(ItmOwners, Config, Log, Message, false, false);
 	       else
 	       {
-		  auto SavedDesc = Owner->GetItemDesc();
-		  if (isDoomedItem(Owner) == false)
+		  if (Message.find("\nFailReason:") == std::string::npos)
 		  {
-		     if (Message.find("\nFailReason:") == std::string::npos)
-		     {
-			if (ReceivedHashes != ExpectedHashes)
-			   Message.append("\nFailReason: HashSumMismatch");
-			else
-			   Message.append("\nFailReason: WeakHashSums");
-		     }
-		     Owner->Failed(Message,Config);
+		     if (ReceivedHashes != ExpectedHashes)
+			Message.append("\nFailReason: HashSumMismatch");
+		     else
+			Message.append("\nFailReason: WeakHashSums");
 		  }
-		  if (Log != nullptr)
-		     Log->Fail(SavedDesc);
+		  HandleFailure(ItmOwners, Config, Log, Message, false, true);
 	       }
 	    }
 	    ItemDone();
@@ -590,6 +643,8 @@ bool pkgAcquire::Worker::RunMessages()
 		  Log->Pulse((*O)->GetOwner());
 
 	    std::vector<Item*> const ItmOwners = Itm->Owners;
+	    for (auto const Owner : ItmOwners)
+	       Owner->ErrorText.clear();
 	    OwnerQ->ItemDone(Itm);
 	    Itm = nullptr;
 
@@ -600,8 +655,8 @@ bool pkgAcquire::Worker::RunMessages()
 	    {
 	       std::string const failReason = LookupTag(Message, "FailReason");
 	       {
-		  auto const reasons = { "Timeout", "ConnectionRefused",
-		     "ConnectionTimedOut", "ResolveFailure", "TmpResolveFailure" };
+		  auto const reasons = {"Timeout", "ConnectionRefused",
+					"ConnectionTimedOut", "ResolveFailure", "TmpResolveFailure", "TooManyRequests"};
 		  errTransient = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons);
 	       }
 	       if (errTransient == false)
@@ -633,6 +688,7 @@ void pkgAcquire::Worker::HandleFailure(std::vector<pkgAcquire::Item *> const &It
 				       std::string const &Message, bool const errTransient, bool const errAuthErr)
 {
    auto currentTime = clock::now();
+   auto currentWall = std::chrono::system_clock::now();
    for (auto const Owner : ItmOwners)
    {
       std::string NewURI;
@@ -645,7 +701,24 @@ void pkgAcquire::Worker::HandleFailure(std::vector<pkgAcquire::Item *> const &It
 	 {
 	    auto Iter = _config->FindI("Acquire::Retries", 3) - Owner->Retries - 1;
 	    auto const MaxDur = _config->FindI("Acquire::Retries::Delay::Maximum", 30);
-	    auto Dur =  std::chrono::seconds(std::min(1 << Iter, MaxDur));
+	    auto const handleRetryAfter = _config->FindB("Acquire::Retries::HandleRetryAfter", true);
+	    auto Dur = std::chrono::seconds(1 << Iter);
+	    auto const retryAfterStr = LookupTag(Message, "Retry-After");
+	    auto const failReason = LookupTag(Message, "FailReason");
+	    if (failReason == "TooManyRequests" && !retryAfterStr.empty() && handleRetryAfter)
+	    {
+	       // The webserver gave a retry time. Use it, but also add exponential
+	       // backoff waiting as we might not be the only client.
+	       const auto retryAfter = std::chrono::seconds(std::strtoul(retryAfterStr.c_str(), nullptr, 10));
+	       const auto epochCurrent = std::chrono::duration_cast<std::chrono::seconds>(currentWall.time_since_epoch());
+	       // If the retryAfter is in the past, we can just continue.
+	       if (retryAfter > epochCurrent)
+		  Dur += retryAfter - epochCurrent;
+	       // Usually, all requests run into the rate limit at the same time.
+	       // Distribute the retries to avoid hitting the limit again.
+	       Dur += std::chrono::seconds(std::rand() % Dur.count());
+	    }
+	    Dur = std::min(Dur, std::chrono::seconds(MaxDur));
 	    if (_config->FindB("Debug::Acquire::Retries"))
 	       std::clog << "Delaying " << SavedDesc.Description << " by " << Dur.count() << " seconds" << std::endl;
 	    Owner->FetchAfter(currentTime + Dur);
@@ -663,7 +736,7 @@ void pkgAcquire::Worker::HandleFailure(std::vector<pkgAcquire::Item *> const &It
       else
       {
 	 if (errAuthErr)
-	    Owner->RemoveAlternativeSite(URI::SiteOnly(Owner->GetItemDesc().URI));
+	    Owner->RemoveAlternativeSite(Owner->GetItemDesc().URI);
 	 if (Owner->PopAlternativeURI(NewURI))
 	 {
 	    Owner->FailMessage(Message);
@@ -824,14 +897,12 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
    }
    Message += "\nFilename: " + Item->Owner->DestFile;
 
-   // FIXME: We should not hard code proxy protocols here.
-   if (URL.Access == "http" || URL.Access == "https")
+   // AutoDetectProxy() checks this already by itself, but we don't want to access unknown configs
+   if (CanURIBeAccessedViaProxy(URL))
    {
       AutoDetectProxy(URL);
-      if (_config->Exists("Acquire::" + URL.Access + "::proxy::" + URL.Host))
-      {
-	 Message += "\nProxy: " + _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host);
-      }
+      if (auto const proxy = _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host); not proxy.empty())
+	 Message.append("\nProxy: ").append(proxy);
    }
 
    HashStringList const hsl = Item->GetExpectedHashes();
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index cdb2c52..07f64cc 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -29,19 +29,20 @@
 #include <iostream>
 #include <memory>
 #include <numeric>
+#include <regex>
 #include <sstream>
 #include <string>
 #include <tuple>
 #include <vector>
 
+#include <cerrno>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <dirent.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <grp.h>
 #include <pwd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/select.h>
 #include <sys/stat.h>
 #include <sys/time.h>
@@ -523,7 +524,7 @@ pkgAcquire::MethodConfig *pkgAcquire::GetConfig(string Access)
    Configs = Conf;
 
    /* if a method uses DownloadLimit, we switch to SingleInstance mode */
-   if(_config->FindI("Acquire::"+Access+"::Dl-Limit",0) > 0)
+   if (not Conf->SingleInstance && _config->FindI("Acquire::" + Access + "::Dl-Limit", 0) > 0)
       Conf->SingleInstance = true;
     
    return Conf;
@@ -604,7 +605,7 @@ static bool IsAccessibleBySandboxUser(std::string const &filename, bool const Re
 
       char const * const filetag = ".apt-acquire-privs-test.XXXXXX";
       std::string const tmpfile_tpl = flCombine(dirname, filetag);
-      std::unique_ptr<char, decltype(std::free) *> tmpfile { strdup(tmpfile_tpl.c_str()), std::free };
+      std::unique_ptr<char, FreeDeleter> tmpfile { strdup(tmpfile_tpl.c_str()) };
       int const fd = mkstemp(tmpfile.get());
       if (fd == -1 && errno == EACCES)
 	 return false;
@@ -825,11 +826,11 @@ pkgAcquire::Worker *pkgAcquire::WorkerStep(Worker *I)
    return I->NextAcquire;
 }
 									/*}}}*/
-// Acquire::Clean - Cleans a directory					/*{{{*/
+// CleanDir - Cleans a directory					/*{{{*/
 // ---------------------------------------------------------------------
 /* This is a bit simplistic, it looks at every file in the dir and sees
-   if it is part of the download set. */
-bool pkgAcquire::Clean(string Dir)
+   if it matches the predicate or not. */
+static bool CleanDir(std::string const &Dir, std::function<bool(std::string_view)> const &Keep, char const * const Caller)
 {
    // non-existing directories are by definition clean…
    if (DirectoryExists(Dir) == false)
@@ -853,22 +854,47 @@ bool pkgAcquire::Clean(string Dir)
 	  strcmp(E->d_name, "auxfiles") == 0 ||
 	  strcmp(E->d_name, "lost+found") == 0 ||
 	  strcmp(E->d_name, ".") == 0 ||
-	  strcmp(E->d_name, "..") == 0)
+	  strcmp(E->d_name, "..") == 0 ||
+	  Keep(E->d_name))
 	 continue;
-
-      // Look in the get list and if not found nuke
-      if (std::any_of(Items.cbegin(), Items.cend(),
-	     [&E](pkgAcquire::Item const * const I) {
-		return flNotDir(I->DestFile) == E->d_name;
-	     }) == false)
-      {
-	 RemoveFileAt("pkgAcquire::Clean", dirfd, E->d_name);
-      }
+      RemoveFileAt(Caller, dirfd, E->d_name);
    }
    closedir(D);
    return true;
 }
 									/*}}}*/
+// Acquire::Clean - Cleans a directory of downloaded files             /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a bit simplistic, it looks at every file in the dir and sees
+   if it is part of the download set. */
+bool pkgAcquire::Clean(std::string Dir)
+{
+   return CleanDir(
+      Dir,
+      // Look in the get list and if found then keep
+      [this](std::string_view const FName) {
+         return std::any_of(Items.cbegin(), Items.cend(),
+            [FName](pkgAcquire::Item const * const I) {
+               return flNotDir(I->DestFile) == FName;
+            });
+      },
+      "pkgAcquire::Clean"
+   );
+}
+                           /*}}}*/
+// Acquire::CleanLists - Cleans a directory of list files		/*{{{*/
+bool pkgAcquire::CleanLists(std::string const &Dir)
+{
+   std::regex const KeepPattern(".*_(Release|Release\\.gpg|InRelease)");
+   return CleanDir(
+      Dir,
+      [&KeepPattern](std::string_view const FName) noexcept {
+         return std::regex_match(FName.begin(), FName.end(), KeepPattern);
+      },
+      "pkgAcquire::CleanLists"
+   );
+}
+									/*}}}*/
 // Acquire::TotalNeeded - Number of bytes to fetch			/*{{{*/
 // ---------------------------------------------------------------------
 /* This is the total number of bytes needed */
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
index 17b6876..6eb9a65 100644
--- a/apt-pkg/acquire.h
+++ b/apt-pkg/acquire.h
@@ -73,7 +73,7 @@
 #include <string>
 #include <vector>
 
-#include <stddef.h>
+#include <cstddef>
 #include <sys/select.h>
 #include <sys/time.h>
 
@@ -278,7 +278,7 @@ class APT_PUBLIC pkgAcquire
     *  methods on #Log to report on the progress of the download.
     *
     *  \param PulseInterval The method pkgAcquireStatus::Pulse will be
-    *  invoked on #Log at intervals of PulseInterval milliseconds.
+    *  invoked on #Log at intervals of PulseInterval microseconds.
     *
     *  \return the result of the download.
     */
@@ -330,6 +330,14 @@ class APT_PUBLIC pkgAcquire
     *  \return \b true if the directory exists and is readable.
     */
    bool Clean(std::string Dir);
+   
+   /** Deletes each package list and index file in the given directory.
+    *
+    *  \param Dir The directory to be cleaned.
+    *
+    *  \return \b true if the directory exists and is readable.
+    */
+   bool CleanLists(std::string const &Dir);
 
    /** \return the total size in bytes of all the items included in
     *  this download.
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 26d8c71..a08ecd2 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -25,13 +25,13 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/packagemanager.h>
 #include <apt-pkg/pkgcache.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/version.h>
 
 #include <apt-pkg/prettyprinters.h>
 
 #include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <map>
 #include <set>
@@ -39,7 +39,6 @@
 #include <string>
 #include <utility>
 #include <vector>
-#include <string.h>
 #include <sys/utsname.h>
 
 #include <apti18n.h>
@@ -62,8 +61,8 @@ pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache),
 {
    Sim.Init(0);
    auto PackageCount = Cache->Head().PackageCount;
-   Flags = new unsigned char[PackageCount];
-   memset(Flags,0,sizeof(*Flags)*PackageCount);
+   Flags = std::make_unique<unsigned char[]>(PackageCount);
+   memset(&Flags[0],0,sizeof(Flags[0])*PackageCount);
 
    // Fake a filename so as not to activate the media swapping
    string Jnk = "SIMULATE";
@@ -74,11 +73,7 @@ pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache),
 }
 									/*}}}*/
 // Simulate::~Simulate - Destructor					/*{{{*/
-pkgSimulate::~pkgSimulate()
-{
-   delete[] Flags;
-   delete d;
-}
+pkgSimulate::~pkgSimulate() = default;
 									/*}}}*/
 // Simulate::Describe - Describe a package				/*{{{*/
 // ---------------------------------------------------------------------
@@ -412,9 +407,9 @@ pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pC
 {
    // Allocate memory
    auto const Size = Cache.Head().PackageCount;
-   Scores = new int[Size];
-   Flags = new unsigned char[Size];
-   memset(Flags,0,sizeof(*Flags)*Size);
+   Scores = std::make_unique<int[]>(Size);
+   Flags = std::make_unique<unsigned char[]>(Size);
+   memset(&Flags[0],0,sizeof(Flags[0])*Size);
    
    // Set debug to true to see its decision logic
    Debug = _config->FindB("Debug::pkgProblemResolver",false);
@@ -423,11 +418,7 @@ pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pC
 // ProblemResolver::~pkgProblemResolver - Destructor			/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-pkgProblemResolver::~pkgProblemResolver()
-{
-   delete [] Scores;
-   delete [] Flags;
-}
+pkgProblemResolver::~pkgProblemResolver() = default;
 									/*}}}*/
 // ProblemResolver::ScoreSort - Sort the list by score			/*{{{*/
 // ---------------------------------------------------------------------
@@ -447,7 +438,7 @@ int pkgProblemResolver::ScoreSort(Package const *A,Package const *B)
 void pkgProblemResolver::MakeScores()
 {
    auto const Size = Cache.Head().PackageCount;
-   memset(Scores,0,sizeof(*Scores)*Size);
+   memset(&Scores[0],0,sizeof(Scores[0])*Size);
 
    // maps to pkgCache::State::VerPriority: 
    //    Required Important Standard Optional Extra
@@ -564,7 +555,7 @@ void pkgProblemResolver::MakeScores()
 
    // Copy the scores to advoid additive looping
    std::unique_ptr<int[]> OldScores(new int[Size]);
-   memcpy(OldScores.get(),Scores,sizeof(*Scores)*Size);
+   memcpy(&OldScores[0],&Scores[0],sizeof(Scores[0])*Size);
       
    /* Now we cause 1 level of dependency inheritance, that is we add the 
       score of the packages that depend on the target Package. This 
@@ -807,16 +798,16 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
       high score packages cause the removal of lower score packages that
       would cause the removal of even lower score packages. */
    std::unique_ptr<pkgCache::Package *[]> PList(new pkgCache::Package *[Size]);
-   pkgCache::Package **PEnd = PList.get();
+   pkgCache::Package **PEnd = &PList[0];
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
       *PEnd++ = I;
 
-   std::sort(PList.get(), PEnd, [this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
+   std::sort(&PList[0], PEnd, [this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
 
    if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
    {
       clog << "Show Scores" << endl;
-      for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
+      for (pkgCache::Package **K = &PList[0]; K != PEnd; K++)
          if (Scores[(*K)->ID] != 0)
          {
            pkgCache::PkgIterator Pkg(Cache,*K);
@@ -840,7 +831,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
    for (int Counter = 0; Counter < MaxCounter && Change; ++Counter)
    {
       Change = false;
-      for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
+      for (pkgCache::Package **K = &PList[0]; K != PEnd; K++)
       {
 	 pkgCache::PkgIterator I(Cache,*K);
 
@@ -969,7 +960,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
 	    }
 	    
 	    bool Done = false;
-	    for (pkgCache::Version **V = VList.get(); *V != 0; V++)
+	    for (pkgCache::Version **V = &VList[0]; *V != 0; V++)
 	    {
 	       pkgCache::VerIterator Ver(Cache,*V);
 	       pkgCache::PkgIterator Pkg = Ver.ParentPkg();
@@ -1056,9 +1047,12 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
 			      clog << "  Try Installing " << APT::PrettyPkg(&Cache, Start.TargetPkg()) << " before changing " << I.FullName(false) << std::endl;
 			   auto const OldBroken = Cache.BrokenCount();
 			   Cache.MarkInstall(Start.TargetPkg(), true, 1, false);
+			   OrOp = OrKeep;
 			   // FIXME: we should undo the complete MarkInstall process here
-			   if (Cache[Start.TargetPkg()].InstBroken() == true || Cache.BrokenCount() > OldBroken)
+			   if (Cache[Start.TargetPkg()].InstBroken() == true || Cache.BrokenCount() > OldBroken) {
 			      Cache.MarkDelete(Start.TargetPkg(), false, 1, false);
+			      OrOp = OrRemove;
+			   }
 			}
 		     }
 		  }
@@ -1231,7 +1225,8 @@ bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I)
    }
 
    // a newly broken policy (recommends/suggests) is a problem
-   if (Cache[I].NowPolicyBroken() == false &&
+   if ((Flags[I->ID] & BrokenPolicyAllowed) == 0 &&
+       Cache[I].NowPolicyBroken() == false &&
        Cache[I].InstPolicyBroken() == true)
    {
       if (Debug == true)
@@ -1241,6 +1236,26 @@ bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I)
 
    return false;
 }
+									/*}}}*/
+// ProblemResolver::KeepPhasedUpdates - Keep back phased updates	/*{{{*/
+// ---------------------------------------------------------------------
+// Hold back upgrades to phased versions of already installed packages, unless
+// they are security updates
+bool pkgProblemResolver::KeepPhasedUpdates()
+{
+   for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+   {
+      if (not Cache.PhasingApplied(I))
+	 continue;
+
+      Cache.MarkKeep(I, false, false);
+      Cache.MarkProtected(I);
+      Protect(I);
+   }
+
+   return true;
+}
+
 									/*}}}*/
 // ProblemResolver::ResolveByKeep - Resolve problems using keep		/*{{{*/
 // ---------------------------------------------------------------------
@@ -1250,7 +1265,7 @@ bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I)
 bool pkgProblemResolver::ResolveByKeep(OpProgress * const Progress)
 {
    std::string const solver = _config->Find("APT::Solver", "internal");
-   constexpr auto flags = EDSP::Request::UPGRADE_ALL | EDSP::Request::FORBID_NEW_INSTALL | EDSP::Request::FORBID_REMOVE;
+   constexpr auto flags = EDSP::Request::FORBID_NEW_INSTALL | EDSP::Request::FORBID_REMOVE;
    auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, flags, Progress);
    if (solver != "internal")
       return ret;
@@ -1276,18 +1291,18 @@ bool pkgProblemResolver::ResolveByKeepInternal()
       high score packages cause the removal of lower score packages that
       would cause the removal of even lower score packages. */
    auto Size = Cache.Head().PackageCount;
-   pkgCache::Package **PList = new pkgCache::Package *[Size];
-   pkgCache::Package **PEnd = PList;
+   std::unique_ptr<pkgCache::Package *[]> PList{new pkgCache::Package *[Size]};
+   pkgCache::Package **PEnd = &PList[0];
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
       *PEnd++ = I;
 
-   std::sort(PList,PEnd,[this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
+   std::sort(&PList[0],PEnd,[this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
 
 
    if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
    {
       clog << "Show Scores" << endl;
-      for (pkgCache::Package **K = PList; K != PEnd; K++)
+      for (pkgCache::Package **K = &PList[0]; K != PEnd; K++)
          if (Scores[(*K)->ID] != 0)
          {
            pkgCache::PkgIterator Pkg(Cache,*K);
@@ -1300,7 +1315,8 @@ bool pkgProblemResolver::ResolveByKeepInternal()
 
    // Consider each broken package 
    pkgCache::Package **LastStop = 0;
-   for (pkgCache::Package **K = PList; K != PEnd; K++)
+restart:
+   for (pkgCache::Package **K = &PList[0]; K != PEnd; K++)
    {
       pkgCache::PkgIterator I(Cache,*K);
 
@@ -1318,10 +1334,7 @@ bool pkgProblemResolver::ResolveByKeepInternal()
 	    clog << "Keeping package " << I.FullName(false) << endl;
 	 Cache.MarkKeep(I, false, false);
 	 if (InstOrNewPolicyBroken(I) == false)
-	 {
-	    K = PList - 1;
-	    continue;
-	 }
+	    goto restart;
       }
       
       // Isolate the problem dependencies
@@ -1350,14 +1363,13 @@ bool pkgProblemResolver::ResolveByKeepInternal()
 
 	    // Look at all the possible provides on this package
 	    std::unique_ptr<pkgCache::Version *[]> VList(Start.AllTargets());
-	    for (pkgCache::Version **V = VList.get(); *V != 0; V++)
+	    for (pkgCache::Version **V = &VList[0]; *V != 0; V++)
 	    {
 	       pkgCache::VerIterator Ver(Cache,*V);
 	       pkgCache::PkgIterator Pkg = Ver.ParentPkg();
 	       
 	       // It is not keepable
-	       if (Cache[Pkg].InstallVer == 0 ||
-		   Pkg->CurrentVer == 0)
+	       if (Pkg->CurrentVer == 0)
 		  continue;
 
 	       if (not Cache[Pkg].Protect())
@@ -1391,14 +1403,14 @@ bool pkgProblemResolver::ResolveByKeepInternal()
           // I is an iterator based off our temporary package list,
           // so copy the name we need before deleting the temporary list
           std::string const LoopingPackage = I.FullName(false);
-          delete[] PList;
           return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.", LoopingPackage.c_str());
       }
       LastStop = K;
-      K = PList - 1;
+      goto restart;
    }
 
-   delete[] PList;
+   if (Cache.BrokenCount() != 0)
+      return _error->Error(_("Unable to correct problems, you have held broken packages."));
 
    if (Debug)
       Cache.CheckConsistency("keep done");
@@ -1550,30 +1562,37 @@ std::string GetProtectedKernelsRegex(pkgCache *cache, bool ReturnRemove)
    if (version2unames.size() == 0)
       return "";
 
-   auto latest = version2unames.rbegin();
-   auto previous = latest;
-   ++previous;
-
+   auto versions = version2unames.rbegin();
    std::set<std::string> keep;
 
+   auto keepKernels = (unsigned long)_config->FindI("APT::NeverAutoRemove::KernelCount", 2);
+   if (keepKernels < 2)
+      keepKernels = 2;
+
+   if (Debug)
+      std::clog << "Amount of kernels to keep " << keepKernels << std::endl;
+
    if (not bootedVersion.empty())
    {
       if (Debug)
 	 std::clog << "Keeping booted kernel " << bootedVersion << std::endl;
       keep.insert(bootedVersion);
    }
-   if (latest != version2unames.rend())
-   {
-      if (Debug)
-	 std::clog << "Keeping latest kernel " << latest->first << std::endl;
-      keep.insert(latest->first);
-   }
-   if (keep.size() < 2 && previous != version2unames.rend())
+
+   while (keep.size() < keepKernels && versions != version2unames.rend())
    {
+      auto v = versions->first;
+      if (v == bootedVersion)
+      {
+	 versions++;
+	 continue;
+      }
       if (Debug)
-	 std::clog << "Keeping previous kernel " << previous->first << std::endl;
-      keep.insert(previous->first);
+	 std::clog << "Keeping previous kernel " << v << std::endl;
+      keep.insert(v);
+      versions++;
    }
+
    // Escape special characters '.' and '+' in version strings so we can build a regular expression
    auto escapeSpecial = [](std::string input) -> std::string {
       for (size_t pos = 0; (pos = input.find_first_of(".+", pos)) != input.npos; pos += 2) {
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
index 12a77d4..bad20aa 100644
--- a/apt-pkg/algorithms.h
+++ b/apt-pkg/algorithms.h
@@ -46,7 +46,7 @@
 class pkgSimulatePrivate;
 class APT_PUBLIC pkgSimulate : public pkgPackageManager				/*{{{*/
 {
-   pkgSimulatePrivate * const d;
+   std::unique_ptr<pkgSimulatePrivate> const d;
    protected:
 
    class APT_PUBLIC Policy : public pkgDepCache::Policy
@@ -54,7 +54,7 @@ class APT_PUBLIC pkgSimulate : public pkgPackageManager				/*{{{*/
       pkgDepCache *Cache;
       public:
       
-      virtual VerIterator GetCandidateVer(PkgIterator const &Pkg) APT_OVERRIDE
+      VerIterator GetCandidateVer(PkgIterator const &Pkg) override
       {
 	 return (*Cache)[Pkg].CandidateVerIter(*Cache);
       }
@@ -62,18 +62,18 @@ class APT_PUBLIC pkgSimulate : public pkgPackageManager				/*{{{*/
       explicit Policy(pkgDepCache *Cache) : Cache(Cache) {};
    };
    
-   unsigned char *Flags;
+   std::unique_ptr<unsigned char[]> Flags;
    
    Policy iPolicy;
    pkgDepCache Sim;
    pkgDepCache::ActionGroup group;
 
    // The Actual installation implementation
-   virtual bool Install(PkgIterator Pkg,std::string File) APT_OVERRIDE;
-   virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE;
-   virtual bool Remove(PkgIterator Pkg,bool Purge) APT_OVERRIDE;
+   bool Install(PkgIterator Pkg, std::string File) override;
+   bool Configure(PkgIterator Pkg) override;
+   bool Remove(PkgIterator Pkg, bool Purge) override;
 
-public:
+   public:
    bool Go(APT::Progress::PackageManager * progress) override;
 
 private:
@@ -102,12 +102,18 @@ class APT_PUBLIC pkgProblemResolver						/*{{{*/
    typedef pkgCache::PrvIterator PrvIterator;
    typedef pkgCache::Version Version;
    typedef pkgCache::Package Package;
-   
-   enum Flags {Protected = (1 << 0), PreInstalled = (1 << 1),
-               Upgradable = (1 << 2), ReInstateTried = (1 << 3),
-               ToRemove = (1 << 4)};
-   int *Scores;
-   unsigned char *Flags;
+
+   enum Flags
+   {
+      Protected = (1 << 0),
+      PreInstalled = (1 << 1),
+      Upgradable = (1 << 2),
+      ReInstateTried = (1 << 3),
+      ToRemove = (1 << 4),
+      BrokenPolicyAllowed = (1 << 5)
+   };
+   std::unique_ptr<int[]> Scores;
+   std::unique_ptr<unsigned char[]> Flags;
    bool Debug;
    
    // Sort stuff
@@ -129,7 +135,12 @@ class APT_PUBLIC pkgProblemResolver						/*{{{*/
    
    inline void Protect(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= Protected; Cache.MarkProtected(Pkg);};
    inline void Remove(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= ToRemove;};
-   inline void Clear(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] &= ~(Protected | ToRemove);};
+   inline void Clear(pkgCache::PkgIterator Pkg) { Flags[Pkg->ID] &= ~(Protected | ToRemove | BrokenPolicyAllowed); };
+#ifdef APT_COMPILING_APT
+   inline void AllowBrokenPolicy(pkgCache::PkgIterator Pkg) { Flags[Pkg->ID] |= BrokenPolicyAllowed; };
+#endif
+
+   bool KeepPhasedUpdates();
 
    // Try to intelligently resolve problems by installing and removing packages
    bool Resolve(bool BrokenFix = false, OpProgress * const Progress = NULL);
diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc
index 00a97a0..f462b6e 100644
--- a/apt-pkg/aptconfiguration.cc
+++ b/apt-pkg/aptconfiguration.cc
@@ -19,17 +19,17 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <cctype>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <string>
 #include <vector>
-#include <ctype.h>
 #include <dirent.h>
 #include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <sys/stat.h>
 #include <unistd.h>
-
 									/*}}}*/
 namespace APT {
 // setDefaultConfigurationForCompressors				/*{{{*/
@@ -538,4 +538,64 @@ bool Configuration::isChroot()
    return once.res;
 }
 									/*}}}*/
+// isUsrMerged - whether usr is merged t			     	/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool Configuration::checkUsrMerged()
+{
+   std::string rootDir = _config->FindDir("Dir");
+   for (auto dir : {"bin", "sbin", "lib"})
+   {
+      struct stat root;
+      struct stat usr;
+      std::string dirInRoot = rootDir + dir;
+      std::string dirInUsr = rootDir + "usr/" + dir;
+
+      // Missing directories are a boot strap scenario that needs to work
+      if (stat(dirInRoot.c_str(), &root))
+	 continue;
+      if (stat(dirInUsr.c_str(), &usr))
+	 continue;
+      if (root.st_ino != usr.st_ino)
+	 return _error->Warning("%s resolved to a different inode than %s", dirInRoot.c_str(), dirInUsr.c_str()), false;
+   }
+
+   return true;
+}
+									/*}}}*/
+// isUsrMerged - whether usr is merged t			     	/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+std::string Configuration::color(std::string const &colorName, std::string const &content)
+{
+   if (not _config->FindB("APT::Color"))
+      return content;
+
+   auto colors = ::Configuration(_config->Tree("APT::Color"));
+   auto color = colors.Find(colorName);
+
+   // Resolve the color recursively. A color string has the following format
+   // <color> :=    \x1B<word>       ; fully resolved color
+   //            | \\x1B<word>       ; color escaped.
+   //            | <word>	     ; a simple color name
+   //            | <color> <color>   ; a sequence of colors
+   if (color.find(" ") != color.npos)
+   {
+      std::string res;
+      for (auto &&colorPart : VectorizeString(color, ' '))
+	 res += Configuration::color(colorPart);
+      color = res;
+   }
+   else if (not color.empty() && color[0] != '\x1B')
+   {
+      if (APT::String::Startswith(color, "\\x1B"))
+	 color = "\x1B" + color.substr(4);
+      else
+	 color = Configuration::color(color);
+   }
+   if (content.empty())
+      return color;
+   return color + content + Configuration::color("Neutral");
+}
+									/*}}}*/
 }
diff --git a/apt-pkg/aptconfiguration.h b/apt-pkg/aptconfiguration.h
index bbeb156..58c925b 100644
--- a/apt-pkg/aptconfiguration.h
+++ b/apt-pkg/aptconfiguration.h
@@ -125,8 +125,14 @@ namespace Configuration {							/*{{{*/
 
 	std::string const getMachineID();
 
+#ifdef APT_COMPILING_APT
 	/** \return Whether we are running in a chroot */
-	bool isChroot();
+	APT_PUBLIC bool isChroot();
+	/** \return Check usr is merged or produce error. */
+	APT_PUBLIC bool checkUsrMerged();
+	APT_PUBLIC std::string color(std::string const &colorName, std::string const &content = "");
+#endif
+
 	/*}}}*/
 }
 									/*}}}*/
diff --git a/apt-pkg/cachefile.cc b/apt-pkg/cachefile.cc
index 4c3cc95..8034ffe 100644
--- a/apt-pkg/cachefile.cc
+++ b/apt-pkg/cachefile.cc
@@ -27,13 +27,13 @@
 #include <apt-pkg/progress.h>
 #include <apt-pkg/sourcelist.h>
 
+#include <cstring>
 #include <limits>
 #include <memory>
 #include <string>
 #include <vector>
-#include <string.h>
-#include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/types.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -318,15 +318,15 @@ void pkgCacheFile::RemoveCaches()
    if (pkgcache.empty() == false)
    {
       std::string cachedir = flNotFile(pkgcache);
-      std::string cachefile = flNotDir(pkgcache);
+      std::string cachefile{flNotDir(pkgcache)};
       if (cachedir.empty() != true && cachefile.empty() != true && DirectoryExists(cachedir) == true)
       {
 	 cachefile.append(".");
 	 std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false);
 	 for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file)
 	 {
-	    std::string nuke = flNotDir(*file);
-	    if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0)
+	    auto nuke = flNotDir(*file);
+            if (cachefile != nuke.substr(0, cachefile.length()))
 	       continue;
 	    RemoveFile("RemoveCaches", *file);
 	 }
@@ -337,15 +337,15 @@ void pkgCacheFile::RemoveCaches()
       return;
 
    std::string cachedir = flNotFile(srcpkgcache);
-   std::string cachefile = flNotDir(srcpkgcache);
+   std::string cachefile{flNotDir(srcpkgcache)};
    if (cachedir.empty() == true || cachefile.empty() == true || DirectoryExists(cachedir) == false)
       return;
    cachefile.append(".");
    std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false);
    for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file)
    {
-      std::string nuke = flNotDir(*file);
-      if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0)
+      auto nuke = flNotDir(*file);
+      if (cachefile != nuke.substr(0, cachefile.length()))
 	 continue;
       RemoveFile("RemoveCaches", *file);
    }
diff --git a/apt-pkg/cachefile.h b/apt-pkg/cachefile.h
index 4e26e6d..cea802d 100644
--- a/apt-pkg/cachefile.h
+++ b/apt-pkg/cachefile.h
@@ -16,7 +16,7 @@
 #ifndef PKGLIB_CACHEFILE_H
 #define PKGLIB_CACHEFILE_H
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <apt-pkg/depcache.h>
 #include <apt-pkg/macros.h>
diff --git a/apt-pkg/cachefilter-patterns.cc b/apt-pkg/cachefilter-patterns.cc
index faf5735..e79e1af 100644
--- a/apt-pkg/cachefilter-patterns.cc
+++ b/apt-pkg/cachefilter-patterns.cc
@@ -12,6 +12,8 @@
 
 #include <apti18n.h>
 
+using namespace std::literals;
+
 namespace APT
 {
 namespace Internal
@@ -19,50 +21,50 @@ namespace Internal
 
 static const constexpr struct
 {
-   APT::StringView shortName;
-   APT::StringView longName;
+   std::string_view shortName;
+   std::string_view longName;
    bool takesArgument;
 } shortPatterns[] = {
-   {"r"_sv, "?architecture"_sv, true},
-   {"A"_sv, "?archive"_sv, true},
-   {"M"_sv, "?automatic"_sv, false},
-   {"b"_sv, "?broken"_sv, false},
-   {"c"_sv, "?config-files"_sv, false},
+   {"r"sv, "?architecture"sv, true},
+   {"A"sv, "?archive"sv, true},
+   {"M"sv, "?automatic"sv, false},
+   {"b"sv, "?broken"sv, false},
+   {"c"sv, "?config-files"sv, false},
    // FIXME: The words after ~D should be case-insensitive
-   {"DDepends:"_sv, "?depends"_sv, true},
-   {"DPre-Depends:"_sv, "?pre-depends"_sv, true},
-   {"DSuggests:"_sv, "?suggests"_sv, true},
-   {"DRecommends:"_sv, "?recommends"_sv, true},
-   {"DConflicts:"_sv, "?conflicts"_sv, true},
-   {"DReplaces:"_sv, "?replaces"_sv, true},
-   {"DObsoletes:"_sv, "?obsoletes"_sv, true},
-   {"DBreaks:"_sv, "?breaks"_sv, true},
-   {"DEnhances:"_sv, "?enhances"_sv, true},
-   {"D"_sv, "?depends"_sv, true},
-   {"RDepends:"_sv, "?reverse-depends"_sv, true},
-   {"RPre-Depends:"_sv, "?reverse-pre-depends"_sv, true},
-   {"RSuggests:"_sv, "?reverse-suggests"_sv, true},
-   {"RRecommends:"_sv, "?reverse-recommends"_sv, true},
-   {"RConflicts:"_sv, "?reverse-conflicts"_sv, true},
-   {"RReplaces:"_sv, "?reverse-replaces"_sv, true},
-   {"RObsoletes:"_sv, "?reverse-obsoletes"_sv, true},
-   {"RBreaks:"_sv, "?reverse-breaks"_sv, true},
-   {"REnhances:"_sv, "?reverse-enhances"_sv, true},
-   {"R"_sv, "?reverse-depends"_sv, true},
-   {"E"_sv, "?essential"_sv, false},
-   {"F"_sv, "?false"_sv, false},
-   {"g"_sv, "?garbage"_sv, false},
-   {"i"_sv, "?installed"_sv, false},
-   {"n"_sv, "?name"_sv, true},
-   {"o"_sv, "?obsolete"_sv, false},
-   {"O"_sv, "?origin"_sv, true},
-   {"p"_sv, "?priority"_sv, true},
-   {"s"_sv, "?section"_sv, true},
-   {"e"_sv, "?source-package"_sv, true},
-   {"T"_sv, "?true"_sv, false},
-   {"U"_sv, "?upgradable"_sv, false},
-   {"V"_sv, "?version"_sv, true},
-   {"v"_sv, "?virtual"_sv, false},
+   {"DDepends:"sv, "?depends"sv, true},
+   {"DPre-Depends:"sv, "?pre-depends"sv, true},
+   {"DSuggests:"sv, "?suggests"sv, true},
+   {"DRecommends:"sv, "?recommends"sv, true},
+   {"DConflicts:"sv, "?conflicts"sv, true},
+   {"DReplaces:"sv, "?replaces"sv, true},
+   {"DObsoletes:"sv, "?obsoletes"sv, true},
+   {"DBreaks:"sv, "?breaks"sv, true},
+   {"DEnhances:"sv, "?enhances"sv, true},
+   {"D"sv, "?depends"sv, true},
+   {"RDepends:"sv, "?reverse-depends"sv, true},
+   {"RPre-Depends:"sv, "?reverse-pre-depends"sv, true},
+   {"RSuggests:"sv, "?reverse-suggests"sv, true},
+   {"RRecommends:"sv, "?reverse-recommends"sv, true},
+   {"RConflicts:"sv, "?reverse-conflicts"sv, true},
+   {"RReplaces:"sv, "?reverse-replaces"sv, true},
+   {"RObsoletes:"sv, "?reverse-obsoletes"sv, true},
+   {"RBreaks:"sv, "?reverse-breaks"sv, true},
+   {"REnhances:"sv, "?reverse-enhances"sv, true},
+   {"R"sv, "?reverse-depends"sv, true},
+   {"E"sv, "?essential"sv, false},
+   {"F"sv, "?false"sv, false},
+   {"g"sv, "?garbage"sv, false},
+   {"i"sv, "?installed"sv, false},
+   {"n"sv, "?name"sv, true},
+   {"o"sv, "?obsolete"sv, false},
+   {"O"sv, "?origin"sv, true},
+   {"p"sv, "?priority"sv, true},
+   {"s"sv, "?section"sv, true},
+   {"e"sv, "?source-package"sv, true},
+   {"T"sv, "?true"sv, false},
+   {"U"sv, "?upgradable"sv, false},
+   {"V"sv, "?version"sv, true},
+   {"v"sv, "?virtual"sv, false},
 };
 
 template <class... Args>
@@ -270,7 +272,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parsePattern()
    static constexpr auto CHARS = ("0123456789"
 				  "abcdefghijklmnopqrstuvwxyz"
 				  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-				  "-"_sv);
+				  "-"sv);
    if (sentence[state.offset] != '?')
       return nullptr;
 
@@ -278,7 +280,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parsePattern()
    node->end = node->start = state.offset;
    state.offset++;
 
-   while (CHARS.find(sentence[state.offset]) != APT::StringView::npos)
+   while (CHARS.find(sentence[state.offset]) != std::string_view::npos)
    {
       ++state.offset;
    }
@@ -356,20 +358,20 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseQuotedWord()
 std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseWord(bool shrt)
 {
    // Characters not allowed at the start of a word (also see ..._SHRT)
-   static const constexpr auto DISALLOWED_START = "!?~|,() \0"_sv;
+   static const constexpr auto DISALLOWED_START = "!?~|,() \0"sv;
    // Characters terminating a word inside a long pattern
-   static const constexpr auto DISALLOWED_LONG = "|,()\0"_sv;
+   static const constexpr auto DISALLOWED_LONG = "|,()\0"sv;
    // Characters terminating a word as a short form argument, should contain all of START.
-   static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"_sv;
+   static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"sv;
    const auto DISALLOWED = shrt ? DISALLOWED_SHRT : DISALLOWED_LONG;
 
-   if (DISALLOWED_START.find(sentence[state.offset]) != APT::StringView::npos)
+   if (DISALLOWED_START.find(sentence[state.offset]) != std::string_view::npos)
       return nullptr;
 
    auto node = std::make_unique<WordNode>();
    node->start = state.offset;
 
-   while (DISALLOWED.find(sentence[state.offset]) == APT::StringView::npos)
+   while (DISALLOWED.find(sentence[state.offset]) == std::string_view::npos)
       state.offset++;
 
    node->end = state.offset;
@@ -381,7 +383,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseWord(bool shrt)
 std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os)
 {
 
-   os << term.to_string();
+   os << term;
    if (haveArgumentList)
    {
       os << "(";
@@ -394,7 +396,7 @@ std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os)
 
 std::ostream &PatternTreeParser::WordNode::render(std::ostream &os)
 {
-   return quoted ? os << '"' << word.to_string() << '"' : os << word.to_string();
+   return quoted ? os << '"' << word << '"' : os << word;
 }
 
 std::nullptr_t PatternTreeParser::Node::error(std::string message)
@@ -402,20 +404,20 @@ std::nullptr_t PatternTreeParser::Node::error(std::string message)
    throw Error{*this, message};
 }
 
-bool PatternTreeParser::PatternNode::matches(APT::StringView name, int min, int max)
+bool PatternTreeParser::PatternNode::matches(std::string_view name, int min, int max)
 {
    if (name != term)
       return false;
    if (max != 0 && !haveArgumentList)
-      error(rstrprintf("%s expects an argument list", term.to_string().c_str()));
+      error(rstrprintf("%.*s expects an argument list", (int)term.size(), term.data()));
    if (max == 0 && haveArgumentList)
-      error(rstrprintf("%s does not expect an argument list", term.to_string().c_str()));
+      error(rstrprintf("%.*s does not expect an argument list", (int)term.size(), term.data()));
    if (min >= 0 && min == max && (arguments.size() != size_t(min)))
-      error(rstrprintf("%s expects %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size()));
+      error(rstrprintf("%.*s expects %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size()));
    if (min >= 0 && arguments.size() < size_t(min))
-      error(rstrprintf("%s expects at least %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size()));
+      error(rstrprintf("%.*s expects at least %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size()));
    if (max >= 0 && arguments.size() > size_t(max))
-      error(rstrprintf("%s expects at most %d arguments, but received %d arguments", term.to_string().c_str(), max, arguments.size()));
+      error(rstrprintf("%.*s expects at most %d arguments, but received %d arguments", (int)term.size(), term.data(), max, arguments.size()));
    return true;
 }
 
@@ -498,8 +500,12 @@ std::unique_ptr<APT::CacheFilter::Matcher> PatternParser::aPattern(std::unique_p
       return std::make_unique<Patterns::PackageIsObsolete>();
    if (node->matches("?origin", 1, 1))
       return std::make_unique<Patterns::VersionIsOrigin>(aWord(node->arguments[0]));
+   if (node->matches("?phasing", 0, 0))
+      return std::make_unique<Patterns::PackageIsPhasing>(file);
    if (node->matches("?section", 1, 1))
       return std::make_unique<Patterns::VersionIsSection>(aWord(node->arguments[0]));
+   if (node->matches("?security", 0, 0))
+      return std::make_unique<Patterns::VersionIsSecurity>();
    if (node->matches("?source-package", 1, 1))
       return std::make_unique<Patterns::VersionIsSourcePackage>(aWord(node->arguments[0]));
    if (node->matches("?source-version", 1, 1))
@@ -534,7 +540,7 @@ std::unique_ptr<APT::CacheFilter::Matcher> PatternParser::aPattern(std::unique_p
       return pattern;
    }
 
-   node->error(rstrprintf("Unrecognized pattern '%s'", node->term.to_string().c_str()));
+   node->error(rstrprintf("Unrecognized pattern '%.*s'", (int)node->term.size(), node->term.data()));
 
    return nullptr;
 }
@@ -545,7 +551,7 @@ std::string PatternParser::aWord(std::unique_ptr<PatternTreeParser::Node> &nodeP
    auto node = dynamic_cast<PatternTreeParser::WordNode *>(nodeP.get());
    if (node == nullptr)
       nodeP->error("Expected a word");
-   return node->word.to_string();
+   return std::string{node->word};
 }
 
 namespace Patterns
@@ -553,37 +559,36 @@ namespace Patterns
 
 BaseRegexMatcher::BaseRegexMatcher(std::string const &Pattern)
 {
-   pattern = new regex_t;
-   int const Res = regcomp(pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
+   pattern.emplace();
+   int const Res = regcomp(&*pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
    if (Res == 0)
       return;
 
-   delete pattern;
-   pattern = NULL;
    char Error[300];
-   regerror(Res, pattern, Error, sizeof(Error));
+   regerror(Res, &*pattern, Error, sizeof(Error));
    _error->Error(_("Regex compilation error - %s"), Error);
+
+   pattern.reset();
 }
 bool BaseRegexMatcher::operator()(const char *string)
 {
-   if (unlikely(pattern == nullptr) || string == nullptr)
+   if (unlikely(pattern == std::nullopt) || string == nullptr)
       return false;
    else
-      return regexec(pattern, string, 0, 0, 0) == 0;
+      return regexec(&*pattern, string, 0, 0, 0) == 0;
 }
 BaseRegexMatcher::~BaseRegexMatcher()
 {
-   if (pattern == NULL)
+   if (pattern == std::nullopt)
       return;
-   regfree(pattern);
-   delete pattern;
+   regfree(&*pattern);
 }
 } // namespace Patterns
 
 } // namespace Internal
 
 // The bridge into the public world
-std::unique_ptr<APT::CacheFilter::Matcher> APT::CacheFilter::ParsePattern(APT::StringView pattern, pkgCacheFile *file)
+std::unique_ptr<APT::CacheFilter::Matcher> APT::CacheFilter::ParsePattern(std::string_view pattern, pkgCacheFile *file)
 {
    if (file != nullptr && !file->BuildDepCache())
       return nullptr;
@@ -598,7 +603,7 @@ std::unique_ptr<APT::CacheFilter::Matcher> APT::CacheFilter::ParsePattern(APT::S
    {
       std::stringstream ss;
       ss << "input:" << e.location.start << "-" << e.location.end << ": error: " << e.message << "\n";
-      ss << pattern.to_string() << "\n";
+      ss << pattern << "\n";
       for (size_t i = 0; i < e.location.start; i++)
 	 ss << " ";
       for (size_t i = e.location.start; i < e.location.end; i++)
diff --git a/apt-pkg/cachefilter-patterns.h b/apt-pkg/cachefilter-patterns.h
index 2d48a1c..07b7ac6 100644
--- a/apt-pkg/cachefilter-patterns.h
+++ b/apt-pkg/cachefilter-patterns.h
@@ -12,14 +12,15 @@
 #include <apt-pkg/cachefilter.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/header-is-private.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
+#include <cassert>
 #include <iostream>
 #include <memory>
+#include <optional>
 #include <sstream>
 #include <string>
+#include <string_view>
 #include <vector>
-#include <assert.h>
 
 namespace APT
 {
@@ -59,17 +60,17 @@ struct APT_PUBLIC PatternTreeParser
 
    struct PatternNode : public Node
    {
-      APT::StringView term;
+      std::string_view term;
       std::vector<std::unique_ptr<Node>> arguments;
       bool haveArgumentList = false;
 
       APT_HIDDEN std::ostream &render(std::ostream &stream) override;
-      APT_HIDDEN bool matches(APT::StringView name, int min, int max);
+      APT_HIDDEN bool matches(std::string_view name, int min, int max);
    };
 
    struct WordNode : public Node
    {
-      APT::StringView word;
+      std::string_view word;
       bool quoted = false;
       APT_HIDDEN std::ostream &render(std::ostream &stream) override;
    };
@@ -79,10 +80,26 @@ struct APT_PUBLIC PatternTreeParser
       size_t offset = 0;
    };
 
-   APT::StringView sentence;
+   /// \brief Zero-terminated wrapper for std::string_view
+   ///
+   /// The code peeks a character ahead and assumes the input is zero-terminated, but it may not be,
+   /// this class provides a peek-ahead character access in operator[] by returning 0 for [size()].
+   struct ZeroStringView : private std::string_view
+   {
+      explicit ZeroStringView(std::string_view s) : std::string_view(s) {}
+      char operator[](size_t i)
+      {
+	 assert(i <= size());
+	 if (likely(i < size()))
+	    return std::string_view::operator[](i);
+	 return '\0';
+      }
+      using std::string_view::size;
+      using std::string_view::substr;
+   } sentence;
    State state;
 
-   PatternTreeParser(APT::StringView sentence) : sentence(sentence){};
+   PatternTreeParser(std::string_view sentence) : sentence(sentence){};
    off_t skipSpace()
    {
       while (sentence[state.offset] == ' ' || sentence[state.offset] == '\t' || sentence[state.offset] == '\r' || sentence[state.offset] == '\n')
@@ -132,7 +149,7 @@ using namespace APT::CacheFilter;
 /** \brief Basic helper class for matching regex */
 class BaseRegexMatcher
 {
-   regex_t *pattern;
+   std::optional<regex_t> pattern;
 
    public:
    BaseRegexMatcher(std::string const &string);
@@ -243,6 +260,16 @@ struct APT_HIDDEN PackageIsObsolete : public PackageMatcher
    }
 };
 
+struct APT_HIDDEN PackageIsPhasing : public PackageMatcher
+{
+   pkgCacheFile *Cache;
+   explicit PackageIsPhasing(pkgCacheFile *Cache) : Cache(Cache) {}
+   bool operator()(pkgCache::PkgIterator const &pkg) override
+   {
+      return (*Cache)->PhasingApplied(pkg);
+   }
+};
+
 struct APT_HIDDEN PackageIsUpgradable : public PackageMatcher
 {
    pkgCacheFile *Cache;
@@ -405,6 +432,15 @@ struct APT_HIDDEN VersionIsSection : public VersionAnyMatcher
    }
 };
 
+struct APT_HIDDEN VersionIsSecurity : public VersionAnyMatcher
+{
+   VersionIsSecurity() {}
+   bool operator()(pkgCache::VerIterator const &Ver) override
+   {
+      return Ver.IsSecurityUpdate();
+   }
+};
+
 struct APT_HIDDEN VersionIsSourcePackage : public VersionAnyMatcher
 {
    BaseRegexMatcher matcher;
@@ -441,12 +477,7 @@ struct APT_HIDDEN VersionIsPriority : public VersionAnyMatcher
    explicit VersionIsPriority(std::string name) : name(name) {}
    bool operator()(pkgCache::VerIterator const &Ver) override
    {
-      std::string Mapping[] = {"", "required","important","standard",
-                            "optional","extra"};
-      if (Ver->Priority > 0 && Ver->Priority < APT_ARRAY_SIZE(Mapping)) {
-         return name == Mapping[Ver->Priority];
-      }
-      return false;
+      return Ver->Priority > 0 && name == pkgCache::Priority_NoL10n(Ver->Priority);
    }
 };
 
diff --git a/apt-pkg/cachefilter.cc b/apt-pkg/cachefilter.cc
index eadbb98..e933413 100644
--- a/apt-pkg/cachefilter.cc
+++ b/apt-pkg/cachefilter.cc
@@ -14,11 +14,11 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <cstring>
 #include <string>
 #include <unordered_map>
 #include <fnmatch.h>
 #include <regex.h>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
diff --git a/apt-pkg/cachefilter.h b/apt-pkg/cachefilter.h
index 1b5f9aa..5fe7df9 100644
--- a/apt-pkg/cachefilter.h
+++ b/apt-pkg/cachefilter.h
@@ -7,10 +7,10 @@
 #define APT_CACHEFILTER_H
 // Include Files							/*{{{*/
 #include <apt-pkg/pkgcache.h>
-#include <apt-pkg/string_view.h>
 
 #include <memory>
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include <regex.h>
@@ -30,35 +30,35 @@ public:
 
 class APT_PUBLIC PackageMatcher : public Matcher {
 public:
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE = 0;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE { return (*this)(Ver.ParentPkg()); }
-   bool operator() (pkgCache::GrpIterator const &/*Grp*/) APT_OVERRIDE { return false; }
-   ~PackageMatcher() APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override = 0;
+   bool operator() (pkgCache::VerIterator const &Ver) override { return (*this)(Ver.ParentPkg()); }
+   bool operator() (pkgCache::GrpIterator const &/*Grp*/) override { return false; }
+   ~PackageMatcher() override;
 };
 
 // Generica like True, False, NOT, AND, OR				/*{{{*/
 class APT_PUBLIC TrueMatcher : public Matcher {
 public:
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override;
+   bool operator() (pkgCache::GrpIterator const &Grp) override;
+   bool operator() (pkgCache::VerIterator const &Ver) override;
 };
 
 class APT_PUBLIC FalseMatcher : public Matcher {
 public:
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override;
+   bool operator() (pkgCache::GrpIterator const &Grp) override;
+   bool operator() (pkgCache::VerIterator const &Ver) override;
 };
 
 class APT_PUBLIC NOTMatcher : public Matcher {
    Matcher * const matcher;
 public:
    explicit NOTMatcher(Matcher * const matcher);
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
-   ~NOTMatcher() APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override;
+   bool operator() (pkgCache::GrpIterator const &Grp) override;
+   bool operator() (pkgCache::VerIterator const &Ver) override;
+   ~NOTMatcher() override;
 };
 
 class APT_PUBLIC ANDMatcher : public Matcher {
@@ -72,10 +72,10 @@ public:
    ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4);
    ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5);
    ANDMatcher& AND(Matcher * const matcher);
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
-   ~ANDMatcher() APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override;
+   bool operator() (pkgCache::GrpIterator const &Grp) override;
+   bool operator() (pkgCache::VerIterator const &Ver) override;
+   ~ANDMatcher() override;
 };
 class APT_PUBLIC ORMatcher : public Matcher {
    std::vector<Matcher *> matchers;
@@ -88,28 +88,28 @@ public:
    ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4);
    ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5);
    ORMatcher& OR(Matcher * const matcher);
-   bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-   bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
-   ~ORMatcher() APT_OVERRIDE;
+   bool operator() (pkgCache::PkgIterator const &Pkg) override;
+   bool operator() (pkgCache::GrpIterator const &Grp) override;
+   bool operator() (pkgCache::VerIterator const &Ver) override;
+   ~ORMatcher() override;
 };
 									/*}}}*/
 class APT_PUBLIC PackageNameMatchesRegEx : public PackageMatcher {			/*{{{*/
 	regex_t* pattern;
 public:
 	explicit PackageNameMatchesRegEx(std::string const &Pattern);
-	bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-	bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-	~PackageNameMatchesRegEx() APT_OVERRIDE;
+	bool operator() (pkgCache::PkgIterator const &Pkg) override;
+	bool operator() (pkgCache::GrpIterator const &Grp) override;
+	~PackageNameMatchesRegEx() override;
 };
 									/*}}}*/
 class APT_PUBLIC PackageNameMatchesFnmatch : public PackageMatcher {		/*{{{*/
 	const std::string Pattern;
 public:
 	explicit PackageNameMatchesFnmatch(std::string const &Pattern);
-	bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-	bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
-	~PackageNameMatchesFnmatch() APT_OVERRIDE = default;
+	bool operator() (pkgCache::PkgIterator const &Pkg) override;
+	bool operator() (pkgCache::GrpIterator const &Grp) override;
+	~PackageNameMatchesFnmatch() override = default;
 };
 									/*}}}*/
 class APT_PUBLIC PackageArchitectureMatchesSpecification : public PackageMatcher {	/*{{{*/
@@ -135,8 +135,8 @@ public:
 	PackageArchitectureMatchesSpecification(std::string const &pattern, bool const isPattern = true);
 	bool operator() (char const * const &arch);
 	using PackageMatcher::operator();
-	bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-	~PackageArchitectureMatchesSpecification() APT_OVERRIDE;
+	bool operator() (pkgCache::PkgIterator const &Pkg) override;
+	~PackageArchitectureMatchesSpecification() override;
 };
 									/*}}}*/
 class APT_PUBLIC PackageIsNewInstall : public PackageMatcher {			/*{{{*/
@@ -144,13 +144,13 @@ class APT_PUBLIC PackageIsNewInstall : public PackageMatcher {			/*{{{*/
 public:
 	explicit PackageIsNewInstall(pkgCacheFile * const Cache);
 	using PackageMatcher::operator();
-	bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-	~PackageIsNewInstall() APT_OVERRIDE;
+	bool operator() (pkgCache::PkgIterator const &Pkg) override;
+	~PackageIsNewInstall() override;
 };
 									/*}}}*/
 
 /// \brief Parse a pattern, return nullptr or pattern
-APT_PUBLIC std::unique_ptr<APT::CacheFilter::Matcher> ParsePattern(APT::StringView pattern, pkgCacheFile *file);
+APT_PUBLIC std::unique_ptr<APT::CacheFilter::Matcher> ParsePattern(std::string_view pattern, pkgCacheFile *file);
 }
 }
 #endif
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h
index 9273369..fd74e11 100644
--- a/apt-pkg/cacheiterators.h
+++ b/apt-pkg/cacheiterators.h
@@ -1,17 +1,17 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Cache Iterators - Iterators for navigating the cache structure
-   
+
    The iterators all provides ++,==,!=,->,* and end for their type.
    The end function can be used to tell if the list has been fully
    traversed.
-   
+
    Unlike STL iterators these contain helper functions to access the data
    that is being iterated over. This is because the data structures can't
    be formed in a manner that is intuitive to use and also mmapable.
-   
+
    For each variable in the target structure that would need a translation
    to be accessed correctly a translating function of the same name is
    present in the iterator. If applicable the translating function will
@@ -22,9 +22,9 @@
    structure passed to the constructor, which should be the structure
    that has the depends pointer as a member. The provide iterator has the
    same system.
-   
+
    This header is not user includable, please use apt-pkg/pkgcache.h
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef PKGLIB_CACHEITERATORS_H
@@ -37,9 +37,9 @@
 #include <iosfwd>
 #include <iterator>
 #include <string>
-#include <apt-pkg/string_view.h>
+#include <string_view>
 
-#include <string.h>
+#include <cstring>
 
 // abstract Iterator template						/*{{{*/
 /* This template provides the very basic iterator methods we
@@ -123,7 +123,7 @@ class APT_PUBLIC pkgCache::GrpIterator: public Iterator<Group, GrpIterator> {
 	inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;}
 	inline PkgIterator PackageList() const;
 	inline VerIterator VersionsInSource() const;
-	PkgIterator FindPkg(APT::StringView Arch = APT::StringView("any", 3)) const;
+	PkgIterator FindPkg(std::string_view Arch = {"any", 3}) const;
 	/** \brief find the package with the "best" architecture
 
 	    The best architecture is either the "native" or the first
@@ -177,8 +177,8 @@ class APT_PUBLIC pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
 	OkState State() const APT_PURE;
 	const char *CurVersion() const APT_PURE;
 
-	//Nice printable representation
-	APT_DEPRECATED_MSG("Use APT::PrettyPkg instead") friend std::ostream& operator <<(std::ostream& out, PkgIterator i);
+	// for a nice printable representation you likely want APT::PrettyPkg instead
+	friend std::ostream& operator<<(std::ostream& out, PkgIterator i);
 	std::string FullName(bool const &Pretty = false) const;
 
 	// Constructors
@@ -189,6 +189,31 @@ class APT_PUBLIC pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
 	inline PkgIterator() : Iterator<Package, PkgIterator>(), HashIndex(0) {}
 };
 									/*}}}*/
+// SourceVersion Iterator						/*{{{*/
+class APT_PUBLIC pkgCache::SrcVerIterator : public Iterator<SourceVersion, SrcVerIterator>
+{
+   public:
+   inline SourceVersion *OwnerPointer() const
+   {
+      return (Owner != 0) ? Owner->SrcVerP : 0;
+   }
+#if 0
+	// Iteration
+	inline SrcVerIterator& operator++() {if (S != Owner->SrcVerP) S = Owner->SrcVerP + S->NextSourceVersion; return *this;}
+	inline SrcVerIterator operator++(int) { SrcVerIterator const tmp(*this); operator++(); return tmp; }
+#endif
+   inline APT_PURE GrpIterator Group() const { return GrpIterator(*Owner, Owner->GrpP + S->Group); }
+   inline const char *VerStr() const { return S->VerStr == 0 ? 0 : Owner->StrP + S->VerStr; }
+
+   inline SrcVerIterator(pkgCache &Owner, SourceVersion *Trg = 0) : Iterator<SourceVersion, SrcVerIterator>(Owner, Trg)
+   {
+      if (S == 0)
+	 S = OwnerPointer();
+   }
+   inline SrcVerIterator() : Iterator<SourceVersion, SrcVerIterator>() {}
+};
+									/*}}}*/
+
 // Version Iterator							/*{{{*/
 class APT_PUBLIC pkgCache::VerIterator : public Iterator<Version, VerIterator> {
 	public:
@@ -220,12 +245,15 @@ class APT_PUBLIC pkgCache::VerIterator : public Iterator<Version, VerIterator> {
 	// Accessors
 	inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}
 	inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}
+	/** \brief source version this version comes from
+	   Always contains the version string, even if it is the same as the binary version */
+	SrcVerIterator SourceVersion() const { return SrcVerIterator(*Owner, Owner->SrcVerP + S->SourceVersion); }
 	/** \brief source package name this version comes from
 	   Always contains the name, even if it is the same as the binary name */
-	inline const char *SourcePkgName() const {return Owner->StrP + S->SourcePkgName;}
+	inline const char *SourcePkgName() const { return SourceVersion().Group().Name(); }
 	/** \brief source version this version comes from
 	   Always contains the version string, even if it is the same as the binary version */
-	inline const char *SourceVerStr() const {return Owner->StrP + S->SourceVerStr;}
+	inline const char *SourceVerStr() const { return SourceVersion().VerStr(); }
 	inline const char *Arch() const {
 		if ((S->MultiArch & pkgCache::Version::All) == pkgCache::Version::All)
 			return "all";
@@ -234,7 +262,7 @@ class APT_PUBLIC pkgCache::VerIterator : public Iterator<Version, VerIterator> {
 	inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}
 
 	inline DescIterator DescriptionList() const;
-	DescIterator TranslatedDescriptionForLanguage(APT::StringView lang) const;
+	DescIterator TranslatedDescriptionForLanguage(std::string_view lang) const;
 	DescIterator TranslatedDescription() const;
 	inline DepIterator DependsList() const;
 	inline PrvIterator ProvidesList() const;
@@ -246,6 +274,7 @@ class APT_PUBLIC pkgCache::VerIterator : public Iterator<Version, VerIterator> {
 
 	bool Automatic() const;
 	VerFileIterator NewestFile() const;
+	bool IsSecurityUpdate() const;
 
 #ifdef APT_COMPILING_APT
 	inline unsigned int PhasedUpdatePercentage() const
@@ -329,6 +358,7 @@ class APT_PUBLIC pkgCache::DepIterator : public Iterator<Dependency, DepIterator
 	   but change architecture nonetheless as a Conflicts: foo does applies for all archs */
 	bool IsImplicit() const APT_PURE;
 
+	bool IsSatisfied(PkgIterator const &Pkg) const APT_PURE;
 	bool IsSatisfied(VerIterator const &Ver) const APT_PURE;
 	bool IsSatisfied(PrvIterator const &Prv) const APT_PURE;
 	void GlobOr(DepIterator &Start,DepIterator &End);
@@ -363,8 +393,8 @@ class APT_PUBLIC pkgCache::DepIterator : public Iterator<Dependency, DepIterator
 		S2 = static_cast<DependencyData *>(newMap) + (S2 - static_cast<DependencyData const *>(oldMap));
 	}
 
-	//Nice printable representation
-	APT_DEPRECATED_MSG("Use APT::PrettyDep instead") friend std::ostream& operator <<(std::ostream& out, DepIterator D);
+	// for a nice printable representation you likely want APT::PrettyDep instead
+	friend std::ostream& operator<<(std::ostream& out, DepIterator D);
 
 	inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
 		Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer), S2(Trg == 0 ? Owner.DepDataP : (Owner.DepDataP + Trg->DependencyData)) {
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
index e52f762..230e3d6 100644
--- a/apt-pkg/cacheset.cc
+++ b/apt-pkg/cacheset.cc
@@ -25,13 +25,13 @@
 #include <apt-pkg/policy.h>
 #include <apt-pkg/versionmatch.h>
 
+#include <cstddef>
+#include <cstdio>
+#include <cstring>
 #include <list>
 #include <string>
 #include <vector>
 #include <regex.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -60,6 +60,9 @@ bool CacheSetHelper::PackageFromTask(PackageContainerInterface * const pci, pkgC
 		pattern.erase(archfound);
 	}
 
+	if (pattern.empty())
+	   return false;
+
 	if (pattern[pattern.length() -1] != '^')
 		return false;
 	pattern.erase(pattern.length()-1);
@@ -491,10 +494,13 @@ bool VersionContainerInterface::FromString(VersionContainerInterface * const vci
 			V = Match.Find(P);
 			helper.setLastVersionMatcher(ver);
 			if (V.end()) {
+				bool errors = true;
+				errors = helper.showErrors(true);
 				if (verIsRel == true)
 					V = helper.canNotGetVersion(CacheSetHelper::RELEASE, Cache, P);
 				else
 					V = helper.canNotGetVersion(CacheSetHelper::VERSIONNUMBER, Cache, P);
+				helper.showErrors(errors);
 			}
 		}
 		if (V.end() == true)
diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h
index 4ea78bc..02dda7e 100644
--- a/apt-pkg/cacheset.h
+++ b/apt-pkg/cacheset.h
@@ -24,7 +24,7 @@
 #include <string>
 #include <vector>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <apt-pkg/error.h>
 #include <apt-pkg/macros.h>
@@ -218,11 +218,11 @@ public:
 	operator container_iterator(void) const { return _iter; }
 	inline iterator_type& operator++() { ++_iter; return static_cast<iterator_type&>(*this); }
 	inline iterator_type operator++(int) { iterator_type tmp(*this); operator++(); return tmp; }
-	inline iterator_type operator+(typename container_iterator::difference_type const &n) { return iterator_type(_iter + n); }
+	inline iterator_type operator+(typename container_iterator::difference_type const &n) const { return iterator_type(_iter + n); }
 	inline iterator_type operator+=(typename container_iterator::difference_type const &n) { _iter += n; return static_cast<iterator_type&>(*this); }
 	inline iterator_type& operator--() { --_iter;; return static_cast<iterator_type&>(*this); }
 	inline iterator_type operator--(int) { iterator_type tmp(*this); operator--(); return tmp; }
-	inline iterator_type operator-(typename container_iterator::difference_type const &n) { return iterator_type(_iter - n); }
+	inline iterator_type operator-(typename container_iterator::difference_type const &n) const { return iterator_type(_iter - n); }
 	inline typename container_iterator::difference_type operator-(iterator_type const &b) { return (_iter - b._iter); }
 	inline iterator_type operator-=(typename container_iterator::difference_type const &n) { _iter -= n; return static_cast<iterator_type&>(*this); }
 	inline bool operator!=(iterator_type const &i) const { return _iter != i._iter; }
@@ -344,7 +344,7 @@ private:
 	void * const d;
 };
 									/*}}}*/
-template<class Container> class APT_PUBLIC PackageContainer : public PackageContainerInterface {/*{{{*/
+template<class Container> class PackageContainer : public PackageContainerInterface {/*{{{*/
 /** \class APT::PackageContainer
 
     Simple wrapper around a container class like std::set to provide a similar
@@ -366,13 +366,13 @@ public:									/*{{{*/
 	typedef typename Container::size_type size_type;
 	typedef typename Container::allocator_type allocator_type;
 
-	bool insert(pkgCache::PkgIterator const &P) APT_OVERRIDE { if (P.end() == true) return false; _cont.insert(P); return true; }
+	bool insert(pkgCache::PkgIterator const &P) override { if (P.end() == true) return false; _cont.insert(P); return true; }
 	template<class Cont> void insert(PackageContainer<Cont> const &pkgcont) { _cont.insert((typename Cont::const_iterator)pkgcont.begin(), (typename Cont::const_iterator)pkgcont.end()); }
 	void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); }
 
-	bool empty() const APT_OVERRIDE { return _cont.empty(); }
-	void clear() APT_OVERRIDE { return _cont.clear(); }
-	size_t size() const APT_OVERRIDE { return _cont.size(); }
+	[[nodiscard]] bool empty() const override { return _cont.empty(); }
+	void clear() override { return _cont.clear(); }
+	[[nodiscard]] size_t size() const override { return _cont.size(); }
 #if __GNUC__ >= 5 || (__GNUC_MINOR__ >= 9 && __GNUC__ >= 4)
 	iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); }
 	iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
@@ -658,9 +658,8 @@ public:
 	typedef const_iterator::difference_type difference_type;
 	typedef std::make_unsigned<const_iterator::difference_type>::type size_type;
 
-
-	bool empty() const APT_OVERRIDE { return false; }
-	size_t size() const APT_OVERRIDE { return _cont->Head().PackageCount; }
+	[[nodiscard]] bool empty() const override { return false; }
+	[[nodiscard]] size_t size() const override { return _cont->Head().PackageCount; }
 
 	const_iterator begin() const { return const_iterator(_cont->PkgBegin()); }
 	const_iterator end() const { return const_iterator(_cont->PkgEnd()); }
@@ -676,11 +675,11 @@ public:
 	virtual ~PackageUniverse();
 
 private:
-	APT_HIDDEN bool insert(pkgCache::PkgIterator const &) APT_OVERRIDE { return true; }
+	APT_HIDDEN bool insert(pkgCache::PkgIterator const &/*P*/) override { return true; }
 	template<class Cont> APT_HIDDEN void insert(PackageContainer<Cont> const &) { }
 	APT_HIDDEN void insert(const_iterator, const_iterator) { }
 
-	APT_HIDDEN void clear() APT_OVERRIDE { }
+	APT_HIDDEN void clear() override { }
 	APT_HIDDEN iterator erase( const_iterator pos );
 	APT_HIDDEN iterator erase( const_iterator first, const_iterator last );
 };
@@ -799,7 +798,7 @@ protected:								/*{{{*/
 									/*}}}*/
 };
 									/*}}}*/
-template<class Container> class APT_PUBLIC VersionContainer : public VersionContainerInterface {/*{{{*/
+template<class Container> class VersionContainer : public VersionContainerInterface {/*{{{*/
 /** \class APT::VersionContainer
 
     Simple wrapper around a container class like std::set to provide a similar
@@ -821,12 +820,12 @@ public:									/*{{{*/
 	typedef typename Container::size_type size_type;
 	typedef typename Container::allocator_type allocator_type;
 
-	bool insert(pkgCache::VerIterator const &V) APT_OVERRIDE { if (V.end() == true) return false; _cont.insert(V); return true; }
+	bool insert(pkgCache::VerIterator const &V) override { if (V.end() == true) return false; _cont.insert(V); return true; }
 	template<class Cont> void insert(VersionContainer<Cont> const &vercont) { _cont.insert((typename Cont::const_iterator)vercont.begin(), (typename Cont::const_iterator)vercont.end()); }
 	void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); }
-	bool empty() const APT_OVERRIDE { return _cont.empty(); }
-	void clear() APT_OVERRIDE { return _cont.clear(); }
-	size_t size() const APT_OVERRIDE { return _cont.size(); }
+	[[nodiscard]] bool empty() const override { return _cont.empty(); }
+	void clear() override { return _cont.clear(); }
+	[[nodiscard]] size_t size() const override { return _cont.size(); }
 #if APT_GCC_VERSION >= 0x409
 	iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); }
 	iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
index ea10d10..4da2b73 100644
--- a/apt-pkg/cdrom.cc
+++ b/apt-pkg/cdrom.cc
@@ -12,16 +12,15 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <cstdio>
+#include <cstring>
 #include <fstream>
 #include <iostream>
-#include <iostream>
 #include <sstream>
 #include <string>
 #include <vector>
 #include <dirent.h>
 #include <dlfcn.h>
-#include <stdio.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -130,7 +129,7 @@ bool pkgCdrom::FindPackages(string CD,
 	 for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
 	      c != compressor.end(); ++c)
 	 {
-	    string fileext = flExtension(file);
+	    string fileext{flExtension(file)};
 	    if (file == fileext)
 	       fileext.clear();
 	    else if (fileext.empty() == false)
@@ -224,8 +223,6 @@ int pkgCdrom::Score(string Path)
       Res += 20;
    if (Path.find("/non-free-firmware/") != string::npos)
       Res += 20;
-   if (Path.find("/non-US/") != string::npos)
-      Res += 20;
    if (Path.find("/source/") != string::npos)
       Res += 10;
    if (Path.find("/debian/") != string::npos)
@@ -493,7 +490,7 @@ bool pkgCdrom::WriteSourceList(string Name,vector<string> &List,bool Source)
    while (F.ReadLine(Buffer))
    {
       ++CurLine;
-      auto const Cleaned = APT::String::Strip(SubstVar(Buffer, "\t", "        "));
+      std::string const Cleaned{APT::String::Strip(SubstVar(Buffer, "\t", "        "))};
 
       // Comment or blank
       if (Cleaned.empty() || Cleaned[0] == '#')
diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h
index d3fc771..d5584df 100644
--- a/apt-pkg/cdrom.h
+++ b/apt-pkg/cdrom.h
@@ -6,8 +6,7 @@
 #include <string>
 #include <vector>
 
-#include <stddef.h>
-
+#include <cstddef>
 
 class Configuration;
 class OpProgress;
diff --git a/apt-pkg/clean.cc b/apt-pkg/clean.cc
index 9dd56e6..d3b0ac3 100644
--- a/apt-pkg/clean.cc
+++ b/apt-pkg/clean.cc
@@ -17,10 +17,10 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstring>
 #include <string>
 #include <dirent.h>
 #include <fcntl.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
diff --git a/apt-pkg/contrib/arfile.cc b/apt-pkg/contrib/arfile.cc
index 6d4a1f1..dfc380b 100644
--- a/apt-pkg/contrib/arfile.cc
+++ b/apt-pkg/contrib/arfile.cc
@@ -20,8 +20,8 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstring>
 #include <string>
-#include <string.h>
 #include <sys/types.h>
 
 #include <apti18n.h>
diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc
index f402017..ff8fb48 100644
--- a/apt-pkg/contrib/cdromutl.cc
+++ b/apt-pkg/contrib/cdromutl.cc
@@ -1,11 +1,11 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    CDROM Utilities - Some functions to manipulate CDROM mounts.
-   
+
    These are here for the cdrom method and apt-cdrom.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -18,14 +18,14 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <string>
 #include <vector>
 #include <dirent.h>
 #include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/statvfs.h>
 #include <unistd.h>
@@ -39,7 +39,7 @@ using std::string;
 // ---------------------------------------------------------------------
 /* This is a simple algorithm that should always work, we stat the mount point
    and the '..' file in the mount point and see if they are on the same device.
-   By definition if they are the same then it is not mounted. This should 
+   By definition if they are the same then it is not mounted. This should
    account for symlinked mount points as well. */
 bool IsMounted(string &Path)
 {
@@ -59,7 +59,7 @@ bool IsMounted(string &Path)
       stating the path and the previous directory (careful of links!)
       and comparing their device fields. */
    struct stat Buf,Buf2;
-   if (stat(Path.c_str(),&Buf) != 0 || 
+   if (stat(Path.c_str(),&Buf) != 0 ||
        stat((Path + "../").c_str(),&Buf2) != 0)
       return _error->Errno("stat",_("Unable to stat the mount point %s"),Path.c_str());
 
@@ -70,7 +70,7 @@ bool IsMounted(string &Path)
 									/*}}}*/
 // UnmountCdrom - Unmount a cdrom					/*{{{*/
 // ---------------------------------------------------------------------
-/* Forking umount works much better than the umount syscall which can 
+/* Forking umount works much better than the umount syscall which can
    leave /etc/mtab inconsistent. We drop all messages this produces. */
 bool UnmountCdrom(string Path)
 {
@@ -85,7 +85,7 @@ bool UnmountCdrom(string Path)
 
    for (int i=0;i<3;i++)
    {
-   
+
       int Child = ExecFork();
 
       // The child
@@ -100,7 +100,7 @@ bool UnmountCdrom(string Path)
 	 {
 	    if (system(_config->Find("Acquire::cdrom::"+Path+"::UMount").c_str()) != 0)
 	       _exit(100);
-	    _exit(0);	 	 
+	    _exit(0);
 	 }
 	 else
 	 {
@@ -151,13 +151,13 @@ bool MountCdrom(string Path, string DeviceName)
       {
 	 if (system(_config->Find("Acquire::cdrom::"+Path+"::Mount").c_str()) != 0)
 	    _exit(100);
-	 _exit(0);	 
+	 _exit(0);
       }
       else
       {
 	 const char *Args[10];
 	 Args[0] = "mount";
-	 if (DeviceName == "") 
+	 if (DeviceName == "")
 	 {
 	    Args[1] = Path.c_str();
 	    Args[2] = 0;
@@ -166,9 +166,9 @@ bool MountCdrom(string Path, string DeviceName)
 	    Args[2] = Path.c_str();
 	    Args[3] = 0;
 	 }
-	 execvp(Args[0],(char **)Args);      
+	 execvp(Args[0],(char **)Args);
 	 _exit(100);
-      }      
+      }
    }
 
    // Wait for mount
@@ -265,11 +265,11 @@ string FindMountPointForDevice(const char *devnode)
    std::vector<std::string> const mounts = _config->FindVector("Dir::state::MountPoints", "/etc/mtab,/proc/mount");
 
    for (std::vector<std::string>::const_iterator m = mounts.begin(); m != mounts.end(); ++m)
-      if (FileExists(*m) == true)
+      if (FILE * f = fopen(m->c_str(), "r"))
       {
 	 char * line = NULL;
 	 size_t line_len = 0;
-	 FILE * f = fopen(m->c_str(), "r");
+	 DEFER([&] { fclose(f); free(line); });
 	 while(getline(&line, &line_len, f) != -1)
 	 {
 	    char * out[] = { NULL, NULL, NULL };
@@ -278,14 +278,10 @@ string FindMountPointForDevice(const char *devnode)
 	       continue;
 	    if (strcmp(out[0], devnode) != 0)
 	       continue;
-	    fclose(f);
 	    // unescape the \0XXX chars in the path
 	    string mount_point = out[1];
-	    free(line);
 	    return DeEscapeString(mount_point);
 	 }
-	 fclose(f);
-	 free(line);
       }
 
    return string();
diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc
index 998af2f..38f8521 100644
--- a/apt-pkg/contrib/cmndline.cc
+++ b/apt-pkg/contrib/cmndline.cc
@@ -21,10 +21,10 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
 #include <string>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc
index 1134ed6..28cf3e4 100644
--- a/apt-pkg/contrib/configuration.cc
+++ b/apt-pkg/contrib/configuration.cc
@@ -4,7 +4,7 @@
 /* ######################################################################
 
    Configuration Class
-   
+
    This class provides a configuration file and command line parser
    for a tree-oriented configuration environment. All runtime configuration
    is stored in here.
@@ -25,14 +25,13 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/macros.h>
 #include <apt-pkg/strutl.h>
-#include <apt-pkg/string_view.h>
 
-#include <ctype.h>
+#include <cctype>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <regex.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 
 #include <algorithm>
 #include <array>
@@ -56,12 +55,14 @@ Configuration *_config = new Configuration;
    but a Cnf-member – but that would need ABI breaks and stuff and for now
    that really is an apt-dev-only tool, so it isn't that bad that it is
    unusable and allaround a bit strange */
-enum class APT_HIDDEN ConfigType { UNDEFINED, INT, BOOL, STRING, STRING_OR_BOOL, STRING_OR_LIST, FILE, DIR, LIST, PROGRAM_PATH = FILE };
+enum class APT_HIDDEN ConfigType { INVALID, UNDEFINED, INT, BOOL, STRING, STRING_OR_BOOL, STRING_OR_LIST, FILE, DIR, LIST, PROGRAM_PATH = FILE };
 APT_HIDDEN std::unordered_map<std::string, ConfigType> apt_known_config {};
+APT_HIDDEN std::vector<std::pair<std::string, ConfigType>> apt_known_config_patterns {};
 static std::string getConfigTypeString(ConfigType const type)		/*{{{*/
 {
    switch (type)
    {
+      case ConfigType::INVALID: return "INVALID";
       case ConfigType::UNDEFINED: return "UNDEFINED";
       case ConfigType::INT: return "INT";
       case ConfigType::BOOL: return "BOOL";
@@ -95,6 +96,8 @@ static ConfigType getConfigType(std::string const &type)		/*{{{*/
       return ConfigType::STRING_OR_LIST;
    else if (type == "<PROGRAM_PATH>")
       return ConfigType::PROGRAM_PATH;
+   else if (type == "<INVALID>")
+      return ConfigType::INVALID;
    return ConfigType::UNDEFINED;
 }
 									/*}}}*/
@@ -102,59 +105,86 @@ static ConfigType getConfigType(std::string const &type)		/*{{{*/
 static void checkFindConfigOptionTypeInternal(std::string name, ConfigType const type)
 {
    std::transform(name.begin(), name.end(), name.begin(), ::tolower);
-   auto known = apt_known_config.find(name);
-   if (known == apt_known_config.cend())
+   bool found = false;
+   ConfigType expectedType = ConfigType::INVALID;
+   if (auto const known = apt_known_config.find(name); known != apt_known_config.cend())
    {
-      auto const rcolon = name.rfind(':');
-      if (rcolon != std::string::npos)
+      found = true;
+      expectedType = known->second;
+   }
+   else
+      for (auto const &known : apt_known_config_patterns)
       {
-	 known = apt_known_config.find(name.substr(0, rcolon) + ":*");
-	 if (known == apt_known_config.cend())
+	 std::string_view n{name};
+	 std::string_view k{known.first};
+	 do
 	 {
-	    auto const parts = StringSplit(name, "::");
-	    size_t psize = parts.size();
-	    if (psize > 1)
+	    if (auto star = k.find('*'); star != std::string_view::npos)
 	    {
-	       for (size_t max = psize; max != 1; --max)
-	       {
-		  std::ostringstream os;
-		  std::copy(parts.begin(), parts.begin() + max, std::ostream_iterator<std::string>(os, "::"));
-		  os << "**";
-		  known = apt_known_config.find(os.str());
-		  if (known != apt_known_config.cend() && known->second == ConfigType::UNDEFINED)
-		     return;
-	       }
-	       for (size_t max = psize - 1; max != 1; --max)
-	       {
-		  std::ostringstream os;
-		  std::copy(parts.begin(), parts.begin() + max - 1, std::ostream_iterator<std::string>(os, "::"));
-		  os << "*::";
-		  std::copy(parts.begin() + max + 1, parts.end() - 1, std::ostream_iterator<std::string>(os, "::"));
-		  os << *(parts.end() - 1);
-		  known = apt_known_config.find(os.str());
-		  if (known != apt_known_config.cend())
-		     break;
-	       }
+	       if (auto nextstar = star + 1; k.length() > nextstar && k[nextstar] == '*')
+		  star -= 3;
+	       if (n.compare(0, star, k, 0, star) != 0)
+		  break;
+	       n.remove_prefix(star);
+	       k.remove_prefix(star + 1);
 	    }
-	 }
+	    else if (k == n)
+	    {
+	       n = {};
+	       break;
+	    }
+	    else
+	       break;
+
+	    if (k.empty())
+	    {
+	       if (n.find("::") == std::string_view::npos)
+		  n = {};
+	       break;
+	    }
+	    if (k == "::**")
+	    {
+	       if (known.second == ConfigType::UNDEFINED)
+		  return;
+	       n = {};
+	       break;
+	    }
+	    if (k.compare(0, 2, "::") == 0)
+	    {
+	       auto const colons = n.find("::");
+	       if (colons == std::string_view::npos)
+		  break;
+	       n.remove_prefix(colons);
+	    }
+	    else
+	       break;
+	 } while (not n.empty());
+	 if (not n.empty())
+	    continue;
+	 found = true;
+	 expectedType = known.second;
+	 break;
       }
-   }
-   if (known == apt_known_config.cend())
+
+   if (not found)
       _error->Warning("Using unknown config option »%s« of type %s",
 	    name.c_str(), getConfigTypeString(type).c_str());
-   else if (known->second != type)
+   else if (expectedType != type)
    {
-      if (known->second == ConfigType::DIR && type == ConfigType::FILE)
+      if (expectedType == ConfigType::INVALID)
+	 _error->Warning("Using invalid config option »%s« as a type %s",
+	       name.c_str(), getConfigTypeString(type).c_str());
+      if (expectedType == ConfigType::DIR && type == ConfigType::FILE)
 	 ; // implementation detail
-      else if (type == ConfigType::STRING && (known->second == ConfigType::FILE || known->second == ConfigType::DIR))
+      else if (type == ConfigType::STRING && (expectedType == ConfigType::FILE || expectedType == ConfigType::DIR))
 	 ; // TODO: that might be an error or not, we will figure this out later
-      else if (known->second == ConfigType::STRING_OR_BOOL && (type == ConfigType::BOOL || type == ConfigType::STRING))
+      else if (expectedType == ConfigType::STRING_OR_BOOL && (type == ConfigType::BOOL || type == ConfigType::STRING))
 	 ;
-      else if (known->second == ConfigType::STRING_OR_LIST && (type == ConfigType::LIST || type == ConfigType::STRING))
+      else if (expectedType == ConfigType::STRING_OR_LIST && (type == ConfigType::LIST || type == ConfigType::STRING))
 	 ;
       else
 	 _error->Warning("Using config option »%s« of type %s as a type %s",
-	       name.c_str(), getConfigTypeString(known->second).c_str(), getConfigTypeString(type).c_str());
+	       name.c_str(), getConfigTypeString(expectedType).c_str(), getConfigTypeString(type).c_str());
    }
 }
 static void checkFindConfigOptionType(char const * const name, ConfigType const type)
@@ -167,6 +197,7 @@ static void checkFindConfigOptionType(char const * const name, ConfigType const
 static bool LoadConfigurationIndex(std::string const &filename)		/*{{{*/
 {
    apt_known_config.clear();
+   apt_known_config_patterns.clear();
    if (filename.empty())
       return true;
    Configuration Idx;
@@ -182,7 +213,10 @@ static bool LoadConfigurationIndex(std::string const &filename)		/*{{{*/
       {
 	 std::string fulltag = Top->FullTag();
 	 std::transform(fulltag.begin(), fulltag.end(), fulltag.begin(), ::tolower);
-	 apt_known_config.emplace(std::move(fulltag), getConfigType(Top->Value));
+	 if (fulltag.find("::*") == std::string::npos)
+	    apt_known_config.emplace(std::move(fulltag), getConfigType(Top->Value));
+	 else
+	    apt_known_config_patterns.emplace_back(std::move(fulltag), getConfigType(Top->Value));
       }
 
       if (Top->Child != nullptr)
@@ -219,7 +253,7 @@ Configuration::~Configuration()
 {
    if (ToFree == false)
       return;
-   
+
    Item *Top = Root;
    for (; Top != 0;)
    {
@@ -228,13 +262,13 @@ Configuration::~Configuration()
 	 Top = Top->Child;
 	 continue;
       }
-            
+
       while (Top != 0 && Top->Next == 0)
       {
 	 Item *Parent = Top->Parent;
 	 delete Top;
 	 Top = Parent;
-      }      
+      }
       if (Top != 0)
       {
 	 Item *Next = Top->Next;
@@ -246,7 +280,7 @@ Configuration::~Configuration()
 									/*}}}*/
 // Configuration::Lookup - Lookup a single item				/*{{{*/
 // ---------------------------------------------------------------------
-/* This will lookup a single item by name below another item. It is a 
+/* This will lookup a single item by name below another item. It is a
    helper function for the main lookup function */
 Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
 					   unsigned long const &Len,bool const &Create)
@@ -254,7 +288,7 @@ Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
    int Res = 1;
    Item *I = Head->Child;
    Item **Last = &Head->Child;
-   
+
    // Empty strings match nothing. They are used for lists.
    if (Len != 0)
    {
@@ -264,12 +298,12 @@ Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
    }
    else
       for (; I != 0; Last = &I->Next, I = I->Next);
-      
+
    if (Res == 0)
       return I;
    if (Create == false)
       return 0;
-   
+
    I = new Item;
    I->Tag.assign(S,Len);
    I->Next = *Last;
@@ -286,7 +320,7 @@ Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create)
 {
    if (Name == 0)
       return Root->Child;
-   
+
    const char *Start = Name;
    const char *End = Start + strlen(Name);
    const char *TagEnd = Name;
@@ -298,9 +332,9 @@ Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create)
 	 Itm = Lookup(Itm,Start,TagEnd - Start,Create);
 	 if (Itm == 0)
 	    return 0;
-	 TagEnd = Start = TagEnd + 2;	 
+	 TagEnd = Start = TagEnd + 2;
       }
-   }   
+   }
 
    // This must be a trailing ::, we create unique items in a list
    if (End - Start == 0)
@@ -308,7 +342,7 @@ Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create)
       if (Create == false)
 	 return 0;
    }
-   
+
    Itm = Lookup(Itm,Start,End - Start,Create);
    return Itm;
 }
@@ -327,7 +361,7 @@ string Configuration::Find(const char *Name,const char *Default) const
       else
 	 return Default;
    }
-   
+
    return Itm->Value;
 }
 									/*}}}*/
@@ -440,12 +474,12 @@ int Configuration::FindI(const char *Name,int const &Default) const
    const Item *Itm = Lookup(Name);
    if (Itm == 0 || Itm->Value.empty() == true)
       return Default;
-   
+
    char *End;
    int Res = strtol(Itm->Value.c_str(),&End,0);
    if (End == Itm->Value.c_str())
       return Default;
-   
+
    return Res;
 }
 									/*}}}*/
@@ -458,7 +492,7 @@ bool Configuration::FindB(const char *Name,bool const &Default) const
    const Item *Itm = Lookup(Name);
    if (Itm == 0 || Itm->Value.empty() == true)
       return Default;
-   
+
    return StringToBool(Itm->Value,Default);
 }
 									/*}}}*/
@@ -479,19 +513,19 @@ string Configuration::FindAny(const char *Name,const char *Default) const
    switch (type)
    {
       // file
-      case 'f': 
+      case 'f':
       return FindFile(key.c_str(), Default);
-      
+
       // directory
-      case 'd': 
+      case 'd':
       return FindDir(key.c_str(), Default);
-      
+
       // bool
-      case 'b': 
+      case 'b':
       return FindB(key, Default) ? "true" : "false";
-      
+
       // int
-      case 'i': 
+      case 'i':
       {
 	 char buf[16];
 	 snprintf(buf, sizeof(buf)-1, "%d", FindI(key, Default ? atoi(Default) : 0 ));
@@ -506,7 +540,7 @@ string Configuration::FindAny(const char *Name,const char *Default) const
 // Configuration::CndSet - Conditional Set a value			/*{{{*/
 // ---------------------------------------------------------------------
 /* This will not overwrite */
-void Configuration::CndSet(const char *Name,const string &Value)
+void Configuration::CndSet(const char *Name,const string_view &Value)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
@@ -531,7 +565,7 @@ void Configuration::CndSet(const char *Name,int const Value)
 // Configuration::Set - Set a value					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void Configuration::Set(const char *Name,const string &Value)
+void Configuration::Set(const char *Name,const string_view &Value)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
@@ -590,7 +624,7 @@ void Configuration::Clear(string const &Name, string const &Value)
 	 I = I->Next;
       }
    }
-     
+
 }
 									/*}}}*/
 // Configuration::Clear - Clear everything				/*{{{*/
@@ -611,7 +645,7 @@ void Configuration::Clear()
 void Configuration::Clear(string const &Name)
 {
    Item *Top = Lookup(Name.c_str(),false);
-   if (Top == 0) 
+   if (Top == 0)
       return;
 
    Top->Value.clear();
@@ -631,11 +665,11 @@ void Configuration::Clear(string const &Name)
 	 Item *Tmp = Top;
 	 Top = Top->Parent;
 	 delete Tmp;
-	 
+
 	 if (Top == Stop)
 	    return;
       }
-      
+
       Item *Tmp = Top;
       if (Top != 0)
 	 Top = Top->Next;
@@ -827,10 +861,10 @@ string Configuration::Item::FullTag(const Item *Stop) const
 // ReadConfigFile - Read a configuration file				/*{{{*/
 // ---------------------------------------------------------------------
 /* The configuration format is very much like the named.conf format
-   used in bind8, in fact this routine can parse most named.conf files. 
-   Sectional config files are like bind's named.conf where there are 
+   used in bind8, in fact this routine can parse most named.conf files.
+   Sectional config files are like bind's named.conf where there are
    sections like 'zone "foo.org" { .. };' This causes each section to be
-   added in with a tag like "zone::foo.org" instead of being split 
+   added in with a tag like "zone::foo.org" instead of being split
    tag/value. AsSectional enables Sectional parsing.*/
 static void leaveCurrentScope(std::stack<std::string> &Stack, std::string &ParentTag)
 {
@@ -858,7 +892,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
 
    int CurLine = 0;
    bool InComment = false;
-   while (F.Eof() == false)
+   while (F.Eof() == false && F.Failed() == false)
    {
       // The raw input line.
       std::string Input;
@@ -873,13 +907,13 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
 
       // Now strip comments; if the whole line is contained in a
       // comment, skip this line.
-      APT::StringView Line{Input.data(), Input.size()};
+      std::string_view Line{Input.data(), Input.size()};
 
       // continued Multi line comment
       if (InComment)
       {
 	 size_t end = Line.find("*/");
-	 if (end != APT::StringView::npos)
+	 if (end != std::string_view::npos)
 	 {
 	    Line.remove_prefix(end + 2);
 	    InComment = false;
@@ -891,7 +925,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
       // Discard single line comments
       {
 	 size_t start = 0;
-	 while ((start = Line.find("//", start)) != APT::StringView::npos)
+	 while ((start = Line.find("//", start)) != std::string_view::npos)
 	 {
 	    if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0)
 	    {
@@ -901,10 +935,10 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
 	    Line.remove_suffix(Line.length() - start);
 	    break;
 	 }
-	 using APT::operator""_sv;
-	 constexpr std::array<APT::StringView, 3> magicComments { "clear"_sv, "include"_sv, "x-apt-configure-index"_sv };
+	 using std::literals::operator""sv;
+	 constexpr std::array<std::string_view, 3> magicComments { "clear"sv, "include"sv, "x-apt-configure-index"sv };
 	 start = 0;
-	 while ((start = Line.find('#', start)) != APT::StringView::npos)
+	 while ((start = Line.find('#', start)) != std::string_view::npos)
 	 {
 	    if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0 ||
 		std::any_of(magicComments.begin(), magicComments.end(), [&](auto const m) { return Line.compare(start+1, m.length(), m) == 0; }))
@@ -922,7 +956,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
       Fragment.reserve(Line.length());
       {
 	 size_t start = 0;
-	 while ((start = Line.find("/*", start)) != APT::StringView::npos)
+	 while ((start = Line.find("/*", start)) != std::string_view::npos)
 	 {
 	    if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0)
 	    {
@@ -931,9 +965,9 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio
 	    }
 	    Fragment.append(Line.data(), start);
 	    auto const end = Line.find("*/", start + 2);
-	    if (end == APT::StringView::npos)
+	    if (end == std::string_view::npos)
 	    {
-	       Line.clear();
+	       Line = {};
 	       InComment = true;
 	       break;
 	    }
diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h
index 6ebf28d..4a21d97 100644
--- a/apt-pkg/contrib/configuration.h
+++ b/apt-pkg/contrib/configuration.h
@@ -31,6 +31,7 @@
 
 #include <iostream>
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include <apt-pkg/macros.h>
@@ -88,13 +89,13 @@ class APT_PUBLIC Configuration
    bool FindB(const char *Name,bool const &Default = false) const;
    bool FindB(std::string const &Name,bool const &Default = false) const {return FindB(Name.c_str(),Default);};
    std::string FindAny(const char *Name,const char *Default = 0) const;
-	      
-   inline void Set(const std::string &Name,const std::string &Value) {Set(Name.c_str(),Value);};
-   void CndSet(const char *Name,const std::string &Value);
+
+   inline void Set(const std::string &Name,const std::string_view &Value) {Set(Name.c_str(),Value);};
+   void CndSet(const char *Name,const std::string_view &Value);
    void CndSet(const char *Name,const int Value);
-   void Set(const char *Name,const std::string &Value);
+   void Set(const char *Name,const std::string_view &Value);
    void Set(const char *Name,const int &Value);
-   
+
    inline bool Exists(const std::string &Name) const {return Exists(Name.c_str());};
    bool Exists(const char *Name) const;
    bool ExistsAny(const char *Name) const;
diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc
index dd28af1..d08d5e0 100644
--- a/apt-pkg/contrib/error.cc
+++ b/apt-pkg/contrib/error.cc
@@ -23,17 +23,18 @@
 #include <apt-pkg/error.h>
 
 #include <algorithm>
+#include <cerrno>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
 #include <cstring>
 #include <iostream>
 #include <list>
 #include <string>
-#include <errno.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <unistd.h>
 
+#include <apti18n.h>
 									/*}}}*/
 
 // Global Error Object							/*{{{*/
@@ -64,6 +65,7 @@ GEMessage(FatalE, FATAL)
 GEMessage(Errno, ERROR)
 GEMessage(WarningE, WARNING)
 GEMessage(NoticeE, NOTICE)
+GEMessage(AuditE, AUDIT)
 GEMessage(DebugE, DEBUG)
 #undef GEMessage
 									/*}}}*/
@@ -87,6 +89,7 @@ bool GlobalError::InsertErrno(MsgType type, const char* Function,
 			      const char* Description, va_list &args,
 			      int const errsv, size_t &msgSize) {
 	char* S = (char*) malloc(msgSize);
+	DEFER([&] { free(S); });
 	int const n = snprintf(S, msgSize, "%s - %s (%i: %s)", Description,
 			       Function, errsv, strerror(errsv));
 	if (n > -1 && ((unsigned int) n) < msgSize);
@@ -95,13 +98,10 @@ bool GlobalError::InsertErrno(MsgType type, const char* Function,
 			msgSize = n + 1;
 		else
 			msgSize *= 2;
-		free(S);
 		return true;
 	}
 
-	bool const geins = Insert(type, S, args, msgSize);
-	free(S);
-	return geins;
+	return Insert(type, S, args, msgSize);
 }
 									/*}}}*/
 // GlobalError::Fatal, Error, Warning, Notice and Debug - Add to the list/*{{{*/
@@ -121,6 +121,7 @@ GEMessage(Fatal, FATAL)
 GEMessage(Error, ERROR)
 GEMessage(Warning, WARNING)
 GEMessage(Notice, NOTICE)
+GEMessage(Audit, AUDIT)
 GEMessage(Debug, DEBUG)
 #undef GEMessage
 									/*}}}*/
@@ -142,6 +143,7 @@ bool GlobalError::Insert(MsgType const &type, const char *Description,...)
 bool GlobalError::Insert(MsgType type, const char* Description,
 			 va_list &args, size_t &msgSize) {
 	char* S = (char*) malloc(msgSize);
+	DEFER([&] { free(S); });
 	int const n = vsnprintf(S, msgSize, Description, args);
 	if (n > -1 && ((unsigned int) n) < msgSize);
 	else {
@@ -149,7 +151,6 @@ bool GlobalError::Insert(MsgType type, const char* Description,
 			msgSize = n + 1;
 		else
 			msgSize *= 2;
- 		free(S);
 		return true;
 	}
 
@@ -162,7 +163,6 @@ bool GlobalError::Insert(MsgType type, const char* Description,
 	if (type == FATAL || type == DEBUG)
 		std::clog << m << std::endl;
 
-	free(S);
 	return false;
 }
 									/*}}}*/
@@ -252,11 +252,13 @@ void GlobalError::MergeWithStack() {
 APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
 {
    static constexpr auto COLOR_RESET = "\033[0m";
-   static constexpr auto COLOR_NOTICE = "\033[33m";  // normal yellow
+   static constexpr auto COLOR_BOLD = "\033[1m";   // bold neutral
+   static constexpr auto COLOR_NOTICE = "\033[1m";   // bold neutral
    static constexpr auto COLOR_WARN = "\033[1;33m";  // bold yellow
    static constexpr auto COLOR_ERROR = "\033[1;31m"; // bold red
 
    bool use_color = _config->FindB("APT::Color", false);
+   auto out_ver = _config->FindI("APT::Output-Version");
 
    if (use_color)
    {
@@ -270,6 +272,7 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
 	 out << COLOR_WARN;
 	 break;
       case GlobalError::NOTICE:
+      case GlobalError::AUDIT:
 	 out << COLOR_NOTICE;
 	 break;
       default:
@@ -281,19 +284,26 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
    {
    case GlobalError::FATAL:
    case GlobalError::ERROR:
-      out << 'E';
+      // TRANSLATOR: This is a warning level displayed before the message
+      out << (out_ver < 30 ? "E:" : _("Error:"));
       break;
    case GlobalError::WARNING:
-      out << 'W';
+      // TRANSLATOR: This is a warning level displayed before the message
+      out << (out_ver < 30 ? "W:" : _("Warning:"));
       break;
    case GlobalError::NOTICE:
-      out << 'N';
+      // TRANSLATOR: This is a warning level displayed before the message
+      out << (out_ver < 30 ? "N:" : _("Notice:"));
+      break;
+   case GlobalError::AUDIT:
+      out << (out_ver < 30 ? "A:" : _("Audit:"));
       break;
    case GlobalError::DEBUG:
-      out << 'D';
+      // TRANSLATOR: This is a warning level displayed before the message
+      out << _("Debug:");
       break;
    }
-   out << ": ";
+   out << " ";
 
    if (use_color)
    {
@@ -302,7 +312,12 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
       case GlobalError::FATAL:
       case GlobalError::ERROR:
       case GlobalError::WARNING:
+	 out << COLOR_RESET;
+	 if (out_ver >= 30)
+	    out << COLOR_BOLD;
+	 break;
       case GlobalError::NOTICE:
+      case GlobalError::AUDIT:
 	 out << COLOR_RESET;
 	 break;
       default:
diff --git a/apt-pkg/contrib/error.h b/apt-pkg/contrib/error.h
index dd50b9c..f61b44b 100644
--- a/apt-pkg/contrib/error.h
+++ b/apt-pkg/contrib/error.h
@@ -49,8 +49,8 @@
 #include <list>
 #include <string>
 
-#include <stdarg.h>
-#include <stddef.h>
+#include <cstdarg>
+#include <cstddef>
 
 class APT_PUBLIC GlobalError						/*{{{*/
 {
@@ -66,6 +66,8 @@ public:									/*{{{*/
 		WARNING = 20,
 		/** \brief deprecation warnings, old fallback behavior, … */
 		NOTICE = 10,
+		/** \brief future deprecation warnings, divergence from best practices */
+		AUDIT = 5,
 		/** \brief for developers only in areas it is hard to print something directly */
 		DEBUG = 0
 	};
@@ -109,6 +111,15 @@ public:									/*{{{*/
 	 */
 	bool NoticeE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
 
+	/** \brief add an audit message with errno to the list
+	 *
+	 *  \param Function name of the function generating the error
+	 *  \param Description format string for the error message
+	 *
+	 *  \return \b false
+	 */
+	bool AuditE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
 	/** \brief add a debug message with errno to the list
 	 *
 	 *  \param Function name of the function generating the error
@@ -193,6 +204,18 @@ public:									/*{{{*/
 	 */
 	bool Notice(const char *Description,...) APT_PRINTF(2) APT_COLD;
 
+	/** \brief add an audit message to the list
+	 *
+	 *  An audit message highlights divergences from best practices and
+	 *  future deprecations. It my for example include additional messages
+	 *  targeted at repository owners.
+	 *
+	 *  \param Description Format string for the message
+	 *
+	 *  \return \b false
+	 */
+	bool Audit(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
 	/** \brief add a debug message to the list
 	 *
 	 *  \param Description Format string for the message
@@ -344,6 +367,6 @@ private:								/*{{{*/
 APT_PUBLIC GlobalError *_GetErrorObj();
 static struct {
 	inline GlobalError* operator ->() { return _GetErrorObj(); }
-} _error APT_UNUSED;
+} _error [[maybe_unused]];
 
 #endif
diff --git a/apt-pkg/contrib/extracttar.cc b/apt-pkg/contrib/extracttar.cc
index dc24375..7b545de 100644
--- a/apt-pkg/contrib/extracttar.cc
+++ b/apt-pkg/contrib/extracttar.cc
@@ -25,11 +25,13 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <array>
+#include <csignal>
+#include <cstring>
 #include <iostream>
+#include <memory>
 #include <string>
 #include <fcntl.h>
-#include <signal.h>
-#include <string.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -130,6 +132,7 @@ bool ExtractTar::Go(pkgDirStream &Stream)
    // Loop over all blocks
    string LastLongLink, ItemLink;
    string LastLongName, ItemName;
+   std::array<unsigned char, APT_BUFFER_SIZE> Junk;
    while (1)
    {
       bool BadRecord = false;      
@@ -290,22 +293,21 @@ bool ExtractTar::Go(pkgDirStream &Stream)
       {
 	 // Copy the file over the FD
 	 auto Size = Itm.Size;
-	 unsigned char Junk[32*1024];
 	 do
 	 {
-	    auto const Read = std::min<unsigned long long>(Size, sizeof(Junk));
-	    if (not InFd.Read(Junk, ((Read + (sizeof(Block) - 1)) / sizeof(Block)) * sizeof(Block)))
+	    auto const Read = std::min<unsigned long long>(Size, Junk.size());
+	    if (not InFd.Read(Junk.data(), ((Read + (sizeof(Block) - 1)) / sizeof(Block)) * sizeof(Block)))
 	       return false;
 
 	    if (Fd > 0)
 	    {
-	       if (not FileFd::Write(Fd, Junk, Read))
+	       if (not FileFd::Write(Fd, Junk.data(), Read))
 		  return Stream.Fail(Itm, Fd);
 	    }
 	    // An Fd of -2 means to send to a special processing function
 	    else if (Fd == -2)
 	    {
-	       if (not Stream.Process(Itm, Junk, Read, Itm.Size - Size))
+	       if (not Stream.Process(Itm, Junk.data(), Read, Itm.Size - Size))
 		  return Stream.Fail(Itm, Fd);
 	    }
 
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index fad51de..4dd7b1a 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -2,20 +2,20 @@
 // SPDX-License-Identifier: GPL-2.0+
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    File Utilities
-   
+
    CopyFile - Buffered copy of a single file
    GetLock - dpkg compatible lock file manipulation (fcntl)
-   
+
    This file had this historic note, but now includes further changes
    under the GPL-2.0+:
 
-   Most of this source is placed in the Public Domain, do with it what 
+   Most of this source is placed in the Public Domain, do with it what
    you will
    It was originally written by Jason Gunthorpe <jgg@debian.org>.
    FileFd gzip support added by Martin Pitt <martin.pitt@canonical.com>
-   
+
    The exception is RunScripts() it is under the GPLv2
 
    We believe that this reference to GPLv2 was not meant to exclude later
@@ -35,31 +35,31 @@
 #include <apt-pkg/pkgsystem.h>
 #include <apt-pkg/strutl.h>
 
+#include <cctype>
+#include <cerrno>
+#include <csignal>
+#include <cstdarg>
+#include <cstddef>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
+#include <ctime>
 #include <iostream>
 #include <string>
 #include <vector>
-#include <ctype.h>
 #include <dirent.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <glob.h>
 #include <grp.h>
 #include <pwd.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
 #include <sys/select.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/wait.h>
-#include <time.h>
 #include <unistd.h>
 
 #include <algorithm>
+#include <array>
 #include <memory>
 #include <set>
 
@@ -81,8 +81,8 @@
 #ifdef HAVE_SYSTEMD
 #include <systemd/sd-bus.h>
 #endif
+#include <cstdint>
 #include <endian.h>
-#include <stdint.h>
 
 #if __gnu_linux__
 #include <sys/prctl.h>
@@ -105,16 +105,16 @@ bool RunScripts(const char *Cnf)
 
    // Fork for running the system calls
    pid_t Child = ExecFork();
-   
+
    // This is the child
    if (Child == 0)
    {
       if (_system != nullptr && _system->IsLocked() == true && (stringcasecmp(Cnf, "dpkg::post-invoke") == 0 || stringcasecmp(Cnf, "dpkg::pre-invoke") == 0))
 	 setenv("DPKG_FRONTEND_LOCKED", "true", 1);
-      if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") 
+      if (_config->FindDir("DPkg::Chroot-Directory","/") != "/")
       {
-         std::cerr << "Chrooting into " 
-                   << _config->FindDir("DPkg::Chroot-Directory") 
+         std::cerr << "Chrooting into "
+                   << _config->FindDir("DPkg::Chroot-Directory")
                    << std::endl;
          if (chroot(_config->FindDir("DPkg::Chroot-Directory","/").c_str()) != 0)
             _exit(100);
@@ -122,7 +122,7 @@ bool RunScripts(const char *Cnf)
 
       if (chdir("/tmp/") != 0)
 	 _exit(100);
-	 
+
       unsigned int Count = 1;
       for (; Opts != 0; Opts = Opts->Next, Count++)
       {
@@ -137,7 +137,7 @@ bool RunScripts(const char *Cnf)
 	    _exit(100+Count);
       }
       _exit(0);
-   }      
+   }
 
    // Wait for the child
    int Status = 0;
@@ -158,10 +158,10 @@ bool RunScripts(const char *Cnf)
 	 for (; Opts != 0 && Count != 1; Opts = Opts->Next, Count--);
 	 _error->Error("Problem executing scripts %s '%s'",Cnf,Opts->Value.c_str());
       }
-      
+
       return _error->Error("Sub-process returned an error code");
    }
-   
+
    return true;
 }
 									/*}}}*/
@@ -176,12 +176,11 @@ bool CopyFile(FileFd &From,FileFd &To)
       return false;
 
    // Buffered copy between fds
-   constexpr size_t BufSize = APT_BUFFER_SIZE;
-   std::unique_ptr<unsigned char[]> Buf(new unsigned char[BufSize]);
+   std::array<unsigned char, APT_BUFFER_SIZE> Buf;
    unsigned long long ToRead = 0;
    do {
-      if (From.Read(Buf.get(),BufSize, &ToRead) == false ||
-	  To.Write(Buf.get(),ToRead) == false)
+      if (From.Read(Buf.data(),Buf.size(), &ToRead) == false ||
+	  To.Write(Buf.data(),ToRead) == false)
 	 return false;
    } while (ToRead != 0);
 
@@ -248,7 +247,7 @@ static std::string GetProcessName(int pid)
    }
    return "";
 }
-int GetLock(string File,bool Errors)
+int GetLock(string const &File,bool Errors)
 {
    // GetLock() is used in aptitude on directories with public-write access
    // Use O_NOFOLLOW here to prevent symlink traversal attacks
@@ -261,7 +260,7 @@ int GetLock(string File,bool Errors)
 	 _error->Warning(_("Not using locking for read only lock file %s"),File.c_str());
 	 return dup(0);       // Need something for the caller to close
       }
-      
+
       if (Errors == true)
 	 _error->Errno("open",_("Could not open lock file %s"),File.c_str());
 
@@ -270,7 +269,7 @@ int GetLock(string File,bool Errors)
       return -1;
    }
    SetCloseExec(FD,true);
-      
+
    // Acquire a write lock
    struct flock fl;
    fl.l_type = F_WRLCK;
@@ -301,9 +300,9 @@ int GetLock(string File,bool Errors)
       if (errno == ENOLCK)
       {
 	 _error->Warning(_("Not using locking for nfs mounted lock file %s"),File.c_str());
-	 return dup(0);       // Need something for the caller to close	 
+	 return dup(0);       // Need something for the caller to close
       }
-  
+
       if (Errors == true)
       {
 	 // We only do the lookup in the if ((errno == EACCES || errno == EAGAIN))
@@ -331,7 +330,7 @@ int GetLock(string File,bool Errors)
 // FileExists - Check if a file exists					/*{{{*/
 // ---------------------------------------------------------------------
 /* Beware: Directories are also files! */
-bool FileExists(string File)
+bool FileExists(string const &File)
 {
    struct stat Buf;
    if (stat(File.c_str(),&Buf) != 0)
@@ -342,7 +341,7 @@ bool FileExists(string File)
 // RealFileExists - Check if a file exists and if it is really a file	/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool RealFileExists(string File)
+bool RealFileExists(string const &File)
 {
    struct stat Buf;
    if (stat(File.c_str(),&Buf) != 0)
@@ -463,7 +462,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
 
    Configuration::MatchAgainstConfig SilentIgnore("Dir::Ignore-Files-Silently");
    DIR *D = opendir(Dir.c_str());
-   if (D == 0) 
+   if (D == 0)
    {
       if (errno == EACCES)
 	 _error->WarningE("opendir", _("Unable to read %s"), Dir.c_str());
@@ -472,7 +471,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
       return List;
    }
 
-   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) 
+   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
    {
       // skip "hidden" files
       if (Ent->d_name[0] == '.')
@@ -486,12 +485,14 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
       {
 	 if (RealFileExists(File) == false)
 	 {
+	    auto d_ext = flExtension(Ent->d_name);
 	    // do not show ignoration warnings for directories
-	    if (
+	    if ((
 #ifdef _DIRENT_HAVE_D_TYPE
-		Ent->d_type == DT_DIR ||
+		   Ent->d_type == DT_DIR ||
 #endif
-		DirectoryExists(File) == true)
+		   DirectoryExists(File) == true) &&
+		(d_ext.empty() || std::find(Ext.begin(), Ext.end(), d_ext) == Ext.end()))
 	       continue;
 	    if (SilentIgnore.Match(Ent->d_name) == false)
 	       _error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str());
@@ -504,7 +505,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
       // extensions given -> "" extension allows no extension
       if (Ext.empty() == false)
       {
-	 string d_ext = flExtension(Ent->d_name);
+	 auto d_ext = flExtension(Ent->d_name);
 	 if (d_ext == Ent->d_name) // no extension
 	 {
 	    if (std::find(Ext.begin(), Ext.end(), "") == Ext.end())
@@ -585,7 +586,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, bool SortList)
       return List;
    }
 
-   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) 
+   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
    {
       // skip "hidden" files
       if (Ent->d_name[0] == '.')
@@ -669,19 +670,19 @@ time_t GetModificationTime(string const &Path)
 // flNotDir - Strip the directory from the filename			/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-string flNotDir(string File)
+string_view flNotDir(string_view File)
 {
-   string::size_type Res = File.rfind('/');
-   if (Res == string::npos)
+   string_view::size_type Res = File.rfind('/');
+   if (Res == string_view::npos)
       return File;
    Res++;
-   return string(File,Res,Res - File.length());
+   return File.substr(Res,Res - File.length());
 }
 									/*}}}*/
 // flNotFile - Strip the file from the directory name			/*{{{*/
 // ---------------------------------------------------------------------
 /* Result ends in a / */
-string flNotFile(string File)
+string flNotFile(string const &File)
 {
    string::size_type Res = File.rfind('/');
    if (Res == string::npos)
@@ -693,13 +694,13 @@ string flNotFile(string File)
 // flExtension - Return the extension for the file			/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-string flExtension(string File)
+string_view flExtension(string_view File)
 {
-   string::size_type Res = File.rfind('.');
-   if (Res == string::npos)
+   string_view::size_type Res = File.rfind('.');
+   if (Res == string_view::npos)
       return File;
-   Res++;
-   return string(File,Res);
+   File.remove_prefix(Res + 1);
+   return File;
 }
 									/*}}}*/
 // flNoLink - If file is a symlink then deref it			/*{{{*/
@@ -712,9 +713,9 @@ string flNoLink(string File)
       return File;
    if (stat(File.c_str(),&St) != 0)
       return File;
-   
-   /* Loop resolving the link. There is no need to limit the number of 
-      loops because the stat call above ensures that the symlink is not 
+
+   /* Loop resolving the link. There is no need to limit the number of
+      loops because the stat call above ensures that the symlink is not
       circular */
    char Buffer[1024];
    string NFile = File;
@@ -722,23 +723,23 @@ string flNoLink(string File)
    {
       // Read the link
       ssize_t Res;
-      if ((Res = readlink(NFile.c_str(),Buffer,sizeof(Buffer))) <= 0 || 
+      if ((Res = readlink(NFile.c_str(),Buffer,sizeof(Buffer))) <= 0 ||
 	  (size_t)Res >= sizeof(Buffer))
 	  return File;
-      
+
       // Append or replace the previous path
       Buffer[Res] = 0;
       if (Buffer[0] == '/')
 	 NFile = Buffer;
       else
 	 NFile = flNotFile(NFile) + Buffer;
-      
+
       // See if we are done
       if (lstat(NFile.c_str(),&St) != 0)
 	 return File;
       if (S_ISLNK(St.st_mode) == 0)
-	 return NFile;      
-   }   
+	 return NFile;
+   }
 }
 									/*}}}*/
 // flCombine - Combine a file and a directory				/*{{{*/
@@ -749,14 +750,16 @@ string flCombine(string Dir,string File)
 {
    if (File.empty() == true)
       return string();
-   
+
    if (File[0] == '/' || Dir.empty() == true)
       return File;
    if (File.length() >= 2 && File[0] == '.' && File[1] == '/')
       return File;
-   if (Dir[Dir.length()-1] == '/')
-      return Dir + File;
-   return Dir + '/' + File;
+
+   if (Dir.back() != '/')
+      Dir.append("/");
+   Dir.append(File);
+   return Dir;
 }
 									/*}}}*/
 // flAbsPath - Return the absolute path of the filename			/*{{{*/
@@ -770,9 +773,9 @@ string flAbsPath(string File)
       _error->Errno("realpath", "flAbsPath on %s failed", File.c_str());
       return "";
    }
-   std::string AbsPath(p);
+   File = p;
    free(p);
-   return AbsPath;
+   return File;
 }
 									/*}}}*/
 std::string flNormalize(std::string file)				/*{{{*/
@@ -798,7 +801,7 @@ std::string flNormalize(std::string file)				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
 void SetCloseExec(int Fd,bool Close)
-{   
+{
    if (fcntl(Fd,F_SETFD,(Close == false)?0:FD_CLOEXEC) != 0)
    {
       cerr << "FATAL -> Could not set close on exec " << strerror(errno) << endl;
@@ -810,7 +813,7 @@ void SetCloseExec(int Fd,bool Close)
 // ---------------------------------------------------------------------
 /* */
 void SetNonBlock(int Fd,bool Block)
-{   
+{
    int Flags = fcntl(Fd,F_GETFL) & (~O_NONBLOCK);
    if (fcntl(Fd,F_SETFL,Flags | ((Block == false)?0:O_NONBLOCK)) != 0)
    {
@@ -822,7 +825,7 @@ void SetNonBlock(int Fd,bool Block)
 // WaitFd - Wait for a FD to become readable				/*{{{*/
 // ---------------------------------------------------------------------
 /* This waits for a FD to become readable using select. It is useful for
-   applications making use of non-blocking sockets. The timeout is 
+   applications making use of non-blocking sockets. The timeout is
    in seconds. */
 bool WaitFd(int Fd,bool write,unsigned long timeout)
 {
@@ -832,19 +835,19 @@ bool WaitFd(int Fd,bool write,unsigned long timeout)
    FD_SET(Fd,&Set);
    tv.tv_sec = timeout;
    tv.tv_usec = 0;
-   if (write == true) 
-   {      
+   if (write == true)
+   {
       int Res;
       do
       {
 	 Res = select(Fd+1,0,&Set,0,(timeout != 0?&tv:0));
       }
       while (Res < 0 && errno == EINTR);
-      
+
       if (Res <= 0)
 	 return false;
-   } 
-   else 
+   }
+   else
    {
       int Res;
       do
@@ -852,11 +855,11 @@ bool WaitFd(int Fd,bool write,unsigned long timeout)
 	 Res = select(Fd+1,&Set,0,0,(timeout != 0?&tv:0));
       }
       while (Res < 0 && errno == EINTR);
-      
+
       if (Res <= 0)
 	 return false;
    }
-   
+
    return true;
 }
 									/*}}}*/
@@ -883,13 +886,13 @@ void MergeKeepFdsFromConfiguration(std::set<int> &KeepFDs)
 									/*}}}*/
 // ExecFork - Magical fork that sanitizes the context before execing	/*{{{*/
 // ---------------------------------------------------------------------
-/* This is used if you want to cleanse the environment for the forked 
+/* This is used if you want to cleanse the environment for the forked
    child, it fixes up the important signals and nukes all of the fds,
    otherwise acts like normal fork. */
 pid_t ExecFork()
 {
       set<int> KeepFDs;
-      // we need to merge the Keep-Fds as external tools like 
+      // we need to merge the Keep-Fds as external tools like
       // debconf-apt-progress use it
       MergeKeepFdsFromConfiguration(KeepFDs);
       return ExecFork(KeepFDs);
@@ -938,20 +941,20 @@ pid_t ExecFork(std::set<int> KeepFDs)
 	 }
       }
    }
-   
+
    return Process;
 }
 									/*}}}*/
 // ExecWait - Fancy waitpid						/*{{{*/
 // ---------------------------------------------------------------------
-/* Waits for the given sub process. If Reap is set then no errors are 
+/* Waits for the given sub process. If Reap is set then no errors are
    generated. Otherwise a failed subprocess will generate a proper descriptive
    message */
 bool ExecWait(pid_t Pid,const char *Name,bool Reap)
 {
    if (Pid <= 1)
       return true;
-   
+
    // Wait and collect the error code
    int Status;
    while (waitpid(Pid,&Status,0) != Pid)
@@ -961,11 +964,11 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap)
 
       if (Reap == true)
 	 return false;
-      
+
       return _error->Error(_("Waited for %s but it wasn't there"),Name);
    }
 
-   
+
    // Check for an error code.
    if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0)
    {
@@ -975,16 +978,16 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap)
       {
 	 if( WTERMSIG(Status) == SIGSEGV)
 	    return _error->Error(_("Sub-process %s received a segmentation fault."),Name);
-	 else 
+	 else
 	    return _error->Error(_("Sub-process %s received signal %u."),Name, WTERMSIG(Status));
       }
 
       if (WIFEXITED(Status) != 0)
 	 return _error->Error(_("Sub-process %s returned an error code (%u)"),Name,WEXITSTATUS(Status));
-      
+
       return _error->Error(_("Sub-process %s exited unexpectedly"),Name);
-   }      
-   
+   }
+
    return true;
 }
 									/*}}}*/
@@ -998,24 +1001,18 @@ bool StartsWithGPGClearTextSignature(string const &FileName)
    char * lineptr = nullptr;
    size_t n = 0;
    errno = 0;
+   DEFER([&] { fclose(gpg); free(lineptr); });
    ssize_t const result = getline(&lineptr, &n, gpg);
    if (errno != 0)
    {
       _error->Errno("getline", "Could not read from %s", FileName.c_str());
-      fclose(gpg);
-      free(lineptr);
       return false;
    }
-   fclose(gpg);
 
    _strrstrip(lineptr);
-   static const char* SIGMSG = "-----BEGIN PGP SIGNED MESSAGE-----";
+   const char* SIGMSG = "-----BEGIN PGP SIGNED MESSAGE-----";
    if (result == -1 || strcmp(lineptr, SIGMSG) != 0)
-   {
-      free(lineptr);
       return false;
-   }
-   free(lineptr);
    return true;
 }
 									/*}}}*/
@@ -1073,7 +1070,7 @@ struct APT_HIDDEN simple_buffer {							/*{{{*/
       reset();
    }
    void reset() { bufferend = bufferstart = 0; }
-   ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
+   [[nodiscard]] ssize_t read(void *to, unsigned long long requested_size)
    {
       if (size() < requested_size)
 	 requested_size = size();
@@ -1083,7 +1080,7 @@ struct APT_HIDDEN simple_buffer {							/*{{{*/
 	 bufferstart = bufferend = 0;
       return requested_size;
    }
-   ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK
+   [[nodiscard]] ssize_t write(const void *from, unsigned long long requested_size)
    {
       if (free() < requested_size)
 	 requested_size = free();
@@ -1245,12 +1242,11 @@ public:
    }
    virtual bool InternalSkip(unsigned long long Over)
    {
-      unsigned long long constexpr buffersize = 1024;
-      char buffer[buffersize];
+      std::array<char, APT_BUFFER_SIZE> buffer;
       while (Over != 0)
       {
-	 unsigned long long toread = std::min(buffersize, Over);
-	 if (filefd->Read(buffer, toread) == false)
+	 auto toread = std::min<unsigned long long>(buffer.size(), Over);
+	 if (filefd->Read(buffer.data(), toread) == false)
 	    return filefd->FileFdError("Unable to seek ahead %llu",Over);
 	 Over -= toread;
       }
@@ -1272,11 +1268,10 @@ public:
    {
       unsigned long long size = 0;
       unsigned long long const oldSeek = filefd->Tell();
-      unsigned long long constexpr ignoresize = 1024;
-      char ignore[ignoresize];
+      std::array<char, APT_BUFFER_SIZE> ignore;
       unsigned long long read = 0;
       do {
-	 if (filefd->Read(ignore, ignoresize, &read) == false)
+	 if (filefd->Read(ignore.data(), ignore.size(), &read) == false)
 	 {
 	    filefd->Seek(oldSeek);
 	    return 0;
@@ -1295,71 +1290,71 @@ public:
 									/*}}}*/
 class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate {	/*{{{*/
 protected:
-   FileFdPrivate *wrapped;
+   std::unique_ptr<FileFdPrivate> wrapped;
    simple_buffer writebuffer;
 
 public:
 
-   explicit BufferedWriteFileFdPrivate(FileFdPrivate *Priv) :
-      FileFdPrivate(Priv->filefd), wrapped(Priv) {};
+   explicit BufferedWriteFileFdPrivate(std::unique_ptr<FileFdPrivate> &&Priv) :
+      FileFdPrivate(Priv->filefd), wrapped(std::move(Priv)) {};
 
-   virtual APT::Configuration::Compressor get_compressor() const APT_OVERRIDE
+   [[nodiscard]] APT::Configuration::Compressor get_compressor() const override
    {
       return wrapped->get_compressor();
    }
-   virtual void set_compressor(APT::Configuration::Compressor const &compressor)  APT_OVERRIDE
+   void set_compressor(APT::Configuration::Compressor const &compressor) override
    {
       return wrapped->set_compressor(compressor);
    }
-   virtual unsigned int get_openmode() const  APT_OVERRIDE
+   [[nodiscard]] unsigned int get_openmode() const override
    {
       return wrapped->get_openmode();
    }
-   virtual void set_openmode(unsigned int openmode)  APT_OVERRIDE
+   void set_openmode(unsigned int openmode) override
    {
       return wrapped->set_openmode(openmode);
    }
-   virtual bool get_is_pipe() const  APT_OVERRIDE
+   [[nodiscard]] bool get_is_pipe() const override
    {
       return wrapped->get_is_pipe();
    }
-   virtual void set_is_pipe(bool is_pipe) APT_OVERRIDE
+   void set_is_pipe(bool is_pipe) override
    {
       FileFdPrivate::set_is_pipe(is_pipe);
       wrapped->set_is_pipe(is_pipe);
    }
-   virtual unsigned long long get_seekpos() const APT_OVERRIDE
+   [[nodiscard]] unsigned long long get_seekpos() const override
    {
       return wrapped->get_seekpos();
    }
-   virtual void set_seekpos(unsigned long long seekpos) APT_OVERRIDE
+   void set_seekpos(unsigned long long seekpos) override
    {
       return wrapped->set_seekpos(seekpos);
    }
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+   bool InternalOpen(int const iFd, unsigned int const Mode) override
    {
       if (InternalFlush() == false)
 	 return false;
       return wrapped->InternalOpen(iFd, Mode);
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       if (InternalFlush() == false)
 	 return -1;
       return wrapped->InternalUnbufferedRead(To, Size);
 
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       return wrapped->InternalReadError();
    }
-   virtual char * InternalReadLine(char * To, unsigned long long Size) APT_OVERRIDE
+   char *InternalReadLine(char *To, unsigned long long Size) override
    {
       if (InternalFlush() == false)
 	 return nullptr;
       return wrapped->InternalReadLine(To, Size);
    }
-   virtual bool InternalFlush() APT_OVERRIDE
+   bool InternalFlush() override
    {
       while (writebuffer.empty() == false) {
 	 auto written = wrapped->InternalWrite(writebuffer.get(),
@@ -1375,7 +1370,7 @@ public:
       writebuffer.reset();
       return wrapped->InternalFlush();
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       // Optimisation: If the buffer is empty and we have more to write than
       // would fit in the buffer (or equal number of bytes), write directly.
@@ -1390,51 +1385,50 @@ public:
 
       return written;
    }
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       return wrapped->InternalWriteError();
    }
-   virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+   bool InternalSeek(unsigned long long const To) override
    {
       if (InternalFlush() == false)
 	 return false;
       return wrapped->InternalSeek(To);
    }
-   virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+   bool InternalSkip(unsigned long long Over) override
    {
       if (InternalFlush() == false)
 	 return false;
       return wrapped->InternalSkip(Over);
    }
-   virtual bool InternalTruncate(unsigned long long const Size) APT_OVERRIDE
+   bool InternalTruncate(unsigned long long const Size) override
    {
       if (InternalFlush() == false)
 	 return false;
       return wrapped->InternalTruncate(Size);
    }
-   virtual unsigned long long InternalTell() APT_OVERRIDE
+   unsigned long long InternalTell() override
    {
       if (InternalFlush() == false)
 	 return -1;
       return wrapped->InternalTell();
    }
-   virtual unsigned long long InternalSize() APT_OVERRIDE
+   unsigned long long InternalSize() override
    {
       if (InternalFlush() == false)
 	 return -1;
       return wrapped->InternalSize();
    }
-   virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE
+   bool InternalClose(std::string const &FileName) override
    {
       return wrapped->InternalClose(FileName);
    }
-   virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE
+   [[nodiscard]] bool InternalAlwaysAutoClose() const override
    {
       return wrapped->InternalAlwaysAutoClose();
    }
    virtual ~BufferedWriteFileFdPrivate()
    {
-      delete wrapped;
    }
 };
 									/*}}}*/
@@ -1442,7 +1436,7 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate {				/*{{{*/
 #ifdef HAVE_ZLIB
 public:
    gzFile gz;
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+   bool InternalOpen(int const iFd, unsigned int const Mode) override
    {
       if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
 	 gz = gzdopen(iFd, "r+");
@@ -1453,11 +1447,11 @@ public:
       filefd->Flags |= FileFd::Compressed;
       return gz != nullptr;
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       return gzread(gz, To, Size);
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       int err;
       char const * const errmsg = gzerror(gz, &err);
@@ -1465,15 +1459,15 @@ public:
 	 return filefd->FileFdError("gzread: %s (%d: %s)", _("Read error"), err, errmsg);
       return FileFdPrivate::InternalReadError();
    }
-   virtual char * InternalReadLine(char * To, unsigned long long Size) APT_OVERRIDE
+   char *InternalReadLine(char *To, unsigned long long Size) override
    {
       return gzgets(gz, To, Size);
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       return gzwrite(gz,From,Size);
    }
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       int err;
       char const * const errmsg = gzerror(gz, &err);
@@ -1481,7 +1475,7 @@ public:
 	 return filefd->FileFdError("gzwrite: %s (%d: %s)", _("Write error"), err, errmsg);
       return FileFdPrivate::InternalWriteError();
    }
-   virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+   bool InternalSeek(unsigned long long const To) override
    {
       off_t const res = gzseek(gz, To, SEEK_SET);
       if (res != (off_t)To)
@@ -1490,7 +1484,7 @@ public:
       buffer.reset();
       return true;
    }
-   virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+   bool InternalSkip(unsigned long long Over) override
    {
       if (Over >= buffer.size())
       {
@@ -1510,11 +1504,11 @@ public:
       seekpos = res;
       return true;
    }
-   virtual unsigned long long InternalTell() APT_OVERRIDE
+   unsigned long long InternalTell() override
    {
       return gztell(gz) - buffer.size();
    }
-   virtual unsigned long long InternalSize() APT_OVERRIDE
+   unsigned long long InternalSize() override
    {
       unsigned long long filesize = FileFdPrivate::InternalSize();
       // only check gzsize if we are actually a gzip file, just checking for
@@ -1548,7 +1542,7 @@ public:
       }
       return size;
    }
-   virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE
+   bool InternalClose(std::string const &FileName) override
    {
       if (gz == nullptr)
 	 return true;
@@ -1569,22 +1563,22 @@ class APT_HIDDEN Bz2FileFdPrivate: public FileFdPrivate {				/*{{{*/
 #ifdef HAVE_BZ2
    BZFILE* bz2;
 public:
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
-   {
-      if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
-	 bz2 = BZ2_bzdopen(iFd, "r+");
-      else if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
-	 bz2 = BZ2_bzdopen(iFd, "w");
-      else
-	 bz2 = BZ2_bzdopen(iFd, "r");
-      filefd->Flags |= FileFd::Compressed;
-      return bz2 != nullptr;
+bool InternalOpen(int const iFd, unsigned int const Mode) override
+{
+   if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+      bz2 = BZ2_bzdopen(iFd, "r+");
+   else if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+      bz2 = BZ2_bzdopen(iFd, "w");
+   else
+      bz2 = BZ2_bzdopen(iFd, "r");
+   filefd->Flags |= FileFd::Compressed;
+   return bz2 != nullptr;
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       return BZ2_bzread(bz2, To, Size);
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       int err;
       char const * const errmsg = BZ2_bzerror(bz2, &err);
@@ -1592,11 +1586,11 @@ public:
 	 return filefd->FileFdError("BZ2_bzread: %s %s (%d: %s)", filefd->FileName.c_str(), _("Read error"), err, errmsg);
       return FileFdPrivate::InternalReadError();
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       return BZ2_bzwrite(bz2, (void*)From, Size);
    }
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       int err;
       char const * const errmsg = BZ2_bzerror(bz2, &err);
@@ -1604,8 +1598,8 @@ public:
 	 return filefd->FileFdError("BZ2_bzwrite: %s %s (%d: %s)", filefd->FileName.c_str(), _("Write error"), err, errmsg);
       return FileFdPrivate::InternalWriteError();
    }
-   virtual bool InternalStream() const APT_OVERRIDE { return true; }
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE
+   [[nodiscard]] bool InternalStream() const override { return true; }
+   bool InternalClose(std::string const &/*FileName*/) override
    {
       if (bz2 == nullptr)
 	 return true;
@@ -1631,40 +1625,42 @@ class APT_HIDDEN Lz4FileFdPrivate: public FileFdPrivate {				/*{{{*/
    // Count of bytes that the decompressor expects to read next, or buffer size.
    size_t next_to_load = APT_BUFFER_SIZE;
 public:
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+bool InternalOpen(int const iFd, unsigned int const Mode) override
+{
+   if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+      return _error->Error("lz4 only supports write or read mode");
+
+   if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
    {
-      if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
-	 return _error->Error("lz4 only supports write or read mode");
+      res = LZ4F_createCompressionContext(&cctx, LZ4F_VERSION);
+      lz4_buffer.reset(LZ4F_compressBound(APT_BUFFER_SIZE, nullptr) + LZ4_HEADER_SIZE + LZ4_FOOTER_SIZE);
+   }
+   else
+   {
+      res = LZ4F_createDecompressionContext(&dctx, LZ4F_VERSION);
+      lz4_buffer.reset(APT_BUFFER_SIZE);
+   }
 
-      if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly) {
-	 res = LZ4F_createCompressionContext(&cctx, LZ4F_VERSION);
-	 lz4_buffer.reset(LZ4F_compressBound(APT_BUFFER_SIZE, nullptr)
-			  + LZ4_HEADER_SIZE + LZ4_FOOTER_SIZE);
-      } else {
-	 res = LZ4F_createDecompressionContext(&dctx, LZ4F_VERSION);
-	 lz4_buffer.reset(APT_BUFFER_SIZE);
-      }
+   filefd->Flags |= FileFd::Compressed;
 
-      filefd->Flags |= FileFd::Compressed;
+   if (LZ4F_isError(res))
+      return false;
 
-      if (LZ4F_isError(res))
-	 return false;
+   unsigned int flags = (Mode & (FileFd::WriteOnly | FileFd::ReadOnly));
+   if (backend.OpenDescriptor(iFd, flags, FileFd::None, true) == false)
+      return false;
 
-      unsigned int flags = (Mode & (FileFd::WriteOnly|FileFd::ReadOnly));
-      if (backend.OpenDescriptor(iFd, flags, FileFd::None, true) == false)
+   // Write the file header
+   if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+   {
+      res = LZ4F_compressBegin(cctx, lz4_buffer.buffer, lz4_buffer.buffersize_max, nullptr);
+      if (LZ4F_isError(res) || backend.Write(lz4_buffer.buffer, res) == false)
 	 return false;
+   }
 
-      // Write the file header
-      if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
-      {
-	 res = LZ4F_compressBegin(cctx, lz4_buffer.buffer, lz4_buffer.buffersize_max, nullptr);
-	 if (LZ4F_isError(res) || backend.Write(lz4_buffer.buffer, res) == false)
-	    return false;
-      }
-
-      return true;
+   return true;
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       /* Keep reading as long as the compressor still wants to read */
       while (next_to_load) {
@@ -1702,13 +1698,13 @@ public:
 
       return 0;
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       char const * const errmsg = LZ4F_getErrorName(res);
 
       return filefd->FileFdError("LZ4F: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Read error"), res, errmsg);
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       unsigned long long const towrite = std::min(APT_BUFFER_SIZE, Size);
 
@@ -1721,20 +1717,20 @@ public:
 
       return towrite;
    }
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       char const * const errmsg = LZ4F_getErrorName(res);
 
       return filefd->FileFdError("LZ4F: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Write error"), res, errmsg);
    }
-   virtual bool InternalStream() const APT_OVERRIDE { return true; }
+   [[nodiscard]] bool InternalStream() const override { return true; }
 
-   virtual bool InternalFlush() APT_OVERRIDE
+   bool InternalFlush() override
    {
       return backend.Flush();
    }
 
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE
+   bool InternalClose(std::string const &/*FileName*/) override
    {
       /* Reset variables */
       res = 0;
@@ -1790,7 +1786,7 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate		/*{{{*/
    size_t next_to_load = APT_BUFFER_SIZE;
 
    public:
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+   bool InternalOpen(int const iFd, unsigned int const Mode) override
    {
       if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
 	 return _error->Error("zstd only supports write or read mode");
@@ -1819,7 +1815,7 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate		/*{{{*/
 
       return true;
    }
-   virtual ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       /* Keep reading as long as the compressor still wants to read */
       while (true)
@@ -1877,13 +1873,13 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate		/*{{{*/
 
       return 0;
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       char const *const errmsg = ZSTD_getErrorName(res);
 
       return filefd->FileFdError("ZSTD: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Read error"), res, errmsg);
    }
-   virtual ssize_t InternalWrite(void const *const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       // Drain compressed buffer as far as possible.
       ZSTD_outBuffer out = {
@@ -1905,20 +1901,20 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate		/*{{{*/
       return in.pos;
    }
 
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       char const *const errmsg = ZSTD_getErrorName(res);
 
       return filefd->FileFdError("ZSTD: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Write error"), res, errmsg);
    }
-   virtual bool InternalStream() const APT_OVERRIDE { return true; }
+   [[nodiscard]] bool InternalStream() const override { return true; }
 
-   virtual bool InternalFlush() APT_OVERRIDE
+   bool InternalFlush() override
    {
       return backend.Flush();
    }
 
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE
+   bool InternalClose(std::string const &/*FileName*/) override
    {
       /* Reset variables */
       res = 0;
@@ -1994,7 +1990,7 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate {		/*{{{*/
    struct LZMAFILE {
       FILE* file;
       FileFd * const filefd;
-      uint8_t buffer[4096];
+      std::array<unsigned char, APT_BUFFER_SIZE> buffer;
       lzma_stream stream;
       lzma_ret err;
       bool eof;
@@ -2005,19 +2001,18 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate {		/*{{{*/
       {
 	 if (compressing == true && filefd->Failed() == false)
 	 {
-	    size_t constexpr buffersize = sizeof(buffer)/sizeof(buffer[0]);
 	    while(true)
 	    {
-	       stream.avail_out = buffersize;
-	       stream.next_out = buffer;
+	       stream.avail_out = buffer.size();
+	       stream.next_out = buffer.data();
 	       err = lzma_code(&stream, LZMA_FINISH);
 	       if (err != LZMA_OK && err != LZMA_STREAM_END)
 	       {
 		  _error->Error("~LZMAFILE: Compress finalisation failed");
 		  break;
 	       }
-	       size_t const n =  buffersize - stream.avail_out;
-	       if (n && fwrite(buffer, 1, n, file) != n)
+	       size_t const n =  buffer.size() - stream.avail_out;
+	       if (n && fwrite(buffer.data(), 1, n, file) != n)
 	       {
 		  _error->Errno("~LZMAFILE",_("Write error"));
 		  break;
@@ -2058,51 +2053,51 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate {		/*{{{*/
       return 6;
    }
 public:
-   virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
-   {
-      if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
-	 return filefd->FileFdError("ReadWrite mode is not supported for lzma/xz files %s", filefd->FileName.c_str());
+bool InternalOpen(int const iFd, unsigned int const Mode) override
+{
+   if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+      return filefd->FileFdError("ReadWrite mode is not supported for lzma/xz files %s", filefd->FileName.c_str());
 
-      if (lzma == nullptr)
-	 lzma = new LzmaFileFdPrivate::LZMAFILE(filefd);
-      if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
-	 lzma->file = fdopen(iFd, "w");
-      else
-	 lzma->file = fdopen(iFd, "r");
-      filefd->Flags |= FileFd::Compressed;
-      if (lzma->file == nullptr)
-	 return false;
+   if (lzma == nullptr)
+      lzma = new LzmaFileFdPrivate::LZMAFILE(filefd);
+   if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+      lzma->file = fdopen(iFd, "w");
+   else
+      lzma->file = fdopen(iFd, "r");
+   filefd->Flags |= FileFd::Compressed;
+   if (lzma->file == nullptr)
+      return false;
 
-      lzma_stream tmp_stream = LZMA_STREAM_INIT;
-      lzma->stream = tmp_stream;
+   lzma_stream tmp_stream = LZMA_STREAM_INIT;
+   lzma->stream = tmp_stream;
 
-      if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+   if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+   {
+      uint32_t const xzlevel = findXZlevel(compressor.CompressArgs);
+      if (compressor.Name == "xz")
       {
-	 uint32_t const xzlevel = findXZlevel(compressor.CompressArgs);
-	 if (compressor.Name == "xz")
-	 {
-	    if (lzma_easy_encoder(&lzma->stream, xzlevel, LZMA_CHECK_CRC64) != LZMA_OK)
-	       return false;
-	 }
-	 else
-	 {
-	    lzma_options_lzma options;
-	    lzma_lzma_preset(&options, xzlevel);
-	    if (lzma_alone_encoder(&lzma->stream, &options) != LZMA_OK)
-	       return false;
-	 }
-	 lzma->compressing = true;
+	 if (lzma_easy_encoder(&lzma->stream, xzlevel, LZMA_CHECK_CRC64) != LZMA_OK)
+	    return false;
       }
       else
       {
-	 uint64_t constexpr memlimit = 1024 * 1024 * 500;
-	 if (lzma_auto_decoder(&lzma->stream, memlimit, 0) != LZMA_OK)
+	 lzma_options_lzma options;
+	 lzma_lzma_preset(&options, xzlevel);
+	 if (lzma_alone_encoder(&lzma->stream, &options) != LZMA_OK)
 	    return false;
-	 lzma->compressing = false;
       }
-      return true;
+      lzma->compressing = true;
+   }
+   else
+   {
+      uint64_t constexpr memlimit = 1024 * 1024 * 500;
+      if (lzma_auto_decoder(&lzma->stream, memlimit, 0) != LZMA_OK)
+	 return false;
+      lzma->compressing = false;
+   }
+   return true;
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       ssize_t Res;
       if (lzma->eof == true)
@@ -2112,8 +2107,8 @@ public:
       lzma->stream.avail_out = Size;
       if (lzma->stream.avail_in == 0)
       {
-	 lzma->stream.next_in = lzma->buffer;
-	 lzma->stream.avail_in = fread(lzma->buffer, 1, sizeof(lzma->buffer)/sizeof(lzma->buffer[0]), lzma->file);
+	 lzma->stream.next_in = lzma->buffer.data();
+	 lzma->stream.avail_in = fread(lzma->buffer.data(), 1, lzma->buffer.size(), lzma->file);
       }
       lzma->err = lzma_code(&lzma->stream, LZMA_RUN);
       if (lzma->err == LZMA_STREAM_END)
@@ -2138,22 +2133,22 @@ public:
       }
       return Res;
    }
-   virtual bool InternalReadError() APT_OVERRIDE
+   bool InternalReadError() override
    {
       return filefd->FileFdError("lzma_read: %s (%d)", _("Read error"), lzma->err);
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       ssize_t Res;
       lzma->stream.next_in = (uint8_t *)From;
       lzma->stream.avail_in = Size;
-      lzma->stream.next_out = lzma->buffer;
-      lzma->stream.avail_out = sizeof(lzma->buffer)/sizeof(lzma->buffer[0]);
+      lzma->stream.next_out = lzma->buffer.data();
+      lzma->stream.avail_out = lzma->buffer.size();
       lzma->err = lzma_code(&lzma->stream, LZMA_RUN);
       if (lzma->err != LZMA_OK)
 	 return -1;
-      size_t const n = sizeof(lzma->buffer)/sizeof(lzma->buffer[0]) - lzma->stream.avail_out;
-      size_t const m = (n == 0) ? 0 : fwrite(lzma->buffer, 1, n, lzma->file);
+      size_t const n = lzma->buffer.size() - lzma->stream.avail_out;
+      size_t const m = (n == 0) ? 0 : fwrite(lzma->buffer.data(), 1, n, lzma->file);
       if (m != n)
       {
 	 Res = -1;
@@ -2171,12 +2166,12 @@ public:
       }
       return Res;
    }
-   virtual bool InternalWriteError() APT_OVERRIDE
+   bool InternalWriteError() override
    {
       return filefd->FileFdError("lzma_write: %s (%d)", _("Write error"), lzma->err);
    }
-   virtual bool InternalStream() const APT_OVERRIDE { return true; }
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE
+   [[nodiscard]] bool InternalStream() const override { return true; }
+   bool InternalClose(std::string const &/*FileName*/) override
    {
       delete lzma;
       lzma = nullptr;
@@ -2193,117 +2188,118 @@ class APT_HIDDEN PipedFileFdPrivate: public FileFdPrivate				/*{{{*/
    by executing a specified binary and pipe in/out what we need */
 {
 public:
-   virtual bool InternalOpen(int const, unsigned int const Mode) APT_OVERRIDE
+bool InternalOpen(int const /*iFd*/, unsigned int const Mode) override
+{
+   // collect zombies here in case we reopen
+   if (compressor_pid > 0)
+      ExecWait(compressor_pid, "FileFdCompressor", true);
+
+   if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+      return filefd->FileFdError("ReadWrite mode is not supported for file %s", filefd->FileName.c_str());
+   if (compressor.Binary == "false")
+      return filefd->FileFdError("libapt has inbuilt support for the %s compression,"
+				 " but was forced to ignore it in favor of an external binary – which isn't installed.",
+				 compressor.Name.c_str());
+
+   bool const Comp = (Mode & FileFd::WriteOnly) == FileFd::WriteOnly;
+   if (Comp == false && filefd->iFd != -1)
    {
-      // collect zombies here in case we reopen
-      if (compressor_pid > 0)
-	 ExecWait(compressor_pid, "FileFdCompressor", true);
+      // Handle 'decompression' of empty files
+      struct stat Buf;
+      if (fstat(filefd->iFd, &Buf) != 0)
+	 return filefd->FileFdErrno("fstat", "Could not stat fd %d for file %s", filefd->iFd, filefd->FileName.c_str());
+      if (Buf.st_size == 0 && S_ISFIFO(Buf.st_mode) == false)
+	 return true;
 
-      if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
-	 return filefd->FileFdError("ReadWrite mode is not supported for file %s", filefd->FileName.c_str());
-      if (compressor.Binary == "false")
-	 return filefd->FileFdError("libapt has inbuilt support for the %s compression,"
-	       " but was forced to ignore it in favor of an external binary – which isn't installed.", compressor.Name.c_str());
-
-      bool const Comp = (Mode & FileFd::WriteOnly) == FileFd::WriteOnly;
-      if (Comp == false && filefd->iFd != -1)
-      {
-	 // Handle 'decompression' of empty files
-	 struct stat Buf;
-	 if (fstat(filefd->iFd, &Buf) != 0)
-	    return filefd->FileFdErrno("fstat", "Could not stat fd %d for file %s", filefd->iFd, filefd->FileName.c_str());
-	 if (Buf.st_size == 0 && S_ISFIFO(Buf.st_mode) == false)
-	    return true;
-
-	 // We don't need the file open - instead let the compressor open it
-	 // as he properly knows better how to efficiently read from 'his' file
-	 if (filefd->FileName.empty() == false)
-	 {
-	    close(filefd->iFd);
-	    filefd->iFd = -1;
-	 }
+      // We don't need the file open - instead let the compressor open it
+      // as he properly knows better how to efficiently read from 'his' file
+      if (filefd->FileName.empty() == false)
+      {
+	 close(filefd->iFd);
+	 filefd->iFd = -1;
       }
+   }
+
+   // Create a data pipe
+   int Pipe[2] = {-1, -1};
+   if (pipe(Pipe) != 0)
+      return filefd->FileFdErrno("pipe", _("Failed to create subprocess IPC"));
+   for (int J = 0; J != 2; J++)
+      SetCloseExec(Pipe[J], true);
 
-      // Create a data pipe
-      int Pipe[2] = {-1,-1};
-      if (pipe(Pipe) != 0)
-	 return filefd->FileFdErrno("pipe",_("Failed to create subprocess IPC"));
-      for (int J = 0; J != 2; J++)
-	 SetCloseExec(Pipe[J],true);
+   compressed_fd = filefd->iFd;
+   set_is_pipe(true);
 
-      compressed_fd = filefd->iFd;
-      set_is_pipe(true);
+   if (Comp == true)
+      filefd->iFd = Pipe[1];
+   else
+      filefd->iFd = Pipe[0];
 
+   // The child..
+   compressor_pid = ExecFork();
+   if (compressor_pid == 0)
+   {
       if (Comp == true)
-	 filefd->iFd = Pipe[1];
+      {
+	 dup2(compressed_fd, STDOUT_FILENO);
+	 dup2(Pipe[0], STDIN_FILENO);
+      }
       else
-	 filefd->iFd = Pipe[0];
-
-      // The child..
-      compressor_pid = ExecFork();
-      if (compressor_pid == 0)
       {
-	 if (Comp == true)
-	 {
-	    dup2(compressed_fd,STDOUT_FILENO);
-	    dup2(Pipe[0],STDIN_FILENO);
-	 }
-	 else
-	 {
-	    if (compressed_fd != -1)
-	       dup2(compressed_fd,STDIN_FILENO);
-	    dup2(Pipe[1],STDOUT_FILENO);
-	 }
-	 int const nullfd = open("/dev/null", O_WRONLY);
-	 if (nullfd != -1)
-	 {
-	    dup2(nullfd,STDERR_FILENO);
-	    close(nullfd);
-	 }
+	 if (compressed_fd != -1)
+	    dup2(compressed_fd, STDIN_FILENO);
+	 dup2(Pipe[1], STDOUT_FILENO);
+      }
+      int const nullfd = open("/dev/null", O_WRONLY);
+      if (nullfd != -1)
+      {
+	 dup2(nullfd, STDERR_FILENO);
+	 close(nullfd);
+      }
 
-	 SetCloseExec(STDOUT_FILENO,false);
-	 SetCloseExec(STDIN_FILENO,false);
-
-	 std::vector<char const*> Args;
-	 Args.push_back(compressor.Binary.c_str());
-	 std::vector<std::string> const * const addArgs =
-	    (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs);
-	 for (std::vector<std::string>::const_iterator a = addArgs->begin();
-	       a != addArgs->end(); ++a)
-	    Args.push_back(a->c_str());
-	 if (Comp == false && filefd->FileName.empty() == false)
-	 {
-	    // commands not needing arguments, do not need to be told about using standard output
-	    // in reality, only testcases with tools like cat, rev, rot13, … are able to trigger this
-	    if (compressor.CompressArgs.empty() == false && compressor.UncompressArgs.empty() == false)
-	       Args.push_back("--stdout");
-	    if (filefd->TemporaryFileName.empty() == false)
-	       Args.push_back(filefd->TemporaryFileName.c_str());
-	    else
-	       Args.push_back(filefd->FileName.c_str());
-	 }
-	 Args.push_back(NULL);
+      SetCloseExec(STDOUT_FILENO, false);
+      SetCloseExec(STDIN_FILENO, false);
 
-	 execvp(Args[0],(char **)&Args[0]);
-	 cerr << _("Failed to exec compressor ") << Args[0] << endl;
-	 _exit(100);
+      std::vector<char const *> Args;
+      Args.push_back(compressor.Binary.c_str());
+      std::vector<std::string> const *const addArgs =
+	 (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs);
+      for (std::vector<std::string>::const_iterator a = addArgs->begin();
+	   a != addArgs->end(); ++a)
+	 Args.push_back(a->c_str());
+      if (Comp == false && filefd->FileName.empty() == false)
+      {
+	 // commands not needing arguments, do not need to be told about using standard output
+	 // in reality, only testcases with tools like cat, rev, rot13, … are able to trigger this
+	 if (compressor.CompressArgs.empty() == false && compressor.UncompressArgs.empty() == false)
+	    Args.push_back("--stdout");
+	 if (filefd->TemporaryFileName.empty() == false)
+	    Args.push_back(filefd->TemporaryFileName.c_str());
+	 else
+	    Args.push_back(filefd->FileName.c_str());
       }
-      if (Comp == true)
-	 close(Pipe[0]);
-      else
-	 close(Pipe[1]);
+      Args.push_back(NULL);
 
-      return true;
+      execvp(Args[0], (char **)&Args[0]);
+      cerr << _("Failed to exec compressor ") << Args[0] << endl;
+      _exit(100);
+   }
+   if (Comp == true)
+      close(Pipe[0]);
+   else
+      close(Pipe[1]);
+
+   return true;
    }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
    {
       return read(filefd->iFd, To, Size);
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       return write(filefd->iFd, From, Size);
    }
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE
+   bool InternalClose(std::string const &/*FileName*/) override
    {
       bool Ret = true;
       if (filefd->iFd != -1)
@@ -2323,12 +2319,12 @@ public:
 class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate				/*{{{*/
 {
 public:
-   virtual bool InternalOpen(int const, unsigned int const) APT_OVERRIDE { return true; }
-   virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
-   {
-      return read(filefd->iFd, To, Size);
+bool InternalOpen(int const /*iFd*/, unsigned int const /*Mode*/) override { return true; }
+ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override
+{
+   return read(filefd->iFd, To, Size);
    }
-   virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+   ssize_t InternalWrite(void const *const From, unsigned long long const Size) override
    {
       // files opened read+write are strange and only really "supported" for direct files
       if (buffer.size() != 0)
@@ -2338,7 +2334,7 @@ public:
       }
       return write(filefd->iFd, From, Size);
    }
-   virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+   bool InternalSeek(unsigned long long const To) override
    {
       off_t const res = lseek(filefd->iFd, To, SEEK_SET);
       if (res != (off_t)To)
@@ -2347,7 +2343,7 @@ public:
       buffer.reset();
       return true;
    }
-   virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+   bool InternalSkip(unsigned long long Over) override
    {
       if (Over >= buffer.size())
       {
@@ -2367,7 +2363,7 @@ public:
       seekpos = res;
       return true;
    }
-   virtual bool InternalTruncate(unsigned long long const To) APT_OVERRIDE
+   bool InternalTruncate(unsigned long long const To) override
    {
       if (buffer.size() != 0)
       {
@@ -2383,36 +2379,36 @@ public:
 	 return filefd->FileFdError("Unable to truncate to %llu",To);
       return true;
    }
-   virtual unsigned long long InternalTell() APT_OVERRIDE
+   unsigned long long InternalTell() override
    {
       return lseek(filefd->iFd,0,SEEK_CUR) - buffer.size();
    }
-   virtual unsigned long long InternalSize() APT_OVERRIDE
+   unsigned long long InternalSize() override
    {
       return filefd->FileSize();
    }
-   virtual bool InternalClose(std::string const &) APT_OVERRIDE { return true; }
-   virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE { return false; }
+   bool InternalClose(std::string const &/*FileName*/) override { return true; }
+   [[nodiscard]] bool InternalAlwaysAutoClose() const override { return false; }
 
    explicit DirectFileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd) {}
    virtual ~DirectFileFdPrivate() { InternalClose(""); }
 };
 									/*}}}*/
 // FileFd Constructors							/*{{{*/
-FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL)
+FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr)
 {
    Open(FileName,Mode, None, AccessMode);
 }
-FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL)
+FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr)
 {
    Open(FileName,Mode, Compress, AccessMode);
 }
-FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {}
-FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(NULL)
+FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(nullptr) {}
+FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(nullptr)
 {
    OpenDescriptor(Fd, Mode, Compress);
 }
-FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(NULL)
+FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(nullptr)
 {
    OpenDescriptor(Fd, ReadWrite, None, AutoClose);
 }
@@ -2646,7 +2642,7 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C
 	 /* dummy so that the rest can be 'else if's */;
 #define APT_COMPRESS_INIT(NAME, CONSTRUCTOR) \
       else if (compressor.Name == NAME) \
-	 d = new CONSTRUCTOR(this)
+	 d = std::make_unique<CONSTRUCTOR>(this)
 #ifdef HAVE_ZLIB
       APT_COMPRESS_INIT("gzip", GzipFileFdPrivate);
 #endif
@@ -2665,12 +2661,12 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C
 #endif
 #undef APT_COMPRESS_INIT
       else if (compressor.Name == "." || compressor.Binary.empty() == true)
-	 d = new DirectFileFdPrivate(this);
+	 d = std::make_unique<DirectFileFdPrivate>(this);
       else
-	 d = new PipedFileFdPrivate(this);
+	 d = std::make_unique<PipedFileFdPrivate>(this);
 
       if (Mode & BufferedWrite)
-	 d = new BufferedWriteFileFdPrivate(d);
+	 d = std::make_unique<BufferedWriteFileFdPrivate>(std::move(d));
 
       d->set_openmode(Mode);
       d->set_compressor(compressor);
@@ -2695,8 +2691,6 @@ FileFd::~FileFd()
    Close();
    if (d != NULL)
       d->InternalClose(FileName);
-   delete d;
-   d = NULL;
 }
 									/*}}}*/
 // FileFd::Read - Read a bit of the file				/*{{{*/
@@ -2707,38 +2701,34 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
 {
    if (d == nullptr || Failed())
       return false;
-   ssize_t Res = 1;
-   errno = 0;
    if (Actual != 0)
       *Actual = 0;
    *((char *)To) = '\0';
-   while (Res > 0 && Size > 0)
+   while (Size > 0)
    {
-      Res = d->InternalRead(To, Size);
+      errno = 0;
+      ssize_t Res = d->InternalRead(To, Size);
 
       if (Res < 0)
       {
 	 if (errno == EINTR)
-	 {
-	    // trick the while-loop into running again
-	    Res = 1;
-	    errno = 0;
 	    continue;
-	 }
 	 return d->InternalReadError();
       }
-      
-      To = (char *)To + Res;
+      if (Res == 0)
+	 break;
+
+      To = static_cast<char *>(To) + Res;
       Size -= Res;
-      if (d != NULL)
+      if (d != nullptr)
 	 d->set_seekpos(d->get_seekpos() + Res);
-      if (Actual != 0)
+      if (Actual != nullptr)
 	 *Actual += Res;
    }
-   
+
    if (Size == 0)
       return true;
-   
+
    // Eof handling
    if (Actual != 0)
    {
@@ -2750,24 +2740,22 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
 }
 bool FileFd::Read(int const Fd, void *To, unsigned long long Size, unsigned long long * const Actual)
 {
-   ssize_t Res = 1;
-   errno = 0;
    if (Actual != nullptr)
       *Actual = 0;
    *static_cast<char *>(To) = '\0';
-   while (Res > 0 && Size > 0)
+   while (Size > 0)
    {
-      Res = read(Fd, To, Size);
+      errno = 0;
+      ssize_t const Res = read(Fd, To, Size);
       if (Res < 0)
       {
 	 if (errno == EINTR)
-	 {
-	    Res = 1;
-	    errno = 0;
 	    continue;
-	 }
 	 return _error->Errno("read", _("Read error"));
       }
+      if (Res == 0)
+	 break;
+
       To = static_cast<char *>(To) + Res;
       Size -= Res;
       if (Actual != 0)
@@ -2828,27 +2816,23 @@ bool FileFd::Write(const void *From,unsigned long long Size)
 {
    if (d == nullptr || Failed())
       return false;
-   ssize_t Res = 1;
-   errno = 0;
-   while (Res > 0 && Size > 0)
+   while (Size > 0)
    {
-      Res = d->InternalWrite(From, Size);
+      errno = 0;
+      ssize_t const Res = d->InternalWrite(From, Size);
 
       if (Res < 0)
       {
 	 if (errno == EINTR)
-	 {
-	    // trick the while-loop into running again
-	    Res = 1;
-	    errno = 0;
 	    continue;
-	 }
 	 return d->InternalWriteError();
       }
+      if (Res == 0)
+	 break;
 
-      From = (char const *)From + Res;
+      From = static_cast<char const *>(From) + Res;
       Size -= Res;
-      if (d != NULL)
+      if (d != nullptr)
 	 d->set_seekpos(d->get_seekpos() + Res);
    }
 
@@ -2859,17 +2843,20 @@ bool FileFd::Write(const void *From,unsigned long long Size)
 }
 bool FileFd::Write(int Fd, const void *From, unsigned long long Size)
 {
-   ssize_t Res = 1;
-   errno = 0;
-   while (Res > 0 && Size > 0)
+   while (Size > 0)
    {
-      Res = write(Fd,From,Size);
-      if (Res < 0 && errno == EINTR)
-	 continue;
+      errno = 0;
+      ssize_t const Res = write(Fd, From, Size);
       if (Res < 0)
+      {
+	 if (errno == EINTR)
+	    continue;
 	 return _error->Errno("write",_("Write error"));
+      }
+      if (Res == 0)
+	 break;
 
-      From = (char const *)From + Res;
+      From = static_cast<char const *>(From) + Res;
       Size -= Res;
    }
 
@@ -2921,7 +2908,7 @@ unsigned long long FileFd::Tell()
    return Res;
 }
 									/*}}}*/
-static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, FileFdPrivate * const d) /*{{{*/
+static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, std::unique_ptr<FileFdPrivate> const &d) /*{{{*/
 {
    bool ispipe = (d != NULL && d->get_is_pipe() == true);
    if (ispipe == false)
@@ -2999,7 +2986,6 @@ bool FileFd::Close()
    if (d != NULL)
    {
       Res &= d->InternalClose(FileName);
-      delete d;
       d = NULL;
    }
 
@@ -3192,7 +3178,7 @@ FileFd* GetTempFile(std::string const &Prefix, bool ImmediateUnlink, FileFd * co
    return Fd;
 }
 									/*}}}*/
-bool Rename(std::string From, std::string To)				/*{{{*/
+bool Rename(std::string const &From, std::string const &To)				/*{{{*/
 {
    if (rename(From.c_str(),To.c_str()) != 0)
    {
@@ -3245,7 +3231,7 @@ bool Popen(const char *Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode,
       } else if(Mode == FileFd::WriteOnly)
          dup2(fd, 0);
 
-      execv(Args[0], (char**)Args);
+      execvp(Args[0], (char **)Args);
       _exit(100);
    }
    if(Mode == FileFd::ReadOnly)
diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h
index 970b118..ed2a947 100644
--- a/apt-pkg/contrib/fileutl.h
+++ b/apt-pkg/contrib/fileutl.h
@@ -27,11 +27,13 @@
 #include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/macros.h>
 
+#include <ctime>
 #include <set>
+#include <memory>
 #include <string>
+#include <string_view>
 #include <vector>
 #include <sys/stat.h>
-#include <time.h>
 
 /* Define this for python-apt */
 #define APT_HAS_GZIP 1
@@ -134,8 +136,8 @@ class APT_PUBLIC FileFd
 
    bool Open(std::string FileName,unsigned int const Mode,CompressMode Compress,unsigned long const AccessMode = 0666);
    bool Open(std::string FileName,unsigned int const Mode,APT::Configuration::Compressor const &compressor,unsigned long const AccessMode = 0666);
-   inline bool Open(std::string const &FileName,unsigned int const Mode, unsigned long const AccessMode = 0666) {
-      return Open(FileName, Mode, None, AccessMode);
+   inline bool Open(std::string FileName,unsigned int const Mode, unsigned long const AccessMode = 0666) {
+      return Open(std::move(FileName), Mode, None, AccessMode);
    };
    bool OpenDescriptor(int Fd, unsigned int const Mode, CompressMode Compress, bool AutoClose=false);
    bool OpenDescriptor(int Fd, unsigned int const Mode, APT::Configuration::Compressor const &compressor, bool AutoClose=false);
@@ -166,7 +168,7 @@ class APT_PUBLIC FileFd
    virtual ~FileFd();
 
    private:
-   FileFdPrivate * d;
+   std::unique_ptr<FileFdPrivate> d;
    APT_HIDDEN FileFd(const FileFd &);
    APT_HIDDEN FileFd & operator=(const FileFd &);
    APT_HIDDEN bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor);
@@ -180,13 +182,13 @@ APT_PUBLIC bool RunScripts(const char *Cnf);
 APT_PUBLIC bool CopyFile(FileFd &From,FileFd &To);
 APT_PUBLIC bool RemoveFile(char const * const Function, std::string const &FileName);
 APT_PUBLIC bool RemoveFileAt(char const * const Function, int const dirfd, std::string const &FileName);
-APT_PUBLIC int GetLock(std::string File,bool Errors = true);
-APT_PUBLIC bool FileExists(std::string File);
-APT_PUBLIC bool RealFileExists(std::string File);
+APT_PUBLIC int GetLock(std::string const &File,bool Errors = true);
+APT_PUBLIC bool FileExists(std::string const &File);
+APT_PUBLIC bool RealFileExists(std::string const &File);
 APT_PUBLIC bool DirectoryExists(std::string const &Path);
 APT_PUBLIC bool CreateDirectory(std::string const &Parent, std::string const &Path);
 APT_PUBLIC time_t GetModificationTime(std::string const &Path);
-APT_PUBLIC bool Rename(std::string From, std::string To);
+APT_PUBLIC bool Rename(std::string const &From, std::string const &To);
 
 APT_PUBLIC std::string GetTempDir();
 APT_PUBLIC std::string GetTempDir(std::string const &User);
@@ -251,10 +253,10 @@ APT_PUBLIC bool ChangeOwnerAndPermissionOfFile(char const * const requester, cha
 APT_PUBLIC bool DropPrivileges();
 
 // File string manipulators
-APT_PUBLIC std::string flNotDir(std::string File);
-APT_PUBLIC std::string flNotFile(std::string File);
+APT_PUBLIC std::string_view flNotDir(std::string_view File);
+APT_PUBLIC std::string flNotFile(std::string const &File); // XXX: this should take a string_view, but right now that causes more type problems than it solves
 APT_PUBLIC std::string flNoLink(std::string File);
-APT_PUBLIC std::string flExtension(std::string File);
+APT_PUBLIC std::string_view flExtension(std::string_view File);
 APT_PUBLIC std::string flCombine(std::string Dir,std::string File);
 
 /** \brief Takes a file path and returns the absolute path
@@ -284,4 +286,32 @@ APT_HIDDEN bool OpenConfigurationFileFd(std::string const &File, FileFd &Fd);
 
 APT_HIDDEN int Inhibit(const char *what, const char *who, const char *why, const char *mode);
 
+
+namespace {
+   struct FILEFcloseDeleter {
+      void operator()(FILE *p) {
+         fclose(p);
+      }
+   };
+   struct FILEPcloseDeleter {
+      void operator()(FILE *p) {
+         pclose(p);
+      }
+   };
+
+   [[maybe_unused]] std::unique_ptr<FILE, FILEFcloseDeleter> make_unique_FILE(const char *const filename, char const *const mode)
+   {
+      return {fopen(filename, mode), {}};
+   }
+   [[maybe_unused]] std::unique_ptr<FILE, FILEFcloseDeleter> make_unique_FILE(std::string const &filename, char const *const mode)
+   {
+      return make_unique_FILE(filename.c_str(), mode);
+   }
+
+   [[maybe_unused]] std::unique_ptr<FILE, FILEPcloseDeleter> make_unique_popen(const char *program, char const *const mode)
+   {
+      return {popen(program, mode), {}};
+   }
+}
+
 #endif
diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc
index 3368ece..b555331 100644
--- a/apt-pkg/contrib/gpgv.cc
+++ b/apt-pkg/contrib/gpgv.cc
@@ -8,35 +8,28 @@
 #include <apt-pkg/gpgv.h>
 #include <apt-pkg/strutl.h>
 
-#include <errno.h>
+#include <cerrno>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
 #include <algorithm>
+#include <forward_list>
 #include <fstream>
 #include <iostream>
 #include <memory>
 #include <sstream>
 #include <string>
+#include <unordered_map>
 #include <vector>
 
 #include <apti18n.h>
 									/*}}}*/
 
-// syntactic sugar to wrap a raw pointer with a custom deleter in a std::unique_ptr
-static std::unique_ptr<char, decltype(&free)> make_unique_char(void *const str = nullptr)
-{
-   return {static_cast<char *>(str), &free};
-}
-static std::unique_ptr<FILE, decltype(&fclose)> make_unique_FILE(std::string const &filename, char const *const mode)
-{
-   return {fopen(filename.c_str(), mode), &fclose};
-}
 
 class LineBuffer							/*{{{*/
 {
@@ -44,18 +37,18 @@ class LineBuffer							/*{{{*/
    size_t buffer_size = 0;
    int line_length = 0;
    // a "normal" find_last_not_of returns npos if not found
-   int find_last_not_of_length(APT::StringView const bad) const
+   int find_last_not_of_length(std::string_view const bad) const
    {
       for (int result = line_length - 1; result >= 0; --result)
-	 if (bad.find(buffer[result]) == APT::StringView::npos)
+	 if (bad.find(buffer[result]) == std::string_view::npos)
 	    return result + 1;
       return 0;
    }
 
    public:
    bool empty() const noexcept { return view().empty(); }
-   APT::StringView view() const noexcept { return {buffer, static_cast<size_t>(line_length)}; }
-   bool starts_with(APT::StringView const start) const { return view().substr(0, start.size()) == start; }
+   std::string_view view() const noexcept { return {buffer, static_cast<size_t>(line_length)}; }
+   bool starts_with(std::string_view const start) const { return view().substr(0, start.size()) == start; }
 
    bool writeTo(FileFd *const to, size_t offset = 0) const
    {
@@ -101,11 +94,11 @@ class LineBuffer							/*{{{*/
 
    ~LineBuffer() { free(buffer); }
 };
-static bool operator==(LineBuffer const &buf, APT::StringView const exp) noexcept
+static bool operator==(LineBuffer const &buf, std::string_view const exp) noexcept
 {
    return buf.view() == exp;
 }
-static bool operator!=(LineBuffer const &buf, APT::StringView const exp) noexcept
+static bool operator!=(LineBuffer const &buf, std::string_view const exp) noexcept
 {
    return buf.view() != exp;
 }
@@ -118,10 +111,10 @@ static bool operator!=(LineBuffer const &buf, APT::StringView const exp) noexcep
    clear-signed files (=the complete content of the file is signed and
    the content isn't encoded) we do a divide and conquer approach here
    and split up the clear-signed file in message and signature for gpg.
-   And as a cherry on the cake, we use our apt-key wrapper to do part
-   of the lifting in regards to merging keyrings. Fun for the whole family.
 */
-static void APT_PRINTF(4) apt_error(std::ostream &outterm, int const statusfd, int fd[2], const char *format, ...)
+#define apt_error(...) apt_msg("ERROR", __VA_ARGS__)
+#define apt_warning(...) apt_msg("WARNING", __VA_ARGS__)
+static void APT_PRINTF(5) apt_msg(std::string const &tag, std::ostream &outterm, int const statusfd, int fd[2], const char *format, ...)
 {
    std::ostringstream outstr;
    std::ostream &out = (statusfd == -1) ? outterm : outstr;
@@ -137,53 +130,296 @@ static void APT_PRINTF(4) apt_error(std::ostream &outterm, int const statusfd, i
    }
    if (statusfd != -1)
    {
-      auto const errtag = "[APTKEY:] ERROR ";
+      auto const errtag = "[APTKEY:] " + tag + " ";
       outstr << '\n';
       auto const errtext = outstr.str();
-      if (not FileFd::Write(fd[1], errtag, strlen(errtag)) ||
+      if (not FileFd::Write(fd[1], errtag.data(), errtag.size()) ||
 	    not FileFd::Write(fd[1], errtext.data(), errtext.size()))
 	 outterm << errtext << std::flush;
    }
 }
+
+static bool CheckGPGV(std::unordered_map<std::string, std::forward_list<std::string>> &checkedCommands, std::string gpgv, bool Debug)
+{
+   if (checkedCommands.find(gpgv) == checkedCommands.end())
+   {
+      // Create entry
+      checkedCommands[gpgv];
+      FileFd dumpOptions;
+      pid_t child;
+      const char *argv[] = {gpgv.c_str(), "--dump-options", nullptr};
+      if (unlikely(Debug))
+	 std::clog << "Executing " << gpgv << " --dump-options" << std::endl;
+      if (not Popen(argv, dumpOptions, child, FileFd::ReadOnly) && Debug)
+	 return false;
+
+      for (std::string line; dumpOptions.ReadLine(line);)
+      {
+	 if (unlikely(Debug))
+	    std::clog << "Read line: " << line << std::endl;
+	 checkedCommands[gpgv].emplace_front(APT::String::Strip(line));
+      }
+      dumpOptions.Close();
+      waitpid(child, NULL, 0);
+   }
+   return not checkedCommands[gpgv].empty();
+}
+
+/// Verifies a file containing a detached signature has the right format
+/// @return 0 if succesful, or an exit code for ExecGPGV otherwise.
+static int VerifyDetachedSignatureFile(std::string const &FileGPG, int fd[2], int statusfd = -1)
+{
+   auto detached = make_unique_FILE(FileGPG, "r");
+   if (detached.get() == nullptr)
+      return _error->Error("Detached signature file '%s' could not be opened", FileGPG.c_str()), 111;
+
+   LineBuffer buf;
+   bool open_signature = false;
+   bool found_badcontent = false;
+   size_t found_signatures = 0;
+   while (buf.readFrom(detached.get(), FileGPG, true))
+   {
+      if (open_signature)
+      {
+	 if (buf == "-----END PGP SIGNATURE-----")
+	    open_signature = false;
+	 else if (buf.starts_with("-"))
+	 {
+	    // the used Radix-64 is not using dash for any value, so a valid line can't
+	    // start with one. Header keys could, but no existent one does and seems unlikely.
+	    // Instead it smells a lot like a header the parser didn't recognize.
+	    _error->Error("Detached signature file '%s' contains unexpected line starting with a dash", FileGPG.c_str());
+	    return 112;
+	 }
+      }
+      else // if (not open_signature)
+      {
+	 if (buf == "-----BEGIN PGP SIGNATURE-----")
+	 {
+	    open_signature = true;
+	    ++found_signatures;
+	    if (found_badcontent)
+	       break;
+	 }
+	 else
+	 {
+	    found_badcontent = true;
+	    if (found_signatures != 0)
+	       break;
+	 }
+      }
+   }
+   if (found_signatures == 0)
+   {
+      if (statusfd != -1 && fd)
+      {
+	 auto const errtag = "[GNUPG:] NODATA\n";
+	 FileFd::Write(fd[1], errtag, strlen(errtag));
+      }
+      else
+      {
+	 _error->Error("Signed file isn't valid, got 'NODATA' (does the network require authentication?)");
+      }
+      // guess if this is a binary signature, we never officially supported them,
+      // but silently accepted them via passing them unchecked to gpgv
+      if (found_badcontent)
+      {
+	 rewind(detached.get());
+	 auto ptag = fgetc(detached.get());
+	 // §4.2 says that the first bit is always set and gpg seems to generate
+	 // only old format which is indicated by the second bit not set
+	 if (ptag != EOF && (ptag & 0x80) != 0 && (ptag & 0x40) == 0)
+	 {
+	    _error->Error("Detached signature file '%s' is in unsupported binary format", FileGPG.c_str());
+	    return 112;
+	 }
+      }
+      // This is not an attack attempt but a file even gpgv would complain about
+      // likely the result of a paywall which is covered by the gpgv method
+      return 113;
+   }
+   else if (found_badcontent)
+   {
+      _error->Error("Detached signature file '%s' contains lines not belonging to a signature", FileGPG.c_str());
+      return 112;
+   }
+   if (open_signature)
+   {
+      _error->Error("Detached signature file '%s' contains unclosed signatures", FileGPG.c_str());
+      return 112;
+   }
+
+   return 0;
+}
+
+bool VerifyDetachedSignatureFile(std::string const &DetachedSignatureFileName)
+{
+   return VerifyDetachedSignatureFile(DetachedSignatureFileName, nullptr, -1) == 0;
+}
+
+std::pair<std::string, std::forward_list<std::string>> APT::Internal::FindGPGV(bool Debug)
+{
+   static thread_local std::unordered_map<std::string, std::forward_list<std::string>> checkedCommands;
+   const std::string gpgvVariants[] = {
+      _config->Find("Apt::Key::gpgvcommand"),
+      // Prefer absolute path
+      "/usr/bin/gpgv-sq",
+      "/usr/bin/gpgv",
+      "gpgv-sq",
+      "gpgv",
+   };
+   for (auto gpgv : gpgvVariants)
+      if (CheckGPGV(checkedCommands, gpgv, Debug))
+	 return std::make_pair(gpgv, checkedCommands[gpgv]);
+   return {};
+}
+
 void ExecGPGV(std::string const &File, std::string const &FileGPG,
              int const &statusfd, int fd[2], std::string const &key)
 {
-   #define EINTERNAL 111
-   std::string const aptkey = _config->Find("Dir::Bin::apt-key", CMAKE_INSTALL_FULL_BINDIR "/apt-key");
+   auto const keyFiles = VectorizeString(key, ',');
+   ExecGPGV(File, FileGPG, statusfd, fd, keyFiles);
+}
 
+void ExecGPGV(std::string const &File, std::string const &FileGPG,
+	      int const &statusfd, int fd[2], std::vector<std::string> const &KeyFiles)
+{
+#define EINTERNAL 111
    bool const Debug = _config->FindB("Debug::Acquire::gpgv", false);
    struct exiter {
-      std::vector<const char *> files;
-      void operator ()(int code) APT_NORETURN {
-	 std::for_each(files.begin(), files.end(), unlink);
+      std::vector<std::string> files;
+      [[noreturn]] void operator ()(int code) {
+	 std::for_each(files.begin(), files.end(), [](auto f)
+		       { unlink(f.c_str()); });
 	 exit(code);
       }
    } local_exit;
 
+   auto [gpgv, supportedOptions] = APT::Internal::FindGPGV(Debug);
+   if (gpgv.empty())
+   {
+      apt_error(std::cerr, statusfd, fd, "Couldn't find a gpgv binary");
+      local_exit(EINTERNAL);
+   }
 
-   std::vector<const char *> Args;
+   std::vector<std::string> Args;
    Args.reserve(10);
 
-   Args.push_back(aptkey.c_str());
-   Args.push_back("--quiet");
-   Args.push_back("--readonly");
-   auto const keysFileFpr = VectorizeString(key, ',');
-   for (auto const &k: keysFileFpr)
+   Args.push_back(gpgv);
+   Args.push_back("--ignore-time-conflict");
+
+   FileFd mergedFd;
+   if (GetTempFile("apt.XXXXXX.gpg", false, &mergedFd) == nullptr)
+      local_exit(EINTERNAL);
+   local_exit.files.push_back(mergedFd.Name());
+
+   auto dearmorKeyOrCheckFormat = [&](std::string const &k)
+   {
+      FileFd keyFd(k, FileFd::ReadOnly);
+      if (not keyFd.IsOpen())
+      {
+	 apt_warning(std::cerr, statusfd, fd, "The key(s) in the keyring %s are ignored as the file is not readable by user executing gpgv.\n", k.c_str());
+      }
+      else if (APT::String::Endswith(k, ".asc"))
+      {
+	 std::string b64msg;
+	 int state = 0;
+	 for (std::string line; keyFd.ReadLine(line);)
+	 {
+	    line = APT::String::Strip(line);
+	    if (APT::String::Startswith(line, "-----BEGIN PGP PUBLIC KEY BLOCK-----"))
+	       state = 1;
+	    else if (state == 1 && line == "")
+	       state = 2;
+	    else if (state == 2 && line != "" && line[0] != '=' && line[0] != '-')
+	       b64msg += line;
+	    else if (APT::String::Startswith(line, "-----END"))
+	       state = 3;
+	 }
+	 if (state != 3)
+	    goto err;
+
+	 if (auto decoded = Base64Decode(b64msg); not decoded.empty())
+	    if (not mergedFd.Write(decoded.data(), decoded.size()))
+	       local_exit(EINTERNAL);
+	 return;
+      }
+      else
+      {
+	 unsigned char c;
+	 if (not keyFd.Read(&c, sizeof(c)))
+	    goto err;
+	 // Identify the leading byte of an OpenPGP public key packet
+	 // 0x98 -- old-format OpenPGP public key packet, up to 255 octets
+	 // 0x99 -- old-format OpenPGP public key packet, 256-65535 octets
+	 // 0xc6 -- new-format OpenPGP public key packet, any length
+	 if (c != 0x98 && c != 0x99 && c != 0xc6)
+	    goto err;
+
+	 if (not mergedFd.Write(&c, sizeof(c)))
+	    local_exit(EINTERNAL);
+
+	 if (not CopyFile(keyFd, mergedFd))
+	    local_exit(EINTERNAL);
+
+	 return;
+      }
+   err:
+      apt_warning(std::cerr, statusfd, fd, "The key(s) in the keyring %s are ignored as the file has an unsupported filetype.", k.c_str());
+   };
+   auto maybeAddKeyring = [&](std::string const &k)
+   {
+      if (struct stat st; stat(k.c_str(), &st) != 0 || st.st_size == 0)
+	 return;
+      dearmorKeyOrCheckFormat(k);
+      return;
+   };
+
+   bool FoundKeyring = false;
+   for (auto const &k : KeyFiles)
    {
       if (unlikely(k.empty()))
 	 continue;
       if (k[0] == '/')
       {
-	 Args.push_back("--keyring");
-	 Args.push_back(k.c_str());
+	 if (Debug)
+	    std::clog << "Trying Signed-By: " << k << std::endl;
+
+	 maybeAddKeyring(k);
+	 FoundKeyring = true;
       }
       else
       {
 	 Args.push_back("--keyid");
-	 Args.push_back(k.c_str());
+	 Args.push_back(k);
       }
    }
-   Args.push_back("verify");
+
+   if (not FoundKeyring)
+   {
+      // Either trusted or trustedparts must exist
+      _error->PushToStack();
+      auto Parts = GetListOfFilesInDir(_config->FindDir("Dir::Etc::TrustedParts"), std::vector<std::string>{"gpg", "asc"}, true);
+      if (auto trusted = _config->FindFile("Dir::Etc::Trusted"); not trusted.empty())
+      {
+	 apt_warning(std::cerr, statusfd, fd, "Loading %s from deprecated option Dir::Etc::Trusted\n", trusted.c_str());
+	 Parts.push_back(trusted);
+      }
+      if (Parts.empty())
+	 _error->MergeWithStack();
+      else
+	 _error->RevertToStack();
+      for (auto &Part : Parts)
+      {
+	 if (Debug)
+	    std::clog << "Trying TrustedPart: " << Part << std::endl;
+	 maybeAddKeyring(Part);
+      }
+   }
+
+   // If we do not give it any keyring, gpgv shouts keydb errors at us
+   Args.push_back("--keyring");
+   Args.push_back(mergedFd.Name());
 
    char statusfdstr[10];
    if (statusfd != -1)
@@ -193,6 +429,12 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
       Args.push_back(statusfdstr);
    }
 
+   if (auto assertPubkeyAlgo = _config->Find("Apt::Key::assert-pubkey-algo"); not assertPubkeyAlgo.empty())
+   {
+      if (std::find(supportedOptions.begin(), supportedOptions.end(), "--assert-pubkey-algo") != supportedOptions.end())
+	 Args.push_back("--assert-pubkey-algo=" + assertPubkeyAlgo);
+   }
+
    Configuration::Item const *Opts;
    Opts = _config->Tree("Acquire::gpgv::Options");
    if (Opts != 0)
@@ -202,135 +444,39 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
       {
 	 if (Opts->Value.empty())
 	    continue;
-	 Args.push_back(Opts->Value.c_str());
+	 Args.push_back(Opts->Value);
       }
    }
 
    enum  { DETACHED, CLEARSIGNED } releaseSignature = (FileGPG != File) ? DETACHED : CLEARSIGNED;
-   auto sig = make_unique_char();
-   auto data = make_unique_char();
-   auto conf = make_unique_char();
-
-   // Dump the configuration so apt-key picks up the correct Dir values
-   {
-      {
-	 std::string tmpfile;
-	 strprintf(tmpfile, "%s/apt.conf.XXXXXX", GetTempDir().c_str());
-	 conf.reset(strdup(tmpfile.c_str()));
-      }
-      if (conf == nullptr) {
-	 apt_error(std::cerr, statusfd, fd, "Couldn't create tempfile names for passing config to apt-key");
-	 local_exit(EINTERNAL);
-      }
-      int confFd = mkstemp(conf.get());
-      if (confFd == -1) {
-	 apt_error(std::cerr, statusfd, fd, "Couldn't create temporary file %s for passing config to apt-key", conf.get());
-	 local_exit(EINTERNAL);
-      }
-      local_exit.files.push_back(conf.get());
-
-      std::ofstream confStream(conf.get());
-      close(confFd);
-      _config->Dump(confStream);
-      confStream.close();
-      setenv("APT_CONFIG", conf.get(), 1);
-   }
-
-   // Tell apt-key not to emit warnings
-   setenv("APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE", "1", 1);
 
    if (releaseSignature == DETACHED)
    {
-      auto detached = make_unique_FILE(FileGPG, "r");
-      if (detached.get() == nullptr)
-      {
-	 apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' could not be opened", FileGPG.c_str());
-	 local_exit(EINTERNAL);
-      }
-      LineBuffer buf;
-      bool open_signature = false;
-      bool found_badcontent = false;
-      size_t found_signatures = 0;
-      while (buf.readFrom(detached.get(), FileGPG, true))
-      {
-	 if (open_signature)
-	 {
-	    if (buf == "-----END PGP SIGNATURE-----")
-	       open_signature = false;
-	    else if (buf.starts_with("-"))
-	    {
-	       // the used Radix-64 is not using dash for any value, so a valid line can't
-	       // start with one. Header keys could, but no existent one does and seems unlikely.
-	       // Instead it smells a lot like a header the parser didn't recognize.
-	       apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains unexpected line starting with a dash", FileGPG.c_str());
-	       local_exit(112);
-	    }
-	 }
-	 else //if (not open_signature)
-	 {
-	    if (buf == "-----BEGIN PGP SIGNATURE-----")
-	    {
-	       open_signature = true;
-	       ++found_signatures;
-	       if (found_badcontent)
-		  break;
-	    }
-	    else
-	    {
-	       found_badcontent = true;
-	       if (found_signatures != 0)
-		  break;
-	    }
-	 }
-      }
-      if (found_signatures == 0 && statusfd != -1)
-      {
-	 auto const errtag = "[GNUPG:] NODATA\n";
-	 FileFd::Write(fd[1], errtag, strlen(errtag));
-	 // guess if this is a binary signature, we never officially supported them,
-	 // but silently accepted them via passing them unchecked to gpgv
-	 if (found_badcontent)
-	 {
-	    rewind(detached.get());
-	    auto ptag = fgetc(detached.get());
-	    // §4.2 says that the first bit is always set and gpg seems to generate
-	    // only old format which is indicated by the second bit not set
-	    if (ptag != EOF && (ptag & 0x80) != 0 && (ptag & 0x40) == 0)
-	    {
-	       apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' is in unsupported binary format", FileGPG.c_str());
-	       local_exit(112);
-	    }
-	 }
-	 // This is not an attack attempt but a file even gpgv would complain about
-	 // likely the result of a paywall which is covered by the gpgv method
-	 local_exit(113);
-      }
-      else if (found_badcontent)
-      {
-	 apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains lines not belonging to a signature", FileGPG.c_str());
-	 local_exit(112);
-      }
-      if (open_signature)
+      // Collect the error and return it via apt_error()
+      _error->PushToStack();
+      auto exitCode = VerifyDetachedSignatureFile(FileGPG, fd, statusfd);
+      std::string msg;
+      _error->PopMessage(msg);
+      _error->RevertToStack();
+      if (exitCode != 0)
       {
-	 apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains unclosed signatures", FileGPG.c_str());
-	 local_exit(112);
+	 if (not msg.empty())
+	    apt_error(std::cerr, statusfd, fd, "%s", msg.c_str());
+	 local_exit(exitCode);
       }
-
-      Args.push_back(FileGPG.c_str());
-      Args.push_back(File.c_str());
+      Args.push_back(FileGPG);
+      Args.push_back(File);
    }
    else // clear-signed file
    {
       FileFd signature;
       if (GetTempFile("apt.sig", false, &signature) == nullptr)
 	 local_exit(EINTERNAL);
-      sig.reset(strdup(signature.Name().c_str()));
-      local_exit.files.push_back(sig.get());
+      local_exit.files.push_back(signature.Name());
       FileFd message;
       if (GetTempFile("apt.data", false, &message) == nullptr)
 	 local_exit(EINTERNAL);
-      data.reset(strdup(message.Name().c_str()));
-      local_exit.files.push_back(data.get());
+      local_exit.files.push_back(message.Name());
 
       if (signature.Failed() || message.Failed() ||
 	  not SplitClearSignedFile(File, &message, nullptr, &signature))
@@ -338,17 +484,15 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
 	 apt_error(std::cerr, statusfd, fd, "Splitting up %s into data and signature failed", File.c_str());
 	 local_exit(112);
       }
-      Args.push_back(sig.get());
-      Args.push_back(data.get());
+      Args.push_back(signature.Name());
+      Args.push_back(message.Name());
    }
 
-   Args.push_back(NULL);
-
    if (Debug)
    {
       std::clog << "Preparing to exec: ";
-      for (std::vector<const char *>::const_iterator a = Args.begin(); *a != NULL; ++a)
-	 std::clog << " " << *a;
+      for (auto const &a : Args)
+	 std::clog << " " << a;
       std::clog << std::endl;
    }
 
@@ -369,20 +513,27 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
       putenv((char *)"LC_MESSAGES=");
    }
 
+   // Translate the argument list to a C array. This should happen before
+   // the fork so we don't allocate money between fork() and execvp().
+   std::vector<const char *> cArgs;
+   cArgs.reserve(Args.size() + 1);
+   for (auto const &arg : Args)
+      cArgs.push_back(arg.c_str());
+   cArgs.push_back(nullptr);
 
    // We have created tempfiles we have to clean up
    // and we do an additional check, so fork yet another time …
    pid_t pid = ExecFork();
    if(pid < 0) {
-      apt_error(std::cerr, statusfd, fd, "Fork failed for %s to check %s", Args[0], File.c_str());
+      apt_error(std::cerr, statusfd, fd, "Fork failed for %s to check %s", Args[0].c_str(), File.c_str());
       local_exit(EINTERNAL);
    }
    if(pid == 0)
    {
       if (statusfd != -1)
 	 dup2(fd[1], statusfd);
-      execvp(Args[0], (char **) &Args[0]);
-      apt_error(std::cerr, statusfd, fd, "Couldn't execute %s to check %s", Args[0], File.c_str());
+      execvp(cArgs[0], (char **) &cArgs[0]);
+      apt_error(std::cerr, statusfd, fd, "Couldn't execute %s to check %s", Args[0].c_str(), File.c_str());
       local_exit(EINTERNAL);
    }
 
@@ -392,14 +543,14 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
    {
       if (errno == EINTR)
 	 continue;
-      apt_error(std::cerr, statusfd, fd, _("Waited for %s but it wasn't there"), "apt-key");
+      apt_error(std::cerr, statusfd, fd, _("Waited for %s but it wasn't there"), gpgv.c_str());
       local_exit(EINTERNAL);
    }
 
    // check if it exit'ed normally …
    if (not WIFEXITED(Status))
    {
-      apt_error(std::cerr, statusfd, fd, _("Sub-process %s exited unexpectedly"), "apt-key");
+      apt_error(std::cerr, statusfd, fd, _("Sub-process %s exited unexpectedly"), gpgv.c_str());
       local_exit(EINTERNAL);
    }
 
@@ -407,7 +558,7 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG,
    if (WEXITSTATUS(Status) != 0)
    {
       // we forward the statuscode, so don't generate a message on the fd in this case
-      apt_error(std::cerr, -1, fd, _("Sub-process %s returned an error code (%u)"), "apt-key", WEXITSTATUS(Status));
+      apt_error(std::cerr, -1, fd, _("Sub-process %s returned an error code (%u)"), gpgv.c_str(), WEXITSTATUS(Status));
       local_exit(WEXITSTATUS(Status));
    }
 
@@ -456,7 +607,7 @@ bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile,
 	 // but we assume that there will never be a header key starting with a dash
 	 return _error->Error("Clearsigned file '%s' contains unexpected line starting with a dash (%s)", InFile.c_str(), "armor");
       if (ContentHeader != nullptr && buf.starts_with("Hash: "))
-	 ContentHeader->push_back(buf.view().to_string());
+	 ContentHeader->emplace_back(buf.view());
    }
 
    // the message itself
@@ -566,3 +717,35 @@ bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &Me
    return not MessageFile.Failed();
 }
 									/*}}}*/
+bool IsAssertedPubKeyAlgo(std::string const &pkstr, std::string const &option) /*{{{*/
+{
+   auto fullAss = APT::String::Startswith(option, "APT::Key") ? _config->Find(option) : option;
+   for (auto &ass : VectorizeString(fullAss, ','))
+   {
+      if (ass == pkstr)
+	 return true;
+      // We only implement >= for rsa
+      if (APT::String::Startswith(ass, ">=rsa"))
+      {
+	 if (not APT::String::Startswith(pkstr, "rsa"))
+	    continue;
+	 if (not std::all_of(ass.begin() + 5, ass.end(), isdigit))
+	    return _error->Error("Unrecognized public key specification '%s' in option %s: expect only digits after >=rsa", ass.c_str(), option.c_str());
+
+	 int assBits = std::stoi(ass.substr(5));
+	 int pkBits = std::stoi(pkstr.substr(3));
+
+	 if (pkBits >= assBits)
+	    return true;
+
+	 continue;
+      }
+      if (ass.empty())
+	 return _error->Error("Empty item in public key assertion string option %s", option.c_str());
+      if (not std::all_of(ass.begin(), ass.end(), [](char c)
+			  { return isalpha(c) || isdigit(c); }))
+	 return _error->Error("Unrecognized public key specification '%s' in option %s", ass.c_str(), option.c_str());
+   }
+   return false;
+}
+									/*}}}*/
diff --git a/apt-pkg/contrib/gpgv.h b/apt-pkg/contrib/gpgv.h
index 1cabed4..f4f0a2a 100644
--- a/apt-pkg/contrib/gpgv.h
+++ b/apt-pkg/contrib/gpgv.h
@@ -11,12 +11,20 @@
 
 #include <apt-pkg/macros.h>
 
+#include <forward_list>
 #include <string>
 #include <vector>
 
 
 class FileFd;
 
+#ifdef APT_COMPILING_APT
+namespace APT::Internal
+{
+APT_PUBLIC std::pair<std::string, std::forward_list<std::string>> FindGPGV(bool Debug);
+}
+#endif
+
 /** \brief generates and run the command to verify a file with gpgv
  *
  * If File and FileSig specify the same file it is assumed that we
@@ -39,9 +47,11 @@ class FileFd;
  * @param fd is used as a pipe for the standard output of gpgv
  * @param key is the specific one to be used instead of using all
  */
-APT_PUBLIC void ExecGPGV(std::string const &File, std::string const &FileSig,
-      int const &statusfd, int fd[2], std::string const &Key = "") APT_NORETURN;
-inline APT_NORETURN void ExecGPGV(std::string const &File, std::string const &FileSig,
+[[noreturn]] APT_PUBLIC void ExecGPGV(std::string const &File, std::string const &FileSig,
+				      int const &statusfd, int fd[2], std::vector<std::string> const &KeyFiles);
+[[noreturn]] APT_PUBLIC void ExecGPGV(std::string const &File, std::string const &FileSig,
+				      int const &statusfd, int fd[2], std::string const &Key = "");
+[[noreturn]] inline void ExecGPGV(std::string const &File, std::string const &FileSig,
       int const &statusfd = -1) {
    int fd[2];
    ExecGPGV(File, FileSig, statusfd, fd);
@@ -86,4 +96,14 @@ APT_PUBLIC bool SplitClearSignedFile(std::string const &InFile, FileFd * const C
  */
 APT_PUBLIC bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile);
 
+/** \brief verifiy a detached signature file for correctness.
+ *
+ * We want to expect unavoided content. This may set an error when returning false
+ * but it might not necessarily do so (in case of empty signature file).
+ *
+ * @return true if the detached signature files contains ASCII-armored signatures, otherwise false
+ */
+APT_PUBLIC bool VerifyDetachedSignatureFile(std::string const &DetachedSignatureFileName);
+
+APT_PUBLIC bool IsAssertedPubKeyAlgo(std::string const &pkstr, std::string const &option);
 #endif
diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc
index 313b1d3..9c0ce40 100644
--- a/apt-pkg/contrib/hashes.cc
+++ b/apt-pkg/contrib/hashes.cc
@@ -3,10 +3,10 @@
 /* ######################################################################
 
    Hashes - Simple wrapper around the hash functions
-   
+
    This is just used to make building the methods simpler, this is the
    only interface required..
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -21,28 +21,18 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <array>
+#include <cassert>
+#include <cstddef>
+#include <cstdlib>
 #include <iostream>
+#include <optional>
 #include <string>
-#include <assert.h>
-#include <stddef.h>
-#include <stdlib.h>
 #include <unistd.h>
 
-#include <gcrypt.h>
+#include <openssl/evp.h>
 									/*}}}*/
 
-static const constexpr struct HashAlgo
-{
-   const char *name;
-   int gcryAlgo;
-   Hashes::SupportedHashes ourAlgo;
-} Algorithms[] = {
-   {"MD5Sum", GCRY_MD_MD5, Hashes::MD5SUM},
-   {"SHA1", GCRY_MD_SHA1, Hashes::SHA1SUM},
-   {"SHA256", GCRY_MD_SHA256, Hashes::SHA256SUM},
-   {"SHA512", GCRY_MD_SHA512, Hashes::SHA512SUM},
-};
-
 const char * HashString::_SupportedHashes[] =
 {
    "SHA512", "SHA256", "SHA1", "MD5Sum", "Checksum-FileSize", NULL
@@ -65,7 +55,7 @@ HashString::HashString(std::string Type, std::string Hash) : Type(Type), Hash(Ha
 {
 }
 
-HashString::HashString(std::string StringedHash)			/*{{{*/
+HashString::HashString(std::string_view StringedHash)			/*{{{*/
 {
    if (StringedHash.find(":") == std::string::npos)
    {
@@ -79,7 +69,7 @@ HashString::HashString(std::string StringedHash)			/*{{{*/
 	 std::clog << "HashString(string): invalid StringedHash " << StringedHash << std::endl;
       return;
    }
-   std::string::size_type pos = StringedHash.find(":");
+   auto pos = StringedHash.find(":");
    Type = StringedHash.substr(0,pos);
    Hash = StringedHash.substr(pos+1, StringedHash.size() - pos);
 
@@ -306,58 +296,114 @@ bool HashStringList::operator!=(HashStringList const &other) const
    return !(*this == other);
 }
 									/*}}}*/
+static APT_PURE std::string HexDigest(std::basic_string_view<unsigned char> const &Sum)
+{
+   char Conv[16] =
+      {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b',
+       'c', 'd', 'e', 'f'};
+   std::string Result(Sum.size() * 2, 0);
+
+   // Convert each char into two letters
+   size_t J = 0;
+   size_t I = 0;
+   for (; I != (Sum.size()) * 2; J++, I += 2)
+   {
+      Result[I] = Conv[Sum[J] >> 4];
+      Result[I + 1] = Conv[Sum[J] & 0xF];
+   }
+   return Result;
+};
 
 // PrivateHashes							/*{{{*/
-class PrivateHashes {
-public:
-   unsigned long long FileSize;
-   gcry_md_hd_t hd;
+class PrivateHashes
+{
+   public:
+   unsigned long long FileSize{0};
 
-   void maybeInit()
-   {
+   private:
+   std::array<EVP_MD_CTX *, 4> contexts{};
 
-      // Yikes, we got to initialize libgcrypt, or we get warnings. But we
-      // abstract away libgcrypt in Hashes from our users - they are not
-      // supposed to know what the hashing backend is, so we can't force
-      // them to init themselves as libgcrypt folks want us to. So this
-      // only leaves us with this option...
-      if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
+   public:
+   struct HashAlgo
+   {
+      size_t index;
+      const char *name;
+      const EVP_MD *(*evpLink)(void);
+      Hashes::SupportedHashes ourAlgo;
+   };
+
+   static constexpr std::array<HashAlgo, 4> Algorithms{
+      HashAlgo{0, "MD5Sum", EVP_md5, Hashes::MD5SUM},
+      HashAlgo{1, "SHA1", EVP_sha1, Hashes::SHA1SUM},
+      HashAlgo{2, "SHA256", EVP_sha256, Hashes::SHA256SUM},
+      HashAlgo{3, "SHA512", EVP_sha512, Hashes::SHA512SUM},
+   };
+
+   bool Write(unsigned char const *Data, size_t Size)
+   {
+      for (auto &context : contexts)
       {
-	 if (!gcry_check_version(nullptr))
-	 {
-	    fprintf(stderr, "libgcrypt is too old (need %s, have %s)\n",
-		    "nullptr", gcry_check_version(NULL));
-	    exit(2);
-	 }
-
-	 gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+	 if (context)
+	    EVP_DigestUpdate(context, Data, Size);
       }
+      return true;
+   }
+
+   std::string HexDigest(HashAlgo const &algo)
+   {
+      auto Size = EVP_MD_size(algo.evpLink());
+      unsigned char Sum[Size];
+
+      // We need to work on a copy, as we update the hash after creating a digest...
+      auto tmpContext = EVP_MD_CTX_create();
+      EVP_MD_CTX_copy(tmpContext, contexts[algo.index]);
+      EVP_DigestFinal_ex(tmpContext, Sum, nullptr);
+      EVP_MD_CTX_destroy(tmpContext);
+
+      return ::HexDigest(std::basic_string_view<unsigned char>(Sum, Size));
+   }
+
+   bool Enable(HashAlgo const &algo)
+   {
+      contexts[algo.index] = EVP_MD_CTX_new();
+      if (contexts[algo.index] == nullptr)
+	 return false;
+      if (EVP_DigestInit_ex(contexts[algo.index], algo.evpLink(), NULL))
+	 return true;
+      EVP_MD_CTX_destroy(contexts[algo.index]);
+      contexts[algo.index] = nullptr;
+      return false;
+   }
+   bool IsEnabled(HashAlgo const &algo)
+   {
+      return contexts[algo.index] != nullptr;
    }
 
-   explicit PrivateHashes(unsigned int const CalcHashes) : FileSize(0)
+   explicit PrivateHashes() {}
+   ~PrivateHashes()
+   {
+      for (auto ctx : contexts)
+	 if (ctx != nullptr)
+	    EVP_MD_CTX_free(ctx);
+   }
+
+   explicit PrivateHashes(unsigned int const CalcHashes) : PrivateHashes()
    {
-      maybeInit();
-      gcry_md_open(&hd, 0, 0);
       for (auto & Algo : Algorithms)
       {
 	 if ((CalcHashes & Algo.ourAlgo) == Algo.ourAlgo)
-	    gcry_md_enable(hd, Algo.gcryAlgo);
+	    Enable(Algo);
       }
    }
 
-   explicit PrivateHashes(HashStringList const &Hashes) : FileSize(0) {
-      maybeInit();
-      gcry_md_open(&hd, 0, 0);
+   explicit PrivateHashes(HashStringList const &Hashes) : PrivateHashes()
+   {
       for (auto & Algo : Algorithms)
       {
 	 if (not Hashes.usable() || Hashes.find(Algo.name) != NULL)
-	    gcry_md_enable(hd, Algo.gcryAlgo);
+	    Enable(Algo);
       }
    }
-   ~PrivateHashes()
-   {
-      gcry_md_close(hd);
-   }
 };
 									/*}}}*/
 // Hashes::Add* - Add the contents of data or FD			/*{{{*/
@@ -365,40 +411,41 @@ bool Hashes::Add(const unsigned char * const Data, unsigned long long const Size
 {
    if (Size != 0)
    {
-      gcry_md_write(d->hd, Data, Size);
+      if (not d->Write(Data, Size))
+	 return false;
       d->FileSize += Size;
    }
    return true;
 }
 bool Hashes::AddFD(int const Fd,unsigned long long Size)
 {
-   unsigned char Buf[APT_BUFFER_SIZE];
+   std::array<unsigned char, APT_BUFFER_SIZE> Buf;
    bool const ToEOF = (Size == UntilEOF);
    while (Size != 0 || ToEOF)
    {
-      decltype(Size) n = sizeof(Buf);
+      decltype(Size) n = Buf.size();
       if (!ToEOF) n = std::min(Size, n);
-      ssize_t const Res = read(Fd,Buf,n);
+      ssize_t const Res = read(Fd,Buf.data(),n);
       if (Res < 0 || (!ToEOF && Res != (ssize_t) n)) // error, or short read
 	 return false;
       if (ToEOF && Res == 0) // EOF
 	 break;
       Size -= Res;
-      if (Add(Buf, Res) == false)
+      if (Add(Buf.data(), Res) == false)
 	 return false;
    }
    return true;
 }
 bool Hashes::AddFD(FileFd &Fd,unsigned long long Size)
 {
-   unsigned char Buf[APT_BUFFER_SIZE];
+   std::array<unsigned char, APT_BUFFER_SIZE> Buf;
    bool const ToEOF = (Size == 0);
    while (Size != 0 || ToEOF)
    {
-      decltype(Size) n = sizeof(Buf);
+      decltype(Size) n = Buf.size();
       if (!ToEOF) n = std::min(Size, n);
       decltype(Size) a = 0;
-      if (Fd.Read(Buf, n, &a) == false) // error
+      if (Fd.Read(Buf.data(), n, &a) == false) // error
 	 return false;
       if (ToEOF == false)
       {
@@ -408,43 +455,19 @@ bool Hashes::AddFD(FileFd &Fd,unsigned long long Size)
       else if (a == 0) // EOF
 	 break;
       Size -= a;
-      if (Add(Buf, a) == false)
+      if (Add(Buf.data(), a) == false)
 	 return false;
    }
    return true;
 }
 									/*}}}*/
 
-static APT_PURE std::string HexDigest(gcry_md_hd_t hd, int algo)
-{
-   char Conv[16] =
-      {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b',
-       'c', 'd', 'e', 'f'};
-
-   auto Size = gcry_md_get_algo_dlen(algo);
-   assert(Size <= 512/8);
-   char Result[((Size)*2) + 1];
-   Result[(Size)*2] = 0;
-
-   auto Sum = gcry_md_read(hd, algo);
-
-   // Convert each char into two letters
-   size_t J = 0;
-   size_t I = 0;
-   for (; I != (Size)*2; J++, I += 2)
-   {
-      Result[I] = Conv[Sum[J] >> 4];
-      Result[I + 1] = Conv[Sum[J] & 0xF];
-   }
-   return std::string(Result);
-};
-
 HashStringList Hashes::GetHashStringList()
 {
    HashStringList hashes;
-   for (auto & Algo : Algorithms)
-      if (gcry_md_is_enabled(d->hd, Algo.gcryAlgo))
-	 hashes.push_back(HashString(Algo.name, HexDigest(d->hd, Algo.gcryAlgo)));
+   for (auto &Algo : d->Algorithms)
+      if (d->IsEnabled(Algo))
+	 hashes.push_back(HashString(Algo.name, d->HexDigest(Algo)));
    hashes.FileSize(d->FileSize);
 
    return hashes;
@@ -452,9 +475,9 @@ HashStringList Hashes::GetHashStringList()
 
 HashString Hashes::GetHashString(SupportedHashes hash)
 {
-   for (auto & Algo : Algorithms)
+   for (auto &Algo : d->Algorithms)
       if (hash == Algo.ourAlgo)
-	 return HashString(Algo.name, HexDigest(d->hd, Algo.gcryAlgo));
+	 return HashString(Algo.name, d->HexDigest(Algo));
 
    abort();
 }
diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h
index e259b4e..dc9cbf0 100644
--- a/apt-pkg/contrib/hashes.h
+++ b/apt-pkg/contrib/hashes.h
@@ -3,10 +3,10 @@
 /* ######################################################################
 
    Hashes - Simple wrapper around the hash functions
-   
+
    This is just used to make building the methods simpler, this is the
    only interface required..
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef APTPKG_HASHES_H
@@ -15,12 +15,12 @@
 #include <apt-pkg/macros.h>
 
 #ifdef APT_COMPILING_APT
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/tagfile-keys.h>
 #endif
 
 #include <cstring>
 #include <string>
+#include <string_view>
 #include <vector>
 
 
@@ -41,7 +41,7 @@ class APT_PUBLIC HashString
 
  public:
    HashString(std::string Type, std::string Hash);
-   explicit HashString(std::string StringedHashString);  // init from str as "type:hash"
+   explicit HashString(std::string_view StringedHashString);  // init from str as "type:hash"
    HashString();
 
    // get hash type used
@@ -66,9 +66,9 @@ class APT_PUBLIC HashString
    static APT_PURE const char** SupportedHashes();
 #ifdef APT_COMPILING_APT
    struct APT_HIDDEN HashSupportInfo {
-      APT::StringView name;
+      std::string_view name;
       pkgTagSection::Key namekey;
-      APT::StringView chksumsname;
+      std::string_view chksumsname;
       pkgTagSection::Key chksumskey;
    };
    APT_HIDDEN static std::vector<HashSupportInfo> SupportedHashesInfo();
diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h
index c08cd24..08e7aeb 100644
--- a/apt-pkg/contrib/macros.h
+++ b/apt-pkg/contrib/macros.h
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-2.0+
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Macros Header - Various useful macro definitions
 
    This file had this historic note, but now includes further changes
@@ -10,23 +10,13 @@
 
    This source is placed in the Public Domain, do with it what you will
    It was originally written by Brian C. White.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Private header
 #ifndef MACROS_H
 #define MACROS_H
 
-/* Useful count macro, use on an array of things and it will return the
-   number of items in the array */
-#define APT_ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-
-// Flag Macros
-#define	FLAG(f)			(1L << (f))
-#define	SETFLAG(v,f)	((v) |= FLAG(f))
-#define CLRFLAG(v,f)	((v) &=~FLAG(f))
-#define	CHKFLAG(v,f)	((v) &  FLAG(f) ? true : false)
-
 #ifdef __GNUC__
 #define APT_GCC_VERSION (__GNUC__ << 8 | __GNUC_MINOR__)
 #else
@@ -46,30 +36,20 @@
 #endif
 
 #if APT_GCC_VERSION >= 0x0300
-	#define APT_DEPRECATED	__attribute__ ((deprecated))
-	#define APT_DEPRECATED_MSG(X)	__attribute__ ((deprecated(X)))
 	// __attribute__((const)) is too dangerous for us, we end up using it wrongly
 	#define APT_PURE	__attribute__((pure))
-	#define APT_NORETURN	__attribute__((noreturn))
 	#define APT_PRINTF(n)	__attribute__((format(printf, n, n + 1)))
 	#define APT_WEAK        __attribute__((weak));
-	#define APT_UNUSED      __attribute__((unused))
 #else
-	#define APT_DEPRECATED
-	#define APT_DEPRECATED_MSG
 	#define APT_PURE
-	#define APT_NORETURN
 	#define APT_PRINTF(n)
 	#define APT_WEAK
-	#define APT_UNUSED
 #endif
 
 #if APT_GCC_VERSION > 0x0302
 	#define APT_NONNULL(...)	__attribute__((nonnull(__VA_ARGS__)))
-	#define APT_MUSTCHECK		__attribute__((warn_unused_result))
 #else
 	#define APT_NONNULL(...)
-	#define APT_MUSTCHECK
 #endif
 
 #if APT_GCC_VERSION >= 0x0400
@@ -98,21 +78,9 @@
 		_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
 	#define APT_IGNORE_DEPRECATED_POP \
 		_Pragma("GCC diagnostic pop")
-	/* gcc has various problems with this shortcut, so prefer the long form */
-	#define APT_IGNORE_DEPRECATED(XXX) \
-		APT_IGNORE_DEPRECATED_PUSH \
-		XXX \
-		APT_IGNORE_DEPRECATED_POP
 #else
 	#define APT_IGNORE_DEPRECATED_PUSH
 	#define APT_IGNORE_DEPRECATED_POP
-	#define APT_IGNORE_DEPRECATED(XXX) XXX
-#endif
-
-#if __cplusplus >= 201103L
-	#define APT_OVERRIDE override
-#else
-	#define APT_OVERRIDE /* no c++11 standard */
 #endif
 
 // These lines are extracted by the makefiles and the buildsystem
@@ -120,7 +88,7 @@
 // reverse-dependencies of libapt-pkg against the new SONAME.
 // Non-ABI-Breaks should only increase RELEASE number.
 // See also buildlib/libversion.mak
-#define APT_PKG_MAJOR 6
+#define APT_PKG_MAJOR 7
 #define APT_PKG_MINOR 0
 #define APT_PKG_RELEASE 0
 #define APT_PKG_ABI ((APT_PKG_MAJOR * 100) + APT_PKG_MINOR)
@@ -128,4 +96,18 @@
 /* Should be a multiple of the common page size (4096) */
 static constexpr unsigned long long APT_BUFFER_SIZE = 64 * 1024;
 
+template <class F>
+struct AptScopeWrapper {
+   F func;
+   ~AptScopeWrapper() { func(); }
+};
+template <class F>
+AptScopeWrapper(F) -> AptScopeWrapper<F>;
+#define APT_PASTE2(a, b) a##b
+#define APT_PASTE(a, b) APT_PASTE2(a, b)
+#define DEFER(lambda) AptScopeWrapper APT_PASTE(defer, __LINE__){lambda};
+
+
+#ifndef APT_COMPILING_APT
+#endif
 #endif
diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc
index 0568e1c..56e0801 100644
--- a/apt-pkg/contrib/mmap.cc
+++ b/apt-pkg/contrib/mmap.cc
@@ -23,11 +23,11 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/mmap.h>
 
+#include <cerrno>
 #include <cstdint>
+#include <cstdlib>
 #include <cstring>
 #include <string>
-#include <errno.h>
-#include <stdlib.h>
 #include <unistd.h>
 
 #include <apti18n.h>
diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc
index eb688b9..5f440a7 100644
--- a/apt-pkg/contrib/progress.cc
+++ b/apt-pkg/contrib/progress.cc
@@ -13,12 +13,12 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/progress.h>
 
-#include <cmath>
 #include <chrono>
+#include <cmath>
+#include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <string>
-#include <stdio.h>
 #include <sys/time.h>
 
 #include <apti18n.h>
@@ -153,13 +153,15 @@ void OpTextProgress::Done()
 {
    if (NoUpdate == false && OldOp.empty() == false)
    {
-      char S[300];
+      char S[300] = {};
       if (_error->PendingError() == true)
 	 snprintf(S,sizeof(S),_("%c%s... Error!"),'\r',OldOp.c_str());
-      else
+      else if (not _config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30))
 	 snprintf(S,sizeof(S),_("%c%s... Done"),'\r',OldOp.c_str());
       Write(S);
-      cout << endl;
+      // FIXME: apt-cdrom relies on this end of line being printed
+      if (_error->PendingError() || not _config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30))
+	 cout << endl;
       OldOp = string();
    }
 
@@ -200,7 +202,8 @@ void OpTextProgress::Update()
    {
       snprintf(S,sizeof(S),"\r%s",OldOp.c_str());
       Write(S);
-      cout << endl;
+      if (_config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30))
+	 cout << endl;
    }
 
    // Print the spinner. Absolute progress shows us a time progress.
diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h
index d6a698a..7721530 100644
--- a/apt-pkg/contrib/progress.h
+++ b/apt-pkg/contrib/progress.h
@@ -71,12 +71,12 @@ class APT_PUBLIC OpTextProgress : public OpProgress
    bool NoUpdate;
    bool NoDisplay;
    unsigned long LastLen;
-   virtual void Update() APT_OVERRIDE;
+   void Update() override;
    void Write(const char *S);
    
    public:
 
-   virtual void Done() APT_OVERRIDE;
+   void Done() override;
    
    explicit OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate),
                 NoDisplay(false), LastLen(0) {};
diff --git a/apt-pkg/contrib/proxy.cc b/apt-pkg/contrib/proxy.cc
index a99f44f..4780f9b 100644
--- a/apt-pkg/contrib/proxy.cc
+++ b/apt-pkg/contrib/proxy.cc
@@ -15,6 +15,7 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <array>
 #include <iostream>
 #include <fcntl.h>
 #include <unistd.h>
@@ -22,6 +23,16 @@
 #include "proxy.h"
 									/*}}}*/
 
+bool CanURIBeAccessedViaProxy(URI const &URL)				/*{{{*/
+{
+   // for some methods a proxy doesn't make sense, so we don't have to fork
+   if (URL.Host.empty() ||
+       APT::String::Startswith(URL.Access, "mirror+") || URL.Access.find("+mirror+") != std::string::npos || APT::String::Endswith(URL.Access, "+mirror"))
+      return false;
+   std::array const noproxy{"file", "copy", "store", "gpgv", "rred", "cdrom", "mirror"};
+   return std::find(noproxy.begin(), noproxy.end(), URL.Access) == noproxy.end();
+}
+									/*}}}*/
 // AutoDetectProxy - auto detect proxy					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -29,16 +40,19 @@ static std::vector<std::string> CompatibleProxies(URI const &URL)
 {
    if (URL.Access == "http" || URL.Access == "https")
       return {"http", "https", "socks5h"};
-   return {URL.Access};
+   if (URL.Access == "tor" || URL.Access == "tor+http" || URL.Access == "tor+https")
+      return {"socks5h"};
+   if (URL.Access == "ftp")
+      return {"ftp"};
+   return {};
 }
-
 bool AutoDetectProxy(URI &URL)
 {
-   // we support both http/https debug options
-   bool Debug = _config->FindB("Debug::Acquire::"+URL.Access,false);
+   if (not CanURIBeAccessedViaProxy(URL))
+      return true;
 
    // the user already explicitly set a proxy for this host
-   if(_config->Find("Acquire::"+URL.Access+"::proxy::"+URL.Host, "") != "")
+   if (not _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host, "").empty())
       return true;
 
    // option is "Acquire::http::Proxy-Auto-Detect" but we allow the old
@@ -49,6 +63,7 @@ bool AutoDetectProxy(URI &URL)
    if (AutoDetectProxyCmd.empty())
       return true;
 
+   bool const Debug = _config->FindB("Debug::Acquire::" + URL.Access, false);
    if (Debug)
       std::clog << "Using auto proxy detect command: " << AutoDetectProxyCmd << std::endl;
 
@@ -73,26 +88,34 @@ bool AutoDetectProxy(URI &URL)
    // and apt will use the generic proxy settings
    if (goodread == false)
       return true;
-   auto const cleanedbuf = _strstrip(buf);
+   std::string_view const cleanedbuf = _strstrip(buf);
    // We warn about this as the implementor probably meant to use DIRECT instead
-   if (cleanedbuf[0] == '\0')
+   if (cleanedbuf.empty())
    {
       _error->Warning("ProxyAutoDetect command returned an empty line");
       return true;
    }
 
    if (Debug)
-      std::clog << "auto detect command returned: '" << cleanedbuf << "'" << std::endl;
+      std::clog << "auto detect command returned: '" << cleanedbuf.data() << "'" << std::endl;
 
-   auto compatibleTypes = CompatibleProxies(URL);
-   bool compatible = strcmp(cleanedbuf, "DIRECT") == 0 ||
-		     compatibleTypes.end() != std::find_if(compatibleTypes.begin(),
-							   compatibleTypes.end(), [cleanedbuf](std::string &compat) {
-							      return strstr(cleanedbuf, compat.c_str()) == cleanedbuf;
-							   });
+   bool compatible = true;
+   if (cleanedbuf != "DIRECT")
+   {
+      if (auto const compatibleTypes = CompatibleProxies(URL); not compatibleTypes.empty())
+	 compatible = std::any_of(compatibleTypes.begin(), compatibleTypes.end(),
+				  [cleanedbuf](std::string const &compat)
+				  {
+				     return cleanedbuf.substr(0, compat.size()) == compat;
+				  });
+   }
+   else if (URL.Access == "tor" || URL.Access == "tor+http" || URL.Access == "tor+https")
+      compatible = false; // Accepting DIRECT would silently disable tor
 
    if (compatible)
-      _config->Set("Acquire::"+URL.Access+"::proxy::"+URL.Host, cleanedbuf);
+      _config->Set("Acquire::"+URL.Access+"::proxy::"+URL.Host, cleanedbuf.data());
+   else
+      _error->Warning("ProxyAutoDetect command returned incompatible proxy '%s' for access type %s", cleanedbuf.data(), URL.Access.c_str());
 
    return true;
 }
diff --git a/apt-pkg/contrib/proxy.h b/apt-pkg/contrib/proxy.h
index f6d70ea..2a4c19f 100644
--- a/apt-pkg/contrib/proxy.h
+++ b/apt-pkg/contrib/proxy.h
@@ -9,8 +9,10 @@
 #ifndef PKGLIB_PROXY_H
 #define PKGLIB_PROXY_H
 
+#include <apt-pkg/macros.h>
+
 class URI;
 APT_PUBLIC bool AutoDetectProxy(URI &URL);
-
+APT_HIDDEN bool CanURIBeAccessedViaProxy(URI const &URL);
 
 #endif
diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc
index 3eb5f1d..3ddb95a 100644
--- a/apt-pkg/contrib/srvrec.cc
+++ b/apt-pkg/contrib/srvrec.cc
@@ -10,12 +10,13 @@
 
 #include <netdb.h>
 
-#include <arpa/nameser.h>
+#include <ctime>
 #include <arpa/inet.h>
+#include <arpa/nameser.h>
 #include <netinet/in.h>
 #include <resolv.h>
-#include <time.h>
 
+#include <array>
 #include <algorithm>
 #include <memory>
 #include <tuple>
@@ -47,7 +48,7 @@ bool GetSrvRecords(std::string host, int port, std::vector<SrvRec> &Result)
    int res;
    struct servent s_ent_buf;
    struct servent *s_ent = nullptr;
-   std::vector<char> buf(1024);
+   std::array<char, 1024> buf;
 
    res = getservbyport_r(htons(port), "tcp", &s_ent_buf, buf.data(), buf.size(), &s_ent);
    if (res != 0 || s_ent == nullptr)
diff --git a/apt-pkg/contrib/string_view.h b/apt-pkg/contrib/string_view.h
deleted file mode 100644
index 04f6ff1..0000000
--- a/apt-pkg/contrib/string_view.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Basic implementation of string_view
- *
- * (C) 2015 Julian Andres Klode <jak@debian.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#if !defined(APT_STRINGVIEW_H)
-#define APT_STRINGVIEW_H
-#include <apt-pkg/macros.h>
-#include <string>
-#include <string.h>
-
-namespace APT {
-
-/**
- * \brief Simple subset of std::string_view from C++17
- *
- * This is an internal implementation of the subset of std::string_view
- * used by APT. It is not meant to be used in programs, only inside the
- * library for performance critical paths.
- */
-class StringView {
-    const char *data_;
-    size_t size_;
-
-public:
-    static constexpr size_t npos = static_cast<size_t>(-1);
-    static_assert(APT::StringView::npos == std::string::npos, "npos values are different");
-
-    /* Constructors */
-    constexpr StringView() : data_(""), size_(0) {}
-    constexpr StringView(const char *data, size_t size) : data_(data), size_(size) {}
-
-    StringView(const char *data) : data_(data), size_(strlen(data)) {}
-    StringView(std::string const & str): data_(str.data()), size_(str.size()) {}
-
-    /* Modifiers */
-    void remove_prefix(size_t n) { data_ += n; size_ -= n; }
-    void remove_suffix(size_t n) { size_ -= n; }
-    void clear() { size_ = 0; }
-
-    /* Viewers */
-    constexpr StringView substr(size_t pos, size_t n = npos) const {
-        return StringView(data_ + pos, n > (size_ - pos) ? (size_ - pos) : n);
-    }
-
-    size_t find(int c, size_t pos) const {
-       if (pos == 0)
-	  return find(c);
-       size_t const found = substr(pos).find(c);
-       if (found == npos)
-	  return npos;
-       return pos + found;
-    }
-    size_t find(int c) const {
-        const char *found = static_cast<const char*>(memchr(data_, c, size_));
-
-        if (found == NULL)
-            return npos;
-
-        return found - data_;
-    }
-
-    size_t rfind(int c, size_t pos) const {
-       if (pos == npos)
-	  return rfind(c);
-       return APT::StringView(data_, pos).rfind(c);
-    }
-    size_t rfind(int c) const {
-        const char *found = static_cast<const char*>(memrchr(data_, c, size_));
-
-        if (found == NULL)
-            return npos;
-
-        return found - data_;
-    }
-
-    size_t find(APT::StringView const needle) const {
-       if (needle.empty())
-	  return npos;
-       if (needle.length() == 1)
-	  return find(*needle.data());
-       size_t found = 0;
-       while ((found = find(*needle.data(), found)) != npos) {
-	  if (compare(found, needle.length(), needle) == 0)
-	     return found;
-	  ++found;
-       }
-       return found;
-    }
-    size_t find(APT::StringView const needle, size_t pos) const {
-       if (pos == 0)
-	  return find(needle);
-       size_t const found = substr(pos).find(needle);
-       if (found == npos)
-	  return npos;
-       return pos + found;
-    }
-
-    /* Conversions */
-    std::string to_string() const {
-        return std::string(data_, size_);
-    }
-
-    /* Comparisons */
-    int compare(size_t pos, size_t n, StringView other) const {
-        return substr(pos, n).compare(other);
-    }
-
-    int compare(StringView other) const {
-        int res;
-
-        res = memcmp(data_, other.data_, std::min(size_, other.size_));
-        if (res != 0)
-            return res;
-        if (size_ == other.size_)
-            return res;
-
-        return (size_ > other.size_) ? 1 : -1;
-    }
-
-    /* Optimization: If size not equal, string cannot be equal */
-    bool operator ==(StringView other) const { return size_ == other.size_ && compare(other) == 0; }
-    bool operator !=(StringView other) const { return !(*this == other); }
-
-    /* Accessors */
-    constexpr bool empty() const { return size_ == 0; }
-    constexpr const char* data() const { return data_; }
-    constexpr const char* begin() const { return data_; }
-    constexpr const char* end() const { return data_ + size_; }
-    constexpr char operator [](size_t i) const { return data_[i]; }
-    constexpr size_t size() const { return size_; }
-    constexpr size_t length() const { return size_; }
-};
-
-/**
- * \brief Faster comparison for string views (compare size before data)
- *
- * Still stable, but faster than the normal ordering. */
-static inline int StringViewCompareFast(StringView a, StringView b) {
-    if (a.size() != b.size())
-        return a.size() - b.size();
-
-    return memcmp(a.data(), b.data(), a.size());
-}
-
-static constexpr inline APT::StringView operator""_sv(const char *data, size_t size)
-{
-   return APT::StringView(data, size);
-}
-}
-
-inline bool operator ==(const char *other, APT::StringView that);
-inline bool operator ==(const char *other, APT::StringView that) { return that.operator==(other); }
-inline bool operator ==(std::string const &other, APT::StringView that);
-inline bool operator ==(std::string const &other, APT::StringView that) { return that.operator==(other); }
-
-#endif
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
index 67100f1..5be6f00 100644
--- a/apt-pkg/contrib/strutl.cc
+++ b/apt-pkg/contrib/strutl.cc
@@ -35,18 +35,18 @@
 #include <string>
 #include <vector>
 
-#include <ctype.h>
-#include <errno.h>
+#include <cctype>
+#include <cerrno>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <cwchar>
 #include <iconv.h>
 #include <regex.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
 #include <unistd.h>
-#include <wchar.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -56,43 +56,30 @@ using namespace std;
 // ---------------------------------------------------------------------
 namespace APT {
    namespace String {
-std::string Strip(const std::string &str)
+std::string_view Strip(std::string_view str)
 {
-   // ensure we have at least one character
-   if (str.empty() == true)
-      return str;
-
-   char const * const s = str.c_str();
-   size_t start = 0;
-   for (; isspace(s[start]) != 0; ++start)
-      ; // find the first not-space
-
-   // string contains only whitespaces
-   if (s[start] == '\0')
-      return "";
-
-   size_t end = str.length() - 1;
-   for (; isspace(s[end]) != 0; --end)
-      ; // find the last not-space
-
-   return str.substr(start, end - start + 1);
+   while (!str.empty() && isspace(str[0]))
+      str.remove_prefix(1);
+   while (!str.empty() && isspace(str.back()))
+      str.remove_suffix(1);
+   return str;
 }
 
-bool Endswith(const std::string &s, const std::string &end)
+bool Endswith(const std::string_view &s, const std::string_view &end)
 {
    if (end.size() > s.size())
       return false;
    return (s.compare(s.size() - end.size(), end.size(), end) == 0);
 }
 
-bool Startswith(const std::string &s, const std::string &start)
+bool Startswith(const std::string_view &s, const std::string_view &start)
 {
    if (start.size() > s.size())
       return false;
    return (s.compare(0, start.size(), start) == 0);
 }
 
-std::string Join(std::vector<std::string> list, const std::string &sep)
+std::string Join(std::vector<std::string> list, const std::string_view &sep)
 {
    std::ostringstream oss;
    for (auto it = list.begin(); it != list.end(); it++)
@@ -104,7 +91,7 @@ std::string Join(std::vector<std::string> list, const std::string &sep)
 }
 
 // Returns string display length honoring multi-byte characters
-size_t DisplayLength(StringView str)
+size_t DisplayLength(string_view str)
 {
    size_t len = 0;
 
@@ -248,41 +235,6 @@ char *_strrstrip(char *String)
    return String;
 }
 									/*}}}*/
-// strtabexpand - Converts tabs into 8 spaces				/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-char *_strtabexpand(char *String,size_t Len)
-{
-   for (char *I = String; I != I + Len && *I != 0; I++)
-   {
-      if (*I != '\t')
-	 continue;
-      if (I + 8 > String + Len)
-      {
-	 *I = 0;
-	 return String;
-      }
-
-      /* Assume the start of the string is 0 and find the next 8 char
-         division */
-      int Len;
-      if (String == I)
-	 Len = 1;
-      else
-	 Len = 8 - ((String - I) % 8);
-      Len -= 2;
-      if (Len <= 0)
-      {
-	 *I = ' ';
-	 continue;
-      }
-      
-      memmove(I + Len,I + 1,strlen(I) + 1);
-      for (char *J = I; J + Len != I; *I = ' ', I++);
-   }
-   return String;
-}
-									/*}}}*/
 // ParseQuoteWord - Parse a single word out of a string			/*{{{*/
 // ---------------------------------------------------------------------
 /* This grabs a single word, converts any % escaped characters to their
@@ -503,10 +455,10 @@ string TimeToStr(unsigned long Sec)
 // SubstVar - Substitute a string for another string			/*{{{*/
 // ---------------------------------------------------------------------
 /* This replaces all occurrences of Subst with Contents in Str. */
-string SubstVar(const string &Str,const string &Subst,const string &Contents)
+string SubstVar(const string_view &Str,const string_view &Subst,const string_view &Contents)
 {
    if (Subst.empty() == true)
-      return Str;
+      return std::string{Str};
 
    string::size_type Pos = 0;
    string::size_type OldPos = 0;
@@ -523,7 +475,7 @@ string SubstVar(const string &Str,const string &Subst,const string &Contents)
    }
 
    if (OldPos == 0)
-      return Str;
+      return std::string{Str};
 
    if (OldPos >= Str.length())
       return Temp;
@@ -624,6 +576,73 @@ string Base64Encode(const string &S)
    
    return Final;
 }
+									/*}}}*/
+// Base64Decode - Base64 decoding routine for short strings		/*{{{*/
+// ---------------------------------------------------------------------
+// Taken from mjg59's dpkg code: https://lists.debian.org/debian-dpkg/2018/05/msg00002.html
+std::string Base64Decode(const std::string_view in)
+{
+   constexpr std::array<unsigned char, 256> mime_base64_rank{
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63,
+      52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255,
+      255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+      15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255,
+      255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+      41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+      255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
+   std::string out;
+   unsigned char rank;
+   unsigned char last[2];
+   unsigned int v;
+   int i;
+
+   /* convert 4 base64 bytes to 3 normal bytes */
+   v = 0;
+   i = 0;
+
+   last[0] = last[1] = 0;
+
+   /* we use the sign in the state to determine if we got a padding character
+   in the previous sequence */
+   if (i < 0)
+   {
+      i = -i;
+      last[0] = '=';
+   }
+
+   for (const unsigned char c : in)
+   {
+      rank = mime_base64_rank[c];
+      if (rank != 0xff)
+      {
+	 last[1] = last[0];
+	 last[0] = c;
+	 v = (v << 6) | rank;
+	 i++;
+	 if (i == 4)
+	 {
+	    out += v >> 16;
+	    if (last[1] != '=')
+	       out += v >> 8;
+	    if (last[0] != '=')
+	       out += v;
+	    i = 0;
+	 }
+      }
+   }
+
+   return out;
+}
+
 									/*}}}*/
 // stringcmp - Arbitrary string compare					/*{{{*/
 // ---------------------------------------------------------------------
@@ -863,7 +882,7 @@ string TimeRFC1123(time_t Date, bool const NumericTimezone)
    auto const posix = std::locale::classic();
    std::ostringstream datestr;
    datestr.imbue(posix);
-   APT::StringView const fmt("%a, %d %b %Y %H:%M:%S");
+   std::string_view const fmt("%a, %d %b %Y %H:%M:%S");
    std::use_facet<std::time_put<char>>(posix).put(
                     std::ostreambuf_iterator<char>(datestr),
                     datestr, ' ', &Conv, fmt.data(), fmt.data() + fmt.size());
@@ -1129,20 +1148,6 @@ bool RFC1123StrToTime(std::string const &str,time_t &time)
    return true;
 }
 									/*}}}*/
-// FTPMDTMStrToTime - Converts a ftp modification date into a time_t	/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool FTPMDTMStrToTime(const char* const str,time_t &time)
-{
-   struct tm Tm;
-   // MDTM includes no whitespaces but recommend and ignored by strptime
-   if (strptime(str, "%Y %m %d %H %M %S", &Tm) == NULL)
-      return false;
-
-   time = timegm(&Tm);
-   return true;
-}
-									/*}}}*/
 // StrToNum - Convert a fixed length string to a number			/*{{{*/
 // ---------------------------------------------------------------------
 /* This is used in decoding the crazy fixed length string headers in
@@ -1240,7 +1245,7 @@ static int HexDigit(int c)
 // Hex2Num - Convert a long hex number into a buffer			/*{{{*/
 // ---------------------------------------------------------------------
 /* The length of the buffer must be exactly 1/2 the length of the string. */
-bool Hex2Num(const APT::StringView Str,unsigned char *Num,unsigned int Length)
+bool Hex2Num(const std::string_view Str,unsigned char *Num,unsigned int Length)
 {
    if (Str.length() != Length*2)
       return false;
@@ -1309,13 +1314,13 @@ bool TokSplitString(char Tok,char *Input,char **List,
 /* This can be used to split a given string up into a vector, so the
    propose is the same as in the method above and this one is a bit slower
    also, but the advantage is that we have an iteratable vector */
-vector<string> VectorizeString(string const &haystack, char const &split)
+vector<string> VectorizeString(string_view const &haystack, char const &split)
 {
    vector<string> exploded;
    if (haystack.empty() == true)
       return exploded;
-   string::const_iterator start = haystack.begin();
-   string::const_iterator end = start;
+   auto start = haystack.begin();
+   auto end = start;
    do {
       for (; end != haystack.end() && *end != split; ++end);
       exploded.push_back(string(start, end));
@@ -1328,7 +1333,7 @@ vector<string> VectorizeString(string const &haystack, char const &split)
 // ---------------------------------------------------------------------
 /* See header for details.
  */
-vector<string> StringSplit(std::string const &s, std::string const &sep,
+vector<string> StringSplit(std::string_view const &s, std::string_view const &sep,
                            unsigned int maxsplit)
 {
    vector<string> split;
@@ -1342,8 +1347,8 @@ vector<string> StringSplit(std::string const &s, std::string const &sep,
    while (pos != string::npos)
    {
       pos = s.find(sep, start);
-      split.push_back(s.substr(start, pos-start));
-      
+      split.emplace_back(s.substr(start, pos-start));
+
       // if maxsplit is reached, the remaining string is the last item
       if(split.size() >= maxsplit)
       {
@@ -1421,7 +1426,7 @@ unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin,
    and to allow reordering of parameters */
 bool iovprintf(std::ostream &out, const char *format,
 		      va_list &args, ssize_t &size) {
-   auto S = std::unique_ptr<char,decltype(&free)>{static_cast<char*>(malloc(size)), &free};
+   auto S = std::unique_ptr<char,FreeDeleter>{static_cast<char*>(malloc(size))};
    ssize_t const n = vsnprintf(S.get(), size, format, args);
    if (n > -1 && n < size) {
       out << S.get();
diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h
index 1fdc8dc..79b7c8b 100644
--- a/apt-pkg/contrib/strutl.h
+++ b/apt-pkg/contrib/strutl.h
@@ -4,41 +4,50 @@
 /* ######################################################################
 
    String Util - These are some useful string functions
-   
+
    _strstrip is a function to remove whitespace from the front and end
    of a string.
-   
+
    This file had this historic note, but now includes further changes
    under the GPL-2.0+:
 
    This source is placed in the Public Domain, do with it what you will
-   It was originally written by Jason Gunthorpe <jgg@gpu.srv.ualberta.ca>   
-   
+   It was originally written by Jason Gunthorpe <jgg@gpu.srv.ualberta.ca>
+
    ##################################################################### */
 									/*}}}*/
 #ifndef STRUTL_H
 #define STRUTL_H
 
+#include <cstddef>
 #include <cstring>
+#include <ctime>
 #include <iostream>
 #include <limits>
 #include <string>
+#include <string_view>
 #include <vector>
-#include <apt-pkg/string_view.h>
-#include <stddef.h>
-#include <time.h>
 
 #include "macros.h"
 
 
+namespace {
+   struct FreeDeleter {
+      void operator()(void *p) {
+         free(p);
+      }
+   };
+}
+
+
 namespace APT {
    namespace String {
-      APT_PUBLIC std::string Strip(const std::string &s);
-      APT_PUBLIC bool Endswith(const std::string &s, const std::string &ending);
-      APT_PUBLIC bool Startswith(const std::string &s, const std::string &starting);
-      APT_PUBLIC std::string Join(std::vector<std::string> list, const std::string &sep);
+      APT_PUBLIC std::string_view Strip(std::string_view s);
+      APT_PUBLIC bool Endswith(const std::string_view &s, const std::string_view &ending);
+      APT_PUBLIC bool Startswith(const std::string_view &s, const std::string_view &starting);
+      APT_PUBLIC std::string Join(std::vector<std::string> list, const std::string_view &sep);
       // Returns string display length honoring multi-byte characters
-      APT_PUBLIC size_t DisplayLength(StringView str);
+      APT_PUBLIC size_t DisplayLength(std::string_view str);
    }
 }
 
@@ -46,7 +55,6 @@ namespace APT {
 APT_PUBLIC bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest);
 APT_PUBLIC char *_strstrip(char *String);
 APT_PUBLIC char *_strrstrip(char *String); // right strip only
-APT_DEPRECATED_MSG("Use SubstVar to avoid memory headaches") APT_PUBLIC char *_strtabexpand(char *String,size_t Len);
 APT_PUBLIC bool ParseQuoteWord(const char *&String,std::string &Res);
 APT_PUBLIC bool ParseCWord(const char *&String,std::string &Res);
 APT_PUBLIC std::string QuoteString(const std::string &Str,const char *Bad);
@@ -59,6 +67,7 @@ APT_PUBLIC std::string DeEscapeString(const std::string &input);
 APT_PUBLIC std::string SizeToStr(double Bytes);
 APT_PUBLIC std::string TimeToStr(unsigned long Sec);
 APT_PUBLIC std::string Base64Encode(const std::string &Str);
+APT_PUBLIC std::string Base64Decode(const std::string_view in);
 APT_PUBLIC std::string OutputInDepth(const unsigned long Depth, const char* Separator="  ");
 APT_PUBLIC std::string URItoFileName(const std::string &URI);
 /** returns a datetime string as needed by HTTP/1.1 and Debian files.
@@ -86,8 +95,7 @@ APT_PUBLIC std::string TimeRFC1123(time_t Date, bool const NumericTimezone);
  *    parsing is successful, undefined otherwise.
  * @return \b true if parsing was successful, otherwise \b false.
  */
-APT_PUBLIC bool RFC1123StrToTime(const std::string &str,time_t &time) APT_MUSTCHECK;
-APT_PUBLIC bool FTPMDTMStrToTime(const char* const str,time_t &time) APT_MUSTCHECK;
+[[nodiscard]] APT_PUBLIC bool RFC1123StrToTime(const std::string &str,time_t &time);
 APT_PUBLIC std::string LookupTag(const std::string &Message,const char *Tag,const char *Default = 0);
 APT_PUBLIC int StringToBool(const std::string &Text,int Default = -1);
 APT_PUBLIC bool ReadMessages(int Fd, std::vector<std::string> &List);
@@ -95,13 +103,13 @@ APT_PUBLIC bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigne
 APT_PUBLIC bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base = 0);
 APT_PUBLIC bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len);
 APT_PUBLIC bool Base256ToNum(const char *Str,unsigned long long &Res,unsigned int Len);
-APT_PUBLIC bool Hex2Num(const APT::StringView Str,unsigned char *Num,unsigned int Length);
+APT_PUBLIC bool Hex2Num(const std::string_view Str,unsigned char *Num,unsigned int Length);
 // input changing string split
 APT_PUBLIC bool TokSplitString(char Tok,char *Input,char **List,
 		    unsigned long ListMax);
 
 // split a given string by a char
-APT_PUBLIC std::vector<std::string> VectorizeString(std::string const &haystack, char const &split) APT_PURE;
+APT_PUBLIC std::vector<std::string> VectorizeString(std::string_view const &haystack, char const &split) APT_PURE;
 
 /* \brief Return a vector of strings from string "input" where "sep"
  * is used as the delimiter string.
@@ -112,13 +120,13 @@ APT_PUBLIC std::vector<std::string> VectorizeString(std::string const &haystack,
  *
  * \param maxsplit (optional) The maximum amount of splitting that
  * should be done .
- * 
+ *
  * The optional "maxsplit" argument can be used to limit the splitting,
  * if used the string is only split on maxsplit places and the last
  * item in the vector contains the remainder string.
  */
-APT_PUBLIC std::vector<std::string> StringSplit(std::string const &input,
-                                     std::string const &sep, 
+APT_PUBLIC std::vector<std::string> StringSplit(std::string_view const &input,
+                                     std::string_view const &sep,
                                      unsigned int maxsplit=std::numeric_limits<unsigned int>::max()) APT_PURE;
 
 
@@ -220,7 +228,7 @@ class APT_PUBLIC URI
    std::string Host;
    std::string Path;
    unsigned int Port;
-   
+
    operator std::string();
    inline void operator =(const std::string &From) {CopyFrom(From);}
    inline bool empty() {return Access.empty();};
@@ -238,7 +246,7 @@ struct SubstVar
    const std::string *Contents;
 };
 APT_PUBLIC std::string SubstVar(std::string Str,const struct SubstVar *Vars);
-APT_PUBLIC std::string SubstVar(const std::string &Str,const std::string &Subst,const std::string &Contents);
+APT_PUBLIC std::string SubstVar(const std::string_view &Str,const std::string_view &Subst,const std::string_view &Contents);
 
 struct RxChoiceList
 {
@@ -249,4 +257,15 @@ struct RxChoiceList
 APT_PUBLIC unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin,
 		      const char **ListEnd);
 
+/**
+ * \brief Faster comparison for string views (compare size before data)
+ *
+ * Still stable, but faster than the normal ordering. */
+static inline int StringViewCompareFast(const std::string_view & a, const std::string_view & b) {
+    if (a.size() != b.size())
+        return a.size() - b.size();
+
+    return a.compare(b);
+}
+
 #endif
diff --git a/apt-pkg/contrib/weakptr.h b/apt-pkg/contrib/weakptr.h
index 8de727d..6cfa948 100644
--- a/apt-pkg/contrib/weakptr.h
+++ b/apt-pkg/contrib/weakptr.h
@@ -21,8 +21,8 @@
 #ifndef WEAK_POINTER_H
 #define WEAK_POINTER_H
 
+#include <cstddef>
 #include <set>
-#include <stddef.h>
 
 /**
  * Class for objects providing support for weak pointers.
diff --git a/apt-pkg/deb/debfile.cc b/apt-pkg/deb/debfile.cc
index 645a579..1d61c82 100644
--- a/apt-pkg/deb/debfile.cc
+++ b/apt-pkg/deb/debfile.cc
@@ -28,10 +28,10 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
-#include <string>
+#include <cstring>
 #include <sstream>
+#include <string>
 #include <vector>
-#include <string.h>
 #include <sys/stat.h>
 
 #include <apti18n.h>
diff --git a/apt-pkg/deb/debfile.h b/apt-pkg/deb/debfile.h
index 48a75ae..887ee71 100644
--- a/apt-pkg/deb/debfile.h
+++ b/apt-pkg/deb/debfile.h
@@ -56,8 +56,7 @@ class APT_PUBLIC debDebFile
 class APT_PUBLIC debDebFile::ControlExtract : public pkgDirStream
 {
    public:
-   
-   virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
+   bool DoItem(Item &Itm, int &Fd) override;
 };
 
 class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream
@@ -72,9 +71,9 @@ class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream
    std::string Member;
    
    // Members from DirStream
-   virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
-   virtual bool Process(Item &Itm,const unsigned char *Data,
-			unsigned long long Size,unsigned long long Pos) APT_OVERRIDE;
+   bool DoItem(Item &Itm, int &Fd) override;
+   bool Process(Item &Itm, const unsigned char *Data,
+		unsigned long long Size, unsigned long long Pos) override;
 
    // Helpers
    bool Read(debDebFile &Deb);
@@ -82,7 +81,7 @@ class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream
 
    MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {};
    explicit MemControlExtract(std::string Member) : IsControl(false), Control(0), Length(0), Member(Member) {};
-   ~MemControlExtract() {delete [] Control;};   
+   ~MemControlExtract() override { delete[] Control; };
 };
 									/*}}}*/
 
diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc
index e1698e1..fefbf45 100644
--- a/apt-pkg/deb/debindexfile.cc
+++ b/apt-pkg/deb/debindexfile.cc
@@ -25,14 +25,16 @@
 #include <apt-pkg/srcrecords.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstdio>
 #include <iostream>
 #include <memory>
 #include <sstream>
 #include <string>
-#include <stdio.h>
 
 #include <sys/stat.h>
 #include <unistd.h>
+
+using namespace std::literals;
 									/*}}}*/
 
 // Sources Index							/*{{{*/
@@ -198,7 +200,7 @@ bool debDebPkgFileIndex::GetContent(std::ostream &content, std::string const &de
 bool debDebPkgFileIndex::OpenListFile(FileFd &Pkg, std::string const &FileName)
 {
    // write the control data to a tempfile
-   if (GetTempFile("deb-file-" + flNotDir(FileName), true, &Pkg) == NULL)
+   if (GetTempFile("deb-file-"s += flNotDir(FileName), true, &Pkg) == NULL)
       return false;
    std::ostringstream content;
    if (GetContent(content, FileName) == false)
@@ -325,7 +327,7 @@ class APT_HIDDEN debIFTypeSrc : public pkgIndexFile::Type
 class APT_HIDDEN debIFTypePkg : public pkgIndexFile::Type
 {
    public:
-   virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+   [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override
    {
       return new debRecordParser(File.FileName(),*File.Cache());
    };
@@ -339,7 +341,7 @@ class APT_HIDDEN debIFTypeTrans : public debIFTypePkg
 class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type
 {
    public:
-   virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+   [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override
    {
       return new debRecordParser(File.FileName(),*File.Cache());
    };
@@ -348,7 +350,7 @@ class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type
 class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type
 {
    public:
-   virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+   [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override
    {
       return new debDebFileRecordParser(File.FileName());
    };
@@ -357,7 +359,7 @@ class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type
 class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type
 {
    public:
-   virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &DscFile) const APT_OVERRIDE
+   [[nodiscard]] pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &DscFile) const override
    {
       return new debDscRecordParser(DscFile, NULL);
    };
@@ -366,7 +368,7 @@ class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type
 class APT_HIDDEN debIFTypeDebianSourceDir : public pkgIndexFile::Type
 {
    public:
-   virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &SourceDir) const APT_OVERRIDE
+   [[nodiscard]] pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &SourceDir) const override
    {
       return new debDscRecordParser(SourceDir + std::string("/debian/control"), NULL);
    };
diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h
index 57b3738..e9b22ff 100644
--- a/apt-pkg/deb/debindexfile.h
+++ b/apt-pkg/deb/debindexfile.h
@@ -29,87 +29,85 @@ class debStatusIndex : public pkgDebianIndexRealFile
 {
    void * const d;
 protected:
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual std::string GetComponent() const APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] std::string GetComponent() const override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
 
 public:
 
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE {return true;};
+   [[nodiscard]] bool HasPackages() const override { return true; };
    // Abort if the file does not exist.
-   virtual bool Exists() const APT_OVERRIDE {return true;};
+   [[nodiscard]] bool Exists() const override { return true; };
 
-   virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+   pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
 
    explicit debStatusIndex(std::string const &File);
-   virtual ~debStatusIndex();
+   ~debStatusIndex() override;
 };
 
 class debPackagesIndex : public pkgDebianIndexTargetFile
 {
    void * const d;
 protected:
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
 
 public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    // Stuff for accessing files on remote items
-   virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const APT_OVERRIDE;
+   [[nodiscard]] std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override;
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE {return true;};
+   [[nodiscard]] bool HasPackages() const override {return true;};
 
    debPackagesIndex(IndexTarget const &Target, bool const Trusted);
-   virtual ~debPackagesIndex();
+   ~debPackagesIndex() override;
 };
 
 class debTranslationsIndex : public pkgDebianIndexTargetFile
 {
    void * const d;
 protected:
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
-   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
+   bool OpenListFile(FileFd &Pkg, std::string const &FileName) override;
+   APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
 
 public:
-
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE;
+   [[nodiscard]] bool HasPackages() const override;
 
    explicit debTranslationsIndex(IndexTarget const &Target);
-   virtual ~debTranslationsIndex();
+   ~debTranslationsIndex() override;
 };
 
 class debSourcesIndex : public pkgDebianIndexTargetFile
 {
    void * const d;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
-   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
-
-   public:
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
+   bool OpenListFile(FileFd &Pkg, std::string const &FileName) override;
+   APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
 
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+public:
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    // Stuff for accessing files on remote items
-   virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record,
-			     pkgSrcRecords::File const &File) const APT_OVERRIDE;
+   [[nodiscard]] std::string SourceInfo(pkgSrcRecords::Parser const &Record,
+					pkgSrcRecords::File const &File) const override;
 
    // Interface for the record parsers
-   virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE;
+   [[nodiscard]] pkgSrcRecords::Parser *CreateSrcParser() const override;
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE {return false;};
+   [[nodiscard]] bool HasPackages() const override { return false; };
 
    debSourcesIndex(IndexTarget const &Target, bool const Trusted);
-   virtual ~debSourcesIndex();
+   ~debSourcesIndex() override;
 };
 
 class debDebPkgFileIndex : public pkgDebianIndexRealFile
@@ -118,14 +116,14 @@ class debDebPkgFileIndex : public pkgDebianIndexRealFile
    std::string DebFile;
 
 protected:
-   virtual std::string GetComponent() const APT_OVERRIDE;
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
-   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+   [[nodiscard]] std::string GetComponent() const override;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
+   bool OpenListFile(FileFd &Pkg, std::string const &FileName) override;
+   APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
 
 public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    /** get the control (file) content of the deb file
     *
@@ -136,15 +134,15 @@ public:
    static bool GetContent(std::ostream &content, std::string const &debfile);
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE {return true;}
-   virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE;
+   [[nodiscard]] bool HasPackages() const override { return true; }
+   pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const override;
 
    // Interface for acquire
 
    explicit debDebPkgFileIndex(std::string const &DebFile);
-   virtual ~debDebPkgFileIndex();
+   ~debDebPkgFileIndex() override;
 
-   std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override;
+   [[nodiscard]] std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override;
 };
 
 class APT_PUBLIC debDscFileIndex : public pkgDebianIndexRealFile
@@ -152,14 +150,14 @@ class APT_PUBLIC debDscFileIndex : public pkgDebianIndexRealFile
    void * const d;
 
 protected:
-   virtual std::string GetComponent() const APT_OVERRIDE;
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetComponent() const override;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
 
 public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
-   virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE;
-   virtual bool HasPackages() const APT_OVERRIDE {return false;};
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
+   [[nodiscard]] pkgSrcRecords::Parser *CreateSrcParser() const override;
+   [[nodiscard]] bool HasPackages() const override { return false; };
 
    explicit debDscFileIndex(std::string const &DscFile);
    virtual ~debDscFileIndex();
@@ -168,29 +166,29 @@ public:
 class debDebianSourceDirIndex : public debDscFileIndex
 {
 protected:
-   virtual std::string GetComponent() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetComponent() const override;
 
 public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+[[nodiscard]] const Type *GetType() const override APT_PURE;
 };
 
 class APT_PUBLIC debStringPackageIndex : public pkgDebianIndexRealFile
 {
    void * const d;
 protected:
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual std::string GetComponent() const APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] std::string GetComponent() const override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
 
-public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   public:
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    // Interface for the Cache Generator
-   virtual bool HasPackages() const APT_OVERRIDE {return true;};
+   [[nodiscard]] bool HasPackages() const override { return true; };
    // Abort if the file does not exist.
-   virtual bool Exists() const APT_OVERRIDE {return true;};
+   [[nodiscard]] bool Exists() const override { return true; };
 
    explicit debStringPackageIndex(std::string const &content);
-   virtual ~debStringPackageIndex();
+   ~debStringPackageIndex() override;
 };
 #endif
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc
index 6f47053..dfb07d2 100644
--- a/apt-pkg/deb/deblistparser.cc
+++ b/apt-pkg/deb/deblistparser.cc
@@ -1,11 +1,11 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Package Cache Generator - Generator for the cache structure.
-   
-   This builds the cache structure from the abstract package list parser. 
-   
+
+   This builds the cache structure from the abstract package list parser.
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -25,15 +25,16 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <cctype>
+#include <cstddef>
+#include <cstring>
 #include <string>
 #include <vector>
-#include <ctype.h>
-#include <stddef.h>
-#include <string.h>
 									/*}}}*/
 
 using std::string;
-using APT::StringView;
+using std::string_view;
+using namespace std::literals;
 
 static const debListParser::WordList PrioList[] = {
    {"required",pkgCache::State::Required},
@@ -68,7 +69,7 @@ debListParser::debListParser(FileFd *File) :
 // ---------------------------------------------------------------------
 /* This is to return the name of the package this section describes */
 string debListParser::Package() {
-   string Result = Section.Find(pkgTagSection::Key::Package).to_string();
+   string Result{Section.Find(pkgTagSection::Key::Package)};
 
    // Normalize mixed case package names to lower case, like dpkg does
    // See Bug#807012 for details.
@@ -93,7 +94,7 @@ string debListParser::Package() {
 // ListParser::Architecture - Return the package arch			/*{{{*/
 // ---------------------------------------------------------------------
 /* This will return the Architecture of the package this section describes */
-APT::StringView debListParser::Architecture() {
+std::string_view debListParser::Architecture() {
    auto const Arch = Section.Find(pkgTagSection::Key::Architecture);
    return Arch.empty() ? "none" : Arch;
 }
@@ -108,9 +109,9 @@ bool debListParser::ArchitectureAll() {
 // ListParser::Version - Return the version string			/*{{{*/
 // ---------------------------------------------------------------------
 /* This is to return the string describing the version in debian form,
-   epoch:upstream-release. If this returns the blank string then the 
+   epoch:upstream-release. If this returns the blank string then the
    entry is assumed to only describe package properties */
-APT::StringView debListParser::Version()
+std::string_view debListParser::Version()
 {
    return Section.Find(pkgTagSection::Key::Version);
 }
@@ -119,9 +120,9 @@ unsigned char debListParser::ParseMultiArch(bool const showErrors)	/*{{{*/
 {
    unsigned char MA;
    auto const MultiArch = Section.Find(pkgTagSection::Key::Multi_Arch);
-   if (MultiArch.empty() == true || MultiArch == "no")
+   if (MultiArch.empty() == true || MultiArch == "no"sv)
       MA = pkgCache::Version::No;
-   else if (MultiArch == "same") {
+   else if (MultiArch == "same"sv) {
       if (ArchitectureAll() == true)
       {
 	 if (showErrors == true)
@@ -132,15 +133,15 @@ unsigned char debListParser::ParseMultiArch(bool const showErrors)	/*{{{*/
       else
 	 MA = pkgCache::Version::Same;
    }
-   else if (MultiArch == "foreign")
+   else if (MultiArch == "foreign"sv)
       MA = pkgCache::Version::Foreign;
-   else if (MultiArch == "allowed")
+   else if (MultiArch == "allowed"sv)
       MA = pkgCache::Version::Allowed;
    else
    {
       if (showErrors == true)
-	 _error->Warning("Unknown Multi-Arch type '%s' for package '%s'",
-	       MultiArch.to_string().c_str(), Package().c_str());
+	 _error->Warning("Unknown Multi-Arch type '%.*s' for package '%s'",
+	       (int)MultiArch.size(), MultiArch.data(), Package().c_str());
       MA = pkgCache::Version::No;
    }
 
@@ -168,8 +169,8 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver)
    pkgCache::GrpIterator G = Ver.ParentPkg().Group();
 
    // Setup the defaults
-   Ver->SourcePkgName = G->Name;
-   Ver->SourceVerStr = Ver->VerStr;
+   Ver.SourceVersion()->Group = G.MapPointer();
+   Ver.SourceVersion()->VerStr = Ver->VerStr;
 
    // Parse the name and version str
    if (Section.Find(pkgTagSection::Key::Source,Start,Stop) == true)
@@ -185,19 +186,19 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver)
 	    const char * const Close = static_cast<const char *>(memchr(Open, ')', Stop - Open));
 	    if (likely(Close != NULL))
 	    {
-	       APT::StringView const version(Open + 1, (Close - Open) - 1);
+	       std::string_view const version(Open + 1, (Close - Open) - 1);
 	       if (version != Ver.VerStr())
 	       {
 		  map_stringitem_t const idx = StoreString(pkgCacheGenerator::VERSIONNUMBER, version);
 		  G = Ver.ParentPkg().Group();
-		  Ver->SourceVerStr = idx;
+		  Ver.SourceVersion()->VerStr = idx;
 	       }
 	    }
 	 }
 	 Stop = Space;
       }
 
-      APT::StringView const pkgname(Start, Stop - Start);
+      std::string_view const pkgname(Start, Stop - Start);
       // Oh, our group is the wrong one for the source package. Make a new one.
       if (pkgname != G.Name())
       {
@@ -207,7 +208,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver)
    }
 
    // Link into by source package group.
-   Ver->SourcePkgName = G->Name;
+   Ver.SourceVersion()->Group = G.MapPointer();
    Ver->NextInSource = G->VersionsInSource;
    G->VersionsInSource = Ver.MapPointer();
 
@@ -221,7 +222,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver)
    // Priority
    if (Section.Find(pkgTagSection::Key::Priority,Start,Stop) == true)
    {
-      if (GrabWord(StringView(Start,Stop-Start),PrioList,Ver->Priority) == false)
+      if (GrabWord(string_view(Start,Stop-Start),PrioList,Ver->Priority) == false)
 	 Ver->Priority = pkgCache::State::Extra;
    }
 
@@ -268,7 +269,7 @@ std::vector<std::string> debListParser::AvailableDescriptionLanguages()
 	 continue;
       }
       memcpy(buf + prefixLen, lang.c_str(), lang.size());
-      if (Section.Exists(StringView(buf, prefixLen + lang.size())) == true)
+      if (Section.Exists(string_view(buf, prefixLen + lang.size())) == true)
 	 avail.push_back(lang);
    }
    return avail;
@@ -280,32 +281,14 @@ std::vector<std::string> debListParser::AvailableDescriptionLanguages()
    description. If no Description-md5 is found in the section it will be
    calculated.
  */
-APT::StringView debListParser::Description_md5()
+std::string_view debListParser::Description_md5()
 {
-   StringView const value = Section.Find(pkgTagSection::Key::Description_md5);
-   if (unlikely(value.empty() == true))
-   {
-      StringView const desc = Section.Find(pkgTagSection::Key::Description);
-      if (desc == "\n")
-	 return StringView();
-
-      Hashes md5(Hashes::MD5SUM);
-      md5.Add(desc.data(), desc.size());
-      md5.Add("\n");
-      MD5Buffer = md5.GetHashString(Hashes::MD5SUM).HashValue();
-      return StringView(MD5Buffer);
-   }
-   else if (likely(value.size() == 32))
-   {
-      return value;
-   }
-   _error->Error("Malformed Description-md5 line; doesn't have the required length (32 != %d) '%.*s'", (int)value.size(), (int)value.length(), value.data());
-   return StringView();
+   return Section.Find(pkgTagSection::Key::Description_md5);
 }
                                                                         /*}}}*/
 // ListParser::UsePackage - Update a package structure			/*{{{*/
 // ---------------------------------------------------------------------
-/* This is called to update the package with any new information 
+/* This is called to update the package with any new information
    that might be found in the section */
 bool debListParser::UsePackage(pkgCache::PkgIterator &Pkg,
 			       pkgCache::VerIterator &Ver)
@@ -367,7 +350,7 @@ uint32_t debListParser::VersionHash()
       const char *End;
       if (Section.Find(I,Start,End) == false)
 	 continue;
-      
+
       /* Strip out any spaces from the text, this undoes dpkgs reformatting
          of certain fields. dpkg also has the rather interesting notion of
          reformatting depends operators < -> <=, so we drop all = from the
@@ -386,7 +369,7 @@ uint32_t debListParser::VersionHash()
 
 
    }
-   
+
    return Result;
 }
 									/*}}}*/
@@ -436,7 +419,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
                           {"deinstall",pkgCache::State::DeInstall},
                           {"purge",pkgCache::State::Purge},
                           {"", 0}};
-   if (GrabWord(StringView(Start,I-Start),WantList,Pkg->SelectedState) == false)
+   if (GrabWord(string_view(Start,I-Start),WantList,Pkg->SelectedState) == false)
       return _error->Error("Malformed 1st word in the Status line");
 
    // Isloate the next word
@@ -452,7 +435,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
                           {"hold",pkgCache::State::HoldInst},
                           {"hold-reinstreq",pkgCache::State::HoldReInstReq},
                           {"", 0}};
-   if (GrabWord(StringView(Start,I-Start),FlagList,Pkg->InstState) == false)
+   if (GrabWord(string_view(Start,I-Start),FlagList,Pkg->InstState) == false)
       return _error->Error("Malformed 2nd word in the Status line");
 
    // Isloate the last word
@@ -472,12 +455,12 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
                             {"triggers-pending",pkgCache::State::TriggersPending},
                             {"installed",pkgCache::State::Installed},
                             {"", 0}};
-   if (GrabWord(StringView(Start,I-Start),StatusList,Pkg->CurrentState) == false)
+   if (GrabWord(string_view(Start,I-Start),StatusList,Pkg->CurrentState) == false)
       return _error->Error("Malformed 3rd word in the Status line");
 
    /* A Status line marks the package as indicating the current
       version as well. Only if it is actually installed.. Otherwise
-      the interesting dpkg handling of the status file creates bogus 
+      the interesting dpkg handling of the status file creates bogus
       entries. */
    if (!(Pkg->CurrentState == pkgCache::State::NotInstalled ||
 	 Pkg->CurrentState == pkgCache::State::ConfigFiles))
@@ -487,7 +470,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
       else
 	 Pkg->CurrentVer = Ver.MapPointer();
    }
-   
+
    return true;
 }
 
@@ -504,18 +487,18 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op)
 	 Op = pkgCache::Dep::LessEq;
 	 break;
       }
-      
+
       if (*I == '<')
       {
 	 I++;
 	 Op = pkgCache::Dep::Less;
 	 break;
       }
-      
+
       // < is the same as <= and << is really Cs < for some reason
       Op = pkgCache::Dep::LessEq;
       break;
-      
+
       case '>':
       I++;
       if (*I == '=')
@@ -524,23 +507,33 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op)
 	 Op = pkgCache::Dep::GreaterEq;
 	 break;
       }
-      
+
       if (*I == '>')
       {
 	 I++;
 	 Op = pkgCache::Dep::Greater;
 	 break;
       }
-      
+
       // > is the same as >= and >> is really Cs > for some reason
       Op = pkgCache::Dep::GreaterEq;
       break;
-      
+
       case '=':
       Op = pkgCache::Dep::Equals;
       I++;
       break;
-      
+
+      // != is unsupported packaging
+      case '!':
+      if (*(I + 1) == '=')
+      {
+	 I = I + 2;
+	 Op = pkgCache::Dep::NotEquals;
+	 break;
+      }
+      [[fallthrough]];
+
       // HACK around bad package definitions
       default:
       Op = pkgCache::Dep::Equals;
@@ -560,19 +553,19 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
 					bool const &ParseRestrictionsList,
 				        string const &Arch)
 {
-   StringView PackageView;
-   StringView VerView;
+   string_view PackageView;
+   string_view VerView;
 
    auto res = ParseDepends(Start, Stop, PackageView, VerView, Op, (bool)ParseArchFlags,
    (bool) StripMultiArch, (bool) ParseRestrictionsList, Arch);
-   Package = PackageView.to_string();
-   Ver = VerView.to_string();
+   Package = PackageView;
+   Ver = VerView;
 
    return res;
 }
 
 const char *debListParser::ParseDepends(const char *Start, const char *Stop,
-					StringView &Package, StringView &Ver,
+					string_view &Package, string_view &Ver,
 					unsigned int &Op, bool ParseArchFlags,
 					bool StripMultiArch,
 					bool ParseRestrictionsList, string Arch)
@@ -581,27 +574,27 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop,
       Arch = _config->Find("APT::Architecture");
    // Strip off leading space
    for (;Start != Stop && isspace_ascii(*Start) != 0; ++Start);
-   
+
    // Parse off the package name
    const char *I = Start;
    for (;I != Stop && isspace_ascii(*I) == 0 && *I != '(' && *I != ')' &&
 	*I != ',' && *I != '|' && *I != '[' && *I != ']' &&
 	*I != '<' && *I != '>'; ++I);
-   
+
    // Malformed, no '('
    if (I != Stop && *I == ')')
       return 0;
 
    if (I == Start)
       return 0;
-   
+
    // Stash the package name
-   Package = StringView(Start, I - Start);
+   Package = string_view(Start, I - Start);
 
    // We don't want to confuse library users which can't handle MultiArch
    if (StripMultiArch == true) {
       size_t const found = Package.rfind(':');
-      if (found != StringView::npos &&
+      if (found != string_view::npos &&
 	  (Package.substr(found) == ":any" ||
 	   Package.substr(found) == ":native" ||
 	   Package.substr(found +1) == Arch))
@@ -610,96 +603,93 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop,
 
    // Skip white space to the '('
    for (;I != Stop && isspace_ascii(*I) != 0 ; I++);
-   
+
    // Parse a version
    if (I != Stop && *I == '(')
    {
       // Skip the '('
       for (I++; I != Stop && isspace_ascii(*I) != 0 ; I++);
-      if (I + 3 >= Stop)
+      if (I + 3 > Stop)
 	 return 0;
       I = ConvertRelation(I,Op);
-      
+
       // Skip whitespace
       for (;I != Stop && isspace_ascii(*I) != 0; I++);
       Start = I;
       I = (const char*) memchr(I, ')', Stop - I);
       if (I == NULL || Start == I)
 	 return 0;
-      
+
       // Skip trailing whitespace
       const char *End = I;
       for (; End > Start && isspace_ascii(End[-1]); End--);
-      
-      Ver = StringView(Start,End-Start);
+
+      Ver = string_view(Start,End-Start);
       I++;
    }
    else
    {
-      Ver = StringView();
+      Ver = string_view();
       Op = pkgCache::Dep::NoOp;
    }
-   
+
    // Skip whitespace
    for (;I != Stop && isspace_ascii(*I) != 0; I++);
 
-   if (unlikely(ParseArchFlags == true))
+   // Parse architecture restrictions
+   if (ParseArchFlags && I != Stop && *I == '[')
    {
+      for (++I; I != Stop && isspace_ascii(*I) != 0 && *I != ']'; ++I);
+      // malformed
+      if (unlikely(I == Stop || *I == ']'))
+	 return 0;
+
       APT::CacheFilter::PackageArchitectureMatchesSpecification matchesArch(Arch, false);
 
-      // Parse an architecture
-      if (I != Stop && *I == '[')
+      bool Found = false;
+      bool NegArch = false;
+      while (I < Stop && *I != ']')
       {
-	 ++I;
-	 // malformed
-	 if (unlikely(I == Stop))
-	    return 0;
-
+	 // look for whitespace or ending ']' to end current Arch
 	 const char *End = I;
-	 bool Found = false;
-	 bool NegArch = false;
-	 while (I != Stop)
-	 {
-	    // look for whitespace or ending ']'
-	    for (;End != Stop && !isspace_ascii(*End) && *End != ']'; ++End);
-
-	    if (unlikely(End == Stop))
-	       return 0;
-
-	    if (*I == '!')
-	    {
-	       NegArch = true;
-	       ++I;
-	    }
-
-	    std::string const arch(I, End);
-	    if (arch.empty() == false && matchesArch(arch.c_str()) == true)
-	    {
-	       Found = true;
-	       if (I[-1] != '!')
-		  NegArch = false;
-	       // we found a match, so fast-forward to the end of the wildcards
-	       for (; End != Stop && *End != ']'; ++End);
-	    }
+	 for (;End < Stop && isspace_ascii(*End) == 0 && *End != ']'; ++End);
 
-	    if (*End++ == ']') {
-	       I = End;
-	       break;
-	    }
+	 if (unlikely(End >= Stop))
+	    return 0;
 
-	    I = End;
-	    for (;I != Stop && isspace_ascii(*I) != 0; I++);
+	 bool CurNegArch = false;
+	 if (*I == '!')
+	 {
+	    NegArch = true;
+	    CurNegArch = true;
+	    ++I;
 	 }
 
-	 if (NegArch == true)
-	    Found = !Found;
+	 if (I >= End)
+	    return 0;
+	 std::string const arch(I, End);
+	 if (matchesArch(arch.c_str()))
+	 {
+	    Found = true;
+	    if (not CurNegArch)
+	       NegArch = false;
+	    // we found a match, so fast-forward to the end of the wildcards
+	    for (; End < Stop && *End != ']'; ++End);
+	 }
+	 else
+	    for (; End < Stop && isspace_ascii(*End) != 0; ++End);
 
-	 if (Found == false)
-	    Package = ""; /* not for this arch */
+	 I = End;
       }
 
+      if (NegArch == true)
+	 Found = not Found;
+
+      if (Found == false)
+	 Package = ""; /* not for this arch */
+
       // Skip whitespace
-      for (;I != Stop && isspace_ascii(*I) != 0; I++);
+      for (++I; I < Stop && isspace_ascii(*I) != 0; ++I);
    }
 
    if (unlikely(ParseRestrictionsList == true))
@@ -795,14 +785,14 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop,
 
    if (I != Stop && *I == '|')
       Op |= pkgCache::Dep::Or;
-   
+
    if (I == Stop || *I == ',' || *I == '|')
    {
       if (I != Stop)
 	 for (I++; I != Stop && isspace_ascii(*I) != 0; I++);
       return I;
    }
-   
+
    return 0;
 }
 									/*}}}*/
@@ -823,8 +813,8 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver,
 
    while (1)
    {
-      StringView Package;
-      StringView Version;
+      string_view Package;
+      string_view Version;
       unsigned int Op;
 
       Start = ParseDepends(Start, Stop, Package, Version, Op, false, false, false, myArch);
@@ -856,7 +846,7 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver,
 	 // … but this is probably the best thing to do anyway
 	 if (Package.substr(found + 1) == "native")
 	 {
-	    std::string const Pkg = Package.substr(0, found).to_string() + ':' + Ver.Cache()->NativeArch();
+	    std::string const Pkg = std::string{Package, 0, found}.append(":").append(Ver.Cache()->NativeArch());
 	    if (NewDepends(Ver, Pkg, "any", Version, Op | pkgCache::Dep::ArchSpecific, Type) == false)
 	       return false;
 	 }
@@ -895,10 +885,10 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
    bool const barbarianArch = not APT::Configuration::checkArchitecture(Arch);
    const char *Start;
    const char *Stop;
-   if (Section.Find(pkgTagSection::Key::Provides,Start,Stop) == true)
+   if (Section.Find(pkgTagSection::Key::Provides,Start,Stop) && Start != Stop)
    {
-      StringView Package;
-      StringView Version;
+      string_view Package;
+      string_view Version;
       unsigned int Op;
 
       do
@@ -908,9 +898,9 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
 	 if (Start == 0)
 	    return _error->Error("Problem parsing Provides line of %s:%s=%s", Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr());
 	 if (unlikely(Op != pkgCache::Dep::NoOp && Op != pkgCache::Dep::Equals)) {
-	    _error->Warning("Ignoring non-equal Provides for package %s in %s:%s=%s", Package.to_string().c_str(), Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr());
+	    _error->Warning("Ignoring non-equal Provides for package %.*s in %s:%s=%s", (int)Package.size(), Package.data(), Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr());
 	 } else if (archfound != string::npos) {
-	    StringView spzArch = Package.substr(archfound + 1);
+	    string_view spzArch = Package.substr(archfound + 1);
 	    if (spzArch != "any")
 	    {
 	       if (NewProvides(Ver, Package.substr(0, archfound), spzArch, Version, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
@@ -929,7 +919,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
 	 } else {
 	    if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed && not barbarianArch)
 	    {
-	       if (NewProvides(Ver, Package.to_string().append(":any"), "any", Version, pkgCache::Flag::MultiArchImplicit) == false)
+	       if (NewProvides(Ver, std::string{Package}.append(":any"), "any", Version, pkgCache::Flag::MultiArchImplicit) == false)
 		  return false;
 	    }
 	    if (NewProvides(Ver, Package, Arch, Version, 0) == false)
@@ -937,7 +927,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
 	 }
 	 if (archfound == std::string::npos)
 	 {
-	    string spzName = Package.to_string();
+	    string spzName{Package};
 	    spzName.push_back(':');
 	    spzName.append(Ver.ParentPkg().Arch());
 	    pkgCache::PkgIterator const spzPkg = Ver.Cache()->FindPkg(spzName, "any");
@@ -980,7 +970,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
 // ListParser::GrabWord - Matches a word and returns			/*{{{*/
 // ---------------------------------------------------------------------
 /* Looks for a word in a list of words - for ParseStatus */
-bool debListParser::GrabWord(StringView Word, WordList const *List, unsigned char &Out)
+bool debListParser::GrabWord(string_view Word, WordList const *List, unsigned char &Out)
 {
    for (unsigned int C = 0; List[C].Str.empty() == false; C++)
    {
@@ -1011,7 +1001,7 @@ unsigned char debListParser::GetPrio(string Str)
    unsigned char Out;
    if (GrabWord(Str,PrioList,Out) == false)
       Out = pkgCache::State::Extra;
-   
+
    return Out;
 }
 									/*}}}*/
diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h
index eefce2a..ff1bfa0 100644
--- a/apt-pkg/deb/deblistparser.h
+++ b/apt-pkg/deb/deblistparser.h
@@ -1,10 +1,10 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
-   Debian Package List Parser - This implements the abstract parser 
+
+   Debian Package List Parser - This implements the abstract parser
    interface for Debian package files
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef PKGLIB_DEBLISTPARSER_H
@@ -14,10 +14,13 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgcachegen.h>
 #include <apt-pkg/tagfile.h>
+#ifdef APT_COMPILING_APT
+#include <apt-pkg/tagfile-keys.h>
+#endif
 
 #include <string>
+#include <string_view>
 #include <vector>
-#include <apt-pkg/string_view.h>
 
 
 class FileFd;
@@ -29,7 +32,7 @@ class APT_HIDDEN debListParser : public pkgCacheListParser
    // Parser Helper
    struct WordList
    {
-      APT::StringView Str;
+      std::string_view Str;
       unsigned char Val;
    };
 
@@ -49,29 +52,29 @@ class APT_HIDDEN debListParser : public pkgCacheListParser
 		     unsigned int Type);
    bool ParseProvides(pkgCache::VerIterator &Ver);
 
-   APT_HIDDEN static bool GrabWord(APT::StringView Word,const WordList *List,unsigned char &Out);
+   APT_HIDDEN static bool GrabWord(std::string_view Word,const WordList *List,unsigned char &Out);
    APT_HIDDEN unsigned char ParseMultiArch(bool const showErrors);
 
    public:
 
    APT_PUBLIC static unsigned char GetPrio(std::string Str);
-      
+
    // These all operate against the current section
-   virtual std::string Package() APT_OVERRIDE;
-   virtual bool ArchitectureAll() APT_OVERRIDE;
-   virtual APT::StringView Architecture() APT_OVERRIDE;
-   virtual APT::StringView Version() APT_OVERRIDE;
-   virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE;
-   virtual std::vector<std::string> AvailableDescriptionLanguages() APT_OVERRIDE;
-   virtual APT::StringView Description_md5() APT_OVERRIDE;
-   virtual uint32_t VersionHash() APT_OVERRIDE;
-   virtual bool SameVersion(uint32_t Hash, pkgCache::VerIterator const &Ver) APT_OVERRIDE;
-   virtual bool UsePackage(pkgCache::PkgIterator &Pkg,
-			   pkgCache::VerIterator &Ver) APT_OVERRIDE;
-   virtual map_filesize_t Offset() APT_OVERRIDE {return iOffset;};
-   virtual map_filesize_t Size() APT_OVERRIDE {return Section.size();};
-
-   virtual bool Step() APT_OVERRIDE;
+   std::string Package() override;
+   bool ArchitectureAll() override;
+   std::string_view Architecture() override;
+   std::string_view Version() override;
+   bool NewVersion(pkgCache::VerIterator &Ver) override;
+   std::vector<std::string> AvailableDescriptionLanguages() override;
+   std::string_view Description_md5() override;
+   uint32_t VersionHash() override;
+   bool SameVersion(uint32_t Hash, pkgCache::VerIterator const &Ver) override;
+   bool UsePackage(pkgCache::PkgIterator &Pkg,
+		   pkgCache::VerIterator &Ver) override;
+   map_filesize_t Offset() override { return iOffset; };
+   map_filesize_t Size() override { return Section.size(); };
+
+   bool Step() override;
 
    APT_PUBLIC static const char *ParseDepends(const char *Start, const char *Stop,
 					      std::string &Package, std::string &Ver, unsigned int &Op,
@@ -80,16 +83,23 @@ class APT_HIDDEN debListParser : public pkgCacheListParser
 					      std::string const &Arch = "");
 
    APT_PUBLIC static const char *ParseDepends(const char *Start, const char *Stop,
-					      APT::StringView &Package,
-					      APT::StringView &Ver, unsigned int &Op,
-					      bool const ParseArchFlags = false, bool StripMultiArch = true,
-					      bool const ParseRestrictionsList = false,
+					      std::string_view &Package,
+					      std::string_view &Ver, unsigned int &Op,
+					      bool ParseArchFlags = false, bool StripMultiArch = true,
+					      bool ParseRestrictionsList = false,
 					      std::string Arch = "");
 
    APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op);
 
    explicit debListParser(FileFd *File);
-   virtual ~debListParser();
+   ~debListParser() override;
+
+#ifdef APT_COMPILING_APT
+   std::string_view SHA256() const
+   {
+      return Section.Find(pkgTagSection::Key::SHA256);
+   }
+#endif
 };
 
 class APT_HIDDEN debDebFileParser : public debListParser
@@ -99,25 +109,25 @@ class APT_HIDDEN debDebFileParser : public debListParser
 
  public:
    debDebFileParser(FileFd *File, std::string const &DebFile);
-   virtual bool UsePackage(pkgCache::PkgIterator &Pkg,
-			   pkgCache::VerIterator &Ver) APT_OVERRIDE;
+   bool UsePackage(pkgCache::PkgIterator &Pkg,
+		   pkgCache::VerIterator &Ver) override;
 };
 
 class APT_HIDDEN debTranslationsParser : public debListParser
 {
  public:
    // a translation can never be a real package
-   virtual APT::StringView Architecture() APT_OVERRIDE { return ""; }
-   virtual APT::StringView Version() APT_OVERRIDE { return ""; }
+ std::string_view Architecture() override { return {}; }
+ std::string_view Version() override { return {}; }
 
-   explicit debTranslationsParser(FileFd *File)
-      : debListParser(File) {};
+ explicit debTranslationsParser(FileFd *File)
+     : debListParser(File) {};
 };
 
 class APT_HIDDEN debStatusListParser : public debListParser
 {
  public:
-   virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE;
+   bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) override;
    explicit debStatusListParser(FileFd *File)
       : debListParser(File) {};
 };
diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc
index c6005f1..c53b008 100644
--- a/apt-pkg/deb/debmetaindex.cc
+++ b/apt-pkg/deb/debmetaindex.cc
@@ -17,6 +17,7 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <cassert>
 #include <map>
 #include <optional>
 #include <sstream>
@@ -24,7 +25,7 @@
 #include <utility>
 #include <vector>
 
-#include <string.h>
+#include <cstring>
 #include <sys/stat.h>
 
 #include <apti18n.h>
@@ -74,7 +75,7 @@ static std::string NormalizeSignedBy(std::string SignedBy, bool const Introducer
       return os.str();
    }
 
-   // we could go all fancy and allow short/long/string matches as gpgv/apt-key does,
+   // we could go all fancy and allow short/long/string matches as gpgv does,
    // but fingerprints are harder to fake than the others and this option is set once,
    // not interactively all the time so easy to type is not really a concern.
    std::transform(SignedBy.begin(), SignedBy.end(), SignedBy.begin(), [](char const c) {
@@ -123,6 +124,9 @@ class APT_HIDDEN debReleaseIndexPrivate					/*{{{*/
    time_t DateMaxFuture;
    time_t NotBefore;
 
+   std::string Snapshot;
+   std::string SnapshotsServer;
+
    std::vector<std::string> Architectures;
    std::vector<std::string> NoSupportForAll;
    std::vector<std::string> SupportedComponents;
@@ -479,6 +483,7 @@ bool debReleaseIndex::Load(std::string const &Filename, std::string * const Erro
    Suite = Section.FindS("Suite");
    Codename = Section.FindS("Codename");
    ReleaseNotes = Section.FindS("Release-Notes");
+   d->SnapshotsServer = Section.FindS("Snapshots");
    {
       std::string const archs = Section.FindS("Architectures");
       if (archs.empty() == false)
@@ -528,7 +533,7 @@ bool debReleaseIndex::Load(std::string const &Filename, std::string * const Erro
 	 if (!parseSumData(Start, End, Name, Hash, Size))
 	    return false;
 
-	 HashString const hs(hashinfo.name.to_string(), Hash);
+	 HashString const hs(std::string{hashinfo.name}, Hash);
          if (Entries.find(Name) == Entries.end())
          {
             metaIndex::checkSum *Sum = new metaIndex::checkSum;
@@ -693,7 +698,7 @@ bool debReleaseIndex::parseSumData(const char *&Start, const char *End,	/*{{{*/
       Start++;
    if (Start >= End)
       return false;
-   
+
    EntryEnd = Start;
    /* Find the end of the second entry (the size) */
    while ((*EntryEnd != '\t' && *EntryEnd != ' ' )
@@ -701,19 +706,19 @@ bool debReleaseIndex::parseSumData(const char *&Start, const char *End,	/*{{{*/
       EntryEnd++;
    if (EntryEnd == End)
       return false;
-   
+
    Size = strtoull (Start, NULL, 10);
-      
+
    /* Skip over intermediate blanks */
    Start = EntryEnd;
    while (*Start == '\t' || *Start == ' ')
       Start++;
    if (Start >= End)
       return false;
-   
+
    EntryEnd = Start;
    /* Find the end of the third entry (the filename) */
-   while ((*EntryEnd != '\t' && *EntryEnd != ' ' && 
+   while ((*EntryEnd != '\t' && *EntryEnd != ' ' &&
            *EntryEnd != '\n' && *EntryEnd != '\r')
 	  && EntryEnd < End)
       EntryEnd++;
@@ -789,6 +794,18 @@ bool debReleaseIndex::SetDateMaxFuture(time_t const DateMaxFuture)
       return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Date-Max-Future", URI.c_str(), Dist.c_str());
    return true;
 }
+bool debReleaseIndex::SetSnapshot(std::string const Snapshot)
+{
+   if (d->Snapshot.empty())
+      d->Snapshot = Snapshot;
+   else if (d->Snapshot != Snapshot)
+      return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Snapshot", URI.c_str(), Dist.c_str());
+   return true;
+}
+std::string debReleaseIndex::GetSnapshotsServer() const
+{
+   return d->SnapshotsServer;
+}
 bool debReleaseIndex::SetSignedBy(std::string const &pSignedBy)
 {
    if (SignedBy.empty() == true && pSignedBy.empty() == false)
@@ -800,6 +817,8 @@ bool debReleaseIndex::SetSignedBy(std::string const &pSignedBy)
    else
    {
       auto const normalSignedBy = NormalizeSignedBy(pSignedBy, true);
+      if (normalSignedBy.empty() == true)
+         return true;
       if (normalSignedBy != SignedBy)
 	 return _error->Error(_("Conflicting values set for option %s regarding source %s %s: %s != %s"), "Signed-By", URI.c_str(), Dist.c_str(), SignedBy.c_str(), normalSignedBy.c_str());
    }
@@ -1123,6 +1142,17 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
 	 return defVal;
       return StringToBool(opt->second, defVal);
    }
+   static std::string GetSnapshotOption(std::map<std::string, std::string> const &Options, char const * const name, const std::string defVal="")
+   {
+      std::map<std::string, std::string>::const_iterator const opt = Options.find(name);
+      if (opt == Options.end())
+	 return defVal;
+      int boolVal = StringToBool(opt->second, -1);
+      if (boolVal != -1)
+	 return boolVal ? _config->Find("APT::Snapshot") : "";
+      return opt->second;
+   }
+
 
    static std::vector<std::string> GetMapKeys(std::map<std::string, std::string> const &Options)
    {
@@ -1131,6 +1161,8 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
       std::transform(Options.begin(), Options.end(), std::back_inserter(ret),
 		     [](auto &&O) { return O.first; });
       std::sort(ret.begin(), ret.end());
+      auto r = std::remove(ret.begin(), ret.end(), "SHADOWED");
+      ret.erase(r, ret.end());
       return ret;
    }
 
@@ -1167,7 +1199,7 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
       return true;
    }
 
-   static debReleaseIndex * GetDebReleaseIndexBy(std::vector<metaIndex *> &List, std::string const &URI,
+   static debReleaseIndex * GetDebReleaseIndexBy(std::vector<metaIndex *> &List, std::string URI,
 			   std::string const &Dist, std::map<std::string, std::string> const &Options)
    {
       std::map<std::string, std::string> ReleaseOptions{{
@@ -1182,6 +1214,8 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
 	 ReleaseOptions.emplace("ALLOW_WEAK", "true");
       if (GetBoolOption(Options, "allow-downgrade-to-insecure", _config->FindB("Acquire::AllowDowngradeToInsecureRepositories")))
 	 ReleaseOptions.emplace("ALLOW_DOWNGRADE_TO_INSECURE", "true");
+      if (GetBoolOption(Options, "SHADOWED", false))
+	 ReleaseOptions.emplace("SHADOWED", "true");
 
       auto InReleasePath = Options.find("inrelease-path");
       if (InReleasePath != Options.end())
@@ -1221,10 +1255,132 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
    }
 
    protected:
+   // This is a duplicate of pkgAcqChangelog::URITemplate()  with some changes to work
+   // on metaIndex instead of cache structures, and using Snapshots
+   std::string SnapshotServer(debReleaseIndex const *Rls) const
+   {
+      if (Rls->GetLabel().empty() && Rls->GetOrigin().empty())
+	 return "";
+      std::string const serverConfig = "Acquire::Snapshots::URI";
+      std::string server;
+#define APT_EMPTY_SERVER        \
+   if (server.empty() == false) \
+   {                            \
+      return server;         \
+   }
+#define APT_CHECK_SERVER(X, Y)                                                                     \
+   if (not Rls->Get##X().empty())                                                                  \
+   {                                                                                               \
+      std::string const specialServerConfig = serverConfig + "::" + Y + #X + "::" + Rls->Get##X(); \
+      server = _config->Find(specialServerConfig);                                                 \
+      APT_EMPTY_SERVER                                                                             \
+   }
+      // this way e.g. Debian-Security can fallback to Debian
+      APT_CHECK_SERVER(Label, "Override::")
+      APT_CHECK_SERVER(Origin, "Override::")
+
+      server = Rls->GetSnapshotsServer();
+      APT_EMPTY_SERVER
+
+      APT_CHECK_SERVER(Label, "")
+      APT_CHECK_SERVER(Origin, "")
+#undef APT_CHECK_SERVER
+#undef APT_EMPTY_SERVER
+      return "";
+   }
+
+   /// \brief Given a hostname, strip one level down, e.g. a.b.c -> .b.c -> .c, this
+   ///        allows you to match a.b.c against itself, .b.c, and .c, but not b.c
+   static inline std::string NextLevelDomain(std::string Host)
+   {
+      auto nextDot = Host.find(".", 1);
+      if (nextDot == Host.npos)
+	 return "";
+      return Host.substr(nextDot);
+   }
+   bool CreateItemInternal(std::vector<metaIndex *> &List, std::string URI,
+			   std::string const &Dist, std::string const &Section,
+			   bool const &IsSrc, std::map<std::string, std::string> Options) const
+   {
+      std::string SnapshotAptConf = _config->Find("APT::Snapshot");
+      std::string Snapshot = GetSnapshotOption(Options, "snapshot", SnapshotAptConf.empty() ? "" : SnapshotAptConf + "?");
+      if (not Snapshot.empty()) {
+	 std::map<std::string, std::string> SnapshotOptions = Options;
+
+	 Options.emplace("SHADOWED", "true");
+
+	 ::URI ArchiveURI(URI);
+	 // Trim trailing and leading / from the path because we don't want them when calculating snapshot url
+	 if (not ArchiveURI.Path.empty() && ArchiveURI.Path[ArchiveURI.Path.length() - 1] == '/')
+	    ArchiveURI.Path.erase(ArchiveURI.Path.length() - 1);
+	 if (not ArchiveURI.Path.empty() && ArchiveURI.Path[0] == '/')
+	    ArchiveURI.Path.erase(0, 1);
+	 std::string Server;
+
+	 auto const PreviousDeb = List.empty() ? nullptr : List.back();
+	 auto const Deb = GetDebReleaseIndexBy(List, URI, Dist, Options);
+	 std::string filename;
 
-   bool CreateItemInternal(std::vector<metaIndex *> &List, std::string const &URI,
+	 // The Release file and config based on that should be the ultimate source of truth.
+	 if (Deb && ReleaseFileName(Deb, filename))
+	 {
+	    auto OldDeb = dynamic_cast<debReleaseIndex *>(Deb->UnloadedClone());
+	    if (not OldDeb->Load(filename, nullptr))
+	       return _error->Error("Cannot identify snapshot server for %s %s - run update without snapshot id first", URI.c_str(), Dist.c_str());
+	    Server = SnapshotServer(OldDeb);
+	    delete OldDeb;
+	 }
+	 // We did not find a server based on the release file.
+	 // Lookup a fallback based on the host. For a.b.c, this will
+	 // try a.b.c, .b.c, and .c to allow generalization for cc.archive.ubuntu.com
+	 if (Server.empty())
+	 {
+	    for (std::string Host = ArchiveURI.Host; not Host.empty(); Host = NextLevelDomain(Host))
+	    {
+	       Server = _config->Find("Acquire::Snapshots::URI::Host::" + Host);
+	       if (not Server.empty())
+		  break;
+	    }
+	 }
+	 if (Server.empty() || Server == "no")
+	 {
+	    if (APT::String::Endswith(Snapshot, "?"))
+	    {
+	       // Erase the SHADOWED option and remove the release index from the list if we created it.
+	       Options.erase("SHADOWED");
+	       if (Deb && Deb != PreviousDeb) {
+		  assert(List.back() == Deb);
+		  List.pop_back();
+		  delete Deb;
+	       }
+	       goto nosnapshot;
+	    }
+	    if (Server != "no" && filename.empty())
+	       return _error->Error("Cannot identify snapshot server for %s %s - run update without snapshot id first", URI.c_str(), Dist.c_str());
+	    return _error->Error("Snapshots not supported for %s %s", URI.c_str(), Dist.c_str());
+	 }
+	 // We have found a server by now, so we enable snapshots for this source.
+	 if (APT::String::Endswith(Snapshot, "?"))
+	 {
+	    Snapshot.pop_back();
+	 }
+
+	 assert(not Snapshot.empty());
+	 auto SnapshotURI = SubstVar(SubstVar(Server, "@SNAPSHOTID@", Snapshot), "@PATH@", ArchiveURI.Path);
+
+	 if (not CreateItemInternalOne(List, SnapshotURI, Dist, Section, IsSrc, SnapshotOptions))
+	    return false;
+      }
+   nosnapshot:
+      if (not CreateItemInternalOne(List, URI, Dist, Section, IsSrc, Options))
+	 return false;
+
+
+      return true;
+   }
+   bool CreateItemInternalOne(std::vector<metaIndex *> &List, std::string URI,
 			   std::string const &Dist, std::string const &Section,
-			   bool const &IsSrc, std::map<std::string, std::string> const &Options) const
+			   bool const &IsSrc, std::map<std::string, std::string> Options) const
    {
       auto const Deb = GetDebReleaseIndexBy(List, URI, Dist, Options);
       if (Deb == nullptr)
@@ -1263,9 +1419,13 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type		/*{{{*/
 	  Deb->SetValidUntilMax(GetTimeOption(Options, "valid-until-max")) == false ||
 	  Deb->SetValidUntilMin(GetTimeOption(Options, "valid-until-min")) == false ||
 	  Deb->SetCheckDate(GetTriStateOption(Options, "check-date")) == false ||
-	  Deb->SetDateMaxFuture(GetTimeOption(Options, "date-max-future")) == false)
+	  Deb->SetDateMaxFuture(GetTimeOption(Options, "date-max-future")) == false ||
+	  Deb->SetSnapshot(GetSnapshotOption(Options, "snapshot")) == false)
 	 return false;
 
+      if (GetBoolOption(Options, "sourceslist-entry-is-deb822", false))
+	 Deb->SetFlag(metaIndex::Flag::DEB822);
+
       std::map<std::string, std::string>::const_iterator const signedby = Options.find("signed-by");
       if (signedby == Options.end())
       {
@@ -1315,7 +1475,7 @@ class APT_HIDDEN debSLTypeDeb : public debSLTypeDebian			/*{{{*/
 
    bool CreateItem(std::vector<metaIndex *> &List, std::string const &URI,
 		   std::string const &Dist, std::string const &Section,
-		   std::map<std::string, std::string> const &Options) const APT_OVERRIDE
+		   std::map<std::string, std::string> const &Options) const override
    {
       return CreateItemInternal(List, URI, Dist, Section, false, Options);
    }
@@ -1331,7 +1491,7 @@ class APT_HIDDEN debSLTypeDebSrc : public debSLTypeDebian		/*{{{*/
 
    bool CreateItem(std::vector<metaIndex *> &List, std::string const &URI,
 		   std::string const &Dist, std::string const &Section,
-		   std::map<std::string, std::string> const &Options) const APT_OVERRIDE
+		   std::map<std::string, std::string> const &Options) const override
    {
       return CreateItemInternal(List, URI, Dist, Section, true, Options);
    }
diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h
index 717f08e..7a6f1fb 100644
--- a/apt-pkg/deb/debmetaindex.h
+++ b/apt-pkg/deb/debmetaindex.h
@@ -30,20 +30,20 @@ class APT_HIDDEN debReleaseIndex : public metaIndex
 
    debReleaseIndex(std::string const &URI, std::string const &Dist, std::map<std::string,std::string> const &Options);
    debReleaseIndex(std::string const &URI, std::string const &Dist, bool const Trusted, std::map<std::string,std::string> const &Options);
-   virtual ~debReleaseIndex();
+   ~debReleaseIndex() override;
 
-   virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE;
-   virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) APT_OVERRIDE;
-   virtual std::vector<IndexTarget> GetIndexTargets() const APT_OVERRIDE;
+   [[nodiscard]] std::string ArchiveURI(std::string const &File) const override;
+   bool GetIndexes(pkgAcquire *Owner, bool const &GetAll = false) override;
+   [[nodiscard]] std::vector<IndexTarget> GetIndexTargets() const override;
 
-   virtual std::string Describe() const APT_OVERRIDE;
-   virtual pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool const ModifyCheck) const APT_OVERRIDE;
-   virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const APT_OVERRIDE;
+   [[nodiscard]] std::string Describe() const override;
+   pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool ModifyCheck) const override;
+   bool Merge(pkgCacheGenerator &Gen, OpProgress *Prog) const override;
 
-   virtual bool Load(std::string const &Filename, std::string * const ErrorText) APT_OVERRIDE;
-   virtual metaIndex * UnloadedClone() const APT_OVERRIDE;
+   bool Load(std::string const &Filename, std::string *ErrorText) override;
+   [[nodiscard]] metaIndex *UnloadedClone() const override;
 
-   virtual std::vector <pkgIndexFile *> *GetIndexFiles() APT_OVERRIDE;
+   std::vector<pkgIndexFile *> *GetIndexFiles() override;
 
    bool SetTrusted(TriState const Trusted);
    bool SetCheckValidUntil(TriState const Trusted);
@@ -51,15 +51,17 @@ class APT_HIDDEN debReleaseIndex : public metaIndex
    bool SetValidUntilMax(time_t const Valid);
    bool SetCheckDate(TriState const CheckDate);
    bool SetDateMaxFuture(time_t const DateMaxFuture);
+   bool SetSnapshot(std::string Snapshot);
+   std::string GetSnapshotsServer() const; // As defined in the Release file
    bool SetSignedBy(std::string const &SignedBy);
    std::map<std::string, std::string> GetReleaseOptions();
 
-   virtual bool IsTrusted() const APT_OVERRIDE;
-   bool IsArchitectureSupported(std::string const &arch) const override;
-   bool IsArchitectureAllSupportedFor(IndexTarget const &target) const override;
-   bool HasSupportForComponent(std::string const &component) const override;
+   [[nodiscard]] bool IsTrusted() const override;
+   [[nodiscard]] bool IsArchitectureSupported(std::string const &arch) const override;
+   [[nodiscard]] bool IsArchitectureAllSupportedFor(IndexTarget const &target) const override;
+   [[nodiscard]] bool HasSupportForComponent(std::string const &component) const override;
 
-   APT_PURE time_t GetNotBefore() const override;
+   [[nodiscard]] time_t GetNotBefore() const override APT_PURE;
 
    void AddComponent(std::string const &sourcesEntry,
 	 bool const isSrc, std::string const &Name,
diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc
index e2ffaef..625bfab 100644
--- a/apt-pkg/deb/debrecords.cc
+++ b/apt-pkg/deb/debrecords.cc
@@ -1,9 +1,9 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Debian Package Records - Parser for debian package records
-     
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -20,11 +20,11 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <cstring>
 #include <sstream>
 #include <string>
 #include <vector>
 #include <langinfo.h>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -58,13 +58,13 @@ debRecordParserBase::debRecordParserBase() : Parser(), d(NULL) {}
 // RecordParserBase::FileName - Return the archive filename on the site	/*{{{*/
 string debRecordParserBase::FileName()
 {
-   return Section.Find(pkgTagSection::Key::Filename).to_string();
+   return string{Section.Find(pkgTagSection::Key::Filename)};
 }
 									/*}}}*/
 // RecordParserBase::Name - Return the package name			/*{{{*/
 string debRecordParserBase::Name()
 {
-   auto Result = Section.Find(pkgTagSection::Key::Package).to_string();
+   auto Result = string{Section.Find(pkgTagSection::Key::Package)};
 
    // Normalize mixed case package names to lower case, like dpkg does
    // See Bug#807012 for details
@@ -76,7 +76,7 @@ string debRecordParserBase::Name()
 // RecordParserBase::Homepage - Return the package homepage		/*{{{*/
 string debRecordParserBase::Homepage()
 {
-   return Section.Find(pkgTagSection::Key::Homepage).to_string();
+   return string{Section.Find(pkgTagSection::Key::Homepage)};
 }
 									/*}}}*/
 // RecordParserBase::Hashes - return the available archive hashes	/*{{{*/
@@ -87,7 +87,7 @@ HashStringList debRecordParserBase::Hashes() const
    {
       std::string const hash = Section.FindS(*type);
       if (hash.empty() == false)
-	 hashes.push_back(HashString(*type, hash));
+	 hashes.push_back(HashString(*type, std::move(hash)));
    }
    auto const size = Section.FindULL(pkgTagSection::Key::Size, 0);
    if (size != 0)
@@ -98,7 +98,7 @@ HashStringList debRecordParserBase::Hashes() const
 // RecordParserBase::Maintainer - Return the maintainer email		/*{{{*/
 string debRecordParserBase::Maintainer()
 {
-   return Section.Find(pkgTagSection::Key::Maintainer).to_string();
+   return string{Section.Find(pkgTagSection::Key::Maintainer)};
 }
 									/*}}}*/
 // RecordParserBase::RecordField - Return the value of an arbitrary field	/*{{*/
@@ -135,20 +135,20 @@ string debRecordParserBase::LongDesc(std::string const &lang)
 	    break;
 	 else if (*l == "en")
 	 {
-	    orig = Section.Find(pkgTagSection::Key::Description).to_string();
+	    orig = Section.Find(pkgTagSection::Key::Description);
 	    if (orig.empty() == false)
 	       break;
 	 }
       }
       if (orig.empty() == true)
-	 orig = Section.Find(pkgTagSection::Key::Description).to_string();
+	 orig = Section.Find(pkgTagSection::Key::Description);
    }
    else
    {
       std::string const tagname = "Description-" + lang;
       orig = Section.FindS(tagname.c_str());
       if (orig.empty() == true && lang == "en")
-	 orig = Section.Find(pkgTagSection::Key::Description).to_string();
+	 orig = Section.Find(pkgTagSection::Key::Description);
    }
 
    char const * const codeset = nl_langinfo(CODESET);
@@ -166,7 +166,7 @@ static const char * const SourceVerSeparators = " ()";
 // RecordParserBase::SourcePkg - Return the source package name if any	/*{{{*/
 string debRecordParserBase::SourcePkg()
 {
-   auto Res = Section.Find(pkgTagSection::Key::Source).to_string();
+   auto Res = string{Section.Find(pkgTagSection::Key::Source)};
    auto const Pos = Res.find_first_of(SourceVerSeparators);
    if (Pos != std::string::npos)
       Res.erase(Pos);
@@ -176,22 +176,22 @@ string debRecordParserBase::SourcePkg()
 // RecordParserBase::SourceVer - Return the source version number if present	/*{{{*/
 string debRecordParserBase::SourceVer()
 {
-   auto const Pkg = Section.Find(pkgTagSection::Key::Source).to_string();
-   string::size_type Pos = Pkg.find_first_of(SourceVerSeparators);
-   if (Pos == string::npos)
+   std::string_view Pkg = Section.Find(pkgTagSection::Key::Source);
+   auto Pos = Pkg.find_first_of(SourceVerSeparators);
+   if (Pos == std::string_view::npos)
       return "";
 
-   string::size_type VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos);
-   if(VerStart == string::npos)
+   auto VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos);
+   if(VerStart == std::string_view::npos)
      return "";
 
-   string::size_type VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart);
-   if(VerEnd == string::npos)
+   auto VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart);
+   if(VerEnd == std::string_view::npos)
      // Corresponds to the case of, e.g., "foo (1.2" without a closing
      // paren.  Be liberal and guess what it means.
-     return string(Pkg, VerStart);
+     return string(Pkg.data(), VerStart);
    else
-     return string(Pkg, VerStart, VerEnd - VerStart);
+     return string(Pkg.data(), VerStart, VerEnd - VerStart);
 }
 									/*}}}*/
 // RecordParserBase::GetRec - Return the whole record			/*{{{*/
diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h
index 10ef917..050f039 100644
--- a/apt-pkg/deb/debrecords.h
+++ b/apt-pkg/deb/debrecords.h
@@ -29,26 +29,26 @@ class APT_HIDDEN debRecordParserBase : public pkgRecords::Parser
 
  public:
    // These refer to the archive file for the Version
-   virtual std::string FileName() APT_OVERRIDE;
-   virtual std::string SourcePkg() APT_OVERRIDE;
-   virtual std::string SourceVer() APT_OVERRIDE;
+   std::string FileName() override;
+   std::string SourcePkg() override;
+   std::string SourceVer() override;
 
-   virtual HashStringList Hashes() const APT_OVERRIDE;
+   [[nodiscard]] HashStringList Hashes() const override;
 
    // These are some general stats about the package
-   virtual std::string Maintainer() APT_OVERRIDE;
-   virtual std::string ShortDesc(std::string const &lang) APT_OVERRIDE;
-   virtual std::string LongDesc(std::string const &lang) APT_OVERRIDE;
-   virtual std::string Name() APT_OVERRIDE;
-   virtual std::string Homepage() APT_OVERRIDE;
+   std::string Maintainer() override;
+   std::string ShortDesc(std::string const &lang) override;
+   std::string LongDesc(std::string const &lang) override;
+   std::string Name() override;
+   std::string Homepage() override;
 
    // An arbitrary custom field
-   virtual std::string RecordField(const char *fieldName) APT_OVERRIDE;
+   std::string RecordField(const char *fieldName) override;
 
-   virtual void GetRec(const char *&Start,const char *&Stop) APT_OVERRIDE;
+   void GetRec(const char *&Start, const char *&Stop) override;
 
    debRecordParserBase();
-   virtual ~debRecordParserBase();
+   ~debRecordParserBase() override;
 };
 
 class APT_HIDDEN debRecordParser : public debRecordParserBase
@@ -58,12 +58,12 @@ class APT_HIDDEN debRecordParser : public debRecordParserBase
    FileFd File;
    pkgTagFile Tags;
 
-   virtual bool Jump(pkgCache::VerFileIterator const &Ver) APT_OVERRIDE;
-   virtual bool Jump(pkgCache::DescFileIterator const &Desc) APT_OVERRIDE;
+   bool Jump(pkgCache::VerFileIterator const &Ver) override;
+   bool Jump(pkgCache::DescFileIterator const &Desc) override;
 
  public:
    debRecordParser(std::string FileName,pkgCache &Cache);
-   virtual ~debRecordParser();
+   ~debRecordParser() override;
 };
 
 // custom record parser that reads deb files directly
@@ -76,14 +76,14 @@ class APT_HIDDEN debDebFileRecordParser : public debRecordParserBase
    APT_HIDDEN bool LoadContent();
  protected:
    // single file files, so no jumping whatsoever
-   bool Jump(pkgCache::VerFileIterator const &) APT_OVERRIDE;
-   bool Jump(pkgCache::DescFileIterator const &) APT_OVERRIDE;
+ bool Jump(pkgCache::VerFileIterator const &/*Ver*/) override;
+ bool Jump(pkgCache::DescFileIterator const & /*Desc*/) override;
 
  public:
-   virtual std::string FileName() APT_OVERRIDE;
+ std::string FileName() override;
 
-   explicit debDebFileRecordParser(std::string FileName);
-   virtual ~debDebFileRecordParser();
+ explicit debDebFileRecordParser(std::string FileName);
+ ~debDebFileRecordParser() override;
 };
 
 #endif
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
index 311bacf..6b3cae1 100644
--- a/apt-pkg/deb/debsrcrecords.cc
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -1,10 +1,10 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Debian Source Package Records - Parser implementation for Debian style
                                    source indexes
-      
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -22,12 +22,12 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
-#include <string>
+#include <cctype>
+#include <cstdlib>
+#include <cstring>
 #include <sstream>
+#include <string>
 #include <vector>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
 									/*}}}*/
 
 using std::max;
@@ -46,8 +46,8 @@ std::string debSrcRecordParser::Package() const				/*{{{*/
 {
    auto const name = Sect.Find(pkgTagSection::Key::Package);
    if (iIndex != nullptr || name.empty() == false)
-      return name.to_string();
-   return Sect.Find(pkgTagSection::Key::Source).to_string();
+      return std::string{name};
+   return std::string{Sect.Find(pkgTagSection::Key::Source)};
 }
 									/*}}}*/
 // SrcRecordParser::Binaries - Return the binaries field		/*{{{*/
@@ -93,9 +93,9 @@ const char **debSrcRecordParser::Binaries()
 									/*}}}*/
 // SrcRecordParser::BuildDepends - Return the Build-Depends information	/*{{{*/
 // ---------------------------------------------------------------------
-/* This member parses the build-depends information and returns a list of 
-   package/version records representing the build dependency. The returned 
-   array need not be freed and will be reused by the next call to this 
+/* This member parses the build-depends information and returns a list of
+   package/version records representing the build dependency. The returned
+   array need not be freed and will be reused by the next call to this
    function */
 bool debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps,
 					bool const &ArchOnly, bool const &StripMultiArch)
@@ -165,7 +165,7 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
    List.clear();
 
    // Stash the / terminated directory prefix
-   std::string Base = Sect.Find(pkgTagSection::Key::Directory).to_string();
+   std::string Base{Sect.Find(pkgTagSection::Key::Directory)};
    if (Base.empty() == false && Base[Base.length()-1] != '/')
       Base += '/';
 
@@ -177,7 +177,7 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
       auto const Files = Sect.Find(hashinfo.chksumskey);
       if (Files.empty() == true)
 	 continue;
-      std::istringstream ss(Files.to_string());
+      std::istringstream ss(std::string{Files});  // TODO: replace with std::string_view_stream in C++23
       ss.imbue(posix);
 
       while (ss.good())
@@ -193,9 +193,9 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
 	    ss >> hash >> size >> path;
 
 	 if (ss.fail() || hash.empty() || path.empty())
-	    return _error->Error("Error parsing file record in %s of source package %s", hashinfo.chksumsname.to_string().c_str(), Package().c_str());
+	    return _error->Error("Error parsing file record in %.*s of source package %s", (int)hashinfo.chksumsname.size(), hashinfo.chksumsname.data(), Package().c_str());
 
-	 HashString const hashString(hashinfo.name.to_string(), hash);
+	 HashString const hashString(std::string{hashinfo.name}, hash);
 	 if (Base.empty() == false)
 	    path = Base + path;
 
@@ -210,7 +210,7 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
 	 {
 	    // an error here indicates that we have two different hashes for the same file
 	    if (file->Hashes.push_back(hashString) == false)
-	       return _error->Error("Error parsing checksum in %s of source package %s", hashinfo.chksumsname.to_string().c_str(), Package().c_str());
+	       return _error->Error("Error parsing checksum in %.*s of source package %s", (int)hashinfo.chksumsname.size(), hashinfo.chksumsname.data(), Package().c_str());
 	    continue;
 	 }
 
diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h
index 1a0bbe0..a439efa 100644
--- a/apt-pkg/deb/debsrcrecords.h
+++ b/apt-pkg/deb/debsrcrecords.h
@@ -1,10 +1,10 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Debian Source Package Records - Parser implementation for Debian style
                                    source indexes
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef PKGLIB_DEBSRCRECORDS_H
@@ -15,9 +15,9 @@
 #include <apt-pkg/tagfile-keys.h>
 #include <apt-pkg/tagfile.h>
 
+#include <cstddef>
 #include <string>
 #include <vector>
-#include <stddef.h>
 
 class pkgIndexFile;
 
@@ -33,30 +33,29 @@ class APT_HIDDEN debSrcRecordParser : public pkgSrcRecords::Parser
    std::vector<const char*> StaticBinList;
    unsigned long iOffset;
    char *Buffer;
-   
-   public:
 
-   virtual bool Restart() APT_OVERRIDE {return Jump(0);};
-   virtual bool Step() APT_OVERRIDE {iOffset = Tags.Offset(); return Tags.Step(Sect);};
-   virtual bool Jump(unsigned long const &Off) APT_OVERRIDE {iOffset = Off; return Tags.Jump(Sect,Off);};
+   public:
+   bool Restart() override { return Jump(0); }
+   bool Step() override {iOffset = Tags.Offset(); return Tags.Step(Sect);}
+   bool Jump(unsigned long const &Off) override {iOffset = Off; return Tags.Jump(Sect,Off);}
 
-   virtual std::string Package() const APT_OVERRIDE;
-   virtual std::string Version() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Version).to_string();};
-   virtual std::string Maintainer() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Maintainer).to_string();};
-   virtual std::string Section() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Section).to_string();};
-   virtual const char **Binaries() APT_OVERRIDE;
-   virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) APT_OVERRIDE;
-   virtual unsigned long Offset() APT_OVERRIDE {return iOffset;};
-   virtual std::string AsStr() APT_OVERRIDE 
+   [[nodiscard]] std::string Package() const override;
+   [[nodiscard]] std::string Version() const override { return std::string{Sect.Find(pkgTagSection::Key::Version)}; }
+   [[nodiscard]] std::string Maintainer() const override { return std::string{Sect.Find(pkgTagSection::Key::Maintainer)}; }
+   [[nodiscard]] std::string Section() const override { return std::string{Sect.Find(pkgTagSection::Key::Section)}; }
+   const char **Binaries() override;
+   bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) override;
+   unsigned long Offset() override { return iOffset; }
+   std::string AsStr() override
    {
       const char *Start=0,*Stop=0;
       Sect.GetSection(Start,Stop);
       return std::string(Start,Stop);
    };
-   virtual bool Files(std::vector<pkgSrcRecords::File> &F) APT_OVERRIDE;
+   bool Files(std::vector<pkgSrcRecords::File> &F) override;
 
    debSrcRecordParser(std::string const &File,pkgIndexFile const *Index);
-   virtual ~debSrcRecordParser();
+   ~debSrcRecordParser() override;
 };
 
 class APT_HIDDEN debDscRecordParser : public debSrcRecordParser
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
index 9c55e0a..90b893f 100644
--- a/apt-pkg/deb/debsystem.cc
+++ b/apt-pkg/deb/debsystem.cc
@@ -5,7 +5,7 @@
    System - Abstraction for running on different systems.
 
    Basic general structure..
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -24,14 +24,14 @@
 #include <algorithm>
 #include <sstream>
 
+#include <cctype>
+#include <cerrno>
+#include <cstdlib>
+#include <cstring>
 #include <string>
 #include <vector>
-#include <ctype.h>
 #include <dirent.h>
-#include <errno.h>
 #include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -53,7 +53,7 @@ public:
    int FrontendLockFD;
    int LockFD;
    unsigned LockCount;
-   
+
    debStatusIndex *StatusFile;
 };
 
@@ -146,7 +146,7 @@ bool debSystem::Lock(OpProgress *const Progress)
       close(d->FrontendLockFD);
       return false;
    }
-   
+
    // See if we need to abort with a dirty journal
    if (CheckUpdates() == true)
    {
@@ -166,7 +166,7 @@ bool debSystem::Lock(OpProgress *const Progress)
    }
 
 	 d->LockCount++;
-      
+
    return true;
 }
 
@@ -193,7 +193,7 @@ bool debSystem::UnLock(bool NoErrors)
 {
    if (d->LockCount == 0 && NoErrors == true)
       return false;
-   
+
    if (d->LockCount < 1)
       return _error->Error(_("Not locked"));
    if (--d->LockCount == 0)
@@ -202,7 +202,7 @@ bool debSystem::UnLock(bool NoErrors)
       close(d->FrontendLockFD);
       d->LockCount = 0;
    }
-   
+
    return true;
 }
 bool debSystem::UnLockInner(bool NoErrors) {
@@ -222,7 +222,7 @@ bool debSystem::IsLocked()
 									/*}}}*/
 // System::CheckUpdates - Check if the updates dir is dirty		/*{{{*/
 // ---------------------------------------------------------------------
-/* This does a check of the updates directory (dpkg journal) to see if it has 
+/* This does a check of the updates directory (dpkg journal) to see if it has
    any entries in it. */
 bool debSystem::CheckUpdates()
 {
@@ -231,8 +231,8 @@ bool debSystem::CheckUpdates()
    DIR *DirP = opendir(File.c_str());
    if (DirP == 0)
       return false;
-   
-   /* We ignore any files that are not all digits, this skips .,.. and 
+
+   /* We ignore any files that are not all digits, this skips .,.. and
       some tmp files dpkg will leave behind.. */
    bool Damaged = false;
    for (struct dirent *Ent = readdir(DirP); Ent != 0; Ent = readdir(DirP))
@@ -373,7 +373,7 @@ bool debSystem::FindIndex(pkgCache::PkgFileIterator File,
       Found = d->StatusFile;
       return true;
    }
-   
+
    return false;
 }
 									/*}}}*/
@@ -392,7 +392,16 @@ std::string debSystem::StripDpkgChrootDirectory(std::string const &File)/*{{{*/
 									/*}}}*/
 std::string debSystem::GetDpkgExecutable()				/*{{{*/
 {
-   return StripDpkgChrootDirectory(_config->Find("Dir::Bin::dpkg","dpkg"));
+   std::string dpkg_executable = _config->Find("Dir::Bin::dpkg","dpkg");
+   if (APT::String::Startswith(dpkg_executable, "/")) {
+      struct stat buf;
+      if (stat(dpkg_executable.c_str(), &buf) != 0) {
+         _error->Warning(_("The dpkg executable set in Dir::Bin::dpkg is "
+                          "missing, falling back to using default dpkg."));
+        dpkg_executable = "dpkg";
+      }
+   }
+   return StripDpkgChrootDirectory(dpkg_executable);
 }
 									/*}}}*/
 std::vector<std::string> debSystem::GetDpkgBaseCommand()		/*{{{*/
@@ -411,6 +420,13 @@ std::vector<std::string> debSystem::GetDpkgBaseCommand()		/*{{{*/
 	 Args.push_back(Opts->Value);
       }
    }
+   auto status = _config->FindFile("Dir::State::status");
+   auto admindir = StripDpkgChrootDirectory(flNotFile(status));
+   if (admindir != "/var/lib/dpkg/")
+   {
+      Args.push_back("--admindir");
+      Args.push_back(admindir);
+   }
    return Args;
 }
 									/*}}}*/
@@ -528,10 +544,10 @@ std::vector<std::string> debSystem::ArchitecturesSupported() const		/*{{{*/
    if (dpkgMultiArch == -1)
       return archs;
 
-   FILE *dpkg = fdopen(outputFd, "r");
-   if(dpkg != NULL) {
+   if(FILE *dpkg = fdopen(outputFd, "r")) {
       char* buf = NULL;
       size_t bufsize = 0;
+      DEFER([&] { fclose(dpkg); free(buf); });
       while (getline(&buf, &bufsize, dpkg) != -1)
       {
 	 char* tok_saveptr;
@@ -548,9 +564,9 @@ std::vector<std::string> debSystem::ArchitecturesSupported() const		/*{{{*/
 	    arch = strtok_r(NULL, " ", &tok_saveptr);
 	 }
       }
-      free(buf);
-      fclose(dpkg);
    }
+   else
+        close(outputFd);
    ExecWait(dpkgMultiArch, "dpkg --print-foreign-architectures", true);
    return archs;
 }
diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h
index c426faf..294ae18 100644
--- a/apt-pkg/deb/debsystem.h
+++ b/apt-pkg/deb/debsystem.h
@@ -27,18 +27,18 @@ class debSystem : public pkgSystem
    APT_HIDDEN bool CheckUpdates();
 
    public:
-   virtual bool Lock(OpProgress *const Progress) APT_OVERRIDE;
-   virtual bool UnLock(bool NoErrors = false) APT_OVERRIDE;
-   virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const APT_OVERRIDE;
-   virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
-   virtual bool ArchiveSupported(const char *Type) APT_OVERRIDE;
-   virtual signed Score(Configuration const &Cnf) APT_OVERRIDE;
-   virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
-   virtual bool FindIndex(pkgCache::PkgFileIterator File,
-			  pkgIndexFile *&Found) const APT_OVERRIDE;
+   bool Lock(OpProgress *Progress) override;
+   bool UnLock(bool NoErrors = false) override;
+   pkgPackageManager *CreatePM(pkgDepCache *Cache) const override;
+   bool Initialize(Configuration &Cnf) override;
+   bool ArchiveSupported(const char *Type) override;
+   signed Score(Configuration const &Cnf) override;
+   bool AddStatusFiles(std::vector<pkgIndexFile *> &List) override;
+   bool FindIndex(pkgCache::PkgFileIterator File,
+		  pkgIndexFile *&Found) const override;
 
    debSystem();
-   virtual ~debSystem();
+   ~debSystem() override;
 
    APT_HIDDEN static std::string GetDpkgExecutable();
    APT_HIDDEN static std::vector<std::string> GetDpkgBaseCommand();
diff --git a/apt-pkg/deb/debversion.cc b/apt-pkg/deb/debversion.cc
index 005f1bc..ec7c953 100644
--- a/apt-pkg/deb/debversion.cc
+++ b/apt-pkg/deb/debversion.cc
@@ -14,9 +14,9 @@
 #include <apt-pkg/debversion.h>
 #include <apt-pkg/pkgcache.h>
 
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cctype>
+#include <cstdlib>
+#include <cstring>
 									/*}}}*/
 
 debVersioningSystem debVS;
diff --git a/apt-pkg/deb/debversion.h b/apt-pkg/deb/debversion.h
index 5c328a9..6d82e58 100644
--- a/apt-pkg/deb/debversion.h
+++ b/apt-pkg/deb/debversion.h
@@ -23,15 +23,15 @@ class APT_PUBLIC debVersioningSystem : public pkgVersioningSystem
 			  const char *BEnd) APT_PURE;
 
    // Compare versions..
-   virtual int DoCmpVersion(const char *A,const char *Aend,
-			  const char *B,const char *Bend) APT_OVERRIDE APT_PURE;
-   virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) APT_OVERRIDE APT_PURE;
-   virtual APT_PURE int DoCmpReleaseVer(const char *A,const char *Aend,
-			     const char *B,const char *Bend) APT_OVERRIDE
+   int DoCmpVersion(const char *A, const char *Aend,
+		    const char *B, const char *Bend) override APT_PURE;
+   bool CheckDep(const char *PkgVer, int Op, const char *DepVer) override APT_PURE;
+   int DoCmpReleaseVer(const char *A, const char *Aend,
+		       const char *B, const char *Bend) override APT_PURE
    {
       return DoCmpVersion(A,Aend,B,Bend);
    }
-   virtual std::string UpstreamVersion(const char *A) APT_OVERRIDE;
+   std::string UpstreamVersion(const char *A) override;
 
    debVersioningSystem();
 };
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 93effa9..09f3e47 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -24,15 +24,17 @@
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/version.h>
 
+#include <cerrno>
+#include <csignal>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <ctime>
 #include <dirent.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <grp.h>
+#include <limits.h>
 #include <pwd.h>
-#include <signal.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <sys/ioctl.h>
 #include <sys/select.h>
 #include <sys/stat.h>
@@ -40,7 +42,6 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <termios.h>
-#include <time.h>
 #include <unistd.h>
 
 #include <algorithm>
@@ -76,8 +77,13 @@ APT_PURE static string AptHistoryRequestingUser()			/*{{{*/
          if (uid > 0) {
             struct passwd pwd;
             struct passwd *result;
-            char buf[255];
-            if (getpwuid_r(uid, &pwd, buf, sizeof(buf), &result) == 0 && result != NULL) {
+            int tmp = sysconf(_SC_GETPW_R_SIZE_MAX);
+            if(tmp <= 0)
+               tmp = 256;
+            std::vector<char> buf(tmp);
+            while ((tmp = getpwuid_r(uid, &pwd, buf.data(), buf.size(), &result)) == -1 && errno == ERANGE)
+               buf.resize(buf.size() * 2);
+            if (tmp == 0 && result != NULL) {
                std::string res;
                strprintf(res, "%s (%d)", pwd.pw_name, uid);
                return res;
@@ -116,7 +122,7 @@ public:
    bool stdin_is_dev_null;
    bool status_fd_reached_end_of_file;
    // the buffer we use for the dpkg status-fd reading
-   char dpkgbuf[1024];
+   std::array<char, APT_BUFFER_SIZE> dpkgbuf;
    size_t dpkgbuf_pos;
    FILE *term_out;
    FILE *history_out;
@@ -480,6 +486,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
       close(Pipes[0]);
       FILE *F = fdopen(Pipes[1],"w");
       if (F == 0) {
+         close(Pipes[1]);
          result = _error->Errno("fdopen","Failed to open new FD");
          break;
       }
@@ -528,10 +535,10 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
 */
 void pkgDPkgPM::DoStdin(int master)
 {
-   unsigned char input_buf[256] = {0,}; 
-   ssize_t len = read(STDIN_FILENO, input_buf, sizeof(input_buf));
+   std::array<unsigned char, APT_BUFFER_SIZE> input_buf;
+   ssize_t len = read(STDIN_FILENO, input_buf.data(), input_buf.size());
    if (len)
-      FileFd::Write(master, input_buf, len);
+      FileFd::Write(master, input_buf.data(), len);
    else
       d->stdin_is_dev_null = true;
 }
@@ -543,9 +550,9 @@ void pkgDPkgPM::DoStdin(int master)
  */
 void pkgDPkgPM::DoTerminalPty(int master)
 {
-   unsigned char term_buf[1024] = {0,0, };
+   std::array<unsigned char, APT_BUFFER_SIZE> term_buf;
 
-   ssize_t len=read(master, term_buf, sizeof(term_buf));
+   ssize_t len=read(master, term_buf.data(), term_buf.size());
    if(len == -1 && errno == EIO)
    {
       // this happens when the child is about to exit, we
@@ -557,9 +564,9 @@ void pkgDPkgPM::DoTerminalPty(int master)
    }
    if(len <= 0)
       return;
-   FileFd::Write(1, term_buf, len);
+   FileFd::Write(1, term_buf.data(), len);
    if(d->term_out)
-      fwrite(term_buf, len, sizeof(char), d->term_out);
+      fwrite(term_buf.data(), len, sizeof(char), d->term_out);
 }
 									/*}}}*/
 // DPkgPM::ProcessDpkgStatusBuf						/*{{{*/
@@ -593,7 +600,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(char *line)
 
    // build the (prefix, pkgname, action) tuple, position of this
    // is different for "processing" or "status" messages
-   std::string prefix = APT::String::Strip(list[0]);
+   auto prefix = APT::String::Strip(list[0]);
    std::string pkgname;
    std::string action;
 
@@ -754,10 +761,12 @@ void pkgDPkgPM::ProcessDpkgStatusLine(char *line)
 	       char* buf = NULL;
 	       size_t bufsize = 0;
 	       if (getline(&buf, &bufsize, dpkg) != -1)
-		  pkgname += ':' + bufsize;
+		  pkgname.append(":").append(buf);
 	       free(buf);
 	       fclose(dpkg);
 	    }
+	    else
+	       close(outputFd);
 	    ExecWait(dpkgNativeArch, "dpkg --print-architecture", true);
 	    if (pkgname.find(':') != std::string::npos)
 	    {
@@ -946,7 +955,7 @@ void pkgDPkgPM::handleCrossUpgradeAction(string const &pkgname)		/*{{{*/
 // DPkgPM::DoDpkgStatusFd						/*{{{*/
 void pkgDPkgPM::DoDpkgStatusFd(int statusfd)
 {
-   auto const remainingBuffer = (sizeof(d->dpkgbuf) / sizeof(d->dpkgbuf[0])) - d->dpkgbuf_pos;
+   auto const remainingBuffer = d->dpkgbuf.size() - d->dpkgbuf_pos;
    if (likely(remainingBuffer > 0) && d->status_fd_reached_end_of_file == false)
    {
       auto const len = read(statusfd, &d->dpkgbuf[d->dpkgbuf_pos], remainingBuffer);
@@ -957,12 +966,12 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd)
 	 d->status_fd_reached_end_of_file = true;
 	 return;
       }
-      d->dpkgbuf_pos += (len / sizeof(d->dpkgbuf[0]));
+      d->dpkgbuf_pos += len;
    }
 
    // process line by line from the buffer
-   char *p = d->dpkgbuf, *q = nullptr;
-   while((q=(char*)memchr(p, '\n', (d->dpkgbuf + d->dpkgbuf_pos) - p)) != nullptr)
+   char *p = d->dpkgbuf.data(), *q = nullptr;
+   while((q=(char*)memchr(p, '\n', &d->dpkgbuf[d->dpkgbuf_pos] - p)) != nullptr)
    {
       *q = '\0';
       ProcessDpkgStatusLine(p);
@@ -970,15 +979,15 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd)
    }
 
    // check if we stripped the buffer clean
-   if (p > (d->dpkgbuf + d->dpkgbuf_pos))
+   if (p > (d->dpkgbuf.data() + d->dpkgbuf_pos))
    {
       d->dpkgbuf_pos = 0;
       return;
    }
 
    // otherwise move the unprocessed tail to the start and update pos
-   memmove(d->dpkgbuf, p, (p - d->dpkgbuf));
-   d->dpkgbuf_pos = (d->dpkgbuf + d->dpkgbuf_pos) - p;
+   memmove(d->dpkgbuf.data(), p, (p - d->dpkgbuf.data()));
+   d->dpkgbuf_pos = &d->dpkgbuf[d->dpkgbuf_pos] - p;
 }
 									/*}}}*/
 // DPkgPM::WriteHistoryTag						/*{{{*/
@@ -1078,6 +1087,8 @@ bool pkgDPkgPM::OpenLog()
       std::string RequestingUser = AptHistoryRequestingUser();
       if (RequestingUser != "")
          WriteHistoryTag("Requested-By", RequestingUser);
+      if (auto comment = _config->Find("APT::History::Comment"); not comment.empty())
+	 WriteHistoryTag("Comment", comment);
       WriteHistoryTag("Install", install);
       WriteHistoryTag("Reinstall", reinstall);
       WriteHistoryTag("Upgrade", upgrade);
@@ -1301,7 +1312,7 @@ void pkgDPkgPM::StartPtyMagic()						/*{{{*/
 	 free(d->slave);
 	 d->slave = NULL;
       }
-      _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+      _error->DumpErrors(std::cerr, GlobalError::NOTICE, false);
    }
    _error->RevertToStack();
 }
@@ -1477,7 +1488,7 @@ public:
    auto begin() const { return args.cbegin(); }
    auto end() const { return args.cend(); }
    auto& front() const { return args.front(); }
-   APT_NORETURN void execute(char const *const errmsg) {
+   [[noreturn]] void execute(char const *const errmsg) {
       args.push_back(nullptr);
       execvp(args.front(), &args.front());
       std::cerr << errmsg << std::endl;
@@ -1762,7 +1773,6 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
 
    // this loop is runs once per dpkg operation
    vector<Item>::const_iterator I = List.cbegin();
-   BuildDpkgCall Args;
    while (I != List.end())
    {
       // Do all actions with the same Op in one run
@@ -1784,7 +1794,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
       else
 	 J = std::find_if(J, List.cend(), [&J](Item const &I) { return I.Op != J->Op; });
 
-      Args.clearCallArguments();
+      BuildDpkgCall Args;
       Args.reserve((J - I) + 10);
 
       int fd[2];
@@ -1866,7 +1876,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
 	    {
 	       if (I->File[0] != '/')
 		  return _error->Error("Internal Error, Pathname to install is not absolute '%s'",I->File.c_str());
-	       auto file = flNotDir(I->File);
+	       std::string file{flNotDir(I->File)};
 	       if (flExtension(file) != "deb")
 		  file.append(".deb");
 	       std::string linkpath;
@@ -2233,6 +2243,19 @@ void pkgDPkgPM::Reset()
 {
    List.erase(List.begin(),List.end());
 }
+
+static void CopyIndented(const char *header, FILE *from, FILE *to)
+{
+   if (!from)
+      return;
+
+   fputs(header, to);
+   char *line{};
+   size_t linelen;
+   DEFER([&] { free(line); });
+   while (getline(&line, &linelen, from) != -1)
+      fprintf(to, " %s", line);
+}
 									/*}}}*/
 // pkgDpkgPM::WriteApportReport - write out error report pkg failure	/*{{{*/
 // ---------------------------------------------------------------------
@@ -2346,7 +2369,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    pkgver = Ver.VerStr() == NULL ? "unknown" : Ver.VerStr();
 
    // if the file exists already, we check:
-   // - if it was reported already (touched by apport). 
+   // - if it was reported already (touched by apport).
    //   If not, we do nothing, otherwise
    //    we overwrite it. This is the same behaviour as apport
    // - if we have a report with the same pkgversion already
@@ -2355,30 +2378,25 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    reportfile = flCombine(_config->FindDir("Dir::Apport", "var/crash"), pkgname+".0.crash");
    if(FileExists(reportfile))
    {
-      struct stat buf;
-      char strbuf[255];
-
       // check atime/mtime
+      struct stat buf{};
       stat(reportfile.c_str(), &buf);
       if(buf.st_mtime > buf.st_atime)
 	 return;
 
+      char *line{};
+      size_t linelen;
+      DEFER([&] { free(line); });
       // check if the existing report is the same version
       report = fopen(reportfile.c_str(),"r");
-      while(fgets(strbuf, sizeof(strbuf), report) != NULL)
+      DEFER([&] { fclose(report); });
+      while(getline(&line, &linelen, report) != -1)
       {
-	 if(strstr(strbuf,"Package:") == strbuf)
-	 {
-	    char pkgname[255], version[255];
-	    if(sscanf(strbuf, "Package: %254s %254s", pkgname, version) == 2)
-	       if(strcmp(pkgver.c_str(), version) == 0)
-	       {
-		  fclose(report);
-		  return;
-	       }
-	 }
+	 char pkgname[255], version[255];
+	 if(sscanf(line, "Package: %254s %254s", pkgname, version) == 2)
+	    if(strcmp(pkgver.c_str(), version) == 0)
+	       return;
       }
-      fclose(report);
    }
 
    // now write the report
@@ -2386,6 +2404,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    report = fopen(reportfile.c_str(),"w");
    if(report == NULL)
       return;
+   DEFER([&] { fclose(report); });
    if(_config->FindB("DPkgPM::InitialReportOnly",false) == true)
       chmod(reportfile.c_str(), 0);
    else
@@ -2406,35 +2425,12 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    // attach terminal log it if we have it
    string logfile_name = _config->FindFile("Dir::Log::Terminal", "/dev/null");
    if (logfile_name != "/dev/null")
-   {
-      FILE *log = NULL;
-
-      fprintf(report, "DpkgTerminalLog:\n");
-      log = fopen(logfile_name.c_str(),"r");
-      if(log != NULL)
-      {
-	 char buf[1024];
-	 while( fgets(buf, sizeof(buf), log) != NULL)
-	    fprintf(report, " %s", buf);
-         fprintf(report, " \n");
-	 fclose(log);
-      }
-   }
+      CopyIndented("DpkgTerminalLog:\n", make_unique_FILE(logfile_name, "r").get(), report);
 
    // attach history log it if we have it
    string histfile_name = _config->FindFile("Dir::Log::History", "/dev/null");
    if (histfile_name != "/dev/null")
-   {
-      fprintf(report, "DpkgHistoryLog:\n");
-      FILE* log = fopen(histfile_name.c_str(),"r");
-      if(log != NULL)
-      {
-	 char buf[1024];
-	 while( fgets(buf, sizeof(buf), log) != NULL)
-	    fprintf(report, " %s", buf);
-	 fclose(log);
-      }
-   }
+      CopyIndented("DpkgHistoryLog:\n", make_unique_FILE(histfile_name, "r").get(), report);
 
    // log the ordering, see dpkgpm.h and the "Ops" enum there
    fprintf(report, "AptOrdering:\n");
@@ -2458,34 +2454,10 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
 
    // attach dmesg log (to learn about segfaults)
    if (FileExists("/bin/dmesg"))
-   {
-      fprintf(report, "Dmesg:\n");
-      FILE *log = popen("/bin/dmesg","r");
-      if(log != NULL)
-      {
-	 char buf[1024];
-	 while( fgets(buf, sizeof(buf), log) != NULL)
-	    fprintf(report, " %s", buf);
-	 pclose(log);
-      }
-   }
+      CopyIndented("Dmesg:\n", make_unique_popen("/bin/dmesg","r").get(), report);
 
    // attach df -l log (to learn about filesystem status)
    if (FileExists("/bin/df"))
-   {
-
-      fprintf(report, "Df:\n");
-      FILE *log = popen("/bin/df -l -x squashfs","r");
-      if(log != NULL)
-      {
-	 char buf[1024];
-	 while( fgets(buf, sizeof(buf), log) != NULL)
-	    fprintf(report, " %s", buf);
-	 pclose(log);
-      }
-   }
-
-   fclose(report);
-
+      CopyIndented("Df:\n", make_unique_popen("/bin/df -l -x squashfs","r").get(), report);
 }
 									/*}}}*/
diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h
index caf7d35..5ce9dc1 100644
--- a/apt-pkg/deb/dpkgpm.h
+++ b/apt-pkg/deb/dpkgpm.h
@@ -13,11 +13,10 @@
 #include <apt-pkg/packagemanager.h>
 #include <apt-pkg/pkgcache.h>
 
+#include <cstdio>
 #include <map>
 #include <string>
 #include <vector>
-#include <stdio.h>
-
 
 class pkgDepCache;
 namespace APT { namespace Progress { class PackageManager; } }
@@ -114,18 +113,18 @@ class APT_PUBLIC pkgDPkgPM : public pkgPackageManager
    void ProcessDpkgStatusLine(char *line);
 
    // The Actual installation implementation
-   virtual bool Install(PkgIterator Pkg,std::string File) APT_OVERRIDE;
-   virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE;
-   virtual bool Remove(PkgIterator Pkg,bool Purge = false) APT_OVERRIDE;
+   bool Install(PkgIterator Pkg,std::string File) override;
+   bool Configure(PkgIterator Pkg) override;
+   bool Remove(PkgIterator Pkg, bool Purge = false) override;
 
-   virtual bool Go(APT::Progress::PackageManager *progress) APT_OVERRIDE;
+   bool Go(APT::Progress::PackageManager *progress) override;
+
+   void Reset() override;
 
-   virtual void Reset() APT_OVERRIDE;
-   
    public:
 
    explicit pkgDPkgPM(pkgDepCache *Cache);
-   virtual ~pkgDPkgPM();
+   ~pkgDPkgPM() override;
 
    APT_HIDDEN static bool ExpandPendingCalls(std::vector<Item> &List, pkgDepCache &Cache);
 };
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 322bf1b..b66f2bc 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -29,18 +29,20 @@
 #include <apt-pkg/versionmatch.h>
 
 #include <algorithm>
+#include <cstdio>
+#include <cstring>
 #include <iostream>
-#include <memory>
-#include <sstream>
 #include <iterator>
 #include <list>
+#include <memory>
+#include <random>
 #include <set>
+#include <sstream>
 #include <string>
 #include <unordered_map>
 #include <utility>
 #include <vector>
-#include <stdio.h>
-#include <string.h>
+#include <dirent.h>
 
 #include <sys/stat.h>
 
@@ -60,9 +62,9 @@ class DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc
 
    public:
    DefaultRootSetFunc2(pkgCache *cache) : Kernels(APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(cache)){};
-   virtual ~DefaultRootSetFunc2(){};
+   ~DefaultRootSetFunc2() override = default;
 
-   bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); };
+   bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); };
 };
 
 									/*}}}*/
@@ -141,6 +143,7 @@ struct pkgDepCache::Private
 {
    std::unique_ptr<InRootSetFunc> inRootSetFunc;
    std::unique_ptr<APT::CacheFilter::Matcher> IsAVersionedKernelPackage, IsProtectedKernelPackage;
+   std::string machineID;
 };
 pkgDepCache::pkgDepCache(pkgCache *const pCache, Policy *const Plcy) : group_level(0), Cache(pCache), PkgState(0), DepState(0),
 								       iUsrSize(0), iDownloadSize(0), iInstCount(0), iDelCount(0), iKeepCount(0),
@@ -148,6 +151,7 @@ pkgDepCache::pkgDepCache(pkgCache *const pCache, Policy *const Plcy) : group_lev
 {
    DebugMarker = _config->FindB("Debug::pkgDepCache::Marker", false);
    DebugAutoInstall = _config->FindB("Debug::pkgDepCache::AutoInstall", false);
+   d->machineID = APT::Configuration::getMachineID();
    delLocalPolicy = 0;
    LocalPolicy = Plcy;
    if (LocalPolicy == 0)
@@ -1459,7 +1463,7 @@ static bool MarkInstall_RemoveConflictsIfNotUpgradeable(pkgDepCache &Cache, bool
    return not failedToRemoveSomething;
 }
 									/*}}}*/
-static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const DebugAutoInstall, pkgCache::VerIterator const &PV, unsigned long Depth, APT::PackageVector &toUpgrade) /*{{{*/
+static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const DebugAutoInstall, pkgCache::VerIterator const &PV, unsigned long Depth, APT::PackageVector &toUpgrade, APT::PackageVector const &delayedRemove) /*{{{*/
 {
    auto CurrentVer = PV.ParentPkg().CurrentVer();
    if (CurrentVer.end())
@@ -1470,6 +1474,9 @@ static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const Deb
       // Skip non-installed versions and packages already marked for upgrade
       if (ParentPkg.CurrentVer() != D.ParentVer() || Cache[ParentPkg].Install())
 	 continue;
+      // Skip rev-depends we already tagged for removal
+      if (Cache[ParentPkg].Delete() || std::find(delayedRemove.begin(), delayedRemove.end(), ParentPkg) != delayedRemove.end())
+	 continue;
       // We only handle important positive dependencies, RemoveConflictsIfNotUpgradeable handles negative
       if (not Cache.IsImportantDep(D) || D.IsNegative())
 	 continue;
@@ -1718,7 +1725,7 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg, bool AutoInst,
 	    return false;
 	 hasFailed = true;
       }
-      if (not MarkInstall_CollectReverseDepends(*this, DebugAutoInstall, PV, Depth, toUpgrade))
+      if (not MarkInstall_CollectReverseDepends(*this, DebugAutoInstall, PV, Depth, toUpgrade, delayedRemove))
       {
 	 if (failEarly)
 	    return false;
@@ -2448,6 +2455,25 @@ static bool MarkPackage(pkgCache::PkgIterator const &Pkg,
 
       if (not unsatisfied_choice)
 	 fullyExplored[T->ID] = true;
+
+      // do not follow newly installed providers if we have already installed providers
+      if (providers_by_source.size() >= 2)
+      {
+	 if (std::any_of(providers_by_source.begin(), providers_by_source.end(), [](auto const PV) {
+			 return std::any_of(PV.second.begin(), PV.second.end(), [](auto const &Prv) {
+			   auto const PP = Prv.ParentPkg();
+			   return not PP.end() && PP->CurrentVer != 0;
+			 });}))
+	 {
+	    for (auto &providers : providers_by_source)
+	       providers.second.erase(std::remove_if(providers.second.begin(), providers.second.end(),
+			[](auto const &Prv) {
+			   auto const PP = Prv.ParentPkg();
+			   return not PP.end() && PP->CurrentVer == 0;
+			}), providers.second.end());
+	 }
+      }
+
       for (auto const &providers : providers_by_source)
       {
 	 for (auto const &PV : providers.second)
@@ -2470,7 +2496,7 @@ static bool MarkPackage(pkgCache::PkgIterator const &Pkg,
 // pkgDepCache::MarkRequired - the main mark algorithm			/*{{{*/
 bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
 {
-   if (_config->Find("APT::Solver", "internal") != "internal")
+   if (_config->Find("APT::Solver", "internal") != "internal" && _config->Find("APT::Solver") != "3.0")
       return true;
 
    // init the states
@@ -2562,3 +2588,99 @@ bool pkgDepCache::MarkAndSweep()
       return false;
 }
 									/*}}}*/
+
+// DepCache::PhasingApplied					/*{{{*/
+// Check if this version is a phased update that should be ignored, not considering whether
+// it is a security update.
+static bool IsIgnoredPhasedUpdate(std::string machineID, pkgCache::VerIterator const &Ver)
+{
+   if (_config->FindB("APT::Get::Phase-Policy", false))
+      return false;
+
+   // The order and fallbacks for the always/never checks come from update-manager and exist
+   // to preserve compatibility.
+   if (_config->FindB("APT::Get::Always-Include-Phased-Updates",
+		      _config->FindB("Update-Manager::Always-Include-Phased-Updates", false)))
+      return false;
+
+   if (_config->FindB("APT::Get::Never-Include-Phased-Updates",
+		      _config->FindB("Update-Manager::Never-Include-Phased-Updates", false)))
+      return true;
+
+   if (machineID.empty()			 // no machine-id
+       || getenv("SOURCE_DATE_EPOCH") != nullptr // reproducible build - always include
+       || APT::Configuration::isChroot())
+      return false;
+
+   std::string seedStr = std::string(Ver.SourcePkgName()) + "-" + Ver.SourceVerStr() + "-" + machineID;
+   std::seed_seq seed(seedStr.begin(), seedStr.end());
+   std::minstd_rand rand(seed);
+   std::uniform_int_distribution<unsigned int> dist(0, 100);
+
+   return dist(rand) > Ver.PhasedUpdatePercentage();
+}
+
+bool pkgDepCache::PhasingApplied(pkgCache::PkgIterator Pkg) const
+{
+   if (Pkg->CurrentVer == 0)
+      return false;
+   if ((*this)[Pkg].CandidateVer == 0)
+      return false;
+   if ((*this)[Pkg].CandidateVerIter(*Cache).PhasedUpdatePercentage() == 100)
+      return false;
+   if ((*this)[Pkg].CandidateVerIter(*Cache).IsSecurityUpdate())
+      return false;
+   if (!IsIgnoredPhasedUpdate(d->machineID, (*this)[Pkg].CandidateVerIter(*Cache)))
+      return false;
+
+   return true;
+}
+									/*}}}*/
+
+// DepCache::BootSize						/*{{{*/
+unsigned long long pkgDepCache::BootSize(bool initrdOnly)
+{
+   int BootCount = 0;
+   auto VirtualKernelPkg = FindPkg("$kernel", "any");
+   if (VirtualKernelPkg.end())
+      return 0;
+
+   for (pkgCache::PrvIterator Prv = VirtualKernelPkg.ProvidesList(); Prv.end() == false; ++Prv)
+   {
+      auto Pkg = Prv.OwnerPkg();
+      if ((*this)[Pkg].NewInstall())
+	 BootCount++;
+   }
+   if (BootCount == 0)
+      return 0;
+
+   DIR *boot = opendir(_config->FindDir("Dir::Boot").c_str());
+   if (not boot)
+      return 0;
+
+   enum
+   {
+      VMLINUZ,
+      INITRD,
+      MAP,
+      MAX_ARTEFACT,
+   } type;
+   off_t sizes[MAX_ARTEFACT]{};
+   while (struct dirent *ent = readdir(boot))
+   {
+      if (APT::String::Startswith(ent->d_name, "initrd.img-"))
+	 type = INITRD;
+      else if (APT::String::Startswith(ent->d_name, "System.map-"))
+	 type = MAP;
+      else if (not initrdOnly && APT::String::Startswith(ent->d_name, "vmlinuz-"))
+	 type = VMLINUZ;
+      else
+	 continue;
+
+      if (struct stat st; fstatat(dirfd(boot), ent->d_name, &st, 0) == 0)
+	 sizes[type] = std::max(sizes[type], st.st_size);
+   }
+   closedir(boot);
+   return std::accumulate(sizes, sizes + MAX_ARTEFACT, off_t{0}) * BootCount * 110 / 100;
+}
+									/*}}}*/
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index be27b1d..39d34d3 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -41,11 +41,12 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/pkgcache.h>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <list>
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 
 
@@ -178,9 +179,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace
    {
    public:
      DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverAutoRemove") {};
-     virtual ~DefaultRootSetFunc() {};
+     ~DefaultRootSetFunc() override = default;
 
-     bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && Match(pkg.Name()); };
+     bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && Match(pkg.Name()); };
    };
 
    struct APT_PUBLIC StateCache
@@ -332,9 +333,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace
    inline Header &Head() {return *Cache->HeaderP;};
    inline GrpIterator GrpBegin() {return Cache->GrpBegin();};
    inline PkgIterator PkgBegin() {return Cache->PkgBegin();};
-   inline GrpIterator FindGrp(APT::StringView Name) {return Cache->FindGrp(Name);};
-   inline PkgIterator FindPkg(APT::StringView Name) {return Cache->FindPkg(Name);};
-   inline PkgIterator FindPkg(APT::StringView Name, APT::StringView Arch) {return Cache->FindPkg(Name, Arch);};
+   inline GrpIterator FindGrp(std::string_view Name) {return Cache->FindGrp(Name);};
+   inline PkgIterator FindPkg(std::string_view Name) {return Cache->FindPkg(Name);};
+   inline PkgIterator FindPkg(std::string_view Name, std::string_view Arch) {return Cache->FindPkg(Name, Arch);};
 
    inline pkgCache &GetCache() {return *Cache;};
    inline pkgVersioningSystem &VS() {return *Cache->VS;};
@@ -381,6 +382,12 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace
    bool MarkAndSweep(InRootSetFunc &rootFunc);
    bool MarkAndSweep();
 
+   /** Check if the phased update is ready.
+    *
+    * \return \b false if this is a phased update that is not yet ready for us
+    */
+   bool PhasingApplied(PkgIterator Pkg) const;
+
    /** \name State Manipulators
     */
    // @{
@@ -484,7 +491,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace
    virtual ~pkgDepCache();
 
    bool CheckConsistency(char const *const msgtag = "");
-
+#ifdef APT_COMPILING_APT
+   unsigned long long BootSize(bool initrdOnly);
+#endif
    protected:
    // methods call by IsInstallOk
    bool IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg,
diff --git a/apt-pkg/dirstream.cc b/apt-pkg/dirstream.cc
index d6cf0ab..ef9f08e 100644
--- a/apt-pkg/dirstream.cc
+++ b/apt-pkg/dirstream.cc
@@ -15,7 +15,7 @@
 #include <apt-pkg/dirstream.h>
 #include <apt-pkg/error.h>
 
-#include <errno.h>
+#include <cerrno>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc
index 9d196ee..bf96dd3 100644
--- a/apt-pkg/edsp.cc
+++ b/apt-pkg/edsp.cc
@@ -19,14 +19,14 @@
 #include <apt-pkg/pkgsystem.h>
 #include <apt-pkg/prettyprinters.h>
 #include <apt-pkg/progress.h>
-#include <apt-pkg/string_view.h>
+#include <apt-pkg/solver3.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/tagfile.h>
 
-#include <ctype.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
+#include <cctype>
+#include <cstddef>
+#include <cstdio>
+#include <cstring>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -41,20 +41,9 @@
 
 using std::string;
 
-// we could use pkgCache::DepType and ::Priority, but these would be localized strings…
-constexpr char const * const PrioMap[] = {
-   nullptr, "important", "required", "standard",
-   "optional", "extra"
-};
-constexpr char const * const DepMap[] = {
-   nullptr, "Depends", "Pre-Depends", "Suggests",
-   "Recommends" , "Conflicts", "Replaces",
-   "Obsoletes", "Breaks", "Enhances"
-};
-
 // WriteOkay - varaidic helper to easily Write to a FileFd		/*{{{*/
 static bool WriteOkay_fn(FileFd &) { return true; }
-template<typename... Tail> static bool WriteOkay_fn(FileFd &output, APT::StringView data, Tail... more_data)
+template<typename... Tail> static bool WriteOkay_fn(FileFd &output, std::string_view data, Tail... more_data)
 {
    return likely(output.Write(data.data(), data.length()) && WriteOkay_fn(output, more_data...));
 }
@@ -99,7 +88,7 @@ static bool WriteScenarioVersion(FileFd &output, pkgCache::PkgIterator const &Pk
 // WriteScenarioDependency						/*{{{*/
 static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const &Ver, bool const OnlyCritical)
 {
-   std::array<std::string, APT_ARRAY_SIZE(DepMap)> dependencies;
+   std::array<std::string, 10> dependencies;
    bool orGroup = false;
    for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
    {
@@ -123,7 +112,7 @@ static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const
    bool Okay = output.Failed() == false;
    for (size_t i = 1; i < dependencies.size(); ++i)
       if (dependencies[i].empty() == false)
-	 WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+	 WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]);
    std::vector<std::string> provides;
    for (auto Prv = Ver.ProvidesList(); not Prv.end(); ++Prv)
    {
@@ -152,7 +141,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output,
 					  std::vector<bool> const &pkgset,
 					  bool const OnlyCritical)
 {
-   std::array<std::string, APT_ARRAY_SIZE(DepMap)> dependencies;
+   std::array<std::string, 10> dependencies;
    bool orGroup = false;
    for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
    {
@@ -189,7 +178,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output,
    bool Okay = output.Failed() == false;
    for (size_t i = 1; i < dependencies.size(); ++i)
       if (dependencies[i].empty() == false)
-	 WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+	 WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]);
    string provides;
    for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
    {
@@ -216,7 +205,7 @@ static bool checkKnownArchitecture(std::string const &arch)		/*{{{*/
    return std::find(veryforeign.begin(), veryforeign.end(), arch) != veryforeign.end();
 }
 									/*}}}*/
-static bool WriteGenericRequestHeaders(FileFd &output, APT::StringView const head)/*{{{*/
+static bool WriteGenericRequestHeaders(FileFd &output, std::string_view const head)/*{{{*/
 {
    bool Okay = WriteOkay(output, head, "Architecture: ", _config->Find("APT::Architecture"), "\n",
 	 "Architectures:");
@@ -250,8 +239,8 @@ static bool WriteScenarioEDSPVersion(pkgDepCache &Cache, FileFd &output, pkgCach
 {
    bool Okay = WriteOkay(output, "\nSource: ", Ver.SourcePkgName(),
 	 "\nSource-Version: ", Ver.SourceVerStr());
-   if (PrioMap[Ver->Priority] != nullptr)
-      WriteOkay(Okay, output, "\nPriority: ", PrioMap[Ver->Priority]);
+   if (auto const Prio = pkgCache::Priority_NoL10n(Ver->Priority); not Prio.empty())
+      WriteOkay(Okay, output, "\nPriority: ", Prio);
    if (Ver->Section != 0)
       WriteOkay(Okay, output, "\nSection: ", Ver.Section());
    if (Pkg.CurrentVer() == Ver)
@@ -435,7 +424,7 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progres
 				if (Progress != nullptr)
 					Progress->Done();
 				Progress = nullptr;
-				_error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+				_error->DumpErrors(std::cerr, GlobalError::NOTICE, false);
 			}
 			std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n");
 			if (msg.empty() == true) {
@@ -536,7 +525,7 @@ static bool localStringToBool(std::string answer, bool const defValue) {
    return defValue;
 }
 									/*}}}*/
-static bool LineStartsWithAndStrip(std::string &line, APT::StringView const with)/*{{{*/
+static bool LineStartsWithAndStrip(std::string &line, std::string_view const with)/*{{{*/
 {
    if (line.compare(0, with.size(), with.data()) != 0)
       return false;
@@ -544,7 +533,7 @@ static bool LineStartsWithAndStrip(std::string &line, APT::StringView const with
    return true;
 }
 									/*}}}*/
-static bool ReadFlag(unsigned int &flags, std::string &line, APT::StringView const name, unsigned int const setflag)/*{{{*/
+static bool ReadFlag(unsigned int &flags, std::string &line, std::string_view const name, unsigned int const setflag)/*{{{*/
 {
    if (LineStartsWithAndStrip(line, name) == false)
       return false;
@@ -765,6 +754,27 @@ static bool CreateDumpFile(char const * const id, char const * const type, FileF
 // EDSP::ResolveExternal - resolve problems by asking external for help	{{{*/
 bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache,
 			 unsigned int const flags, OpProgress *Progress) {
+   if (strstr(solver, "3.") == solver)
+   {
+      APT::Solver s(Cache.GetCache(), Cache.GetPolicy(), (EDSP::Request::Flags) flags);
+      FileFd output;
+      bool res = true;
+      if (Progress != NULL)
+	 Progress->OverallProgress(0, 100, 1, (flags & EDSP::Request::UPGRADE_ALL) ? _("Calculating upgrade") : _("Solving dependencies"));
+      if (res && not s.FromDepCache(Cache))
+	 res = false;
+      if (Progress != NULL)
+	 Progress->Progress(10);
+      if (res && not s.Solve())
+	 res = false;
+      if (Progress != NULL)
+	 Progress->Progress(90);
+      if (res && not s.ToDepCache(Cache))
+	 res = false;
+      if (Progress != NULL)
+	 Progress->Done();
+      return res;
+   }
 	if (strcmp(solver, "internal") == 0)
 	{
 		FileFd output;
@@ -963,14 +973,14 @@ bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const
 	 pkgset[P->ID] = true;
 	 if (strcmp(P.Arch(), "any") == 0)
 	 {
-	    APT::StringView const pkgname(P.Name());
+	    std::string_view const pkgname(P.Name());
 	    auto const idxColon = pkgname.find(':');
-	    if (idxColon != APT::StringView::npos)
+	    if (idxColon != std::string_view::npos)
 	    {
 	       pkgCache::PkgIterator PA;
 	       if (pkgname.substr(idxColon + 1) == "any")
 	       {
-		  auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon).to_string());
+		  auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon));
 		  for (auto PA = GA.PackageList(); PA.end() == false; PA = GA.NextPkg(PA))
 		  {
 		     pkgset[PA->ID] = true;
@@ -978,7 +988,7 @@ bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const
 	       }
 	       else
 	       {
-		  auto const PA = Cache.FindPkg(pkgname.to_string());
+		  auto const PA = Cache.FindPkg(pkgname);
 		  if (PA.end() == false)
 		     pkgset[PA->ID] = true;
 	       }
@@ -1044,7 +1054,7 @@ bool EIPP::ReadResponse(int const input, pkgPackageManager * const PM, OpProgres
 	    if (Progress != nullptr)
 	       Progress->Done();
 	    Progress = nullptr;
-	    _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+	    _error->DumpErrors(std::cerr, GlobalError::NOTICE, false);
 	 }
 	 std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n");
 	 if (msg.empty() == true) {
diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h
index 434010d..0c37e23 100644
--- a/apt-pkg/edsp.h
+++ b/apt-pkg/edsp.h
@@ -13,7 +13,7 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/pkgcache.h>
 
-#include <stdio.h>
+#include <cstdio>
 
 #include <list>
 #include <string>
diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc
index faade6e..99947f4 100644
--- a/apt-pkg/edsp/edspindexfile.cc
+++ b/apt-pkg/edsp/edspindexfile.cc
@@ -16,9 +16,9 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgrecords.h>
 
+#include <cstddef>
 #include <memory>
 #include <string>
-#include <stddef.h>
 #include <unistd.h>
 									/*}}}*/
 
@@ -28,7 +28,7 @@ edspLikeIndex::edspLikeIndex(std::string const &File) : pkgDebianIndexRealFile(F
 }
 std::string edspLikeIndex::GetArchitecture() const
 {
-   return std::string();
+   return {};
 }
 bool edspLikeIndex::HasPackages() const
 {
@@ -94,10 +94,10 @@ pkgCacheListParser * eippIndex::CreateListParser(FileFd &Pkg)
 class APT_HIDDEN edspIFType: public pkgIndexFile::Type
 {
    public:
-   virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE
+   [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*PkgFile*/) const override
    {
       // we don't have a record parser for this type as the file is not persistent
-      return NULL;
+      return nullptr;
    };
    edspIFType() {Label = "EDSP scenario file";};
 };
@@ -110,10 +110,10 @@ const pkgIndexFile::Type *edspIndex::GetType() const
 class APT_HIDDEN eippIFType: public pkgIndexFile::Type
 {
    public:
-   virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE
+   [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*PkgFile*/) const override
    {
       // we don't have a record parser for this type as the file is not persistent
-      return NULL;
+      return nullptr;
    };
    eippIFType() {Label = "EIPP scenario file";};
 };
@@ -124,6 +124,6 @@ const pkgIndexFile::Type *eippIndex::GetType() const
 }
 									/*}}}*/
 
-edspLikeIndex::~edspLikeIndex() {}
-edspIndex::~edspIndex() {}
-eippIndex::~eippIndex() {}
+edspLikeIndex::~edspLikeIndex() = default;
+edspIndex::~edspIndex() = default;
+eippIndex::~eippIndex() = default;
diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h
index 42ef3fe..ee1079a 100644
--- a/apt-pkg/edsp/edspindexfile.h
+++ b/apt-pkg/edsp/edspindexfile.h
@@ -18,42 +18,42 @@ class pkgCacheGenerator;
 class APT_HIDDEN edspLikeIndex : public pkgDebianIndexRealFile
 {
 protected:
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &File) APT_OVERRIDE;
-   virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
+   bool OpenListFile(FileFd &Pkg, std::string const &File) override;
+   [[nodiscard]] uint8_t GetIndexFlags() const override;
+   [[nodiscard]] std::string GetArchitecture() const override;
 
-public:
-   virtual bool Exists() const APT_OVERRIDE;
-   virtual bool HasPackages() const APT_OVERRIDE;
+   public:
+   [[nodiscard]] bool Exists() const override;
+   [[nodiscard]] bool HasPackages() const override;
 
    explicit edspLikeIndex(std::string const &File);
-   virtual ~edspLikeIndex();
+   ~edspLikeIndex() override;
 };
 
 class APT_HIDDEN edspIndex : public edspLikeIndex
 {
 protected:
-   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
-   virtual std::string GetComponent() const APT_OVERRIDE;
+   APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
+   [[nodiscard]] std::string GetComponent() const override;
 
 public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    explicit edspIndex(std::string const &File);
-   virtual ~edspIndex();
+   ~edspIndex() override;
 };
 
 class APT_HIDDEN eippIndex : public edspLikeIndex
 {
 protected:
-   APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
-   virtual std::string GetComponent() const APT_OVERRIDE;
+   APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override;
+   [[nodiscard]] std::string GetComponent() const override;
 
-public:
-   virtual const Type *GetType() const APT_OVERRIDE APT_PURE;
+   public:
+   [[nodiscard]] const Type *GetType() const override APT_PURE;
 
    explicit eippIndex(std::string const &File);
-   virtual ~eippIndex();
+   ~eippIndex() override;
 };
 
 #endif
diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc
index 5419069..f591a6a 100644
--- a/apt-pkg/edsp/edsplistparser.cc
+++ b/apt-pkg/edsp/edsplistparser.cc
@@ -17,7 +17,6 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgsystem.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/tagfile-keys.h>
 #include <apt-pkg/tagfile.h>
@@ -44,7 +43,20 @@ edspListParser::edspListParser(FileFd * const File) : edspLikeListParser(File)
 bool edspLikeListParser::NewVersion(pkgCache::VerIterator &Ver)
 {
    _system->SetVersionMapping(Ver->ID, Section.FindI("APT-ID", Ver->ID));
-   return debListParser::NewVersion(Ver);
+   if (not debListParser::NewVersion(Ver))
+      return false;
+
+   // Patch up the source version, it is stored in the Source-Version field in EDSP.
+   if (std::string_view version = Section.Find(pkgTagSection::Key::Source_Version); not version.empty())
+   {
+      if (version != Ver.VerStr())
+      {
+	 map_stringitem_t const idx = StoreString(pkgCacheGenerator::VERSIONNUMBER, version);
+	 Ver.SourceVersion()->VerStr = idx;
+      }
+   }
+
+   return true;
 }
 									/*}}}*/
 // ListParser::Description - Return the description string		/*{{{*/
@@ -54,9 +66,9 @@ std::vector<std::string> edspLikeListParser::AvailableDescriptionLanguages()
 {
    return {};
 }
-APT::StringView edspLikeListParser::Description_md5()
+std::string_view edspLikeListParser::Description_md5()
 {
-   return APT::StringView();
+   return {};
 }
 									/*}}}*/
 // ListParser::VersionHash - Compute a unique hash for this version	/*{{{*/
diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h
index 41bfd1f..7d9eb58 100644
--- a/apt-pkg/edsp/edsplistparser.h
+++ b/apt-pkg/edsp/edsplistparser.h
@@ -16,21 +16,19 @@
 #include <apt-pkg/pkgcache.h>
 
 #include <string>
+#include <string_view>
 
 
-namespace APT {
-   class StringView;
-}
 class APT_HIDDEN edspLikeListParser : public debListParser
 {
    public:
-   virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE;
-   virtual std::vector<std::string> AvailableDescriptionLanguages() APT_OVERRIDE;
-   virtual APT::StringView Description_md5() APT_OVERRIDE;
-   virtual uint32_t VersionHash() APT_OVERRIDE;
+   bool NewVersion(pkgCache::VerIterator &Ver) override;
+   std::vector<std::string> AvailableDescriptionLanguages() override;
+   std::string_view Description_md5() override;
+   uint32_t VersionHash() override;
 
    explicit edspLikeListParser(FileFd *File);
-   virtual ~edspLikeListParser();
+   ~edspLikeListParser() override;
 };
 
 class APT_HIDDEN edspListParser : public edspLikeListParser
@@ -39,20 +37,20 @@ class APT_HIDDEN edspListParser : public edspLikeListParser
    FileFd preferences;
 
 protected:
-   virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE;
+   bool ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) override;
 
 public:
    explicit edspListParser(FileFd *File);
-   virtual ~edspListParser();
+   ~edspListParser() override;
 };
 
 class APT_HIDDEN eippListParser : public edspLikeListParser
 {
 protected:
-   virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE;
+   bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) override;
 
 public:
    explicit eippListParser(FileFd *File);
-   virtual ~eippListParser();
+   ~eippListParser() override;
 };
 #endif
diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc
index c86f1ed..b12b20d 100644
--- a/apt-pkg/edsp/edspsystem.cc
+++ b/apt-pkg/edsp/edspsystem.cc
@@ -18,8 +18,8 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/pkgcache.h>
 
-#include <stddef.h>
-#include <stdlib.h>
+#include <cstddef>
+#include <cstdlib>
 #include <unistd.h>
 
 #include <string>
diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h
index 97c2d66..e34c4ec 100644
--- a/apt-pkg/edsp/edspsystem.h
+++ b/apt-pkg/edsp/edspsystem.h
@@ -29,24 +29,24 @@ protected:
    std::unique_ptr<pkgIndexFile> StatusFile;
 
 public:
-   virtual bool Lock(OpProgress * const Progress) APT_OVERRIDE APT_PURE;
-   virtual bool UnLock(bool NoErrors = false) APT_OVERRIDE APT_PURE;
-   virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const APT_OVERRIDE APT_PURE;
-   virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
-   virtual bool ArchiveSupported(const char *Type) APT_OVERRIDE APT_PURE;
-   virtual signed Score(Configuration const &Cnf) APT_OVERRIDE;
-   virtual bool FindIndex(pkgCache::PkgFileIterator File,
-			  pkgIndexFile *&Found) const APT_OVERRIDE;
-
-   bool MultiArchSupported() const override { return true; }
-   std::vector<std::string> ArchitecturesSupported() const override { return {}; };
-
-   bool LockInner(OpProgress * const, int) override { return _error->Error("LockInner is not implemented"); };
-   bool UnLockInner(bool) override { return _error->Error("UnLockInner is not implemented"); };
+   bool Lock(OpProgress *Progress) override APT_PURE;
+   bool UnLock(bool NoErrors = false) override APT_PURE;
+   pkgPackageManager *CreatePM(pkgDepCache *Cache) const override APT_PURE;
+   bool Initialize(Configuration &Cnf) override;
+   bool ArchiveSupported(const char *Type) override APT_PURE;
+   signed Score(Configuration const &Cnf) override;
+   bool FindIndex(pkgCache::PkgFileIterator File,
+		  pkgIndexFile *&Found) const override;
+
+   [[nodiscard]] bool MultiArchSupported() const override { return true; }
+   [[nodiscard]] std::vector<std::string> ArchitecturesSupported() const override { return {}; };
+
+   bool LockInner(OpProgress * const /*Progress*/, int /*timeOutSec*/) override { return _error->Error("LockInner is not implemented"); };
+   bool UnLockInner(bool /*NoErrors*/) override { return _error->Error("UnLockInner is not implemented"); };
    bool IsLocked() override { return true; };
 
    explicit edspLikeSystem(char const * const Label);
-   virtual ~edspLikeSystem();
+   ~edspLikeSystem() override;
 };
 
 class APT_HIDDEN edspSystem : public edspLikeSystem
@@ -56,20 +56,20 @@ class APT_HIDDEN edspSystem : public edspLikeSystem
    std::string tempPrefsFile;
 
 public:
-   virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
-   virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
+   bool Initialize(Configuration &Cnf) override;
+   bool AddStatusFiles(std::vector<pkgIndexFile *> &List) override;
 
    edspSystem();
-   virtual ~edspSystem();
+   ~edspSystem() override;
 };
 
 class APT_HIDDEN eippSystem : public edspLikeSystem
 {
    public:
-   virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
+   bool AddStatusFiles(std::vector<pkgIndexFile *> &List) override;
 
    eippSystem();
-   virtual ~eippSystem();
+   ~eippSystem() override;
 };
 
 #endif
diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc
index 0d56926..139b103 100644
--- a/apt-pkg/indexcopy.cc
+++ b/apt-pkg/indexcopy.cc
@@ -3,9 +3,9 @@
 /* ######################################################################
 
    Index Copying - Aid for copying and verifying the index files
-   
-   This class helps apt-cache reconstruct a damaged index files. 
-   
+
+   This class helps apt-cache reconstruct a damaged index files.
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -25,11 +25,11 @@
 #include <apt-pkg/tagfile-keys.h>
 #include <apt-pkg/tagfile.h>
 
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <sstream>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -48,13 +48,13 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List,
    OpProgress *Progress = NULL;
    if (List.empty() == true)
       return true;
-   
-   if(log) 
+
+   if(log)
       Progress = log->GetOpProgress();
-   
+
    bool NoStat = _config->FindB("APT::CDROM::Fast",false);
    bool Debug = _config->FindB("Debug::aptcdrom",false);
-   
+
    // Prepare the progress indicator
    off_t TotalSize = 0;
    std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
@@ -91,7 +91,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List,
       pkgTagFile Parser(&Pkg);
       if (Pkg.IsOpen() == false || Pkg.Failed())
 	 return false;
-      
+
       // Open the output file
       char S[400];
       snprintf(S,sizeof(S),"cdrom:[%s]/%s%s",Name.c_str(),
@@ -282,14 +282,14 @@ bool IndexCopy::ReconstructPrefix(string &Prefix,string OrigPath,string CD,
 	    cout << "Failed, " << CD + MyPrefix + File << endl;
 	 if (GrabFirst(OrigPath,MyPrefix,Depth++) == true)
 	    continue;
-	 
+
 	 return false;
       }
       else
       {
 	 Prefix = MyPrefix;
 	 return true;
-      }      
+      }
    }
    return false;
 }
@@ -324,18 +324,18 @@ bool IndexCopy::ReconstructChop(unsigned long &Chop,string Dir,string File)
 									/*}}}*/
 // IndexCopy::ConvertToSourceList - Convert a Path to a sourcelist 	/*{{{*/
 // ---------------------------------------------------------------------
-/* We look for things in dists/ notation and convert them to 
+/* We look for things in dists/ notation and convert them to
    <dist> <component> form otherwise it is left alone. This also strips
-   the CD path. 
- 
-   This implements a regex sort of like: 
-    (.*)/dists/([^/]*)/(.*)/binary-* 
+   the CD path.
+
+   This implements a regex sort of like:
+    (.*)/dists/([^/]*)/(.*)/binary-*
      ^          ^      ^- Component
      |          |-------- Distribution
      |------------------- Path
-   
+
    It was deciced to use only a single word for dist (rather than say
-   unstable/non-us) to increase the chance that each CD gets a single
+   unstable/some-component) to increase the chance that each CD gets a single
    line in sources.list.
  */
 void IndexCopy::ConvertToSourceList(string CD,string &Path)
@@ -344,22 +344,22 @@ void IndexCopy::ConvertToSourceList(string CD,string &Path)
    Path = string(Path,CD.length());
    if (Path.empty() == true)
       Path = "/";
-   
+
    // Too short to be a dists/ type
    if (Path.length() < strlen("dists/"))
       return;
-   
+
    // Not a dists type.
    if (stringcmp(Path.c_str(),Path.c_str()+strlen("dists/"),"dists/") != 0)
       return;
-      
+
    // Isolate the dist
    string::size_type Slash = strlen("dists/");
    string::size_type Slash2 = Path.find('/',Slash + 1);
    if (Slash2 == string::npos || Slash2 + 2 >= Path.length())
       return;
    string Dist = string(Path,Slash,Slash2 - Slash);
-   
+
    // Isolate the component
    Slash = Slash2;
    for (unsigned I = 0; I != 10; I++)
@@ -368,13 +368,13 @@ void IndexCopy::ConvertToSourceList(string CD,string &Path)
       if (Slash == string::npos || Slash + 2 >= Path.length())
 	 return;
       string Comp = string(Path,Slash2+1,Slash - Slash2-1);
-	 
+
       // Verify the trailing binary- bit
       string::size_type BinSlash = Path.find('/',Slash + 1);
       if (Slash == string::npos)
 	 return;
       string Binary = string(Path,Slash+1,BinSlash - Slash-1);
-      
+
       if (strncmp(Binary.c_str(), "binary-", strlen("binary-")) == 0)
       {
 	 Binary.erase(0, strlen("binary-"));
@@ -386,7 +386,7 @@ void IndexCopy::ConvertToSourceList(string CD,string &Path)
 
       Path = Dist + ' ' + Comp;
       return;
-   }   
+   }
 }
 									/*}}}*/
 // IndexCopy::GrabFirst - Return the first Depth path components	/*{{{*/
@@ -401,7 +401,7 @@ bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth)
       Depth--;
    }
    while (I != string::npos && Depth != 0);
-   
+
    if (I == string::npos)
       return false;
 
@@ -414,7 +414,7 @@ bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth)
 /* */
 bool PackageCopy::GetFile(string &File,unsigned long long &Size)
 {
-   File = Section->Find(pkgTagSection::Key::Filename).to_string();
+   File = Section->Find(pkgTagSection::Key::Filename);
    Size = Section->FindULL(pkgTagSection::Key::Size);
    if (File.empty() || Size == 0)
       return _error->Error("Cannot find filename or size tag");
@@ -440,7 +440,7 @@ bool SourceCopy::GetFile(string &File,unsigned long long &Size)
    std::string Files;
    for (auto hashinfo : HashString::SupportedHashesInfo())
    {
-      Files = Section->Find(hashinfo.chksumskey).to_string();
+      Files = Section->Find(hashinfo.chksumskey);
       if (not Files.empty())
 	 break;
    }
@@ -451,17 +451,17 @@ bool SourceCopy::GetFile(string &File,unsigned long long &Size)
    const char *C = Files.c_str();
    string sSize;
    string MD5Hash;
-   
+
    // Parse each of the elements
    if (ParseQuoteWord(C,MD5Hash) == false ||
        ParseQuoteWord(C,sSize) == false ||
        ParseQuoteWord(C,File) == false)
       return _error->Error("Error parsing file record");
-   
+
    // Parse the size and append the directory
    Size = strtoull(sSize.c_str(), NULL, 10);
    auto const Base = Section->Find(pkgTagSection::Key::Directory);
-   File = flCombine(Base.to_string(), File);
+   File = flCombine(std::string{Base}, File);
    return true;
 }
 									/*}}}*/
@@ -552,7 +552,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
 	 cout << "Signature verify for: " << *I << endl;
 
       metaIndex *MetaIndex = new debReleaseIndex("","", {});
-      string prefix = *I; 
+      string prefix = *I;
 
       string const releasegpg = *I+"Release.gpg";
       string const release = *I+"Release";
@@ -604,18 +604,18 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
       // if so, remove them from our copy of the lists
       vector<string> keys = MetaIndex->MetaKeys();
       for (vector<string>::iterator I = keys.begin(); I != keys.end(); ++I)
-      { 
+      {
 	 if(!Verify(prefix,*I, MetaIndex)) {
 	    // something went wrong, don't copy the Release.gpg
 	    // FIXME: delete any existing gpg file?
 	    _error->Discard();
-	    continue;	 
+	    continue;
 	 }
       }
 
       // we need a fresh one for the Release.gpg
       delete MetaIndex;
-   
+
       // everything was fine, copy the Release and Release.gpg file
       if (useInRelease == true)
 	 CopyMetaIndex(CDROM, Name, prefix, "InRelease");
@@ -624,7 +624,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
 	 CopyMetaIndex(CDROM, Name, prefix, "Release");
 	 CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
       }
-   }   
+   }
 
    return true;
 }
@@ -635,12 +635,12 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name,	/*{{{*/
    OpProgress *Progress = NULL;
    if (List.empty() == true)
       return true;
-   
-   if(log) 
+
+   if(log)
       Progress = log->GetOpProgress();
-   
+
    bool Debug = _config->FindB("Debug::aptcdrom",false);
-   
+
    // Prepare the progress indicator
    off_t TotalSize = 0;
    std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h
index 41be154..d81bc09 100644
--- a/apt-pkg/indexcopy.h
+++ b/apt-pkg/indexcopy.h
@@ -11,8 +11,8 @@
 
 #include <vector>
 #ifndef APT_11_CLEAN_HEADERS
+#include <cstdio>
 #include <string>
-#include <stdio.h>
 #endif
 
 #include <apt-pkg/macros.h>
@@ -55,30 +55,28 @@ class APT_PUBLIC PackageCopy : public IndexCopy					/*{{{*/
 {
    void * const d;
    protected:
-
-   virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
-   virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
-   virtual const char *GetFileName() APT_OVERRIDE {return "Packages";};
-   virtual const char *Type() APT_OVERRIDE {return "Package";};
+   bool GetFile(std::string &Filename, unsigned long long &Size) override;
+   bool RewriteEntry(FileFd &Target, std::string const &File) override;
+   const char *GetFileName() override { return "Packages"; }
+   const char *Type() override { return "Package"; }
 
    public:
    PackageCopy();
-   virtual ~PackageCopy();
+   ~PackageCopy() override;
 };
 									/*}}}*/
 class APT_PUBLIC SourceCopy : public IndexCopy					/*{{{*/
 {
    void * const d;
    protected:
-   
-   virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
-   virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
-   virtual const char *GetFileName() APT_OVERRIDE {return "Sources";};
-   virtual const char *Type() APT_OVERRIDE {return "Source";};
+   bool GetFile(std::string &Filename, unsigned long long &Size) override;
+   bool RewriteEntry(FileFd &Target, std::string const &File) override;
+   const char *GetFileName() override { return "Sources"; }
+   const char *Type() override { return "Source"; };
 
    public:
    SourceCopy();
-   virtual ~SourceCopy();
+   ~SourceCopy() override;
 };
 									/*}}}*/
 class APT_PUBLIC  TranslationsCopy							/*{{{*/
diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc
index f13b529..1176903 100644
--- a/apt-pkg/indexfile.cc
+++ b/apt-pkg/indexfile.cc
@@ -121,6 +121,7 @@ std::string IndexTarget::Option(OptionKeys const EnumKey) const		/*{{{*/
       APT_CASE(ALLOW_WEAK);
       APT_CASE(ALLOW_DOWNGRADE_TO_INSECURE);
       APT_CASE(INRELEASE_PATH);
+      APT_CASE(SHADOWED);
 #undef APT_CASE
       case FILENAME:
       {
@@ -221,6 +222,8 @@ unsigned long pkgDebianIndexTargetFile::Size() const				/*{{{*/
 									/*}}}*/
 bool pkgDebianIndexTargetFile::Exists() const					/*{{{*/
 {
+   if (Target.OptionBool(IndexTarget::SHADOWED))
+      return false;
    return FileExists(IndexFileName());
 }
 									/*}}}*/
diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h
index d0b045a..ce57745 100644
--- a/apt-pkg/indexfile.h
+++ b/apt-pkg/indexfile.h
@@ -91,6 +91,7 @@ class APT_PUBLIC IndexTarget							/*{{{*/
       ALLOW_WEAK,
       ALLOW_DOWNGRADE_TO_INSECURE,
       INRELEASE_PATH,
+      SHADOWED,
    };
    std::string Option(OptionKeys const Key) const;
    bool OptionBool(OptionKeys const Key) const;
@@ -162,11 +163,11 @@ protected:
    APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg);
 
 public:
-   virtual bool Merge(pkgCacheGenerator &Gen, OpProgress* const Prog) APT_OVERRIDE;
-   virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE;
+   bool Merge(pkgCacheGenerator &Gen, OpProgress *Prog) override;
+   pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const override;
 
    explicit pkgDebianIndexFile(bool const Trusted);
-   virtual ~pkgDebianIndexFile();
+   ~pkgDebianIndexFile() override;
 };
 
 class APT_PUBLIC pkgDebianIndexTargetFile : public pkgDebianIndexFile
@@ -175,21 +176,21 @@ class APT_PUBLIC pkgDebianIndexTargetFile : public pkgDebianIndexFile
 protected:
    IndexTarget const Target;
 
-   virtual std::string IndexFileName() const APT_OVERRIDE;
-   virtual std::string GetComponent() const APT_OVERRIDE;
-   virtual std::string GetArchitecture() const APT_OVERRIDE;
-   virtual std::string GetProgressDescription() const APT_OVERRIDE;
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+   std::string IndexFileName() const override;
+   [[nodiscard]] std::string GetComponent() const override;
+   [[nodiscard]] std::string GetArchitecture() const override;
+   [[nodiscard]] std::string GetProgressDescription() const override;
+   bool OpenListFile(FileFd &Pkg, std::string const &FileName) override;
 
-public:
-   virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE;
-   virtual std::string Describe(bool const Short = false) const APT_OVERRIDE;
-   virtual bool Exists() const APT_OVERRIDE;
-   virtual unsigned long Size() const APT_OVERRIDE;
+   public:
+   [[nodiscard]] std::string ArchiveURI(std::string const &File) const override;
+   [[nodiscard]] std::string Describe(bool Short = false) const override;
+   [[nodiscard]] bool Exists() const override;
+   [[nodiscard]] unsigned long Size() const override;
    IndexTarget GetIndexTarget() const APT_HIDDEN;
 
    pkgDebianIndexTargetFile(IndexTarget const &Target, bool const Trusted);
-   virtual ~pkgDebianIndexTargetFile();
+   ~pkgDebianIndexTargetFile() override;
 };
 
 class APT_PUBLIC pkgDebianIndexRealFile : public pkgDebianIndexFile
@@ -198,17 +199,18 @@ class APT_PUBLIC pkgDebianIndexRealFile : public pkgDebianIndexFile
 protected:
    std::string File;
 
-   virtual std::string IndexFileName() const APT_OVERRIDE;
-   virtual std::string GetProgressDescription() const APT_OVERRIDE;
-   virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
-public:
-   virtual std::string Describe(bool const /*Short*/ = false) const APT_OVERRIDE;
-   virtual bool Exists() const APT_OVERRIDE;
-   virtual unsigned long Size() const APT_OVERRIDE;
-   virtual std::string ArchiveURI(std::string const &/*File*/) const APT_OVERRIDE;
+   [[nodiscard]] std::string IndexFileName() const override;
+   [[nodiscard]] std::string GetProgressDescription() const override;
+   bool OpenListFile(FileFd &Pkg, std::string const &FileName) override;
+
+   public:
+   [[nodiscard]] std::string Describe(bool /*Short*/ = false) const override;
+   [[nodiscard]] bool Exists() const override;
+   [[nodiscard]] unsigned long Size() const override;
+   [[nodiscard]] std::string ArchiveURI(std::string const & /*File*/) const override;
 
    pkgDebianIndexRealFile(std::string const &File, bool const Trusted);
-   virtual ~pkgDebianIndexRealFile();
+   ~pkgDebianIndexRealFile() override;
 };
 
 #endif
diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
index b9d9b15..61d45e3 100644
--- a/apt-pkg/init.cc
+++ b/apt-pkg/init.cc
@@ -18,12 +18,12 @@
 #include <apt-pkg/strutl.h>
 
 #include <cstdlib>
+#include <cstring>
 #include <fstream>
 #include <sstream>
 #include <string>
 #include <unordered_map>
 #include <vector>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -70,7 +70,7 @@ static bool pkgInitArchTupleMap()
       auto cpurow = split(cpuline);
       auto cpu = APT::String::Strip(cpurow.at(0));
 
-      cpus.push_back(cpu);
+      cpus.emplace_back(cpu);
    }
    if (!cputable.eof())
       return _error->Error("Error reading the CPU table");
@@ -97,14 +97,14 @@ static bool pkgInitArchTupleMap()
 
       if (tuple.find("<cpu>") == tuple.npos && arch.find("<cpu>") == arch.npos)
       {
-         APT::ArchToTupleMap.insert({arch, VectorizeString(tuple, '-')});
+         APT::ArchToTupleMap.insert({std::string{arch}, VectorizeString(tuple, '-')});
       }
       else
       {
          for (auto && cpu : cpus)
          {
-            auto mytuple = SubstVar(tuple, std::string("<cpu>"), cpu);
-            auto myarch = SubstVar(arch, std::string("<cpu>"), cpu);
+            auto mytuple = SubstVar(tuple, "<cpu>", cpu);
+            auto myarch = SubstVar(arch, "<cpu>", cpu);
 
             APT::ArchToTupleMap.insert({myarch, VectorizeString(mytuple, '-')});
          }
@@ -131,6 +131,9 @@ bool pkgInitConfig(Configuration &Cnf)
       Cnf.Set("APT::Build-Essential::", "build-essential");
    Cnf.CndSet("APT::Install-Recommends", true);
    Cnf.CndSet("APT::Install-Suggests", false);
+   Cnf.CndSet("APT::Key::Assert-Pubkey-Algo", ">=rsa2048,ed25519,ed448,nistp256,nistp384,nistp512,brainpoolP256r1,brainpoolP320r1,brainpoolP384r1,brainpoolP512r1,secp256k1");
+   Cnf.CndSet("APT::Key::Assert-Pubkey-Algo::Next", ">=rsa2048,ed25519,ed448,nistp256,nistp384,nistp512");
+   Cnf.CndSet("APT::Key::Assert-Pubkey-Algo::Future", ">=rsa3072,ed25519,ed448");
    Cnf.CndSet("Dir","/");
    
    // State
@@ -146,6 +149,8 @@ bool pkgInitConfig(Configuration &Cnf)
 
    // Configuration
    Cnf.CndSet("Dir::Etc", &CONF_DIR[1]);
+   Cnf.CndSet("Dir::Boot", "boot");
+   Cnf.CndSet("Dir::Usr", "usr");
    Cnf.CndSet("Dir::Etc::sourcelist","sources.list");
    Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d");
    Cnf.CndSet("Dir::Etc::main","apt.conf");
@@ -154,7 +159,6 @@ bool pkgInitConfig(Configuration &Cnf)
    Cnf.CndSet("Dir::Etc::parts","apt.conf.d");
    Cnf.CndSet("Dir::Etc::preferences","preferences");
    Cnf.CndSet("Dir::Etc::preferencesparts","preferences.d");
-   Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg");
    Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d");
    Cnf.CndSet("Dir::Bin::methods", LIBEXEC_DIR "/methods");
    Cnf.CndSet("Dir::Bin::solvers::",LIBEXEC_DIR  "/solvers");
@@ -209,6 +213,16 @@ bool pkgInitConfig(Configuration &Cnf)
    Cnf.CndSet("Acquire::Changelogs::URI::Origin::Ubuntu", "https://changelogs.ubuntu.com/changelogs/pool/@CHANGEPATH@/changelog");
    Cnf.CndSet("Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu", true);
 
+   Cnf.CndSet("Acquire::Snapshots::URI::Origin::Debian", "https://snapshot.debian.org/archive/debian/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Override::Label::Debian-Security", "https://snapshot.debian.org/archive/debian-security/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Origin::Ubuntu", "https://snapshot.ubuntu.com/ubuntu/@SNAPSHOTID@/");
+   // Preseeds by host
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::archive.ubuntu.com", "https://snapshot.ubuntu.com/@PATH@/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::deb.debian.org", "https://snapshot.debian.org/archive/@PATH@/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::.archive.ubuntu.com", "https://snapshot.ubuntu.com/@PATH@/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::security.ubuntu.com", "https://snapshot.ubuntu.com/@PATH@/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::ppa.launchpadcontent.net", "https://snapshot.ppa.launchpadcontent.net/@PATH@/@SNAPSHOTID@/");
+   Cnf.CndSet("Acquire::Snapshots::URI::Host::ppa.launchpad.net", "https://snapshot.ppa.launchpadcontent.net/@PATH@/@SNAPSHOTID@/");
 
    Cnf.CndSet("DPkg::Path", "/usr/sbin:/usr/bin:/sbin:/bin");
 
diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc
index c7f7573..fe33244 100644
--- a/apt-pkg/install-progress.cc
+++ b/apt-pkg/install-progress.cc
@@ -7,12 +7,13 @@
 
 #include <algorithm>
 #include <cmath>
+#include <csignal>
+#include <cstdio>
 #include <iostream>
 #include <sstream>
 #include <vector>
 #include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
+#include <langinfo.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
 
@@ -344,14 +345,23 @@ void PackageManagerFancy::Stop()
 std::string 
 PackageManagerFancy::GetTextProgressStr(float Percent, int OutputSize)
 {
+   bool Unicode = strcmp(nl_langinfo(CODESET), "UTF-8") == 0;
    std::string output;
    if (unlikely(OutputSize < 3))
       return output;
 
    int const BarSize = OutputSize - 2; // bar without the leading "[" and trailing "]"
    int const BarDone = std::max(0, std::min(BarSize, static_cast<int>(std::floor(Percent * BarSize))));
+   double dummy;
+   double const BarDoneFractional = std::modf(Percent * BarSize, &dummy);
+   const char *const BarDoneFractionalChar = (const char *[]){
+      " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"}[static_cast<int>(std::floor(BarDoneFractional * 8))];
    output.append("[");
-   std::fill_n(std::fill_n(std::back_inserter(output), BarDone, '#'), BarSize - BarDone, '.');
+   for (int i = 0; i < BarDone; i++)
+      output.append(Unicode ? "â–ˆ" : "#");
+   if (BarDone + 1 <= BarSize)
+      output.append(Unicode ? BarDoneFractionalChar : ".");
+   std::fill_n(std::back_inserter(output), BarSize - BarDone - 1, Unicode ? ' ' : '.');
    output.append("]");
    return output;
 }
diff --git a/apt-pkg/install-progress.h b/apt-pkg/install-progress.h
index 617ce2a..499ac23 100644
--- a/apt-pkg/install-progress.h
+++ b/apt-pkg/install-progress.h
@@ -3,9 +3,9 @@
 
 #include <apt-pkg/macros.h>
 
+#include <csignal>
 #include <string>
 #include <vector>
-#include <signal.h>
 #include <unistd.h>
 
 namespace APT {
@@ -70,24 +70,23 @@ namespace Progress {
 
  public:
     explicit PackageManagerProgressFd(int progress_fd);
-    virtual ~PackageManagerProgressFd();
-
-    virtual void StartDpkg() APT_OVERRIDE;
-    virtual void Stop() APT_OVERRIDE;
-
-    virtual bool StatusChanged(std::string PackageName,
-                               unsigned int StepsDone,
-                               unsigned int TotalSteps,
-                               std::string HumanReadableAction) APT_OVERRIDE;
-    virtual void Error(std::string PackageName,
-                       unsigned int StepsDone,
-                       unsigned int TotalSteps,
-                          std::string ErrorMessage) APT_OVERRIDE;
-    virtual void ConffilePrompt(std::string PackageName,
-                                unsigned int StepsDone,
-                                unsigned int TotalSteps,
-                                   std::string ConfMessage) APT_OVERRIDE;
-
+    ~PackageManagerProgressFd() override;
+
+    void StartDpkg() override;
+    void Stop() override;
+
+    bool StatusChanged(std::string PackageName,
+		       unsigned int StepsDone,
+		       unsigned int TotalSteps,
+		       std::string HumanReadableAction) override;
+    void Error(std::string PackageName,
+	       unsigned int StepsDone,
+	       unsigned int TotalSteps,
+	       std::string ErrorMessage) override;
+    void ConffilePrompt(std::string PackageName,
+			unsigned int StepsDone,
+			unsigned int TotalSteps,
+			std::string ConfMessage) override;
  };
 
  class APT_PUBLIC PackageManagerProgressDeb822Fd : public PackageManager
@@ -101,23 +100,23 @@ namespace Progress {
 
  public:
     explicit PackageManagerProgressDeb822Fd(int progress_fd);
-    virtual ~PackageManagerProgressDeb822Fd();
-
-    virtual void StartDpkg() APT_OVERRIDE;
-    virtual void Stop() APT_OVERRIDE;
-
-    virtual bool StatusChanged(std::string PackageName,
-                               unsigned int StepsDone,
-                               unsigned int TotalSteps,
-                               std::string HumanReadableAction) APT_OVERRIDE;
-    virtual void Error(std::string PackageName,
-                       unsigned int StepsDone,
-                       unsigned int TotalSteps,
-                          std::string ErrorMessage) APT_OVERRIDE;
-    virtual void ConffilePrompt(std::string PackageName,
-                                unsigned int StepsDone,
-                                unsigned int TotalSteps,
-                                   std::string ConfMessage) APT_OVERRIDE;
+    ~PackageManagerProgressDeb822Fd() override;
+
+    void StartDpkg() override;
+    void Stop() override;
+
+    bool StatusChanged(std::string PackageName,
+		       unsigned int StepsDone,
+		       unsigned int TotalSteps,
+		       std::string HumanReadableAction) override;
+    void Error(std::string PackageName,
+	       unsigned int StepsDone,
+	       unsigned int TotalSteps,
+	       std::string ErrorMessage) override;
+    void ConffilePrompt(std::string PackageName,
+			unsigned int StepsDone,
+			unsigned int TotalSteps,
+			std::string ConfMessage) override;
  };
 
  class APT_PUBLIC PackageManagerFancy : public PackageManager
@@ -146,14 +145,14 @@ namespace Progress {
 
  public:
     PackageManagerFancy();
-    virtual ~PackageManagerFancy();
-    virtual void Pulse() APT_OVERRIDE;
-    virtual void Start(int child_pty=-1) APT_OVERRIDE;
-    virtual void Stop() APT_OVERRIDE;
-    virtual bool StatusChanged(std::string PackageName,
-                               unsigned int StepsDone,
-                               unsigned int TotalSteps,
-                               std::string HumanReadableAction) APT_OVERRIDE;
+    ~PackageManagerFancy() override;
+    void Pulse() override;
+    void Start(int child_pty = -1) override;
+    void Stop() override;
+    bool StatusChanged(std::string PackageName,
+		       unsigned int StepsDone,
+		       unsigned int TotalSteps,
+		       std::string HumanReadableAction) override;
 
     // return a progress bar of the given size for the given progress 
     // percent between 0.0 and 1.0 in the form "[####...]"
@@ -164,13 +163,13 @@ namespace Progress {
  {
     void * const d;
  public:
-    virtual bool StatusChanged(std::string PackageName,
-                               unsigned int StepsDone,
-                               unsigned int TotalSteps,
-                               std::string HumanReadableAction) APT_OVERRIDE;
+    bool StatusChanged(std::string PackageName,
+		       unsigned int StepsDone,
+		       unsigned int TotalSteps,
+		       std::string HumanReadableAction) override;
 
     PackageManagerText();
-    virtual ~PackageManagerText();
+    ~PackageManagerText() override;
  };
 
 
diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc
index 97996b3..10c93de 100644
--- a/apt-pkg/metaindex.cc
+++ b/apt-pkg/metaindex.cc
@@ -1,6 +1,7 @@
 // Include Files                                                       /*{{{*/
 #include <config.h>
 
+#include <apt-pkg/fileutl.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/metaindex.h>
 #include <apt-pkg/pkgcachegen.h>
@@ -11,8 +12,9 @@
 #include <vector>
 									/*}}}*/
 
-class metaIndexPrivate							/*{{{*/
+struct metaIndexPrivate							/*{{{*/
 {
+   int Flags;
 };
 									/*}}}*/
 
@@ -69,6 +71,8 @@ APT_PURE signed short metaIndex::GetDefaultPin() const { return DefaultPin; }
 APT_PURE bool metaIndex::GetSupportsAcquireByHash() const { return SupportsAcquireByHash; }
 APT_PURE time_t metaIndex::GetValidUntil() const { return ValidUntil; }
 APT_PURE time_t metaIndex::GetDate() const { return this->Date; }
+APT_PURE bool metaIndex::HasFlag(metaIndex::Flag Flag) const { return d->Flags & int(Flag); }
+void metaIndex::SetFlag(metaIndex::Flag Flag) { d->Flags |= int(Flag); }
 APT_PURE metaIndex::TriState metaIndex::GetLoadedSuccessfully() const { return LoadedSuccessfully; }
 APT_PURE std::string metaIndex::GetExpectedDist() const { return Dist; }
 									/*}}}*/
@@ -148,3 +152,15 @@ bool metaIndex::HasSupportForComponent(std::string const &) const/*{{{*/
    return true;
 }
 									/*}}}*/
+bool metaIndex::Load(std::string *ErrorText) /*{{{*/
+{
+   auto debmeta = dynamic_cast<debReleaseIndex *>(this);
+   if (not debmeta)
+      return false;
+   if (auto f = debmeta->MetaIndexFile("InRelease"); FileExists(f))
+      return Load(f, ErrorText);
+   if (auto f = debmeta->MetaIndexFile("Release"); FileExists(f))
+      return Load(f, ErrorText);
+   return false;
+}
+									/*}}}*/
diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h
index b8db217..e6c8b7c 100644
--- a/apt-pkg/metaindex.h
+++ b/apt-pkg/metaindex.h
@@ -4,7 +4,7 @@
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/init.h>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <string>
 #include <vector>
@@ -30,7 +30,13 @@ public:
    enum APT_HIDDEN TriState {
       TRI_YES, TRI_DONTCARE, TRI_NO, TRI_UNSET
    };
-private:
+
+   enum class APT_HIDDEN Flag
+   {
+      DEB822 = 0x01,
+   };
+
+   private:
    metaIndexPrivate * const d;
 protected:
    std::vector <pkgIndexFile *> *Indexes;
@@ -74,6 +80,10 @@ public:
    time_t GetValidUntil() const;
    time_t GetDate() const;
    virtual time_t GetNotBefore() const = 0;
+#ifdef APT_COMPILING_APT
+   bool HasFlag(Flag flag) const;
+#endif
+   void SetFlag(Flag flag) APT_HIDDEN;
 
    std::string GetExpectedDist() const;
    bool CheckDist(std::string const &MaybeDist) const;
@@ -86,6 +96,7 @@ public:
    virtual std::vector<pkgIndexFile *> *GetIndexFiles() = 0;
    virtual bool IsTrusted() const = 0;
    virtual bool Load(std::string const &Filename, std::string * const ErrorText) = 0;
+   bool Load(std::string *const ErrorText);
    /** @return a new metaIndex object based on this one, but without information from #Load */
    virtual metaIndex * UnloadedClone() const = 0;
    // the given metaIndex is potentially invalid after this call and should be deleted
@@ -110,6 +121,10 @@ public:
    virtual bool IsArchitectureSupported(std::string const &arch) const;
    virtual bool IsArchitectureAllSupportedFor(IndexTarget const &target) const;
    virtual bool HasSupportForComponent(std::string const &component) const;
+
+#ifdef APT_COMPILING_APT
+   bool IsTrustedSet() { return Trusted == TRI_YES; }
+#endif
 };
 
 #endif
diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc
index 49a3126..33d17fc 100644
--- a/apt-pkg/orderlist.cc
+++ b/apt-pkg/orderlist.cc
@@ -71,9 +71,9 @@
 #include <apt-pkg/pkgcache.h>
 
 #include <algorithm>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#include <stdlib.h>
-#include <string.h>
 									/*}}}*/
 
 using namespace std;
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index 48dd03f..05a4f7f 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -29,10 +29,10 @@
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/version.h>
 
+#include <cstddef>
 #include <iostream>
 #include <list>
 #include <string>
-#include <stddef.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -44,9 +44,9 @@ bool pkgPackageManager::SigINTStop = false;
 // ---------------------------------------------------------------------
 /* */
 pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache),
-							    List(NULL), Res(Incomplete), d(NULL)
+							    List(nullptr), Res(Incomplete), d(nullptr)
 {
-   FileNames = new string[Cache.Head().PackageCount];
+   FileNames = std::make_unique<string[]>(Cache.Head().PackageCount);
    Debug = _config->FindB("Debug::pkgPackageManager",false);
    NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true);
    ImmConfigureAll = _config->FindB("APT::Immediate-Configure-All",false);
@@ -55,11 +55,7 @@ pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache),
 // PM::PackageManager - Destructor					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-pkgPackageManager::~pkgPackageManager()
-{
-   delete List;
-   delete [] FileNames;
-}
+pkgPackageManager::~pkgPackageManager() = default;
 									/*}}}*/
 // PM::GetArchives - Queue the archives for download			/*{{{*/
 // ---------------------------------------------------------------------
@@ -109,7 +105,7 @@ bool pkgPackageManager::FixMissing()
 {   
    pkgDepCache::ActionGroup group(Cache);
    pkgProblemResolver Resolve(&Cache);
-   List->SetFileList(FileNames);
+   List->SetFileList(FileNames.get());
 
    bool Bad = false;
    for (PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
@@ -123,8 +119,7 @@ bool pkgPackageManager::FixMissing()
    }
  
    // We have to empty the list otherwise it will not have the new changes
-   delete List;
-   List = 0;
+   List.reset();
    
    if (Bad == false)
       return true;
@@ -176,8 +171,7 @@ bool pkgPackageManager::CreateOrderList()
    if (List != 0)
       return true;
    
-   delete List;
-   List = new pkgOrderList(&Cache);
+   List = std::make_unique<pkgOrderList>(&Cache);
 
    if (Debug && ImmConfigureAll) 
       clog << "CreateOrderList(): Adding Immediate flag for all packages because of APT::Immediate-Configure-All" << endl;
@@ -1065,7 +1059,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
 
    bool const ordering =
 	_config->FindB("PackageManager::UnpackAll",true) ?
-		List->OrderUnpack(FileNames) : List->OrderCritical();
+		List->OrderUnpack(FileNames.get()) : List->OrderCritical();
    if (ordering == false)
    {
       _error->Error("Internal ordering error");
diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h
index d4cc3c6..b6d592e 100644
--- a/apt-pkg/packagemanager.h
+++ b/apt-pkg/packagemanager.h
@@ -27,6 +27,7 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/pkgcache.h>
 
+#include <memory>
 #include <set>
 #include <string>
 
@@ -52,9 +53,9 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace
    static bool SigINTStop;
    
    protected:
-   std::string *FileNames;
+   std::unique_ptr<std::string[]>FileNames;
    pkgDepCache &Cache;
-   pkgOrderList *List;
+   std::unique_ptr<pkgOrderList> List;
    bool Debug;
    bool NoImmConfigure;
    bool ImmConfigureAll;
@@ -78,10 +79,10 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace
    
    // Install helpers
    bool ConfigureAll();
-   bool SmartConfigure(PkgIterator Pkg, int const Depth) APT_MUSTCHECK;
-   bool SmartUnPack(PkgIterator Pkg, bool const Immediate = true, int const Depth = 0) APT_MUSTCHECK;
-   bool SmartRemove(PkgIterator Pkg) APT_MUSTCHECK;
-   bool EarlyRemove(PkgIterator Pkg, DepIterator const * const Dep) APT_MUSTCHECK;
+   [[nodiscard]] bool SmartConfigure(PkgIterator Pkg, int Depth);
+   [[nodiscard]] bool SmartUnPack(PkgIterator Pkg, bool Immediate = true, int Depth = 0);
+   [[nodiscard]] bool SmartRemove(PkgIterator Pkg);
+   [[nodiscard]] bool EarlyRemove(PkgIterator Pkg, DepIterator const *Dep);
 
    // The Actual installation implementation
    virtual bool Install(PkgIterator /*Pkg*/,std::string /*File*/) {return false;};
@@ -130,9 +131,9 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace
    private:
    void * const d;
    enum APT_HIDDEN SmartAction { UNPACK_IMMEDIATE, UNPACK, CONFIGURE };
-   APT_HIDDEN bool NonLoopingSmart(SmartAction const action, pkgCache::PkgIterator &Pkg,
-      pkgCache::PkgIterator DepPkg, int const Depth, bool const PkgLoop,
-      bool * const Bad, bool * const Changed) APT_MUSTCHECK;
+   [[nodiscard]] APT_HIDDEN bool NonLoopingSmart(SmartAction action, pkgCache::PkgIterator &Pkg,
+						 pkgCache::PkgIterator DepPkg, int Depth, bool PkgLoop,
+						 bool *Bad, bool *Changed);
 };
 
 #endif
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
index 0d18c6c..a27b1b0 100644
--- a/apt-pkg/pkgcache.cc
+++ b/apt-pkg/pkgcache.cc
@@ -1,18 +1,18 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Package Cache - Accessor code for the cache
-   
-   Please see doc/apt-pkg/cache.sgml for a more detailed description of 
+
+   Please see doc/apt-pkg/cache.sgml for a more detailed description of
    this format. Also be sure to keep that file up-to-date!!
-   
+
    This is the general utility functions for cache management. They provide
    a complete set of accessor functions for the cache. The cacheiterators
    header contains the STL-like iterators that can be used to easially
    navigate the cache as well as seamlessly dereference the mmap'd
    indexes. Use these always.
-   
+
    The main class provides for ways to get package indexes and some
    general lookup functions to start the iterators.
 
@@ -32,11 +32,12 @@
 #include <apt-pkg/version.h>
 
 #include <algorithm>
+#include <array>
+#include <cstddef>
+#include <cstring>
 #include <sstream>
 #include <string>
 #include <vector>
-#include <stddef.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <xxhash.h>
 
@@ -44,7 +45,7 @@
 									/*}}}*/
 
 using std::string;
-using APT::StringView;
+using std::string_view;
 
 
 // Cache::Header::Header - Constructor					/*{{{*/
@@ -66,7 +67,8 @@ pkgCache::Header::Header()
    APT_HEADER_SET(PackageSz, sizeof(pkgCache::Package));
    APT_HEADER_SET(ReleaseFileSz, sizeof(pkgCache::ReleaseFile));
    APT_HEADER_SET(PackageFileSz, sizeof(pkgCache::PackageFile));
-   APT_HEADER_SET(VersionSz, sizeof(pkgCache::Version));
+   APT_HEADER_SET(SourceVersionSz, sizeof(pkgCache::SourceVersion));
+   APT_HEADER_SET(VersionSz, sizeof(pkgCache::Version) + sizeof(pkgCache::Version::Extra));
    APT_HEADER_SET(DescriptionSz, sizeof(pkgCache::Description));
    APT_HEADER_SET(DependencySz, sizeof(pkgCache::Dependency));
    APT_HEADER_SET(DependencyDataSz, sizeof(pkgCache::DependencyData));
@@ -78,6 +80,7 @@ pkgCache::Header::Header()
    GroupCount = 0;
    PackageCount = 0;
    VersionCount = 0;
+   SourceVersionCount = 0;
    DescriptionCount = 0;
    DependsCount = 0;
    DependsDataCount = 0;
@@ -111,6 +114,7 @@ bool pkgCache::Header::CheckSizes(Header &Against) const
        ReleaseFileSz == Against.ReleaseFileSz &&
        PackageFileSz == Against.PackageFileSz &&
        VersionSz == Against.VersionSz &&
+       SourceVersionSz == Against.SourceVersionSz &&
        DescriptionSz == Against.DescriptionSz &&
        DependencySz == Against.DependencySz &&
        DependencyDataSz == Against.DependencyDataSz &&
@@ -127,7 +131,7 @@ bool pkgCache::Header::CheckSizes(Header &Against) const
 /* */
 pkgCache::pkgCache(MMap *Map, bool DoMap) : Map(*Map), VS(nullptr), d(NULL)
 {
-   // call getArchitectures() with cached=false to ensure that the 
+   // call getArchitectures() with cached=false to ensure that the
    // architectures cache is re-evaluated. this is needed in cases
    // when the APT::Architecture field changes between two cache creations
    APT::Configuration::getArchitectures(false);
@@ -150,6 +154,7 @@ bool pkgCache::ReMap(bool const &Errorchecks)
    RlsFileP = (ReleaseFile *)Map.Data();
    PkgFileP = (PackageFile *)Map.Data();
    VerP = (Version *)Map.Data();
+   SrcVerP = (SourceVersion *)Map.Data();
    DescP = (Description *)Map.Data();
    ProvideP = (Provides *)Map.Data();
    DepP = (Dependency *)Map.Data();
@@ -161,13 +166,13 @@ bool pkgCache::ReMap(bool const &Errorchecks)
 
    if (Map.Size() == 0 || HeaderP == 0)
       return _error->Error(_("Empty package cache"));
-   
+
    // Check the header
    Header DefHeader;
    if (HeaderP->Signature != DefHeader.Signature ||
        HeaderP->Dirty == true)
       return _error->Error(_("The package cache file is corrupted"));
-   
+
    if (HeaderP->MajorVersion != DefHeader.MajorVersion ||
        HeaderP->MinorVersion != DefHeader.MinorVersion ||
        HeaderP->CheckSizes(DefHeader) == false)
@@ -207,7 +212,7 @@ bool pkgCache::ReMap(bool const &Errorchecks)
 /* This is used to generate the hash entries for the HashTable. With my
    package list from bo this function gets 94% table usage on a 512 item
    table (480 used items) */
-map_id_t pkgCache::sHash(StringView Str) const
+map_id_t pkgCache::sHash(string_view Str) const
 {
    uint32_t Hash = 5381;
    auto I = Str.begin();
@@ -244,7 +249,7 @@ uint32_t pkgCache::CacheHash()
 
    XXH3_64bits_update(state,
 		      reinterpret_cast<const unsigned char *>(PACKAGE_VERSION),
-		      APT_ARRAY_SIZE(PACKAGE_VERSION));
+		      strlen(PACKAGE_VERSION));
 
    XXH3_64bits_update(state,
 		      reinterpret_cast<const unsigned char *>(&header),
@@ -264,7 +269,7 @@ uint32_t pkgCache::CacheHash()
 // Cache::FindPkg - Locate a package by name				/*{{{*/
 // ---------------------------------------------------------------------
 /* Returns 0 on error, pointer to the package otherwise */
-pkgCache::PkgIterator pkgCache::FindPkg(StringView Name) {
+pkgCache::PkgIterator pkgCache::FindPkg(string_view Name) {
 	auto const found = Name.rfind(':');
 	if (found == string::npos)
 	   return FindPkg(Name, "native");
@@ -280,7 +285,7 @@ pkgCache::PkgIterator pkgCache::FindPkg(StringView Name) {
 // Cache::FindPkg - Locate a package by name				/*{{{*/
 // ---------------------------------------------------------------------
 /* Returns 0 on error, pointer to the package otherwise */
-pkgCache::PkgIterator pkgCache::FindPkg(StringView Name, StringView Arch) {
+pkgCache::PkgIterator pkgCache::FindPkg(string_view Name, string_view Arch) {
 	/* We make a detour via the GrpIterator here as
 	   on a multi-arch environment a group is easier to
 	   find than a package (less entries in the buckets) */
@@ -294,7 +299,7 @@ pkgCache::PkgIterator pkgCache::FindPkg(StringView Name, StringView Arch) {
 // Cache::FindGrp - Locate a group by name				/*{{{*/
 // ---------------------------------------------------------------------
 /* Returns End-Pointer on error, pointer to the group otherwise */
-pkgCache::GrpIterator pkgCache::FindGrp(StringView Name) {
+pkgCache::GrpIterator pkgCache::FindGrp(string_view Name) {
 	if (unlikely(Name.empty() == true))
 		return GrpIterator(*this,0);
 
@@ -313,7 +318,7 @@ pkgCache::GrpIterator pkgCache::FindGrp(StringView Name) {
 									/*}}}*/
 // Cache::CompTypeDeb - Return a string describing the compare type	/*{{{*/
 // ---------------------------------------------------------------------
-/* This returns a string representation of the dependency compare 
+/* This returns a string representation of the dependency compare
    type in the weird debian style.. */
 const char *pkgCache::CompTypeDeb(unsigned char Comp)
 {
@@ -340,30 +345,46 @@ const char *pkgCache::CompType(unsigned char Comp)
 /* */
 const char *pkgCache::DepType(unsigned char Type)
 {
-   const char *Types[] = {"",_("Depends"),_("PreDepends"),_("Suggests"),
-                          _("Recommends"),_("Conflicts"),_("Replaces"),
-                          _("Obsoletes"),_("Breaks"), _("Enhances")};
-   if (Type < sizeof(Types)/sizeof(*Types))
+   std::array<char const *, 12> Types{nullptr, _("Depends"), _("PreDepends"), _("Suggests"),
+				      _("Recommends"), _("Conflicts"), _("Replaces"),
+				      _("Obsoletes"), _("Breaks"), _("Enhances")};
+   if (Type < Types.size())
       return Types[Type];
    return "";
+}
+std::string_view pkgCache::DepType_NoL10n(unsigned char Type)
+{
+   std::array<std::string_view, 12> Types{"", "Depends", "Pre-Depends", "Suggests",
+					  "Recommends", "Conflicts", "Replaces",
+					  "Obsoletes", "Breaks", "Enhances"};
+   if (Type < Types.size())
+      return Types[Type];
+   return {};
 }
 									/*}}}*/
 // Cache::Priority - Convert a priority value to a string		/*{{{*/
-// ---------------------------------------------------------------------
-/* */
 const char *pkgCache::Priority(unsigned char Prio)
 {
-   const char *Mapping[] = {0,_("required"),_("important"),_("standard"),
-                            _("optional"),_("extra")};
-   if (Prio < APT_ARRAY_SIZE(Mapping))
+   std::array<char const *, 6> Mapping{nullptr, _("required"), _("important"), _("standard"),
+				       _("optional"), _("extra")};
+   if (Prio < Mapping.size())
       return Mapping[Prio];
-   return 0;
+   return nullptr;
+}
+std::string_view pkgCache::Priority_NoL10n(unsigned char Prio)
+{
+   constexpr std::array<std::string_view, 6> const Mapping{
+      "", "required", "important", "standard", "optional", "extra"
+   };
+   if (Prio < Mapping.size())
+      return Mapping[Prio];
+   return {};
 }
 									/*}}}*/
 // GrpIterator::FindPkg - Locate a package by arch			/*{{{*/
 // ---------------------------------------------------------------------
 /* Returns an End-Pointer on error, pointer to the package otherwise */
-pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(StringView Arch) const {
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string_view Arch) const {
 	if (unlikely(IsGood() == false || S->FirstPackage == 0))
 		return PkgIterator(*Owner, 0);
 
@@ -390,21 +411,31 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(StringView Arch) const {
 // ---------------------------------------------------------------------
 /* Returns an End-Pointer on error, pointer to the package otherwise */
 pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg(bool const &PreferNonVirtual) const {
-	pkgCache::PkgIterator Pkg = FindPkg(StringView("native", 6));
+	pkgCache::PkgIterator Pkg = FindPkg(string_view("native", 6));
 	if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
 		return Pkg;
-
-	std::vector<std::string> const archs = APT::Configuration::getArchitectures();
-	for (std::vector<std::string>::const_iterator a = archs.begin();
-	     a != archs.end(); ++a) {
-		Pkg = FindPkg(*a);
+	// native and foreign
+	for (auto const &a : APT::Configuration::getArchitectures())
+	{
+		Pkg = FindPkg(a);
+		if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
+			return Pkg;
+	}
+	// very foreign/barbarian
+	for (auto const &a : _config->FindVector("APT::BarbarianArchitectures"))
+	{
+		Pkg = FindPkg(a);
 		if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
 			return Pkg;
 	}
 	// packages without an architecture
-	Pkg = FindPkg(StringView("none", 4));
+	Pkg = FindPkg(string_view("none", 4));
 	if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
 		return Pkg;
+	// the "rest" we somehow know about (+ those we tried already again as skipping is hard)
+	for (Pkg = PackageList(); not Pkg.end(); Pkg = NextPkg(Pkg))
+		if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
+			return Pkg;
 
 	if (PreferNonVirtual == true)
 		return FindPreferredPkg(false);
@@ -479,25 +510,25 @@ pkgCache::DepIterator& pkgCache::DepIterator::operator++()		/*{{{*/
 // ---------------------------------------------------------------------
 /* By this we mean if it is either cleanly installed or cleanly removed. */
 pkgCache::PkgIterator::OkState pkgCache::PkgIterator::State() const
-{  
+{
    if (S->InstState == pkgCache::State::ReInstReq ||
        S->InstState == pkgCache::State::HoldReInstReq)
       return NeedsUnpack;
-   
+
    if (S->CurrentState == pkgCache::State::UnPacked ||
        S->CurrentState == pkgCache::State::HalfConfigured)
       // we leave triggers alone completely. dpkg deals with
-      // them in a hard-to-predict manner and if they get 
-      // resolved by dpkg before apt run dpkg --configure on 
+      // them in a hard-to-predict manner and if they get
+      // resolved by dpkg before apt run dpkg --configure on
       // the TriggersPending package dpkg returns a error
       //Pkg->CurrentState == pkgCache::State::TriggersAwaited
       //Pkg->CurrentState == pkgCache::State::TriggersPending)
       return NeedsConfigure;
-   
+
    if (S->CurrentState == pkgCache::State::HalfInstalled ||
        S->InstState != pkgCache::State::Ok)
       return NeedsUnpack;
-      
+
    return NeedsNothing;
 }
 									/*}}}*/
@@ -519,8 +550,8 @@ pkgCache::PkgIterator::CurVersion() const
    Note that the characters <|>() are all literal above. Versions will be omitted
    if they provide no new information (e.g. there is no newer version than candidate)
    If no version and/or section can be found "none" is used. */
-std::ostream& 
-operator<<(std::ostream& out, pkgCache::PkgIterator Pkg) 
+std::ostream&
+operator<<(std::ostream& out, pkgCache::PkgIterator Pkg)
 {
    if (Pkg.end() == true)
       return out << "invalid package";
@@ -583,34 +614,34 @@ bool pkgCache::DepIterator::IsNegative() const
    then it returned. Otherwise the providing list is looked at to
    see if there is one unique providing package if so it is returned.
    Otherwise true is returned and the target package is set. The return
-   result indicates whether the node should be expandable 
- 
-   In Conjunction with the DepCache the value of Result may not be 
+   result indicates whether the node should be expandable
+
+   In Conjunction with the DepCache the value of Result may not be
    super-good since the policy may have made it uninstallable. Using
    AllTargets is better in this case. */
 bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result) const
 {
    Result = TargetPkg();
-   
+
    // No provides at all
    if (Result->ProvidesList == 0)
       return false;
-   
+
    // There is the Base package and the providing ones which is at least 2
    if (Result->VersionList != 0)
       return true;
-      
+
    /* We have to skip over indirect provisions of the package that
       owns the dependency. For instance, if libc5-dev depends on the
       virtual package libc-dev which is provided by libc5-dev and libc6-dev
-      we must ignore libc5-dev when considering the provides list. */ 
+      we must ignore libc5-dev when considering the provides list. */
    PrvIterator PStart = Result.ProvidesList();
    for (; PStart.end() != true && PStart.OwnerPkg() == ParentPkg(); ++PStart);
 
    // Nothing but indirect self provides
    if (PStart.end() == true)
       return false;
-   
+
    // Check for single packages in the provides list
    PrvIterator P = PStart;
    for (; P.end() != true; ++P)
@@ -623,11 +654,11 @@ bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result) const
    }
 
    Result = PStart.OwnerPkg();
-   
+
    // Check for non dups
    if (P.end() != true)
       return true;
-   
+
    return false;
 }
 									/*}}}*/
@@ -658,7 +689,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
 	 if (Res != 0)
 	    *End++ = I;
       }
-      
+
       // Follow all provides
       for (PrvIterator I = DPkg.ProvidesList(); I.end() == false; ++I)
       {
@@ -671,7 +702,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
 	 if (Res != 0)
 	    *End++ = I.OwnerVer();
       }
-      
+
       // Do it again and write it into the array
       if (Res == 0)
       {
@@ -682,9 +713,9 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
       {
 	 *End = 0;
 	 break;
-      }      
+      }
    }
-   
+
    return Res;
 }
 									/*}}}*/
@@ -749,6 +780,13 @@ bool pkgCache::DepIterator::IsIgnorable(PrvIterator const &Prv) const
 }
 									/*}}}*/
 // DepIterator::IsSatisfied - check if a version satisfied the dependency /*{{{*/
+bool pkgCache::DepIterator::IsSatisfied(PkgIterator const &Pkg) const
+{
+   for (auto ver = Pkg.VersionList(); not ver.end(); ++ver)
+      if (not IsSatisfied(ver))
+	 return false;
+   return not Pkg.VersionList().end();
+}
 bool pkgCache::DepIterator::IsSatisfied(VerIterator const &Ver) const
 {
    return Owner->VS->CheckDep(Ver.VerStr(),S2->CompareOp,TargetVer());
@@ -811,7 +849,7 @@ int pkgCache::VerIterator::CompareVer(const VerIterator &B) const
       return -1;
    if (B.end() == true)
       return 1;
-       
+
    /* Start at A and look for B. If B is found then A > B otherwise
       B was before A so A < B */
    VerIterator I = *this;
@@ -835,7 +873,7 @@ APT_PURE bool pkgCache::VerIterator::Downloadable() const
 									/*}}}*/
 // VerIterator::Automatic - Check if this version is 'automatic'	/*{{{*/
 // ---------------------------------------------------------------------
-/* This checks to see if any of the versions files are not NotAutomatic. 
+/* This checks to see if any of the versions files are not NotAutomatic.
    True if this version is selectable for automatic installation. */
 APT_PURE bool pkgCache::VerIterator::Automatic() const
 {
@@ -860,13 +898,13 @@ pkgCache::VerFileIterator pkgCache::VerIterator::NewestFile() const
       if (Owner->VS->CmpReleaseVer(Files.File().Version(),Highest.File().Version()) > 0)
 	 Highest = Files;
    }
-   
+
    return Highest;
 }
 									/*}}}*/
 // VerIterator::RelStr - Release description string			/*{{{*/
 // ---------------------------------------------------------------------
-/* This describes the version from a release-centric manner. The output is a 
+/* This describes the version from a release-centric manner. The output is a
    list of Label:Version/Archive */
 static std::string PkgFileIteratorToRelString(pkgCache::PkgFileIterator const &File)
 {
@@ -970,7 +1008,7 @@ string pkgCache::PkgFileIterator::RelStr()				/*{{{*/
 // ---------------------------------------------------------------------
 /* return a DescIter for the specified language
  */
-pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescriptionForLanguage(StringView lang) const
+pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescriptionForLanguage(string_view lang) const
 {
    for (pkgCache::DescIterator Desc = DescriptionList(); Desc.end() == false; ++Desc)
       if (lang == Desc.LanguageCode())
@@ -1007,5 +1045,30 @@ pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const
 }
 
 									/*}}}*/
+// VerIterator::IsSecurity - check if it is a security update /*{{{*/
+
+// See if this version is a security update. This also checks, for installed packages,
+// if any of the previous versions is a security update
+bool pkgCache::VerIterator::IsSecurityUpdate() const
+{
+   auto Pkg = ParentPkg();
+   auto Installed = Pkg.CurrentVer();
+
+   auto OtherVer = Pkg.VersionList();
+
+   // Advance to first version < our version
+   while (OtherVer->ID != S->ID)
+      ++OtherVer;
 
+   // Iterate over all versions < our version
+   for (; !OtherVer.end() && (Installed.end() || OtherVer->ID != Installed->ID); OtherVer++)
+   {
+      for (auto PF = OtherVer.FileList(); !PF.end(); PF++)
+	 if (PF.File() && PF.File().Archive() != nullptr && APT::String::Endswith(PF.File().Archive(), "-security"))
+	    return true;
+   }
+   return false;
+}
+
+									/*}}}*/
 pkgCache::~pkgCache() {}
diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h
index 55baa3c..b832106 100644
--- a/apt-pkg/pkgcache.h
+++ b/apt-pkg/pkgcache.h
@@ -77,12 +77,12 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/mmap.h>
 
-#include <cstddef>       // required for nullptr_t
+#include <cstddef> // required for nullptr_t
+#include <cstdint>
+#include <ctime>
 #include <string>
-#include <stdint.h>
-#include <time.h>
+#include <string_view>
 
-#include <apt-pkg/string_view.h>
 
 
 // size of (potentially big) files like debs or the install size of them
@@ -131,6 +131,7 @@ class APT_PUBLIC pkgCache								/*{{{*/
    struct Package;
    struct ReleaseFile;
    struct PackageFile;
+   struct SourceVersion;
    struct Version;
    struct Description;
    struct Provides;
@@ -145,6 +146,7 @@ class APT_PUBLIC pkgCache								/*{{{*/
    class GrpIterator;
    class PkgIterator;
    class VerIterator;
+   class SrcVerIterator;
    class DescIterator;
    class DepIterator;
    class PrvIterator;
@@ -213,7 +215,7 @@ class APT_PUBLIC pkgCache								/*{{{*/
    // Memory mapped cache file
    std::string CacheFile;
    MMap &Map;
-   map_id_t sHash(APT::StringView S) const APT_PURE;
+   map_id_t sHash(std::string_view S) const APT_PURE;
    
    public:
    
@@ -225,13 +227,14 @@ class APT_PUBLIC pkgCache								/*{{{*/
    DescFile *DescFileP;
    ReleaseFile *RlsFileP;
    PackageFile *PkgFileP;
+   SourceVersion *SrcVerP; // reserved for SourceVersion objects
    Version *VerP;
    Description *DescP;
    Provides *ProvideP;
    Dependency *DepP;
    DependencyData *DepDataP;
    char *StrP;
-   void *reserved[12];
+   void *reserved[13];
 
    virtual bool ReMap(bool const &Errorchecks = true);
    inline bool Sync() {return Map.Sync();}
@@ -239,23 +242,24 @@ class APT_PUBLIC pkgCache								/*{{{*/
    inline void *DataEnd() {return ((unsigned char *)Map.Data()) + Map.Size();}
       
    // String hashing function (512 range)
-   inline map_id_t Hash(APT::StringView S) const {return sHash(S);}
+   inline map_id_t Hash(std::string_view S) const {return sHash(S);}
 
    APT_HIDDEN uint32_t CacheHash();
 
    // Useful transformation things
    static const char *Priority(unsigned char Priority);
-   
+   static std::string_view Priority_NoL10n(unsigned char Prio);
+
    // Accessors
-   GrpIterator FindGrp(APT::StringView Name);
-   PkgIterator FindPkg(APT::StringView Name);
-   PkgIterator FindPkg(APT::StringView Name, APT::StringView Arch);
+   GrpIterator FindGrp(std::string_view Name);
+   PkgIterator FindPkg(std::string_view Name);
+   PkgIterator FindPkg(std::string_view Name, std::string_view Arch);
 
-   APT::StringView ViewString(map_stringitem_t idx) const
+   std::string_view ViewString(map_stringitem_t idx) const
    {
       char *name = StrP + idx;
-      uint16_t len = *reinterpret_cast<const uint16_t*>(name - sizeof(uint16_t));
-      return APT::StringView(name, len);
+      size_t len = *reinterpret_cast<const uint16_t*>(name - sizeof(uint16_t));
+      return {name, len};
    }
 
    Header &Head() {return *HeaderP;}
@@ -278,6 +282,7 @@ class APT_PUBLIC pkgCache								/*{{{*/
    static const char *CompTypeDeb(unsigned char Comp) APT_PURE;
    static const char *CompType(unsigned char Comp) APT_PURE;
    static const char *DepType(unsigned char Dep);
+   static std::string_view DepType_NoL10n(unsigned char Dep);
 
    pkgCache(MMap *Map,bool DoMap = true);
    virtual ~pkgCache();
@@ -319,6 +324,7 @@ struct pkgCache::Header
    map_number_t ReleaseFileSz;
    map_number_t PackageFileSz;
    map_number_t VersionSz;
+   map_number_t SourceVersionSz;
    map_number_t DescriptionSz;
    map_number_t DependencySz;
    map_number_t DependencyDataSz;
@@ -334,13 +340,14 @@ struct pkgCache::Header
    map_id_t GroupCount;
    map_id_t PackageCount;
    map_id_t VersionCount;
+   map_id_t SourceVersionCount;
    map_id_t DescriptionCount;
    map_id_t DependsCount;
    map_id_t DependsDataCount;
    map_fileid_t ReleaseFileCount;
    map_fileid_t PackageFileCount;
-   map_fileid_t VerFileCount;
-   map_fileid_t DescFileCount;
+   map_id_t VerFileCount;
+   map_id_t DescFileCount;
    map_id_t ProvidesCount;
 
    /** \brief index of the first PackageFile structure
@@ -370,7 +377,7 @@ struct pkgCache::Header
        twice the number of pools as there are non-private structure types. The generator
        stores this information so future additions can make use of any unused pool
        blocks. */
-   DynamicMMap::Pool Pools[2 * 12];
+   DynamicMMap::Pool Pools[2 * 13];
 
    /** \brief hash tables providing rapid group/package name lookup
 
@@ -430,6 +437,9 @@ struct pkgCache::Group
    /** \brief List of binary produces by source package with this name. */
    map_pointer<Version> VersionsInSource;
 
+   /** \brief SourceVersionList */
+   map_pointer<SourceVersion> SourceVersionList;
+
    /** \brief Private pointer */
    map_pointer<void> d;
 };
@@ -597,8 +607,6 @@ struct pkgCache::VerFile
    map_pointer<VerFile> NextFile;
    /** \brief position in the package file */
    map_filesize_t Offset;         // File offset
-   /** @TODO document pkgCache::VerFile::Size */
-   map_filesize_t Size;
 };
 									/*}}}*/
 // DescFile structure							/*{{{*/
@@ -611,8 +619,27 @@ struct pkgCache::DescFile
    map_pointer<DescFile> NextFile;
    /** \brief position in the file */
    map_filesize_t Offset;         // File offset
-   /** @TODO document pkgCache::DescFile::Size */
-   map_filesize_t Size;
+};
+									/*}}}*/
+// SourceVersion structure					  	/*{{{*/
+/** \brief information for a single version of a source package
+
+    The version list is always sorted from highest version to lowest
+    version by the generator. Equal version numbers are either merged
+    or handled as separate versions based on the Hash value. */
+struct pkgCache::SourceVersion
+{
+   /** \brief unique sequel ID */
+   map_id_t ID;
+   /** \brief Group the source package belongs too */
+   map_pointer<pkgCache::Group> Group;
+   /** \brief complete version string */
+   map_stringitem_t VerStr;
+   map_pointer<Version> VersionList [[gnu::unavailable("not yet available")]];
+   map_pointer<SourceVersion> NextSourceVersion [[gnu::unavailable("not yet available")]];
+
+   /** \brief Private pointer */
+   map_pointer<void> d;
 };
 									/*}}}*/
 // Version structure							/*{{{*/
@@ -629,12 +656,11 @@ struct pkgCache::Version
    map_stringitem_t VerStr;
    /** \brief section this version is filled in */
    map_stringitem_t Section;
-   /** \brief source package name this version comes from
-      Always contains the name, even if it is the same as the binary name */
-   map_stringitem_t SourcePkgName;
-   /** \brief source version this version comes from
-      Always contains the version string, even if it is the same as the binary version */
-   map_stringitem_t SourceVerStr;
+
+   /** \brief the source version object */
+   map_pointer<pkgCache::SourceVersion> SourceVersion;
+   /** \brief next version in the source package (might be different binary) */
+   map_pointer<Version> NextInSourceVersion;
 
    /** \brief Multi-Arch capabilities of a package version */
    enum VerMultiArch { No = 0, /*!< is the default and doesn't trigger special behaviour */
@@ -828,6 +854,7 @@ class pkgCache::Namespace						/*{{{*/
    typedef pkgCache::GrpIterator GrpIterator;
    typedef pkgCache::PkgIterator PkgIterator;
    typedef pkgCache::VerIterator VerIterator;
+   typedef pkgCache::SrcVerIterator SrcVerIterator;
    typedef pkgCache::DescIterator DescIterator;
    typedef pkgCache::DepIterator DepIterator;
    typedef pkgCache::PrvIterator PrvIterator;
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index 807f3bf..6e115e4 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -1,17 +1,18 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Package Cache Generator - Generator for the cache structure.
-   
-   This builds the cache structure from the abstract package list parser. 
-   
+
+   This builds the cache structure from the abstract package list parser.
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
 #include <config.h>
 
 #include <apt-pkg/configuration.h>
+#include <apt-pkg/deblistparser.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/indexfile.h>
@@ -23,15 +24,16 @@
 #include <apt-pkg/pkgsystem.h>
 #include <apt-pkg/progress.h>
 #include <apt-pkg/sourcelist.h>
+#include <apt-pkg/strutl.h>
 #include <apt-pkg/version.h>
 
 #include <algorithm>
+#include <cstddef>
+#include <cstring>
 #include <iostream>
 #include <memory>
 #include <string>
 #include <vector>
-#include <stddef.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -43,11 +45,8 @@ template<class T> using Dynamic = pkgCacheGenerator::Dynamic<T>;
 typedef std::vector<pkgIndexFile *>::iterator FileIterator;
 template <typename Iter> std::vector<Iter*> pkgCacheGenerator::Dynamic<Iter>::toReMap;
 
-static bool IsDuplicateDescription(pkgCache &Cache, pkgCache::DescIterator Desc,
-			    APT::StringView CurMd5, std::string const &CurLang);
-
 using std::string;
-using APT::StringView;
+using std::string_view;
 
 // Convert an offset returned from e.g. DynamicMMap or ptr difference to
 // an uint32_t location without data loss.
@@ -88,7 +87,7 @@ bool pkgCacheGenerator::Start()
       Map.UsePools(*Cache.HeaderP->Pools,sizeof(Cache.HeaderP->Pools)/sizeof(Cache.HeaderP->Pools[0]));
 
       // Starting header
-      *Cache.HeaderP = pkgCache::Header();
+      new (Cache.HeaderP) pkgCache::Header();
 
       // make room for the hashtables for packages and groups
       if (Map.RawAllocate(2 * (Cache.HeaderP->GetHashTableSize() * sizeof(map_pointer<void>))) == 0)
@@ -128,7 +127,7 @@ bool pkgCacheGenerator::Start()
    else
    {
       // Map directly from the existing file
-      Cache.ReMap(); 
+      Cache.ReMap();
       Map.UsePools(*Cache.HeaderP->Pools,sizeof(Cache.HeaderP->Pools)/sizeof(Cache.HeaderP->Pools[0]));
       if (Cache.VS != _system->VS)
 	 return _error->Error(_("Cache has an incompatible versioning system"));
@@ -149,7 +148,7 @@ pkgCacheGenerator::~pkgCacheGenerator()
       return;
    if (Map.Sync() == false)
       return;
-   
+
    Cache.HeaderP->Dirty = false;
    Cache.HeaderP->CacheFileSize = Cache.CacheHash();
 
@@ -191,7 +190,7 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void * const newMap, si
    APT_REMAP(pkgCache::RlsFileIterator);
 #undef APT_REMAP
 
-   for (APT::StringView* ViewP : Dynamic<APT::StringView>::toReMap) {
+   for (std::string_view* ViewP : Dynamic<std::string_view>::toReMap) {
       if (std::get<1>(seen.insert(ViewP)) == false)
 	 continue;
       // Ignore views outside of the cache.
@@ -199,7 +198,7 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void * const newMap, si
 	 || ViewP->data() > static_cast<const char*>(oldMap) + oldSize)
 	 continue;
       const char *data = ViewP->data() + (static_cast<const char*>(newMap) - static_cast<const char*>(oldMap));
-      *ViewP = StringView(data , ViewP->size());
+      *ViewP = string_view(data , ViewP->size());
    }
 }									/*}}}*/
 // CacheGenerator::WriteStringInMap					/*{{{*/
@@ -254,10 +253,10 @@ bool pkgCacheGenerator::MergeList(ListParser &List,
       if (Counter % 100 == 0 && Progress != 0)
 	 Progress->Progress(List.Offset());
 
-      APT::StringView Arch = List.Architecture();
-      Dynamic<APT::StringView> DynArch(Arch);
-      APT::StringView Version = List.Version();
-      Dynamic<APT::StringView> DynVersion(Version);
+      std::string_view Arch = List.Architecture();
+      Dynamic<std::string_view> DynArch(Arch);
+      std::string_view Version = List.Version();
+      Dynamic<std::string_view> DynVersion(Version);
       if (Version.empty() == true && Arch.empty() == true)
       {
 	 // package descriptions
@@ -338,7 +337,7 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator
 			   Pkg.Name(), "UsePackage", 1);
 
    // Find the right version to write the description
-   StringView CurMd5 = List.Description_md5();
+   string_view CurMd5 = List.Description_md5();
    std::vector<std::string> availDesc = List.AvailableDescriptionLanguages();
    for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
    {
@@ -349,14 +348,10 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator
 	 continue;
 
       map_stringitem_t md5idx = VerDesc->md5sum;
-      for (std::vector<std::string>::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang)
+      for (auto const &CurLang : availDesc)
       {
-	 // don't add a new description if we have one for the given
-	 // md5 && language
-	 if (IsDuplicateDescription(Cache, VerDesc, CurMd5, *CurLang) == true)
-	    continue;
-
-	 AddNewDescription(List, Ver, *CurLang, CurMd5, md5idx);
+	 if (not AddNewDescription(List, Ver, CurLang, CurMd5, md5idx))
+	    return false;
       }
 
       // we can stop here as all "same" versions will share the description
@@ -368,7 +363,7 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator
 									/*}}}*/
 // CacheGenerator::MergeListVersion					/*{{{*/
 bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg,
-					 APT::StringView const &Version, pkgCache::VerIterator* &OutVer)
+					 std::string_view Version, pkgCache::VerIterator* &OutVer)
 {
    pkgCache::VerIterator Ver = Pkg.VersionList();
    Dynamic<pkgCache::VerIterator> DynVer(Ver);
@@ -376,6 +371,12 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    void const * oldMap = Map.Data();
 
    auto Hash = List.VersionHash();
+   std::string_view ListSHA256;
+
+   bool const Debug = _config->FindB("Debug::pkgCacheGen", false);
+   auto DebList = dynamic_cast<debListParser *>(&List);
+   if (DebList != nullptr)
+      ListSHA256 = DebList->SHA256();
    if (Ver.end() == false)
    {
       /* We know the list is sorted so we use that fact in the search.
@@ -392,8 +393,18 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
 	 // Versionstrings are equal - is hash also equal?
 	 if (Res == 0)
 	 {
-	    if (List.SameVersion(Hash, Ver) == true)
-	       break;
+	    if (List.SameVersion(Hash, Ver))
+	    {
+               // We do not have SHA256 for both, so we cannot compare them, trust the call from SameVersion()
+               if (ListSHA256.empty() || VersionExtra[Ver->ID].SHA256[0] == 0)
+                  break;
+               // We have SHA256 for both, so they must match.
+               if (ListSHA256 == std::string_view(VersionExtra[Ver->ID].SHA256, 64))
+                  break;
+	       if (Debug)
+		  std::cerr << "Found differing SHA256 for " << Pkg.Name() << "=" << Version << std::endl;
+	    }
+
 	    // sort (volatile) sources above not-sources like the status file
 	    if (CurrentFile == nullptr || (CurrentFile->Flags & pkgCache::Flag::NotSource) == 0)
 	    {
@@ -440,6 +451,8 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    if (oldMap != Map.Data())
 	 LastVer = static_cast<map_pointer<pkgCache::Version> *>(Map.Data()) + (LastVer - static_cast<map_pointer<pkgCache::Version> const *>(oldMap));
    *LastVer = verindex;
+   if (ListSHA256.size() == 64)
+	 memcpy(VersionExtra[Ver->ID].SHA256, ListSHA256.data(), 64);
 
    if (unlikely(List.NewVersion(Ver) == false))
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
@@ -487,53 +500,72 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    }
 
    /* Record the Description(s) based on their master md5sum */
-   StringView CurMd5 = List.Description_md5();
+   string_view CurMd5 = List.Description_md5();
 
    /* Before we add a new description we first search in the group for
       a version with a description of the same MD5 - if so we reuse this
       description group instead of creating our own for this version */
    for (pkgCache::PkgIterator P = Grp.PackageList();
-	P.end() == false; P = Grp.NextPkg(P))
+	not P.end() && Ver->DescriptionList == 0; P = Grp.NextPkg(P))
    {
-      for (pkgCache::VerIterator V = P.VersionList();
-	   V.end() == false; ++V)
+      for (pkgCache::VerIterator V = P.VersionList(); not V.end(); ++V)
       {
 	 if (V->DescriptionList == 0 || Cache.ViewString(V.DescriptionList()->md5sum) != CurMd5)
 	    continue;
 	 Ver->DescriptionList = V->DescriptionList;
+	 break;
       }
    }
 
-   // We haven't found reusable descriptions, so add the first description(s)
    map_stringitem_t md5idx = Ver->DescriptionList == 0 ? 0 : Ver.DescriptionList()->md5sum;
-   std::vector<std::string> availDesc = List.AvailableDescriptionLanguages();
-   for (std::vector<std::string>::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang)
-      if (AddNewDescription(List, Ver, *CurLang, CurMd5, md5idx) == false)
+   for (auto const &CurLang : List.AvailableDescriptionLanguages())
+      if (not AddNewDescription(List, Ver, CurLang, CurMd5, md5idx))
 	 return false;
    return true;
 }
 									/*}}}*/
-bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx) /*{{{*/
+// findDescription							/*{{{*/
+static bool findDescription(pkgCache &Cache, pkgCache::DescIterator &Desc,
+			    std::string_view CurMd5, std::string_view const CurLang)
+{
+   // Descriptions in the same link-list have all the same md5
+   if (Desc.end() || Cache.ViewString(Desc->md5sum) != CurMd5)
+      return false;
+   for (; not Desc.end(); ++Desc)
+      if (CurLang == Cache.ViewString(Desc->language_code))
+	 return true;
+   return false;
+}
+									/*}}}*/
+bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, std::string const &CurLang, std::string_view CurMd5, map_stringitem_t &md5idx) /*{{{*/
 {
-   pkgCache::DescIterator Desc;
+   pkgCache::DescIterator Desc = Ver.DescriptionList();
    Dynamic<pkgCache::DescIterator> DynDesc(Desc);
 
-   map_pointer<pkgCache::Description> const descindex = NewDescription(Desc, lang, CurMd5, md5idx);
-   if (unlikely(descindex == 0))
-      return _error->Error(_("Error occurred while processing %s (%s%d)"),
-	    Ver.ParentPkg().Name(), "NewDescription", 1);
+   // don't add a new description if we have one for the given md5 && language
+   if (not findDescription(Cache, Desc, CurMd5, CurLang))
+   {
+      map_pointer<pkgCache::Description> const descindex = NewDescription(Desc, CurLang, CurMd5, md5idx);
+      if (unlikely(descindex == 0))
+	 return _error->Error(_("Error occurred while processing %s (%s%d)"),
+	       Ver.ParentPkg().Name(), "NewDescription", 1);
 
-   md5idx = Desc->md5sum;
-   Desc->ParentPkg = Ver.ParentPkg().MapPointer();
+      md5idx = Desc->md5sum;
+      Desc->ParentPkg = Ver.ParentPkg().MapPointer();
 
-   // we add at the end, so that the start is constant as we need
-   // that to be able to efficiently share these lists
-   pkgCache::DescIterator VerDesc = Ver.DescriptionList(); // old value might be invalid after ReMap
-   for (;VerDesc.end() == false && VerDesc->NextDesc != 0; ++VerDesc);
-   map_pointer<pkgCache::Description> * const LastNextDesc = (VerDesc.end() == true) ? &Ver->DescriptionList : &VerDesc->NextDesc;
-   *LastNextDesc = descindex;
+      // we add at the end, so that the start is constant as we need
+      // that to be able to efficiently share these lists
+      if (Ver->DescriptionList == 0)
+	 Ver->DescriptionList = descindex;
+      else
+      {
+	 auto VerDesc = Ver.DescriptionList();
+	 for (; VerDesc->NextDesc != 0; ++VerDesc);
+	 VerDesc->NextDesc = descindex;
+      }
+   }
 
-   if (NewFileDesc(Desc,List) == false)
+   if (not NewFileDesc(Desc, List))
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
 	    Ver.ParentPkg().Name(), "NewFileDesc", 1);
 
@@ -544,9 +576,9 @@ bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterato
 // CacheGenerator::NewGroup - Add a new group				/*{{{*/
 // ---------------------------------------------------------------------
 /* This creates a new group structure and adds it to the hash table */
-bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, StringView Name)
+bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, string_view Name)
 {
-   Dynamic<StringView> DName(Name);
+   Dynamic<string_view> DName(Name);
    Grp = Cache.FindGrp(Name);
    if (Grp.end() == false)
       return true;
@@ -579,11 +611,11 @@ bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, StringView Name)
 // CacheGenerator::NewPackage - Add a new package			/*{{{*/
 // ---------------------------------------------------------------------
 /* This creates a new package structure and adds it to the hash table */
-bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, StringView Name,
-					StringView Arch) {
+bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, string_view Name,
+					string_view Arch) {
    pkgCache::GrpIterator Grp;
-   Dynamic<StringView> DName(Name);
-   Dynamic<StringView> DArch(Arch);
+   Dynamic<string_view> DName(Name);
+   Dynamic<string_view> DArch(Arch);
    Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
    if (unlikely(NewGroup(Grp, Name) == false))
       return false;
@@ -695,24 +727,24 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, StringView Name,
    if (Arch == "any")
    {
       size_t const found = Name.rfind(':');
-      StringView ArchA = Name.substr(found + 1);
+      string_view ArchA = Name.substr(found + 1);
       if (ArchA != "any")
       {
 	 // ArchA is used inside the loop which might remap (NameA is not used)
-	 Dynamic<StringView> DynArchA(ArchA);
-	 StringView NameA = Name.substr(0, found);
+	 Dynamic<string_view> DynArchA(ArchA);
+	 string_view NameA = Name.substr(0, found);
 	 pkgCache::PkgIterator PkgA = Cache.FindPkg(NameA, ArchA);
 	 Dynamic<pkgCache::PkgIterator> DynPkgA(PkgA);
 	 if (PkgA.end())
 	 {
-	    Dynamic<StringView> DynNameA(NameA);
+	    Dynamic<string_view> DynNameA(NameA);
 	    if (NewPackage(PkgA, NameA, ArchA) == false)
 	       return false;
 	 }
 	 if (unlikely(PkgA.end()))
-	    return _error->Fatal("NewPackage was successful for %s:%s,"
+	    return _error->Fatal("NewPackage was successful for %.*s:%.*s,"
 		  "but the package doesn't exist anyhow!",
-		  NameA.to_string().c_str(), ArchA.to_string().c_str());
+		  (int)NameA.size(), NameA.data(), (int)ArchA.size(), ArchA.data());
 	 else
 	 {
 	    pkgCache::PrvIterator Prv = PkgA.ProvidesList();
@@ -744,8 +776,8 @@ bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G,
 					   pkgCache::PkgIterator &P,
 					   pkgCache::VerIterator &V)
 {
-   APT::StringView Arch = P.Arch() == NULL ? "" : P.Arch();
-   Dynamic<APT::StringView> DynArch(Arch);
+   std::string_view Arch = P.Arch() == NULL ? "" : P.Arch();
+   Dynamic<std::string_view> DynArch(Arch);
    map_pointer<pkgCache::Dependency> *OldDepLast = NULL;
    /* MultiArch handling introduces a lot of implicit Dependencies:
       - MultiArch: same → Co-Installable if they have the same version
@@ -817,28 +849,28 @@ bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver,
 {
    if (CurrentFile == nullptr)
       return true;
-   
+
    // Get a structure
    auto const VerFile = AllocateInMap<pkgCache::VerFile>();
    if (VerFile == 0)
       return false;
-   
+
    pkgCache::VerFileIterator VF(Cache,Cache.VerFileP + VerFile);
    VF->File = map_pointer<pkgCache::PackageFile>{NarrowOffset(CurrentFile - Cache.PkgFileP)};
-   
+
    // Link it to the end of the list
    map_pointer<pkgCache::VerFile> *Last = &Ver->FileList;
    for (pkgCache::VerFileIterator V = Ver.FileList(); V.end() == false; ++V)
       Last = &V->NextFile;
    VF->NextFile = *Last;
    *Last = VF.MapPointer();
-   
+
    VF->Offset = List.Offset();
-   VF->Size = List.Size();
-   if (Cache.HeaderP->MaxVerFileSize < VF->Size)
-      Cache.HeaderP->MaxVerFileSize = VF->Size;
+   auto const Size = List.Size();
+   if (Cache.HeaderP->MaxVerFileSize < Size)
+      Cache.HeaderP->MaxVerFileSize = Size;
    Cache.HeaderP->VerFileCount++;
-   
+
    return true;
 }
 									/*}}}*/
@@ -846,7 +878,7 @@ bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver,
 // ---------------------------------------------------------------------
 /* This puts a version structure in the linked list */
 map_pointer<pkgCache::Version> pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver,
-					    APT::StringView const &VerStr,
+					    std::string_view VerStr,
 					    map_pointer<pkgCache::Package> const ParentPkg,
 					    uint32_t Hash,
 					    map_pointer<pkgCache::Version> const Next)
@@ -855,13 +887,18 @@ map_pointer<pkgCache::Version> pkgCacheGenerator::NewVersion(pkgCache::VerIterat
    auto const Version = AllocateInMap<pkgCache::Version>();
    if (Version == 0)
       return 0;
-   
+
    // Fill it in
    Ver = pkgCache::VerIterator(Cache,Cache.VerP + Version);
    auto d = AllocateInMap<pkgCache::Version::Extra>(); // sequence point so Ver can be moved if needed
    Ver->d = d;
    if (not Ver.PhasedUpdatePercentage(100))
       abort();
+   auto SourceVersion = AllocateInMap<pkgCache::SourceVersion>(); // sequence point so Ver can be moved if needed
+   Ver->SourceVersion = SourceVersion;
+   Ver.SourceVersion()->ID = Cache.HeaderP->SourceVersionCount++;
+   if (not Ver.SourceVersion())
+      abort();
 
    //Dynamic<pkgCache::VerIterator> DynV(Ver); // caller MergeListVersion already takes care of it
    Ver->NextVer = Next;
@@ -869,6 +906,10 @@ map_pointer<pkgCache::Version> pkgCacheGenerator::NewVersion(pkgCache::VerIterat
    Ver->Hash = Hash;
    Ver->ID = Cache.HeaderP->VersionCount++;
 
+   // Allocate size for extra store
+   if (VersionExtra.size() <= Ver->ID)
+      VersionExtra.resize(Ver->ID + 1);
+
    // try to find the version string in the group for reuse
    pkgCache::PkgIterator Pkg = Ver.ParentPkg();
    pkgCache::GrpIterator Grp = Pkg.Group();
@@ -900,36 +941,42 @@ map_pointer<pkgCache::Version> pkgCacheGenerator::NewVersion(pkgCache::VerIterat
 }
 									/*}}}*/
 // CacheGenerator::NewFileDesc - Create a new File<->Desc association	/*{{{*/
-// ---------------------------------------------------------------------
-/* */
 bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
 				   ListParser &List)
 {
    if (CurrentFile == nullptr)
       return true;
-   
+
+   auto const DFFile = map_pointer<pkgCache::PackageFile>{NarrowOffset(CurrentFile - Cache.PkgFileP)};
+   auto const DFOffset = List.Offset();
+   for (auto DF = Desc.FileList(); not DF.end(); ++DF)
+      if (DF->File == DFFile && DF->Offset == DFOffset)
+	 return true;
+
    // Get a structure
    auto const DescFile = AllocateInMap<pkgCache::DescFile>();
    if (DescFile == 0)
       return false;
 
    pkgCache::DescFileIterator DF(Cache,Cache.DescFileP + DescFile);
-   DF->File = map_pointer<pkgCache::PackageFile>{NarrowOffset(CurrentFile - Cache.PkgFileP)};
+   DF->File = DFFile;
+   DF->Offset = DFOffset;
 
    // Link it to the end of the list
-   map_pointer<pkgCache::DescFile> *Last = &Desc->FileList;
-   for (pkgCache::DescFileIterator D = Desc.FileList(); D.end() == false; ++D)
-      Last = &D->NextFile;
-
-   DF->NextFile = *Last;
-   *Last = DF.MapPointer();
-   
-   DF->Offset = List.Offset();
-   DF->Size = List.Size();
-   if (Cache.HeaderP->MaxDescFileSize < DF->Size)
-      Cache.HeaderP->MaxDescFileSize = DF->Size;
+   if (Desc->FileList == 0)
+      Desc->FileList = DescFile;
+   else
+   {
+      auto Last = Desc.FileList();
+      for (; Last->NextFile != 0; ++Last);
+      Last->NextFile = DescFile;
+   }
+
+   auto const Size = List.Size();
+   if (Cache.HeaderP->MaxDescFileSize < Size)
+      Cache.HeaderP->MaxDescFileSize = Size;
    Cache.HeaderP->DescFileCount++;
-   
+
    return true;
 }
 									/*}}}*/
@@ -938,7 +985,7 @@ bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
 /* This puts a description structure in the linked list */
 map_pointer<pkgCache::Description> pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
 					    const string &Lang,
-					    APT::StringView md5sum,
+					    std::string_view md5sum,
 					    map_stringitem_t const idxmd5str)
 {
    // Get a structure
@@ -1071,17 +1118,17 @@ bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg,
 /* This creates a Group and the Package to link this dependency to if
    needed and handles also the caching of the old endpoint */
 bool pkgCacheListParser::NewDepends(pkgCache::VerIterator &Ver,
-					       StringView PackageName,
-					       StringView Arch,
-					       StringView Version,
+					       string_view PackageName,
+					       string_view Arch,
+					       string_view Version,
 					       uint8_t const Op,
 					       uint8_t const Type)
 {
    pkgCache::GrpIterator Grp;
    Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
-   Dynamic<StringView> DynPackageName(PackageName);
-   Dynamic<StringView> DynArch(Arch);
-   Dynamic<StringView> DynVersion(Version);
+   Dynamic<string_view> DynPackageName(PackageName);
+   Dynamic<string_view> DynArch(Arch);
+   Dynamic<string_view> DynVersion(Version);
    if (unlikely(Owner->NewGroup(Grp, PackageName) == false))
       return false;
 
@@ -1143,18 +1190,18 @@ bool pkgCacheListParser::NewDepends(pkgCache::VerIterator &Ver,
 									/*}}}*/
 // ListParser::NewProvides - Create a Provides element			/*{{{*/
 bool pkgCacheListParser::NewProvides(pkgCache::VerIterator &Ver,
-						StringView PkgName,
-						StringView PkgArch,
-						StringView Version,
+						string_view PkgName,
+						string_view PkgArch,
+						string_view Version,
 						uint8_t const Flags)
 {
    pkgCache const &Cache = Owner->Cache;
-   Dynamic<StringView> DynPkgName(PkgName);
-   Dynamic<StringView> DynArch(PkgArch);
-   Dynamic<StringView> DynVersion(Version);
+   Dynamic<string_view> DynPkgName(PkgName);
+   Dynamic<string_view> DynArch(PkgArch);
+   Dynamic<string_view> DynVersion(Version);
 
    // We do not add self referencing provides
-   if (Ver.ParentPkg().Name() == PkgName && (PkgArch == Ver.ParentPkg().Arch() ||
+   if (string_view{Ver.ParentPkg().Name()} == PkgName && (PkgArch == Ver.ParentPkg().Arch() ||
 	(PkgArch == "all" && strcmp((Cache.StrP + Cache.HeaderP->Architecture), Ver.ParentPkg().Arch()) == 0)) &&
 	 (Version.empty() || Version == Ver.VerStr()))
       return true;
@@ -1200,13 +1247,13 @@ bool pkgCacheGenerator::NewProvides(pkgCache::VerIterator &Ver,
 }
 									/*}}}*/
 // ListParser::NewProvidesAllArch - add provides for all architectures	/*{{{*/
-bool pkgCacheListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, StringView Package,
-				StringView Version, uint8_t const Flags) {
+bool pkgCacheListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, string_view Package,
+				string_view Version, uint8_t const Flags) {
    pkgCache &Cache = Owner->Cache;
    pkgCache::GrpIterator Grp = Cache.FindGrp(Package);
    Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
-   Dynamic<StringView> DynPackage(Package);
-   Dynamic<StringView> DynVersion(Version);
+   Dynamic<string_view> DynPackage(Package);
+   Dynamic<string_view> DynVersion(Version);
 
    if (Grp.end() == true || Grp->FirstPackage == 0)
       return NewProvides(Ver, Package, Cache.NativeArch(), Version, Flags);
@@ -1592,7 +1639,7 @@ static bool BuildCache(pkgCacheGenerator &Gen,
 									/*}}}*/
 // CacheGenerator::MakeStatusCache - Construct the status cache		/*{{{*/
 // ---------------------------------------------------------------------
-/* This makes sure that the status cache (the cache that has all 
+/* This makes sure that the status cache (the cache that has all
    index files from the sources list and all local ones) is ready
    to be mmaped. If OutMap is not zero then a MMap object representing
    the cache will be stored there. This is pretty much mandatory if you
@@ -1614,6 +1661,10 @@ static DynamicMMap* CreateDynamicMMap(FileFd * const CacheF, unsigned long Flags
 static bool writeBackMMapToFile(pkgCacheGenerator * const Gen, DynamicMMap * const Map,
       std::string const &FileName)
 {
+   // Do not write the file back to /dev/null or try to change its mode...
+   if (FileName == "/dev/null")
+      return true;
+
    FileFd SCacheF(FileName, FileFd::WriteAtomic);
    if (SCacheF.IsOpen() == false || SCacheF.Failed())
       return false;
@@ -1841,23 +1892,10 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O
    if (_error->PendingError() == true)
       return false;
    *OutMap = Map.release();
-   
+
    return true;
 }
 									/*}}}*/
-// IsDuplicateDescription						/*{{{*/
-static bool IsDuplicateDescription(pkgCache &Cache, pkgCache::DescIterator Desc,
-			    APT::StringView CurMd5, std::string const &CurLang)
-{
-   // Descriptions in the same link-list have all the same md5
-   if (Desc.end() == true || Cache.ViewString(Desc->md5sum) != CurMd5)
-      return false;
-   for (; Desc.end() == false; ++Desc)
-      if (Desc.LanguageCode() == CurLang)
-	 return true;
-   return false;
-}
-									/*}}}*/
 
 pkgCacheListParser::pkgCacheListParser() : Owner(NULL), OldDepLast(NULL), d(NULL) {}
 pkgCacheListParser::~pkgCacheListParser() {}
diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h
index f4781d7..85c8003 100644
--- a/apt-pkg/pkgcachegen.h
+++ b/apt-pkg/pkgcachegen.h
@@ -1,18 +1,18 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    Package Cache Generator - Generator for the cache structure.
-   
-   This builds the cache structure from the abstract package list parser. 
+
+   This builds the cache structure from the abstract package list parser.
    Each archive source has it's own list parser that is instantiated by
-   the caller to provide data for the generator. 
-   
+   the caller to provide data for the generator.
+
    Parts of the cache are created by this generator class while other
    parts are created by the list parser. The list parser is responsible
    for creating version, depends and provides structures, and some of
    their contents
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef PKGLIB_PKGCACHEGEN_H
@@ -23,11 +23,11 @@
 #include <apt-pkg/pkgcache.h>
 
 #include <string>
+#include <string_view>
 #include <vector>
 #if __cplusplus >= 201103L
 #include <unordered_set>
 #endif
-#include <apt-pkg/string_view.h>
 
 #ifdef APT_COMPILING_APT
 #include <xxhash.h>
@@ -41,7 +41,7 @@ class pkgCacheListParser;
 
 class APT_HIDDEN pkgCacheGenerator					/*{{{*/
 {
-   APT_HIDDEN map_stringitem_t WriteStringInMap(APT::StringView String) { return WriteStringInMap(String.data(), String.size()); };
+   APT_HIDDEN map_stringitem_t WriteStringInMap(std::string_view String) { return WriteStringInMap(String.data(), String.size()); };
    APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String);
    APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String, const unsigned long &Len);
    APT_HIDDEN uint32_t AllocateInMap(const unsigned long &size);
@@ -76,6 +76,12 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
    std::unordered_set<string_pointer, hash> strSections;
 #endif
 
+   struct VersionExtra
+   {
+      char SHA256[64];
+   };
+   std::vector<VersionExtra> VersionExtra{32 * 1024};
+
    friend class pkgCacheListParser;
    typedef pkgCacheListParser ListParser;
 
@@ -109,12 +115,12 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
    std::string PkgFileName;
    pkgCache::PackageFile *CurrentFile;
 
-   bool NewGroup(pkgCache::GrpIterator &Grp, APT::StringView Name);
-   bool NewPackage(pkgCache::PkgIterator &Pkg, APT::StringView Name, APT::StringView Arch);
-   map_pointer<pkgCache::Version> NewVersion(pkgCache::VerIterator &Ver, APT::StringView const &VerStr,
+   bool NewGroup(pkgCache::GrpIterator &Grp, std::string_view Name);
+   bool NewPackage(pkgCache::PkgIterator &Pkg, std::string_view Name, std::string_view Arch);
+   map_pointer<pkgCache::Version> NewVersion(pkgCache::VerIterator &Ver, std::string_view VerStr,
 			    map_pointer<pkgCache::Package> const ParentPkg, uint32_t Hash,
 			    map_pointer<pkgCache::Version> const Next);
-   map_pointer<pkgCache::Description> NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, APT::StringView md5sum,map_stringitem_t const idxmd5str);
+   map_pointer<pkgCache::Description> NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, std::string_view md5sum,map_stringitem_t const idxmd5str);
    bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List);
    bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List);
    bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver,
@@ -128,7 +134,7 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
    enum StringType { MIXED, VERSIONNUMBER, SECTION };
    map_stringitem_t StoreString(StringType const type, const char * S, unsigned int const Size);
 
-   inline map_stringitem_t StoreString(enum StringType const type, APT::StringView S) {return StoreString(type, S.data(),S.length());};
+   inline map_stringitem_t StoreString(enum StringType const type, std::string_view S) {return StoreString(type, S.data(),S.length());};
 
    void DropProgress() {Progress = 0;};
    bool SelectFile(const std::string &File,pkgIndexFile const &Index, std::string const &Architecture, std::string const &Component, unsigned long Flags = 0);
@@ -157,14 +163,14 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
    APT_HIDDEN bool MergeListGroup(ListParser &List, std::string const &GrpName);
    APT_HIDDEN bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg);
    APT_HIDDEN bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg,
-			 APT::StringView const &Version, pkgCache::VerIterator* &OutVer);
+			 std::string_view Version, pkgCache::VerIterator* &OutVer);
 
    APT_HIDDEN bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P,
 			   pkgCache::VerIterator &V);
    APT_HIDDEN bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D);
 
    APT_HIDDEN bool AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver,
-	 std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx);
+	 std::string const &lang, std::string_view CurMd5, map_stringitem_t &md5idx);
 };
 									/*}}}*/
 // This is the abstract package list parser class.			/*{{{*/
@@ -180,30 +186,30 @@ class APT_HIDDEN pkgCacheListParser
    void * const d;
 
    protected:
-   inline bool NewGroup(pkgCache::GrpIterator &Grp, APT::StringView Name) { return Owner->NewGroup(Grp, Name); }
+   inline bool NewGroup(pkgCache::GrpIterator &Grp, std::string_view Name) { return Owner->NewGroup(Grp, Name); }
    inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, const char *S,unsigned int Size) {return Owner->StoreString(type, S, Size);};
-   inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, APT::StringView S) {return Owner->StoreString(type, S);};
-   inline map_stringitem_t WriteString(APT::StringView S) {return Owner->WriteStringInMap(S.data(), S.size());};
+   inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, std::string_view S) {return Owner->StoreString(type, S);};
+   inline map_stringitem_t WriteString(std::string_view S) {return Owner->WriteStringInMap(S.data(), S.size());};
 
    inline map_stringitem_t WriteString(const char *S,unsigned int Size) {return Owner->WriteStringInMap(S,Size);};
-   bool NewDepends(pkgCache::VerIterator &Ver,APT::StringView Package, APT::StringView Arch,
-		   APT::StringView Version,uint8_t const Op,
+   bool NewDepends(pkgCache::VerIterator &Ver,std::string_view Package, std::string_view Arch,
+		   std::string_view Version,uint8_t const Op,
 		   uint8_t const Type);
-   bool NewProvides(pkgCache::VerIterator &Ver,APT::StringView PkgName,
-		    APT::StringView PkgArch, APT::StringView Version,
+   bool NewProvides(pkgCache::VerIterator &Ver,std::string_view PkgName,
+		    std::string_view PkgArch, std::string_view Version,
 		    uint8_t const Flags);
-   bool NewProvidesAllArch(pkgCache::VerIterator &Ver, APT::StringView Package,
-			   APT::StringView Version, uint8_t const Flags);
+   bool NewProvidesAllArch(pkgCache::VerIterator &Ver, std::string_view Package,
+			   std::string_view Version, uint8_t const Flags);
    public:
-   
+
    // These all operate against the current section
    virtual std::string Package() = 0;
    virtual bool ArchitectureAll() = 0;
-   virtual APT::StringView Architecture() = 0;
-   virtual APT::StringView Version() = 0;
+   virtual std::string_view Architecture() = 0;
+   virtual std::string_view Version() = 0;
    virtual bool NewVersion(pkgCache::VerIterator &Ver) = 0;
    virtual std::vector<std::string> AvailableDescriptionLanguages() = 0;
-   virtual APT::StringView Description_md5() = 0;
+   virtual std::string_view Description_md5() = 0;
    virtual uint32_t VersionHash() = 0;
    /** compare currently parsed version with given version
     *
@@ -215,9 +221,9 @@ class APT_HIDDEN pkgCacheListParser
 			   pkgCache::VerIterator &Ver) = 0;
    virtual map_filesize_t Offset() = 0;
    virtual map_filesize_t Size() = 0;
-   
+
    virtual bool Step() = 0;
-   
+
    virtual bool CollectFileProvides(pkgCache &/*Cache*/,
 				    pkgCache::VerIterator &/*Ver*/) {return true;};
 
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc
index 77aa8ce..d4f05b1 100644
--- a/apt-pkg/pkgrecords.cc
+++ b/apt-pkg/pkgrecords.cc
@@ -15,8 +15,8 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgrecords.h>
 
+#include <cstddef>
 #include <vector>
-#include <stddef.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -37,7 +37,8 @@ pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache),
          return;
       }
 
-      Files[I->ID] = Type->CreatePkgParser(I);
+      // FIXME: CreatePkgParser shall return unique_ptr
+      Files[I->ID] = std::unique_ptr<Parser>{Type->CreatePkgParser(I)};
       if (Files[I->ID] == 0)
          return;
    }
@@ -46,15 +47,7 @@ pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache),
 // Records::~pkgRecords - Destructor					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-pkgRecords::~pkgRecords()
-{
-   for ( std::vector<Parser*>::iterator it = Files.begin();
-     it != Files.end();
-     ++it)
-   {
-      delete *it;
-   }
-}
+pkgRecords::~pkgRecords() = default;
 									/*}}}*/
 // Records::Lookup - Get a parser for the package version file		/*{{{*/
 // ---------------------------------------------------------------------
diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h
index 09c0b5f..d193dde 100644
--- a/apt-pkg/pkgrecords.h
+++ b/apt-pkg/pkgrecords.h
@@ -20,6 +20,7 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/pkgcache.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -33,7 +34,7 @@ class APT_PUBLIC pkgRecords							/*{{{*/
    void * const d;
    
    pkgCache &Cache;
-   std::vector<Parser *>Files;
+   std::vector<std::unique_ptr<Parser>>Files;
 
     public:
    // Lookup function
diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc
index 68b3f5e..ab21cd0 100644
--- a/apt-pkg/policy.cc
+++ b/apt-pkg/policy.cc
@@ -21,24 +21,23 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/policy.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/tagfile-keys.h>
 #include <apt-pkg/tagfile.h>
 #include <apt-pkg/version.h>
 #include <apt-pkg/versionmatch.h>
 
+#include <cctype>
+#include <cstddef>
+#include <cstring>
 #include <iostream>
 #include <random>
 #include <sstream>
 #include <string>
 #include <vector>
-#include <ctype.h>
-#include <stddef.h>
-#include <string.h>
 
 #include <apti18n.h>
-									/*}}}*/
+   /*}}}*/
 
 using namespace std;
 
@@ -58,8 +57,8 @@ pkgPolicy::pkgPolicy(pkgCache *Owner) : VerPins(nullptr),
 {
    if (Owner == 0)
       return;
-   PFPriority = new signed short[Owner->Head().PackageFileCount];
-   VerPins = new Pin[Owner->Head().VersionCount];
+   PFPriority = std::make_unique<signed short[]>(Owner->Head().PackageFileCount);
+   VerPins = std::make_unique<Pin[]>(Owner->Head().VersionCount);
 
    auto VersionCount = Owner->Head().VersionCount;
    for (decltype(VersionCount) I = 0; I != VersionCount; ++I)
@@ -238,7 +237,7 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
 	    // Find matching version(s) and copy the pin into it
 	    pkgVersionMatch Match(P.Data,P.Type);
 	    if (Match.VersionMatches(Ver)) {
-	       Pin *VP = VerPins + Ver->ID;
+	       Pin *VP = &VerPins[Ver->ID];
 	       if (VP->Type == pkgVersionMatch::None) {
 		  *VP = P;
 		   matched = true;
@@ -261,7 +260,7 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
 	    for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() != true; ++Ver)
 	    {
 	       if (Match.VersionMatches(Ver)) {
-		  Pin *VP = VerPins + Ver->ID;
+		  Pin *VP = &VerPins[Ver->ID];
 		  if (VP->Type == pkgVersionMatch::None) {
 		     *VP = P;
 		      matched = true;
@@ -438,13 +437,13 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
       if (Name.empty())
 	 return _error->Error(_("Invalid record in the preferences file %s, no Package header"), File.c_str());
       if (Name == "*")
-	 Name = APT::StringView{};
+	 Name = {};
 
       const char *Start;
       const char *End;
       if (Tags.Find("Pin",Start,End) == false)
 	 continue;
-	 
+
       const char *Word = Start;
       for (; Word != End && isspace(*Word) == 0; Word++);
 
@@ -452,6 +451,8 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
       pkgVersionMatch::MatchType Type;
       if (stringcasecmp(Start,Word,"version") == 0 && Name.empty() == false)
 	 Type = pkgVersionMatch::Version;
+      else if (stringcasecmp(Start,Word,"source-version") == 0 && Name.empty() == false)
+	 Type = pkgVersionMatch::SourceVersion;
       else if (stringcasecmp(Start,Word,"release") == 0)
 	 Type = pkgVersionMatch::Release;
       else if (stringcasecmp(Start,Word,"origin") == 0)
@@ -488,7 +489,7 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
          return _error->Error(_("No priority (or zero) specified for pin"));
       }
 
-      std::istringstream s(Name.to_string());
+      std::istringstream s(std::string{Name});  // TODO: replace with std::string_view_stream in C++23
       string pkg;
       while(!s.eof())
       {
@@ -502,9 +503,4 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
 }
 									/*}}}*/
 
-pkgPolicy::~pkgPolicy()
-{
-   delete[] PFPriority;
-   delete[] VerPins;
-   delete d;
-}
+pkgPolicy::~pkgPolicy() = default;
diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h
index 589cebc..9347322 100644
--- a/apt-pkg/policy.h
+++ b/apt-pkg/policy.h
@@ -36,6 +36,7 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/versionmatch.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -58,8 +59,9 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy
       explicit PkgPin(std::string const &Pkg) : Pin(), Pkg(Pkg) {};
    };
 
-   Pin *VerPins;
-   signed short *PFPriority;
+   std::unique_ptr<Pin[]> SrcVerPins;
+   std::unique_ptr<Pin[]> VerPins;
+   std::unique_ptr<signed short[]> PFPriority;
    std::vector<Pin> Defaults;
    std::vector<PkgPin> Unmatched;
    pkgCache *Cache;
@@ -72,9 +74,9 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy
 		  std::string Data,signed short Priority);
 
    // Things for the cache interface.
-   virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   virtual signed short GetPriority(pkgCache::VerIterator const &Ver, bool ConsiderFiles = true) APT_OVERRIDE;
-   virtual signed short GetPriority(pkgCache::PkgFileIterator const &File) APT_OVERRIDE;
+   pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg) override;
+   signed short GetPriority(pkgCache::VerIterator const &Ver, bool ConsiderFiles = true) override;
+   signed short GetPriority(pkgCache::PkgFileIterator const &File) override;
 
    void SetPriority(pkgCache::VerIterator const &Ver, signed short Priority);
    void SetPriority(pkgCache::PkgFileIterator const &File, signed short Priority);
@@ -84,7 +86,7 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy
    virtual ~pkgPolicy();
    private:
    struct Private;
-   Private *const d;
+   std::unique_ptr<Private> const d;
 };
 
 APT_PUBLIC bool ReadPinFile(pkgPolicy &Plcy, std::string File = "");
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc
new file mode 100644
index 0000000..c4fb567
--- /dev/null
+++ b/apt-pkg/solver3.cc
@@ -0,0 +1,1016 @@
+/*
+ * solver3.cc - The APT 3.0 solver
+ *
+ * Copyright (c) 2023 Julian Andres Klode
+ * Copyright (c) 2023 Canonical Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * This solver started from scratch but turns slowly into a variant of
+ * MiniSat as documented in the paper
+ *    "An extensible SAT-solver [extended version 1.2]."
+ * by Niklas Eén, and Niklas Sörensson.
+ *
+ * It extends MiniSAT with support for optional clauses, and differs
+ * in that it removes non-deterministic aspects like the activity based
+ * ordering. Instead it uses a more nuanced static ordering that, to
+ * some extend, preserves some greediness and sub-optimality of the
+ * classic APT solver.
+ */
+
+#define APT_COMPILING_APT
+
+#include <config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/solver3.h>
+#include <apt-pkg/version.h>
+
+#include <cassert>
+#include <chrono>
+#include <ctime>
+#include <sstream>
+
+// FIXME: Helpers stolen from DepCache, please give them back.
+struct APT::Solver::CompareProviders3 /*{{{*/
+{
+   pkgCache &Cache;
+   pkgDepCache::Policy &Policy;
+   pkgCache::PkgIterator const Pkg;
+   APT::Solver &Solver;
+
+   pkgCache::VerIterator bestVersion(pkgCache::PkgIterator pkg)
+   {
+      pkgCache::VerIterator res = pkg.VersionList();
+      for (auto v = res; not v.end(); ++v)
+	 res = std::max(res, v, *this);
+      return res;
+   }
+   bool operator()(Var a, Var b)
+   {
+      pkgCache::VerIterator va = a.Ver(Cache);
+      pkgCache::VerIterator vb = b.Ver(Cache);
+      if (auto pa = a.Pkg(Cache))
+	 va = bestVersion(pa);
+      if (auto pb = b.Pkg(Cache))
+	 vb = bestVersion(pb);
+
+      assert(not va.end() && not vb.end());
+      return (*this)(va, vb);
+   }
+   bool operator()(pkgCache::VerIterator const &AV, pkgCache::VerIterator const &BV)
+   {
+      assert(not AV.end() && not BV.end());
+      pkgCache::PkgIterator const A = AV.ParentPkg();
+      pkgCache::PkgIterator const B = BV.ParentPkg();
+      // Compare versions for the same package. FIXME: Move this to the real implementation
+      if (A == B)
+      {
+	 if (AV == BV)
+	    return false;
+
+	 // Candidate wins in upgrade scenario
+	 if (Solver.IsUpgrade)
+	 {
+	    auto Cand = Solver.GetCandidateVer(A);
+	    if (AV == Cand || BV == Cand)
+	       return (AV == Cand);
+	 }
+
+	 // Installed version wins otherwise
+	 if (A.CurrentVer() == AV || B.CurrentVer() == BV)
+	    return (A.CurrentVer() == AV);
+
+	 // Rest is ordered list, first by priority
+	 if (auto pinA = Solver.GetPriority(AV), pinB = Solver.GetPriority(BV); pinA != pinB)
+	    return pinA > pinB;
+
+	 // Then by version
+	 return _system->VS->CmpVersion(AV.VerStr(), BV.VerStr()) > 0;
+      }
+      // Try obsolete choices only after exhausting non-obsolete choices such that we install
+      // packages replacing them and don't keep back upgrades depending on the replacement to
+      // keep the obsolete package installed.
+      if (Solver.IsUpgrade)
+	 if (auto obsoleteA = Solver.Obsolete(A), obsoleteB = Solver.Obsolete(B); obsoleteA != obsoleteB)
+	    return obsoleteB;
+      // Prefer MA:same packages if other architectures for it are installed
+      if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same ||
+	  (BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+      {
+	 bool instA = false;
+	 if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+	 {
+	    pkgCache::GrpIterator Grp = A.Group();
+	    for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+	       if (P->CurrentVer != 0)
+	       {
+		  instA = true;
+		  break;
+	       }
+	 }
+	 bool instB = false;
+	 if ((BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+	 {
+	    pkgCache::GrpIterator Grp = B.Group();
+	    for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+	    {
+	       if (P->CurrentVer != 0)
+	       {
+		  instB = true;
+		  break;
+	       }
+	    }
+	 }
+	 if (instA != instB)
+	    return instA;
+      }
+      if ((A->CurrentVer == 0 || B->CurrentVer == 0) && A->CurrentVer != B->CurrentVer)
+	 return A->CurrentVer != 0;
+      // Prefer packages in the same group as the target; e.g. foo:i386, foo:amd64
+      if (A->Group != B->Group)
+      {
+	 if (A->Group == Pkg->Group && B->Group != Pkg->Group)
+	    return true;
+	 else if (B->Group == Pkg->Group && A->Group != Pkg->Group)
+	    return false;
+      }
+      // we like essentials
+      if ((A->Flags & pkgCache::Flag::Essential) != (B->Flags & pkgCache::Flag::Essential))
+      {
+	 if ((A->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+	    return true;
+	 else if ((B->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+	    return false;
+      }
+      if ((A->Flags & pkgCache::Flag::Important) != (B->Flags & pkgCache::Flag::Important))
+      {
+	 if ((A->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+	    return true;
+	 else if ((B->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+	    return false;
+      }
+      // prefer native architecture
+      if (strcmp(A.Arch(), B.Arch()) != 0)
+      {
+	 if (strcmp(A.Arch(), A.Cache()->NativeArch()) == 0)
+	    return true;
+	 else if (strcmp(B.Arch(), B.Cache()->NativeArch()) == 0)
+	    return false;
+	 std::vector<std::string> archs = APT::Configuration::getArchitectures();
+	 for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+	    if (*a == A.Arch())
+	       return true;
+	    else if (*a == B.Arch())
+	       return false;
+      }
+      // higher priority seems like a good idea
+      if (AV->Priority != BV->Priority)
+	 return AV->Priority < BV->Priority;
+      if (auto NameCmp = strcmp(A.Name(), B.Name()))
+	 return NameCmp < 0;
+      // unable to decide…
+      return A->ID > B->ID;
+   }
+};
+
+/** \brief Returns \b true for packages matching a regular
+ *  expression in APT::NeverAutoRemove.
+ */
+class DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc
+{
+   std::unique_ptr<APT::CacheFilter::Matcher> Kernels;
+
+   public:
+   DefaultRootSetFunc2(pkgCache *cache) : Kernels(APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(cache)) {};
+   ~DefaultRootSetFunc2() override = default;
+
+   bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); };
+}; // FIXME: DEDUP with pkgDepCache.
+/*}}}*/
+
+APT::Solver::Solver(pkgCache &cache, pkgDepCache::Policy &policy, EDSP::Request::Flags requestFlags)
+    : cache(cache),
+      policy(policy),
+      rootState(new State),
+      pkgStates(cache),
+      verStates(cache),
+      pkgObsolete(cache),
+      priorities(cache),
+      candidates(cache),
+      requestFlags(requestFlags)
+{
+   // Ensure trivially
+   static_assert(std::is_trivially_destructible_v<Work>);
+   static_assert(std::is_trivially_destructible_v<Solved>);
+   static_assert(sizeof(APT::Solver::Var) == sizeof(map_pointer<pkgCache::Package>));
+   static_assert(sizeof(APT::Solver::Var) == sizeof(map_pointer<pkgCache::Version>));
+   // Root state is "true".
+   rootState->decision = Decision::MUST;
+}
+
+// This function determines if a work item is less important than another.
+bool APT::Solver::Work::operator<(APT::Solver::Work const &b) const
+{
+   if ((not clause->optional && size < 2) != (not b.clause->optional && b.size < 2))
+      return not b.clause->optional && b.size < 2;
+   if (clause->optional != b.clause->optional)
+      return clause->optional;
+   if (clause->group != b.clause->group)
+      return clause->group > b.clause->group;
+   if ((size < 2) != (b.size < 2))
+      return b.size < 2;
+   if (size == 1 && b.size == 1) // Special case: 'shortcircuit' optional packages
+      return clause->solutions.size() < b.clause->solutions.size();
+   return false;
+}
+
+std::string APT::Solver::Clause::toString(pkgCache &cache) const
+{
+   std::string out;
+   if (auto Pkg = reason.Pkg(cache); not Pkg.end())
+      out.append(Pkg.FullName());
+   if (auto Ver = reason.Ver(cache); not Ver.end())
+      out.append(Ver.ParentPkg().FullName()).append("=").append(Ver.VerStr());
+   out.append(" -> ");
+   for (auto var : solutions)
+      out.append(" | ").append(var.toString(cache));
+   return out;
+}
+
+std::string APT::Solver::Work::toString(pkgCache &cache) const
+{
+   std::ostringstream out;
+   if (erased)
+      out << "Erased ";
+   if (clause->optional)
+      out << "Optional ";
+   out << "Item (" << ssize_t(size <= clause->solutions.size() ? size : -1) << "@" << depth << ") ";
+   out << clause->toString(cache);
+   return out.str();
+}
+
+inline APT::Solver::Var APT::Solver::bestReason(APT::Solver::Clause const *clause, APT::Solver::Var var) const
+{
+   if (not clause)
+      return Var{};
+   if (clause->reason == var)
+      for (auto choice : clause->solutions)
+	 if ((*this)[choice].decision != Decision::NONE)
+	    return choice;
+   return clause->reason;
+}
+
+// Prints an implication graph part of the form A -> B -> C, possibly with "not"
+std::string APT::Solver::WhyStr(Var reason) const
+{
+   std::vector<std::string> out;
+   while (not reason.empty())
+   {
+      if ((*this)[reason].decision == Decision::MUSTNOT)
+	 out.push_back(std::string("not ") + reason.toString(cache));
+      else
+	 out.push_back(reason.toString(cache));
+      reason = bestReason((*this)[reason].reason, reason);
+   }
+
+   std::string outstr;
+   for (auto I = out.rbegin(); I != out.rend(); ++I)
+   {
+      outstr += (outstr.size() == 0 ? "" : " -> ") + *I;
+   }
+   return outstr;
+}
+
+// This is essentially asking whether any other binary in the source package has a higher candidate
+// version. This pretends that each package is installed at the same source version as the package
+// under consideration.
+bool APT::Solver::ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const
+{
+   const auto pkg = cand.ParentPkg();
+   const int candPriority = GetPriority(cand);
+
+   for (auto ver = cand.Cache()->FindGrp(cand.SourcePkgName()).VersionsInSource(); not ver.end(); ver = ver.NextInSource())
+   {
+      // We are only interested in other packages in the same source package; built for the same architecture.
+      if (ver->ParentPkg == cand->ParentPkg || ver.ParentPkg()->Arch != cand.ParentPkg()->Arch || cache.VS->CmpVersion(ver.SourceVerStr(), cand.SourceVerStr()) <= 0)
+	 continue;
+
+      // We also take equal priority here, given that we have a higher version
+      const int priority = GetPriority(ver);
+      if (priority == 0 || priority < candPriority)
+	 continue;
+
+      pkgObsolete[pkg] = 2;
+      if (debug >= 3)
+	 std::cerr << "Obsolete: " << cand.ParentPkg().FullName() << "=" << cand.VerStr() << " due to " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << "\n";
+      return true;
+   }
+
+   return false;
+}
+
+bool APT::Solver::Obsolete(pkgCache::PkgIterator pkg) const
+{
+   if (pkgObsolete[pkg] != 0)
+      return pkgObsolete[pkg] == 2;
+
+   auto ver = GetCandidateVer(pkg);
+
+   if (ver.end() && not StrictPinning)
+      ver = pkg.VersionList();
+   if (ver.end())
+   {
+      if (debug >= 3)
+	 std::cerr << "Obsolete: " << pkg.FullName() << " - not installable\n";
+      pkgObsolete[pkg] = 2;
+      return true;
+   }
+
+   if (ObsoletedByNewerSourceVersion(ver))
+      return true;
+
+   for (auto file = ver.FileList(); !file.end(); file++)
+      if ((file.File()->Flags & pkgCache::Flag::NotSource) == 0)
+      {
+	 pkgObsolete[pkg] = 1;
+	 return false;
+      }
+   if (debug >= 3)
+      std::cerr << "Obsolete: " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << " - not installable\n";
+   pkgObsolete[pkg] = 2;
+   return true;
+}
+bool APT::Solver::Assume(Var var, bool decision, const Clause *reason)
+{
+   choices.push_back(solved.size());
+   return Enqueue(var, decision, std::move(reason));
+}
+
+bool APT::Solver::Enqueue(Var var, bool decision, const Clause *reason)
+{
+   auto &state = (*this)[var];
+   auto decisionCast = decision ? Decision::MUST : Decision::MUSTNOT;
+
+   if (state.decision != Decision::NONE)
+   {
+      if (state.decision != decisionCast)
+	 return _error->Error("Conflict: %s -> %s%s but %s", WhyStr(bestReason(reason, var)).c_str(), decision ? "" : "not ", var.toString(cache).c_str(), WhyStr(var).c_str());
+      return true;
+   }
+
+   state.decision = decisionCast;
+   state.depth = depth();
+   state.reason = reason;
+
+   if (unlikely(debug >= 1))
+      std::cerr << "[" << depth() << "] " << (decision ? "Install" : "Reject") << ":" << var.toString(cache) << " (" << WhyStr(bestReason(reason, var)) << ")\n";
+
+   solved.push_back(Solved{var, std::nullopt});
+   propQ.push(var);
+
+   return true;
+}
+
+bool APT::Solver::Propagate()
+{
+   while (!propQ.empty())
+   {
+      Var var = propQ.front();
+      propQ.pop();
+      if ((*this)[var].decision == Decision::MUST)
+      {
+	 Discover(var);
+	 for (auto &clause : (*this)[var].clauses)
+	    if (not AddWork(Work{clause.get(), depth()}))
+	       return false;
+	 for (auto rclause : (*this)[var].rclauses)
+	 {
+	    if (not rclause->negative || rclause->optional || rclause->reason.empty())
+	       continue;
+	    if (unlikely(debug >= 3))
+	       std::cerr << "Propagate " << var.toString(cache) << " to NOT " << rclause->reason.toString(cache) << " for dep " << const_cast<Clause *>(rclause)->toString(cache) << std::endl;
+	    if (not Enqueue(rclause->reason, false, rclause))
+	       return false;
+	 }
+      }
+      else if ((*this)[var].decision == Decision::MUSTNOT)
+      {
+	 for (auto rclause : (*this)[var].rclauses)
+	 {
+	    if (rclause->negative || rclause->reason.empty())
+	       continue;
+	    if ((*this)[rclause->reason].decision == Decision::MUSTNOT)
+	       continue;
+
+	    auto count = std::count_if(rclause->solutions.begin(), rclause->solutions.end(), [this](auto var)
+				       { return (*this)[var].decision != Decision::MUSTNOT; });
+
+	    if (count == 1 && (*this)[rclause->reason].decision == Decision::MUST)
+	    {
+	       if (unlikely(debug >= 3))
+		  std::cerr << "Propagate NOT " << var.toString(cache) << " to unit clause " << rclause->toString(cache);
+	       if (rclause->optional)
+	       {
+		  // Enqueue duplicated item, this will ensure we see it at the correct time
+		  if (not AddWork(Work{rclause, depth()}))
+		     return false;
+	       }
+	       else
+	       {
+		  // Find the variable that must be chosen and enqueue it as a fact
+		  for (auto sol : rclause->solutions)
+		     if ((*this)[sol].decision == Decision::NONE && not Enqueue(sol, true, rclause))
+			return false;
+	       }
+	       continue;
+	    }
+	    if (count >= 1 || rclause->optional)
+	       continue;
+
+	    if (unlikely(debug >= 3))
+	       std::cerr << "Propagate NOT " << var.toString(cache) << " to " << rclause->reason.toString(cache) << " for dep " << const_cast<Clause *>(rclause)->toString(cache) << std::endl;
+
+	    if (not Enqueue(rclause->reason, false, rclause)) // Last version invalidated
+	       return false;
+	 }
+      }
+   }
+   return true;
+}
+
+void APT::Solver::RegisterClause(Clause &&clause)
+{
+   auto &clauses = (*this)[clause.reason].clauses;
+   clauses.push_back(std::make_unique<Clause>(std::move(clause)));
+   auto const &inserted = clauses.back();
+   for (auto var : inserted->solutions)
+      (*this)[var].rclauses.push_back(inserted.get());
+}
+
+void APT::Solver::Discover(Var var)
+{
+   assert(discoverQ.empty());
+   discoverQ.push(var);
+
+   while (not discoverQ.empty())
+   {
+      var = discoverQ.front();
+      discoverQ.pop();
+
+      // Package needs to be discovered before the version to be able to dedup shared dependencies
+      if (auto Ver = var.Ver(cache); not Ver.end() && not(*this)[Ver.ParentPkg()].flags.discovered)
+	 var = Var(Ver.ParentPkg());
+
+      auto &state = (*this)[var];
+
+      if (state.flags.discovered)
+	 continue;
+
+      state.flags.discovered = true;
+
+      if (auto Pkg = var.Pkg(cache); not Pkg.end())
+      {
+	 Clause clause{Var(Pkg), Group::SelectVersion};
+	 for (auto ver = Pkg.VersionList(); not ver.end(); ver++)
+	    clause.solutions.push_back(Var(ver));
+
+	 std::stable_sort(clause.solutions.begin(), clause.solutions.end(), CompareProviders3{cache, policy, Pkg, *this});
+	 RegisterClause(std::move(clause));
+
+	 RegisterCommonDependencies(Pkg);
+      }
+      else if (auto Ver = var.Ver(cache); not Ver.end())
+      {
+	 Clause clause{Var(Ver), Group::SelectVersion};
+	 clause.solutions = {Var(Ver.ParentPkg())};
+	 RegisterClause(std::move(clause));
+
+	 for (auto OV = Ver.ParentPkg().VersionList(); not OV.end(); ++OV)
+	 {
+	    if (OV == Ver)
+	       continue;
+
+	    Clause clause{Var(Ver), Group::SelectVersion, false, true /* negative */};
+	    clause.solutions = {Var(OV)};
+	    RegisterClause(std::move(clause));
+	 }
+
+	 for (auto dep = Ver.DependsList(); not dep.end();)
+	 {
+	    // Compute a single dependency element (glob or)
+	    pkgCache::DepIterator start;
+	    pkgCache::DepIterator end;
+	    dep.GlobOr(start, end); // advances dep
+
+	    // This dependency is shared across all versions, skip it.
+	    if (auto &pkgClauses = (*this)[Ver.ParentPkg()].clauses;
+		std::any_of(pkgClauses.begin(), pkgClauses.end(), [start](auto &c)
+			    { return c->dep && c->dep->DependencyData == start->DependencyData; }))
+	       continue;
+
+	    auto clause = TranslateOrGroup(start, end, Var(Ver));
+
+	    RegisterClause(std::move(clause));
+	 }
+      }
+
+      // Recursively discover everything else that is not already FALSE by fact (MUSTNOT at depth 0)
+      for (auto const &clause : state.clauses)
+	 for (auto const &var : clause->solutions)
+	    if ((*this)[var].decision != Decision::MUSTNOT || (*this)[var].depth > 0)
+	       discoverQ.push(var);
+   }
+}
+
+void APT::Solver::RegisterCommonDependencies(pkgCache::PkgIterator Pkg)
+{
+   for (auto dep = Pkg.VersionList().DependsList(); not dep.end();)
+   {
+      pkgCache::DepIterator start;
+      pkgCache::DepIterator end;
+      dep.GlobOr(start, end); // advances dep
+
+      bool allHaveDep = true;
+      for (auto ver = Pkg.VersionList()++; not ver.end(); ver++)
+      {
+	 bool haveDep = false;
+	 for (auto otherDep = ver.DependsList(); not haveDep && not otherDep.end(); otherDep++)
+	    haveDep = otherDep->DependencyData == start->DependencyData;
+	 if (!haveDep)
+	    allHaveDep = haveDep;
+      }
+      if (not allHaveDep)
+	 continue;
+      auto clause = TranslateOrGroup(start, end, Var(Pkg));
+      RegisterClause(std::move(clause));
+   }
+}
+
+APT::Solver::Clause APT::Solver::TranslateOrGroup(pkgCache::DepIterator start, pkgCache::DepIterator end, Var reason)
+{
+   auto TgtPkg = start.TargetPkg();
+   auto Ver = start.ParentVer();
+
+   // Non-important dependencies can only be installed if they are currently satisfied, see the check further
+   // below once we have calculated all possible solutions.
+   if (start.ParentPkg()->CurrentVer == 0 && not policy.IsImportantDep(start))
+      return Clause{reason, Group::Satisfy, true};
+   // Replaces and Enhances are not a real dependency.
+   if (start->Type == pkgCache::Dep::Replaces || start->Type == pkgCache::Dep::Enhances)
+      return Clause{reason, Group::Satisfy, true};
+   if (unlikely(debug >= 3))
+      std::cerr << "Found dependency critical " << Ver.ParentPkg().FullName() << "=" << Ver.VerStr() << " -> " << start.TargetPkg().FullName() << "\n";
+
+   Clause clause{reason, Group::Satisfy, not start.IsCritical() /* optional */, start.IsNegative()};
+
+   clause.dep = start;
+
+   do
+   {
+      auto begin = clause.solutions.size();
+
+      if (DeferVersionSelection && not start.IsNegative() && start.TargetPkg().ProvidesList().end() && start.IsSatisfied(start.TargetPkg()))
+      {
+	 clause.solutions.push_back(Var(start.TargetPkg()));
+      }
+      else
+      {
+	 auto all = start.AllTargets();
+
+	 for (auto tgt = all; *tgt; ++tgt)
+	 {
+	    pkgCache::VerIterator tgti(cache, *tgt);
+
+	    if (unlikely(debug >= 3))
+	       std::cerr << "Adding work to  item " << reason.toString(cache) << " -> " << tgti.ParentPkg().FullName() << "=" << tgti.VerStr() << (clause.negative ? " (negative)" : "") << "\n";
+	    clause.solutions.push_back(Var(pkgCache::VerIterator(cache, *tgt)));
+	 }
+	 delete[] all;
+
+	 std::stable_sort(clause.solutions.begin() + begin, clause.solutions.end(), CompareProviders3{cache, policy, TgtPkg, *this});
+      }
+      if (start == end)
+	 break;
+      ++start;
+   } while (1);
+
+   // Move obsolete packages to the end, and (non-obsolete) installed packages to the front
+   if (not FixPolicyBroken)
+      std::stable_sort(clause.solutions.begin(), clause.solutions.end(), [this](Var a, Var b)
+		       {
+	    if (IsUpgrade)
+	       if (auto obsoleteA = Obsolete(a.CastPkg(cache)), obsoleteB = Obsolete(b.CastPkg(cache)); obsoleteA != obsoleteB)
+		  return obsoleteB;
+	    if ((a.CastPkg(cache)->CurrentVer == 0 || b.CastPkg(cache)->CurrentVer == 0) && a.CastPkg(cache)->CurrentVer != b.CastPkg(cache)->CurrentVer)
+	       return a.CastPkg(cache)->CurrentVer != 0;
+	    return false; });
+
+   if (std::all_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var) -> auto
+		   { return var.CastPkg(cache)->CurrentVer == 0; }))
+      clause.group = Group::SatisfyNew;
+   if (std::any_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var) -> auto
+		   { return Obsolete(var.CastPkg(cache)); }))
+      clause.group = Group::SatisfyObsolete;
+   // Try to perserve satisfied Recommends. FIXME: We should check if the Recommends was there in the installed version?
+   if (clause.optional && start.ParentPkg()->CurrentVer)
+   {
+      bool important = policy.IsImportantDep(start);
+      bool newOptional = true;
+      bool wasImportant = false;
+      for (auto D = start.ParentPkg().CurrentVer().DependsList(); not D.end(); D++)
+	 if (not D.IsCritical() && not D.IsNegative() && D.TargetPkg() == start.TargetPkg())
+	    newOptional = false, wasImportant = policy.IsImportantDep(D);
+
+      bool satisfied = std::any_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var)
+				   { return Var(var.CastPkg(cache).CurrentVer()) == var; });
+
+      if (important && wasImportant && not newOptional && not satisfied)
+      {
+	 if (unlikely(debug >= 3))
+	    std::cerr << "Ignoring unsatisfied Recommends " << clause.toString(cache) << std::endl;
+	 clause.solutions.clear();
+      }
+      else if (not important && not wasImportant && not newOptional && satisfied)
+      {
+	 if (unlikely(debug >= 3))
+	    std::cerr << "Promoting satisfied Suggests to Recommends: " << clause.toString(cache) << std::endl;
+	 important = true;
+      }
+      else if (satisfied && important && wasImportant && clause.solutions.size() > 0)
+      {
+	 if (unlikely(debug >= 3))
+	    std::cerr << "Promoting existing Recommends " << clause.toString(cache) << " to depends in upgrade" << std::endl;
+	 clause.optional = false;
+      }
+      else if (newOptional && important && reason.Ver() && clause.solutions.size() > 0 && reason.Ver(cache) != reason.CastPkg(cache).CurrentVer() && IsUpgrade)
+      {
+	 if (unlikely(debug >= 3))
+	    std::cerr << "Promoting new Recommends " << clause.toString(cache) << " to depends in upgrade" << std::endl;
+	 clause.optional = false;
+      }
+      else if (not important)
+      {
+	 if (unlikely(debug >= 3))
+	    std::cerr << "Ignoring Suggests " << clause.toString(cache) << std::endl;
+	 return Clause{reason, Group::Satisfy, true};
+      }
+   }
+
+   return clause;
+}
+
+void APT::Solver::Push(Work work)
+{
+   if (unlikely(debug >= 2))
+      std::cerr << "Trying choice for " << work.toString(cache) << std::endl;
+
+   choices.push_back(solved.size());
+   solved.push_back(Solved{Var(), std::move(work)});
+   // Pop() will call MergeWithStack() when reverting to level 0, or RevertToStack after dumping to the debug log.
+   _error->PushToStack();
+}
+
+void APT::Solver::UndoOne()
+{
+   auto solvedItem = solved.back();
+
+   if (unlikely(debug >= 4))
+      std::cerr << "Undoing a single decision\n";
+
+   if (not solvedItem.assigned.empty())
+   {
+      if (unlikely(debug >= 4))
+	 std::cerr << "Unassign " << solvedItem.assigned.toString(cache) << "\n";
+      auto &state = (*this)[solvedItem.assigned];
+      state.decision = Decision::NONE;
+      state.reason = nullptr;
+      state.depth = 0;
+   }
+
+   if (auto work = solvedItem.work)
+   {
+      if (unlikely(debug >= 4))
+	 std::cerr << "Adding work item " << work->toString(cache) << std::endl;
+
+      if (not AddWork(std::move(*work)))
+	 abort();
+   }
+
+   solved.pop_back();
+
+   // FIXME: Add the undo handling here once we have watchers.
+}
+
+bool APT::Solver::Pop()
+{
+   if (depth() == 0)
+      return false;
+
+   if (unlikely(debug >= 2))
+      for (std::string msg; _error->PopMessage(msg);)
+	 std::cerr << "Branch failed: " << msg << std::endl;
+
+   time_t now = time(nullptr);
+   if (now - startTime >= Timeout)
+      return _error->Error("Solver timed out.");
+
+   _error->RevertToStack();
+
+   assert(choices.back() < solved.size());
+   int itemsToUndo = solved.size() - choices.back();
+   auto choice = solved[choices.back()].work->choice;
+
+   for (; itemsToUndo; --itemsToUndo)
+      UndoOne();
+
+   // We need to remove any work that is at a higher depth.
+   // FIXME: We should just mark the entries as erased and only do a compaction
+   //        of the heap once we have a lot of erased entries in it.
+   choices.pop_back();
+   work.erase(std::remove_if(work.begin(), work.end(), [this](Work &w) -> bool
+			     { return w.depth > depth() || w.erased; }),
+	      work.end());
+   std::make_heap(work.begin(), work.end());
+
+   if (unlikely(debug >= 2))
+      std::cerr << "Backtracking to choice " << choice.toString(cache) << "\n";
+
+   // FIXME: There should be a reason!
+   if (not Enqueue(choice, false, {}))
+      return false;
+
+   if (unlikely(debug >= 2))
+      std::cerr << "Backtracked to choice " << choice.toString(cache) << "\n";
+
+   return true;
+}
+
+bool APT::Solver::AddWork(Work &&w)
+{
+   if (w.clause->negative)
+   {
+      for (auto var : w.clause->solutions)
+	 if (not Enqueue(var, false, w.clause))
+	    return false;
+   }
+   else if (not w.clause->solutions.empty())
+   {
+      if (unlikely(debug >= 3 && w.clause->optional))
+	 std::cerr << "Enqueuing Recommends " << w.clause->toString(cache) << std::endl;
+      if (w.clause->solutions.size() == 1 && not w.clause->optional)
+	 return Enqueue(w.clause->solutions[0], true, w.clause);
+
+      w.size = std::count_if(w.clause->solutions.begin(), w.clause->solutions.end(), [this](auto V)
+			     { return (*this)[V].decision != Decision::MUSTNOT; });
+      work.push_back(std::move(w));
+      std::push_heap(work.begin(), work.end());
+   }
+   else if (not w.clause->optional && w.clause->dep)
+      return _error->Error("Unsatisfiable dependency group %s -> %s", w.clause->reason.toString(cache).c_str(), pkgCache::DepIterator(cache, w.clause->dep).TargetPkg().FullName().c_str());
+   else if (not w.clause->optional)
+      return _error->Error("Unsatisfiable dependency group %s", w.clause->reason.toString(cache).c_str());
+   return true;
+}
+
+bool APT::Solver::Solve()
+{
+   startTime = time(nullptr);
+   while (true)
+   {
+      while (not Propagate())
+      {
+	 if (not Pop())
+	    return false;
+      }
+
+      if (work.empty())
+	 break;
+
+      // *NOW* we can pop the item.
+      std::pop_heap(work.begin(), work.end());
+
+      // This item has been replaced with a new one. Remove it.
+      if (work.back().erased)
+      {
+	 work.pop_back();
+	 continue;
+      }
+      auto item = std::move(work.back());
+      work.pop_back();
+      solved.push_back(Solved{Var(), item});
+
+      if (std::any_of(item.clause->solutions.begin(), item.clause->solutions.end(), [this](auto ver)
+		      { return (*this)[ver].decision == Decision::MUST; }))
+      {
+	 if (unlikely(debug >= 2))
+	    std::cerr << "ELIDED " << item.toString(cache) << std::endl;
+	 continue;
+      }
+
+      if (unlikely(debug >= 1))
+	 std::cerr << item.toString(cache) << std::endl;
+
+      assert(item.clause->solutions.size() > 1 || item.clause->optional);
+
+      bool foundSolution = false;
+      for (auto &sol : item.clause->solutions)
+      {
+	 if ((*this)[sol].decision == Decision::MUSTNOT)
+	 {
+	    if (unlikely(debug >= 3))
+	       std::cerr << "(existing conflict: " << sol.toString(cache) << ")\n";
+	    continue;
+	 }
+	 if (item.size > 1 || item.clause->optional)
+	 {
+	    item.choice = sol;
+	    Push(item);
+	 }
+	 if (unlikely(debug >= 3))
+	    std::cerr << "(try it: " << sol.toString(cache) << ")\n";
+	 if (not Enqueue(sol, true, item.clause) && not Pop())
+	    return false;
+	 foundSolution = true;
+	 break;
+      }
+      if (not foundSolution && not item.clause->optional)
+      {
+	 std::ostringstream dep;
+	 assert(item.clause->solutions.size() > 0);
+	 for (auto &sol : item.clause->solutions)
+	    dep << (dep.tellp() == 0 ? "" : " | ") << sol.toString(cache);
+	 _error->Error("Unsatisfiable dependency: %s -> %s", WhyStr(item.clause->reason).c_str(), dep.str().c_str());
+	 for (auto &sol : item.clause->solutions)
+	    if ((*this)[sol].decision == Decision::MUSTNOT)
+	       _error->Error("Not considered: %s: %s", sol.toString(cache).c_str(),
+			     WhyStr(sol).c_str());
+	 if (not Pop())
+	    return false;
+      }
+   }
+
+   return true;
+}
+
+// \brief Apply the selections from the dep cache to the solver
+bool APT::Solver::FromDepCache(pkgDepCache &depcache)
+{
+   DefaultRootSetFunc2 rootSet(&cache);
+
+   // Enforce strict pinning rules by rejecting all forbidden versions.
+   if (StrictPinning)
+   {
+      for (auto P = cache.PkgBegin(); not P.end(); P++)
+      {
+	 bool isForced = depcache[P].Protect() && depcache[P].Install();
+	 bool isPhasing = IsUpgrade && depcache.PhasingApplied(P) && not isForced;
+	 for (auto V = P.VersionList(); not V.end(); ++V)
+	    if (P.CurrentVer() != V && (depcache.GetCandidateVersion(P) != V || isPhasing))
+	       if (not Enqueue(Var(V), false, {}))
+		  return false;
+      }
+   }
+
+   for (auto P = cache.PkgBegin(); not P.end(); P++)
+   {
+      if (P->VersionList == nullptr)
+	 continue;
+
+      auto state = depcache[P];
+      if (P->SelectedState == pkgCache::State::Hold && not state.Protect())
+      {
+	 if (unlikely(debug >= 1))
+	    std::cerr << "Hold " << P.FullName() << "\n";
+	 if (P->CurrentVer ? not Enqueue(Var(P.CurrentVer()), true) : not Enqueue(Var(P), false))
+	    return false;
+      }
+      else if (state.Delete()						  // Normal delete request.
+	       || (not P->CurrentVer && state.Keep() && state.Protect())  // Delete request of not installed package.
+	       || (not P->CurrentVer && state.Keep() && not AllowInstall) // New package installs not allowed.
+      )
+      {
+	 if (unlikely(debug >= 1))
+	    std::cerr << "Delete " << P.FullName() << "\n";
+	 if (not Enqueue(Var(P), false))
+	    return false;
+      }
+      else if (state.Install() || (state.Keep() && P->CurrentVer))
+      {
+	 auto isEssential = P->Flags & (pkgCache::Flag::Essential | pkgCache::Flag::Important);
+	 auto isAuto = (depcache[P].Flags & pkgCache::Flag::Auto);
+	 auto isOptional = ((isAuto && AllowRemove) || AllowRemoveManual) && not isEssential && not depcache[P].Protect();
+	 auto Root = rootSet.InRootSet(P);
+	 auto Upgrade = depcache.GetCandidateVersion(P) != P.CurrentVer();
+	 auto Group = isAuto ? (Upgrade ? Group::UpgradeAuto : Group::KeepAuto)
+			     : (Upgrade ? Group::UpgradeManual : Group::InstallManual);
+
+	 if (isAuto && not depcache[P].Protect() && not isEssential && not KeepAuto && not rootSet.InRootSet(P))
+	 {
+	    if (unlikely(debug >= 1))
+	       std::cerr << "Ignore automatic install " << P.FullName() << " (" << (isEssential ? "E" : "") << (isAuto ? "M" : "") << (Root ? "R" : "") << ")"
+			 << "\n";
+	    continue;
+	 }
+	 if (unlikely(debug >= 1))
+	    std::cerr << "Install " << P.FullName() << " (" << (isEssential ? "E" : "") << (isAuto ? "M" : "") << (Root ? "R" : "") << ")"
+		      << "\n";
+
+	 if (not isOptional)
+	 {
+	    // Pre-empt the non-optional requests, as we don't want to queue them, we can just "unit propagate" here.
+	    if (depcache[P].Keep() ? not Enqueue(Var(P), true) : not Enqueue(Var(depcache.GetCandidateVersion(P)), true))
+	       return false;
+	 }
+	 else
+	 {
+	    Clause w{Var(), Group, isOptional};
+	    w.solutions.push_back(Var(P));
+	    RegisterClause(std::move(w));
+	    if (not AddWork(Work{rootState->clauses.back().get(), depth()}))
+	       return false;
+
+	    // Given A->A2|A1, B->B1|B2; Bn->An, if we select `not A1`, we
+	    // should try to install A2 before trying B so we end up with
+	    // A2, B2, instead of removing A1 to keep B1 installed. This
+	    // requires some special casing in Work::operator< above.
+	    // Compare test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
+	    Clause shortcircuit{Var(), Group, isOptional};
+	    for (auto V = P.VersionList(); not V.end(); ++V)
+	       shortcircuit.solutions.push_back(Var(V));
+	    std::stable_sort(shortcircuit.solutions.begin(), shortcircuit.solutions.end(), CompareProviders3{cache, policy, P, *this});
+	    RegisterClause(std::move(shortcircuit));
+	    if (not AddWork(Work{rootState->clauses.back().get(), depth()}))
+	       return false;
+
+	    // Discovery here is needed so the shortcircuit clause can actually become unit.
+	    if (P.VersionList() && P.VersionList()->NextVer)
+	       Discover(Var(P));
+	 }
+      }
+      else if (IsUpgrade && AllowRemove && AllowInstall && (P->Flags & pkgCache::Flag::Essential))
+      {
+	 Clause w{Var(), Group::InstallManual, false};
+	 auto G = P.Group();
+	 for (auto P = G.PackageList(); not P.end(); P = G.NextPkg(P))
+	    if (P->Flags & pkgCache::Flag::Essential)
+	       w.solutions.push_back(Var(P));
+	 std::stable_sort(w.solutions.begin(), w.solutions.end(), CompareProviders3{cache, policy, P, *this});
+	 if (unlikely(debug >= 1))
+	    std::cerr << "Install essential package " << P << std::endl;
+	 RegisterClause(std::move(w));
+	 if (not AddWork(Work{rootState->clauses.back().get(), depth()}))
+	    return false;
+      }
+   }
+
+   return Propagate();
+}
+
+bool APT::Solver::ToDepCache(pkgDepCache &depcache) const
+{
+   pkgDepCache::ActionGroup group(depcache);
+   for (auto P = cache.PkgBegin(); not P.end(); P++)
+   {
+      depcache[P].Marked = 0;
+      depcache[P].Garbage = 0;
+      if ((*this)[P].decision == Decision::MUST)
+      {
+	 pkgCache::VerIterator cand;
+	 for (auto V = P.VersionList(); cand.end() && not V.end(); V++)
+	    if ((*this)[V].decision == Decision::MUST)
+	       cand = V;
+
+	 auto reasonClause = (*this)[cand].reason;
+	 auto reason = reasonClause ? reasonClause->reason : Var();
+	 if (auto RP = reason.Pkg(); RP == P.MapPointer())
+	    reason = (*this)[P].reason ? (*this)[P].reason->reason : Var();
+
+	 if (cand != P.CurrentVer())
+	 {
+	    depcache.SetCandidateVersion(cand);
+	    depcache.MarkInstall(P, false, 0, reason.empty() && not(depcache[P].Flags & pkgCache::Flag::Auto));
+	    if (not P->CurrentVer)
+	       depcache.MarkAuto(P, not reason.empty());
+	 }
+	 else
+	    depcache.MarkKeep(P, false, reason.empty() && not(depcache[P].Flags & pkgCache::Flag::Auto));
+
+	 depcache[P].Marked = 1;
+	 depcache[P].Garbage = 0;
+      }
+      else if (P->CurrentVer || depcache[P].Install())
+      {
+	 depcache.MarkDelete(P, false, 0, not(*this)[P].reason);
+	 depcache[P].Marked = 0;
+	 depcache[P].Garbage = 1;
+      }
+   }
+   return true;
+}
diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h
new file mode 100644
index 0000000..0ad0800
--- /dev/null
+++ b/apt-pkg/solver3.h
@@ -0,0 +1,500 @@
+/*
+ * solver3.h - The APT 3.0 solver
+ *
+ * Copyright (c) 2023 Julian Andres Klode
+ * Copyright (c) 2023 Canonical Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <cassert>
+#include <memory>
+#include <optional>
+#include <queue>
+#include <vector>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/policy.h>
+
+namespace APT
+{
+
+/**
+ * \brief A simple mapping from objects in the cache to user-defined types.
+ *
+ * This default initializes an array with the specified value type for each
+ * object in the cache of that type.
+ */
+template <typename K, typename V, bool fast = false>
+class ContiguousCacheMap
+{
+   V *data_; // Avoid std::unique_ptr() as it may check that it's non-null.
+
+   public:
+   ContiguousCacheMap(pkgCache &cache)
+   {
+      static_assert(std::is_constructible_v<V>);
+      if constexpr (fast)
+      {
+	 static_assert(std::is_trivially_constructible_v<V>);
+	 static_assert(std::is_trivially_destructible_v<V>);
+      }
+
+      size_t size;
+      if constexpr (std::is_same_v<K, pkgCache::Version>)
+	 size = cache.Head().VersionCount;
+      else if constexpr (std::is_same_v<K, pkgCache::Package>)
+	 size = cache.Head().PackageCount;
+      else
+	 static_assert(false, "Cannot construct map for key type");
+
+      data_ = new V[size]{};
+   }
+   V &operator[](const K *key) { return data_[key->ID]; }
+   const V &operator[](const K *key) const { return data_[key->ID]; }
+   ~ContiguousCacheMap() { delete[] data_; }
+};
+
+/**
+ * \brief A version of ContiguousCacheMap that ensures allocation and deallocation is trivial.
+ */
+template <typename K, typename V>
+using FastContiguousCacheMap = ContiguousCacheMap<K, V, true>;
+
+/*
+ * \brief APT 3.0 solver
+ *
+ * This is a simple solver focused on understandability and sensible results, it
+ * will not generally find all solutions to the problem but will try to find the best
+ * ones.
+ *
+ * It is a brute force solver with heuristics, conflicts learning, and 2**32 levels
+ * of backtracking.
+ */
+class Solver
+{
+   enum class Decision : uint16_t;
+   enum class Hint : uint16_t;
+   struct Var;
+   struct CompareProviders3;
+   struct State;
+   struct Clause;
+   struct Work;
+   struct Solved;
+
+   // \brief Groups of works, these are ordered.
+   //
+   // Later items will be skipped if they are optional, or we will when backtracking,
+   // try a different choice for them.
+   enum class Group : uint8_t
+   {
+      HoldOrDelete,
+
+      // Satisfying dependencies on entirely new packages first is a good idea because
+      // it may contain replacement packages like libfoo1t64 whereas we later will see
+      // Depends: libfoo1 where libfoo1t64 Provides libfoo1 and we'd have to choose.
+      SatisfyNew,
+      Satisfy,
+      // On a similar note as for SatisfyNew, if the dependency contains obsolete packages
+      // try it last.
+      SatisfyObsolete,
+
+      // Select a version of a package chosen for install.
+      SelectVersion,
+
+      // My intuition tells me that we should try to schedule upgrades first, then
+      // any non-obsolete installed packages, and only finally obsolete ones, such
+      // that newer packages guide resolution of dependencies for older ones, they
+      // may have more stringent dependencies, like a (>> 2) whereas an obsolete
+      // package may have a (>> 1), for example.
+      UpgradeManual,
+      InstallManual,
+      ObsoleteManual,
+
+      // Automatically installed packages must come last in the group, this allows
+      // us to see if they were installed as a dependency of a manually installed package,
+      // allowing a simple implementation of an autoremoval code.
+      UpgradeAuto,
+      KeepAuto,
+      ObsoleteAuto
+   };
+
+   // \brief Type to record depth at. This may very well be a 16-bit
+   // unsigned integer, then change Solver::State::Decision to be a
+   // uint16_t class enum as well to get a more compact space.
+   using depth_type = unsigned int;
+
+   // Documentation
+   template <typename T>
+   using heap = std::vector<T>;
+
+   static_assert(sizeof(depth_type) >= sizeof(map_id_t));
+
+   // Cache is needed to construct Iterators from Version objects we see
+   pkgCache &cache;
+   // Policy is needed for determining candidate version.
+   pkgDepCache::Policy &policy;
+   // Root state
+   std::unique_ptr<State> rootState;
+   // States for packages
+   ContiguousCacheMap<pkgCache::Package, State> pkgStates;
+   // States for versions
+   ContiguousCacheMap<pkgCache::Version, State> verStates;
+
+   // \brief Helper function for safe access to package state.
+   inline State &operator[](pkgCache::Package *P)
+   {
+      return pkgStates[P];
+   }
+   inline const State &operator[](pkgCache::Package *P) const
+   {
+      return pkgStates[P];
+   }
+
+   // \brief Helper function for safe access to version state.
+   inline State &operator[](pkgCache::Version *V)
+   {
+      return verStates[V];
+   }
+   inline const State &operator[](pkgCache::Version *V) const
+   {
+      return verStates[V];
+   }
+   // \brief Helper function for safe access to either state.
+   inline State &operator[](Var r);
+   inline const State &operator[](Var r) const;
+
+   mutable FastContiguousCacheMap<pkgCache::Package, char> pkgObsolete;
+   bool Obsolete(pkgCache::PkgIterator pkg) const;
+   bool ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const;
+
+   mutable FastContiguousCacheMap<pkgCache::Version, short> priorities;
+   short GetPriority(pkgCache::VerIterator ver) const
+   {
+      if (priorities[ver] == 0)
+	 priorities[ver] = policy.GetPriority(ver);
+      return priorities[ver];
+   }
+
+   mutable ContiguousCacheMap<pkgCache::Package, pkgCache::VerIterator> candidates;
+   pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator pkg) const
+   {
+      if (candidates[pkg].end())
+	 candidates[pkg] = policy.GetCandidateVer(pkg);
+      return candidates[pkg];
+   }
+
+   // \brief Heap of the remaining work.
+   //
+   // We are using an std::vector with std::make_heap(), std::push_heap(),
+   // and std::pop_heap() rather than a priority_queue because we need to
+   // be able to iterate over the queued work and see if a choice would
+   // invalidate any work.
+   heap<Work> work{};
+
+   // \brief Backlog of solved work.
+   //
+   // Solved work may become invalidated when backtracking, so store it
+   // here to revisit it later. This is similar to what MiniSAT calls the
+   // trail; one distinction is that we have both literals and our work
+   // queue to be concerned about
+   std::vector<Solved> solved{};
+
+   // \brief Propagation queue
+   std::queue<Var> propQ;
+   // \brief Discover variables
+   std::queue<Var> discoverQ;
+
+   // \brief Current decision level.
+   //
+   // This is an index into the solved vector.
+   std::vector<depth_type> choices{};
+
+   // \brief The time we called Solve()
+   time_t startTime;
+
+   EDSP::Request::Flags requestFlags;
+   /// Various configuration options
+   std::string version{_config->Find("APT::Solver", "3.0")};
+   // \brief Debug level
+   int debug{_config->FindI("Debug::APT::Solver")};
+   // \brief If set, we try to keep automatically installed packages installed.
+   bool KeepAuto{version == "3.0" || not _config->FindB("APT::Get::AutomaticRemove")};
+   // \brief Determines if we are in upgrade mode.
+   bool IsUpgrade{_config->FindB("APT::Solver::Upgrade", requestFlags &EDSP::Request::UPGRADE_ALL)};
+   // \brief If set, removals are allowed.
+   bool AllowRemove{_config->FindB("APT::Solver::Remove", not(requestFlags & EDSP::Request::FORBID_REMOVE))};
+   // \brief If set, removal of manual packages is allowed.
+   bool AllowRemoveManual{AllowRemove && _config->FindB("APT::Solver::RemoveManual", false)};
+   // \brief If set, installs are allowed.
+   bool AllowInstall{_config->FindB("APT::Solver::Install", not(requestFlags & EDSP::Request::FORBID_NEW_INSTALL))};
+   // \brief If set, we use strict pinning.
+   bool StrictPinning{_config->FindB("APT::Solver::Strict-Pinning", true)};
+   // \brief If set, we install missing recommends and pick new best packages.
+   bool FixPolicyBroken{_config->FindB("APT::Get::Fix-Policy-Broken")};
+   // \brief If set, we use strict pinning.
+   bool DeferVersionSelection{_config->FindB("APT::Solver::Defer-Version-Selection", true)};
+   // \brief If set, we use strict pinning.
+   int Timeout{_config->FindI("APT::Solver::Timeout", 10)};
+
+   // \brief Discover a variable, translating the underlying dependencies to the SAT presentation
+   //
+   // This does a breadth-first search of the entire dependency tree of var,
+   // utilizing the discoverQ above.
+   void Discover(Var var);
+   // \brief Link a clause into the watchers
+   void RegisterClause(Clause &&clause);
+   // \brief Enqueue dependencies shared by all versions of the package.
+   void RegisterCommonDependencies(pkgCache::PkgIterator Pkg);
+
+   // \brief Translate an or group into a clause object
+   [[nodiscard]] Clause TranslateOrGroup(pkgCache::DepIterator start, pkgCache::DepIterator end, Var reason);
+   // \brief Propagate all pending propagations
+   [[nodiscard]] bool Propagate();
+
+   // \brief Return the current depth (choices.size() with casting)
+   depth_type depth()
+   {
+      return static_cast<depth_type>(choices.size());
+   }
+   inline Var bestReason(Clause const *clause, Var var) const;
+
+   public:
+   // \brief Create a new decision level.
+   void Push(Work work);
+   // \brief Revert to the previous decision level.
+   [[nodiscard]] bool Pop();
+   // \brief Undo a single assignment / solved work item
+   void UndoOne();
+   // \brief Add work to our work queue.
+   [[nodiscard]] bool AddWork(Work &&work);
+
+   // \brief Basic solver initializer. This cannot fail.
+   Solver(pkgCache &Cache, pkgDepCache::Policy &Policy, EDSP::Request::Flags requestFlags);
+
+   // Assume that the variable is decided as specified.
+   [[nodiscard]] bool Assume(Var var, bool decision, const Clause *reason = nullptr);
+   // Enqueue a decision fact
+   [[nodiscard]] bool Enqueue(Var var, bool decision, const Clause *reason = nullptr);
+
+   // \brief Apply the selections from the dep cache to the solver
+   [[nodiscard]] bool FromDepCache(pkgDepCache &depcache);
+   // \brief Apply the solver result to the depCache
+   [[nodiscard]] bool ToDepCache(pkgDepCache &depcache) const;
+
+   // \brief Solve the dependencies
+   [[nodiscard]] bool Solve();
+
+   // Print dependency chain
+   std::string WhyStr(Var reason) const;
+};
+
+}; // namespace APT
+
+/**
+ * \brief Tagged union holding either a package, version, or nothing; representing the reason for installing something.
+ *
+ * We want to keep track of the reason why things are being installed such that
+ * we can have sensible debugging abilities; and we want to generically refer to
+ * both packages and versions as variables, hence this class was added.
+ *
+ */
+struct APT::Solver::Var
+{
+   uint32_t IsVersion : 1;
+   uint32_t MapPtr : 31;
+
+   Var() : IsVersion(0), MapPtr(0) {}
+   explicit Var(pkgCache::PkgIterator const &Pkg) : IsVersion(0), MapPtr(Pkg.MapPointer()) {}
+   explicit Var(pkgCache::VerIterator const &Ver) : IsVersion(1), MapPtr(Ver.MapPointer()) {}
+
+   // \brief Return the package, if any, otherwise 0.
+   map_pointer<pkgCache::Package> Pkg() const
+   {
+      return IsVersion ? 0 : map_pointer<pkgCache::Package>{(uint32_t)MapPtr};
+   }
+   // \brief Return the version, if any, otherwise 0.
+   map_pointer<pkgCache::Version> Ver() const
+   {
+      return IsVersion ? map_pointer<pkgCache::Version>{(uint32_t)MapPtr} : 0;
+   }
+   // \brief Return the package iterator if storing a package, or an empty one
+   pkgCache::PkgIterator Pkg(pkgCache &cache) const
+   {
+      return IsVersion ? pkgCache::PkgIterator() : pkgCache::PkgIterator(cache, cache.PkgP + Pkg());
+   }
+   // \brief Return the version iterator if storing a package, or an empty end.
+   pkgCache::VerIterator Ver(pkgCache &cache) const
+   {
+      return IsVersion ? pkgCache::VerIterator(cache, cache.VerP + Ver()) : pkgCache::VerIterator();
+   }
+   // \brief Return a package, cast from version if needed
+   pkgCache::PkgIterator CastPkg(pkgCache &cache) const
+   {
+      assert(MapPtr != 0);
+      return IsVersion ? Ver(cache).ParentPkg() : Pkg(cache);
+   }
+   // \brief Check if there is no reason.
+   bool empty() const
+   {
+      return IsVersion == 0 && MapPtr == 0;
+   }
+   bool operator==(Var const other) const
+   {
+      return IsVersion == other.IsVersion && MapPtr == other.MapPtr;
+   }
+
+   std::string toString(pkgCache &cache) const
+   {
+      if (auto P = Pkg(cache); not P.end())
+	 return P.FullName();
+      if (auto V = Ver(cache); not V.end())
+	 return V.ParentPkg().FullName() + "=" + V.VerStr();
+      return "(root)";
+   }
+};
+
+/**
+ * \brief A single clause
+ *
+ * A clause is a normalized, expanded dependency, translated into an implication
+ * in terms of Var objects, that is, `reason -> solutions[0] | ... | solutions[n]`
+ */
+struct APT::Solver::Clause
+{
+   // \brief Underyling dependency
+   pkgCache::Dependency *dep = nullptr;
+   // \brief Var for the work
+   Var reason;
+   // \brief The group we are in
+   Group group;
+   // \brief Possible solutions to this task, ordered in order of preference.
+   std::vector<Var> solutions{};
+   // \brief An optional clause does not need to be satisfied
+   bool optional;
+
+   // \brief A negative clause negates the solutions, that is X->A|B you get X->!(A|B), aka X->!A&!B
+   bool negative;
+
+   inline Clause(Var reason, Group group, bool optional = false, bool negative = false) : reason(reason), group(group), optional(optional), negative(negative) {}
+
+   std::string toString(pkgCache &cache) const;
+};
+
+/**
+ * \brief A single work item
+ *
+ * A work item is a positive dependency that still needs to be resolved. Work
+ * is ordered, by depth, length of solutions, and optionality.
+ *
+ * The work can always be recalculated from the state by iterating over dependencies
+ * of all packages in there, finding solutions to them, and then adding all dependencies
+ * not yet resolved to the work queue.
+ */
+struct APT::Solver::Work
+{
+   const Clause *clause;
+
+   // \brief The depth at which the item has been added
+   depth_type depth;
+
+   // This is a union because we only need to store the choice we made when adding
+   // to the choice vector, and we don't need the size of valid choices in there.
+   union
+   {
+      // The choice we took
+      Var choice;
+      // Number of valid choices
+      size_t size{0};
+   };
+
+   // \brief This item should be removed from the queue.
+   bool erased{false};
+
+   bool operator<(APT::Solver::Work const &b) const;
+   std::string toString(pkgCache &cache) const;
+   inline Work(const Clause *clause, depth_type depth) : clause(clause), depth(depth) {}
+};
+
+// \brief This essentially describes the install state in RFC2119 terms.
+enum class APT::Solver::Decision : uint16_t
+{
+   // \brief We have not made a choice about the package yet
+   NONE,
+   // \brief We need to install this package
+   MUST,
+   // \brief We cannot install this package (need conflicts with it)
+   MUSTNOT,
+};
+
+/**
+ * \brief The solver state
+ *
+ * For each version, the solver records a decision at a certain level. It
+ * maintains an array mapping from version ID to state.
+ */
+struct APT::Solver::State
+{
+   // \brief The reason for causing this state (invalid for NONE).
+   //
+   // Rejects may have been caused by a later state. Consider we select
+   // between x1 and x2 in depth = N. If we now find dependencies of x1
+   // leading to a conflict with a package in K < N, we will record all
+   // of them as REJECT in depth = K.
+   //
+   // You can follow the reason chain upwards as long as the depth
+   // doesn't increase to unwind.
+   //
+   // Vars < 0 are package ID, reasons > 0 are version IDs.
+   const Clause *reason{};
+
+   // \brief The depth at which the decision has been taken
+   depth_type depth{0};
+
+   // \brief This essentially describes the install state in RFC2119 terms.
+   Decision decision{Decision::NONE};
+
+   // \brief Flags.
+   struct
+   {
+      bool discovered{};
+   } flags;
+
+   static_assert(sizeof(flags) <= sizeof(int));
+
+   // \brief Clauses owned by this package/version
+   std::vector<std::unique_ptr<Clause>> clauses;
+   // \brief Reverse clauses, that is dependencies (or conflicts) from other packages on this one
+   std::vector<const Clause *> rclauses;
+};
+
+/**
+ * \brief A solved item.
+ *
+ * Here we keep track of solved clauses and variable assignments such that we can easily undo
+ * them.
+ */
+struct APT::Solver::Solved
+{
+   // \brief A variable that has been assigned. We store this as a reason (FIXME: Rename Var to Var)
+   Var assigned;
+   // \brief A work item that has been solved. This needs to be put back on the queue.
+   std::optional<Work> work;
+};
+
+inline APT::Solver::State &APT::Solver::operator[](Var r)
+{
+   if (auto P = r.Pkg())
+      return (*this)[cache.PkgP + P];
+   if (auto V = r.Ver())
+      return (*this)[cache.VerP + V];
+   return *rootState.get();
+}
+
+inline const APT::Solver::State &APT::Solver::operator[](Var r) const
+{
+   return const_cast<Solver &>(*this)[r];
+}
diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc
index 0ac59fc..b744da2 100644
--- a/apt-pkg/sourcelist.cc
+++ b/apt-pkg/sourcelist.cc
@@ -23,19 +23,20 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <cctype>
+#include <cstddef>
 #include <cstring>
+#include <ctime>
 #include <fstream>
 #include <map>
 #include <string>
 #include <vector>
-#include <ctype.h>
-#include <stddef.h>
-#include <time.h>
 
 #include <apti18n.h>
 									/*}}}*/
 
 using namespace std;
+using namespace std::literals;
 
 // Global list of Items supported
 static pkgSourceList::Type *ItmList[10];
@@ -120,6 +121,7 @@ bool pkgSourceList::Type::ParseStanza(vector<metaIndex *> &List,	/*{{{*/
    mapping.insert(std::make_pair("Valid-Until-Max", std::make_pair("valid-until-max", false)));
    mapping.insert(std::make_pair("Check-Date", std::make_pair("check-date", false)));
    mapping.insert(std::make_pair("Date-Max-Future", std::make_pair("date-max-future", false)));
+   mapping.insert(std::make_pair("Snapshot", std::make_pair("snapshot", false)));
    mapping.insert(std::make_pair("Signed-By", std::make_pair("signed-by", false)));
    mapping.insert(std::make_pair("PDiffs", std::make_pair("pdiffs", false)));
    mapping.insert(std::make_pair("By-Hash", std::make_pair("by-hash", false)));
@@ -142,6 +144,8 @@ bool pkgSourceList::Type::ParseStanza(vector<metaIndex *> &List,	/*{{{*/
       Options["sourceslist-entry"] = entry;
    }
 
+   Options["sourceslist-entry-is-deb822"] = "true";
+
    // now create one item per suite/section
    auto const list_uris = FindMultiValue(Tags, "URIs");
    auto const list_comp = FindMultiValue(Tags, "Components");
@@ -538,7 +542,7 @@ void pkgSourceList::AddVolatileFile(pkgIndexFile * const File)		/*{{{*/
       VolatileFiles.push_back(File);
 }
 									/*}}}*/
-static bool fileNameMatches(std::string const &filename, std::string const &idxtype)/*{{{*/
+static bool fileNameMatches(std::string_view const &filename, std::string const &idxtype)/*{{{*/
 {
    for (auto && type: APT::Configuration::getCompressionTypes())
    {
@@ -560,7 +564,7 @@ bool pkgSourceList::AddVolatileFile(std::string const &File, std::vector<std::st
    if (File.empty() || FileExists(File) == false)
       return false;
 
-   std::string const ext = flExtension(File);
+   auto const ext = flExtension(File);
    // udeb is not included as installing it is usually a mistake rather than intended
    if (ext == "deb" || ext == "ddeb")
       AddVolatileFile(new debDebPkgFileIndex(File));
@@ -587,9 +591,9 @@ bool pkgSourceList::AddVolatileFile(std::string const &File, std::vector<std::st
    else
    {
       auto const filename = flNotDir(File);
-      auto const Target = IndexTarget(File, filename, File, "file:" + File, false, true, {
+      auto const Target = IndexTarget(File, std::string{filename}, File, "file:" + File, false, true, {
 	 { "FILENAME", File },
-	 { "REPO_URI", "file:" + flAbsPath(flNotFile(File)) + '/' },
+	 { "REPO_URI", ("file:"s += flAbsPath(flNotFile(File))) += '/' },
 	 { "COMPONENT", "volatile-packages-file" },
       });
       if (fileNameMatches(filename, "Packages"))
@@ -611,7 +615,7 @@ bool pkgSourceList::AddVolatileFile(std::string const &File)
 									/*}}}*/
 void pkgSourceList::AddVolatileFiles(CommandLine &CmdL, std::vector<std::string> * const VolatileCmdL)/*{{{*/
 {
-   std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) {
+   (void)std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) {
       if (I != nullptr && (I[0] == '/' || (I[0] == '.' && (I[1] == '\0' || (I[1] == '.' && (I[2] == '\0' || I[2] == '/')) || I[1] == '/'))))
       {
 	 if (AddVolatileFile(I, VolatileCmdL))
diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h
index 4541803..2d70188 100644
--- a/apt-pkg/sourcelist.h
+++ b/apt-pkg/sourcelist.h
@@ -25,7 +25,7 @@
 #include <apt-pkg/macros.h>
 #include <apt-pkg/pkgcache.h>
 
-#include <time.h>
+#include <ctime>
 
 #include <map>
 #include <string>
diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc
index 03bda75..f2511b3 100644
--- a/apt-pkg/srcrecords.cc
+++ b/apt-pkg/srcrecords.cc
@@ -20,9 +20,9 @@
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/srcrecords.h>
 
+#include <cstring>
 #include <string>
 #include <vector>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
diff --git a/apt-pkg/tagfile-keys.list b/apt-pkg/tagfile-keys.list
index 4b57e46..d198ea0 100644
--- a/apt-pkg/tagfile-keys.list
+++ b/apt-pkg/tagfile-keys.list
@@ -80,3 +80,4 @@ Vcs-Mtn
 Vcs-Svn
 Version
 ### APPEND BELOW, sort in with next ABI break ###
+Source-Version
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
index 047f889..26bf708 100644
--- a/apt-pkg/tagfile.cc
+++ b/apt-pkg/tagfile.cc
@@ -3,35 +3,36 @@
 /* ######################################################################
 
    Fast scanner for RFC-822 type header information
-   
+
    This uses a rotating buffer to load the package information into.
    The scanner runs over it and isolates and indexes a single section.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
 #include <config.h>
 
+#include <apt-pkg/configuration.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/tagfile-keys.h>
 #include <apt-pkg/tagfile.h>
 
 #include <list>
 
+#include <cctype>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <string>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
 
+using APT::Configuration::color;
 using std::string;
-using APT::StringView;
+using std::string_view;
 
 class APT_HIDDEN pkgTagFilePrivate					/*{{{*/
 {
@@ -73,6 +74,9 @@ public:
    };
    std::list<FileChunk> chunks;
 
+   bool FillBuffer();
+   void RemoveCommentsFromBuffer();
+
    ~pkgTagFilePrivate()
    {
       if (Buffer != NULL)
@@ -154,10 +158,7 @@ void pkgTagFile::Init(FileFd * const pFd,unsigned long long Size)
 }
 									/*}}}*/
 // TagFile::~pkgTagFile - Destructor					/*{{{*/
-pkgTagFile::~pkgTagFile()
-{
-   delete d;
-}
+pkgTagFile::~pkgTagFile() = default;
 									/*}}}*/
 // TagFile::Offset - Return the current offset in the buffer		/*{{{*/
 APT_PURE unsigned long pkgTagFile::Offset()
@@ -197,7 +198,7 @@ bool pkgTagFile::Resize(unsigned long long const newSize)
 									/*}}}*/
 // TagFile::Step - Advance to the next section				/*{{{*/
 // ---------------------------------------------------------------------
-/* If the Section Scanner fails we refill the buffer and try again. 
+/* If the Section Scanner fails we refill the buffer and try again.
  * If that fails too, double the buffer size and try again until a
  * maximum buffer is reached.
  */
@@ -262,57 +263,57 @@ bool pkgTagFile::Step(pkgTagSection &Tag)
 // ---------------------------------------------------------------------
 /* This takes the bit at the end of the buffer and puts it at the start
    then fills the rest from the file */
-static bool FillBuffer(pkgTagFilePrivate * const d)
+bool pkgTagFilePrivate::FillBuffer()
 {
    unsigned long long Actual = 0;
    // See if only a bit of the file is left
-   unsigned long long const dataSize = d->Size - ((d->End - d->Buffer) + 1);
-   if (d->Fd->Read(d->End, dataSize, &Actual) == false)
+   unsigned long long const dataSize = Size - ((End - Buffer) + 1);
+   if (Fd->Read(End, dataSize, &Actual) == false)
       return false;
    if (Actual != dataSize)
-      d->Done = true;
-   d->End += Actual;
+      Done = true;
+   End += Actual;
    return true;
 }
-static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d)
+void pkgTagFilePrivate::RemoveCommentsFromBuffer()
 {
    // look for valid comments in the buffer
    char * good_start = nullptr, * bad_start = nullptr;
-   char * current = d->Start;
-   if (d->isCommentedLine == false)
+   char * current = Start;
+   if (isCommentedLine == false)
    {
-      if (d->Start == d->Buffer)
+      if (Start == Buffer)
       {
 	 // the start of the buffer is a newline as a record can't start
 	 // in the middle of a line by definition.
-	 if (*d->Start == '#')
+	 if (*Start == '#')
 	 {
-	    d->isCommentedLine = true;
+	    isCommentedLine = true;
 	    ++current;
-	    if (current > d->End)
-	       d->chunks.emplace_back(false, 1);
+	    if (current > End)
+	       chunks.emplace_back(false, 1);
 	 }
       }
-      if (d->isCommentedLine == false)
-	 good_start = d->Start;
+      if (isCommentedLine == false)
+	 good_start = Start;
       else
-	 bad_start = d->Start;
+	 bad_start = Start;
    }
    else
-      bad_start = d->Start;
+      bad_start = Start;
 
    std::vector<std::pair<char*, size_t>> good_parts;
-   while (current <= d->End)
+   while (current <= End)
    {
-      size_t const restLength = (d->End - current);
-      if (d->isCommentedLine == false)
+      size_t const restLength = (End - current);
+      if (isCommentedLine == false)
       {
 	 current = static_cast<char*>(memchr(current, '#', restLength));
 	 if (current == nullptr)
 	 {
-	    size_t const goodLength = d->End - good_start;
-	    d->chunks.emplace_back(true, goodLength);
-	    if (good_start != d->Start)
+	    size_t const goodLength = End - good_start;
+	    chunks.emplace_back(true, goodLength);
+	    if (good_start != Start)
 	       good_parts.push_back(std::make_pair(good_start, goodLength));
 	    break;
 	 }
@@ -322,10 +323,10 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d)
 	 if (*current == '\n')
 	 {
 	    size_t const goodLength = (current - good_start) + 1;
-	    d->chunks.emplace_back(true, goodLength);
+	    chunks.emplace_back(true, goodLength);
 	    good_parts.push_back(std::make_pair(good_start, goodLength));
 	    good_start = nullptr;
-	    d->isCommentedLine = true;
+	    isCommentedLine = true;
 	 }
 	 current += 2;
       }
@@ -334,17 +335,17 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d)
 	 current = static_cast<char*>(memchr(current, '\n', restLength));
 	 if (current == nullptr)
 	 {
-	    d->chunks.emplace_back(false, (d->End - bad_start));
+	    chunks.emplace_back(false, (End - bad_start));
 	    break;
 	 }
 	 ++current;
 	 // is the next line a comment, too?
-	 if (current >= d->End || *current != '#')
+	 if (current >= End || *current != '#')
 	 {
-	    d->chunks.emplace_back(false, (current - bad_start));
+	    chunks.emplace_back(false, (current - bad_start));
 	    good_start = current;
 	    bad_start = nullptr;
-	    d->isCommentedLine = false;
+	    isCommentedLine = false;
 	 }
 	 ++current;
       }
@@ -353,31 +354,31 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d)
    if (good_parts.empty() == false)
    {
       // we found comments, so move later parts over them
-      current = d->Start;
+      current = Start;
       for (auto const &good: good_parts)
       {
 	 memmove(current, good.first, good.second);
 	 current += good.second;
       }
-      d->End = current;
+      End = current;
    }
 
-   if (d->isCommentedLine == true)
+   if (isCommentedLine == true)
    {
       // deal with a buffer containing only comments
       // or an (unfinished) comment at the end
       if (good_parts.empty() == true)
-	 d->End = d->Start;
+	 End = Start;
       else
-	 d->Start = d->End;
+	 Start = End;
    }
    else
    {
       // the buffer was all comment, but ended with the buffer
-      if (good_parts.empty() == true && good_start >= d->End)
-	 d->End = d->Start;
+      if (good_parts.empty() == true && good_start >= End)
+	 End = Start;
       else
-	 d->Start = d->End;
+	 Start = End;
    }
 }
 bool pkgTagFile::Fill()
@@ -394,10 +395,10 @@ bool pkgTagFile::Fill()
    unsigned long long Actual = 0;
    while (d->Done == false && d->Size > (Actual + 1))
    {
-      if (FillBuffer(d) == false)
+      if (d->FillBuffer() == false)
 	 return false;
       if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) != 0)
-	 RemoveCommentsFromBuffer(d);
+	 d->RemoveCommentsFromBuffer();
       Actual = d->End - d->Buffer;
    }
    d->Start = d->Buffer;
@@ -431,6 +432,11 @@ bool pkgTagFile::Fill()
    that is there */
 bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset)
 {
+   // Head back to the start of the buffer, in case we get called for the same section
+   // again (d->Start will point to next section already)
+   d->iOffset -= d->Start - d->Buffer;
+   d->Start = d->Buffer;
+
    if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) == 0 &&
    // We are within a buffer space of the next hit..
 	 Offset >= d->iOffset && d->iOffset + (d->End - d->Start) > Offset)
@@ -459,14 +465,14 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset)
 
    if (Tag.Scan(d->Start, d->End - d->Start) == true)
       return true;
-   
+
    // This appends a double new line (for the real eof handling)
    if (Fill() == false)
       return false;
-   
+
    if (Tag.Scan(d->Start, d->End - d->Start, false) == false)
       return _error->Error(_("Unable to parse package file %s (%d)"),d->Fd->Name().c_str(), 2);
-   
+
    return true;
 }
 									/*}}}*/
@@ -595,7 +601,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R
 	 TrimRecord(false,End);
 	 return true;
       }
-      
+
       Stop++;
    }
 
@@ -621,7 +627,7 @@ void pkgTagSection::Trim()
 }
 									/*}}}*/
 // TagSection::Exists - return True if a tag exists			/*{{{*/
-bool pkgTagSection::Exists(StringView Tag) const
+bool pkgTagSection::Exists(string_view Tag) const
 {
    unsigned int tmp;
    return Find(Tag, tmp);
@@ -641,7 +647,7 @@ bool pkgTagSection::Find(Key key,unsigned int &Pos) const
    Pos = Bucket - 1;
    return Bucket != 0;
 }
-bool pkgTagSection::Find(StringView TagView,unsigned int &Pos) const
+bool pkgTagSection::Find(string_view TagView,unsigned int &Pos) const
 {
    const char * const Tag = TagView.data();
    size_t const Length = TagView.length();
@@ -686,7 +692,7 @@ bool pkgTagSection::FindInternal(unsigned int Pos, const char *&Start,
 
    return true;
 }
-bool pkgTagSection::Find(StringView Tag,const char *&Start,
+bool pkgTagSection::Find(string_view Tag,const char *&Start,
 		         const char *&End) const
 {
    unsigned int Pos;
@@ -700,25 +706,25 @@ bool pkgTagSection::Find(Key key,const char *&Start,
 }
 									/*}}}*/
 // TagSection::FindS - Find a string					/*{{{*/
-StringView pkgTagSection::Find(StringView Tag) const
+string_view pkgTagSection::Find(string_view Tag) const
 {
    const char *Start;
    const char *End;
    if (Find(Tag,Start,End) == false)
-      return StringView();
-   return StringView(Start, End - Start);
+      return string_view();
+   return string_view(Start, End - Start);
 }
-StringView pkgTagSection::Find(Key key) const
+string_view pkgTagSection::Find(Key key) const
 {
    const char *Start;
    const char *End;
    if (Find(key,Start,End) == false)
-      return StringView();
-   return StringView(Start, End - Start);
+      return string_view();
+   return string_view(Start, End - Start);
 }
 									/*}}}*/
 // TagSection::FindRawS - Find a string					/*{{{*/
-StringView pkgTagSection::FindRawInternal(unsigned int Pos) const
+string_view pkgTagSection::FindRawInternal(unsigned int Pos) const
 {
    if (unlikely(Pos + 1 >= d->Tags.size() || Pos >= d->Tags.size()))
       return _error->Error("Internal parsing error"), "";
@@ -736,14 +742,14 @@ StringView pkgTagSection::FindRawInternal(unsigned int Pos) const
 
    for (; isspace_ascii(End[-1]) != 0 && End > Start; --End);
 
-   return StringView(Start, End - Start);
+   return string_view(Start, End - Start);
 }
-StringView pkgTagSection::FindRaw(StringView Tag) const
+string_view pkgTagSection::FindRaw(std::string_view Tag) const
 {
    unsigned int Pos;
    return Find(Tag, Pos) ? FindRawInternal(Pos) : "";
 }
-StringView pkgTagSection::FindRaw(Key key) const
+string_view pkgTagSection::FindRaw(Key key) const
 {
    unsigned int Pos;
    return Find(key, Pos) ? FindRawInternal(Pos) : "";
@@ -754,8 +760,8 @@ StringView pkgTagSection::FindRaw(Key key) const
 /* */
 signed int pkgTagSection::FindIInternal(unsigned int Pos,signed long Default) const
 {
-   const char *Start;
-   const char *Stop;
+   const char *Start = nullptr;
+   const char *Stop = nullptr;
    if (FindInternal(Pos,Start,Stop) == false)
       return Default;
 
@@ -784,7 +790,7 @@ signed int pkgTagSection::FindI(Key key,signed long Default) const
 
    return Find(key, Pos) ? FindIInternal(Pos) : Default;
 }
-signed int pkgTagSection::FindI(StringView Tag,signed long Default) const
+signed int pkgTagSection::FindI(string_view Tag,signed long Default) const
 {
    unsigned int Pos;
 
@@ -796,8 +802,8 @@ signed int pkgTagSection::FindI(StringView Tag,signed long Default) const
 /* */
 unsigned long long pkgTagSection::FindULLInternal(unsigned int Pos, unsigned long long const &Default) const
 {
-   const char *Start;
-   const char *Stop;
+   const char *Start = nullptr;
+   const char *Stop = nullptr;
    if (FindInternal(Pos,Start,Stop) == false)
       return Default;
 
@@ -807,7 +813,7 @@ unsigned long long pkgTagSection::FindULLInternal(unsigned int Pos, unsigned lon
       return Default;
    strncpy(S,Start,Stop-Start);
    S[Stop - Start] = 0;
-   
+
    char *End;
    unsigned long long Result = strtoull(S,&End,10);
    if (S == End)
@@ -820,7 +826,7 @@ unsigned long long pkgTagSection::FindULL(Key key, unsigned long long const &Def
 
    return Find(key, Pos) ? FindULLInternal(Pos, Default) : Default;
 }
-unsigned long long pkgTagSection::FindULL(StringView Tag, unsigned long long const &Default) const
+unsigned long long pkgTagSection::FindULL(string_view Tag, unsigned long long const &Default) const
 {
    unsigned int Pos;
 
@@ -832,7 +838,7 @@ unsigned long long pkgTagSection::FindULL(StringView Tag, unsigned long long con
 /* */
 bool pkgTagSection::FindBInternal(unsigned int Pos, bool Default) const
 {
-   const char *Start, *Stop;
+   const char *Start = nullptr, *Stop = nullptr;
    if (FindInternal(Pos, Start, Stop) == false)
       return Default;
    return StringToBool(string(Start, Stop));
@@ -842,7 +848,7 @@ bool pkgTagSection::FindB(Key key, bool Default) const
    unsigned int Pos;
    return Find(key, Pos) ? FindBInternal(Pos, Default): Default;
 }
-bool pkgTagSection::FindB(StringView Tag, bool Default) const
+bool pkgTagSection::FindB(string_view Tag, bool Default) const
 {
    unsigned int Pos;
    return Find(Tag, Pos) ? FindBInternal(Pos, Default) : Default;
@@ -854,8 +860,8 @@ bool pkgTagSection::FindB(StringView Tag, bool Default) const
 bool pkgTagSection::FindFlagInternal(unsigned int Pos, uint8_t &Flags,
 			     uint8_t const Flag) const
 {
-   const char *Start;
-   const char *Stop;
+   const char *Start = nullptr;
+   const char *Stop = nullptr;
    if (FindInternal(Pos,Start,Stop) == false)
       return true;
    return FindFlag(Flags, Flag, Start, Stop);
@@ -868,7 +874,7 @@ bool pkgTagSection::FindFlag(Key key, uint8_t &Flags,
       return true;
    return FindFlagInternal(Pos, Flags, Flag);
 }
-bool pkgTagSection::FindFlag(StringView Tag, uint8_t &Flags,
+bool pkgTagSection::FindFlag(string_view Tag, uint8_t &Flags,
 			     uint8_t const Flag) const
 {
    unsigned int Pos;
@@ -898,8 +904,8 @@ bool pkgTagSection::FindFlag(uint8_t &Flags, uint8_t const Flag,
 bool pkgTagSection::FindFlagInternal(unsigned int Pos,unsigned long &Flags,
 			     unsigned long Flag) const
 {
-   const char *Start;
-   const char *Stop;
+   const char *Start = nullptr;
+   const char *Stop = nullptr;
    if (FindInternal(Pos,Start,Stop) == false)
       return true;
    return FindFlag(Flags, Flag, Start, Stop);
@@ -910,7 +916,7 @@ bool pkgTagSection::FindFlag(Key key,unsigned long &Flags,
    unsigned int Pos;
    return Find(key, Pos) ? FindFlagInternal(Pos, Flags, Flag) : true;
 }
-bool pkgTagSection::FindFlag(StringView Tag,unsigned long &Flags,
+bool pkgTagSection::FindFlag(string_view Tag,unsigned long &Flags,
 			     unsigned long Flag) const
 {
    unsigned int Pos;
@@ -952,34 +958,38 @@ APT_PURE unsigned int pkgTagSection::Count() const {			/*{{{*/
 }
 									/*}}}*/
 // TagSection::Write - Ordered (re)writing of fields			/*{{{*/
-pkgTagSection::Tag pkgTagSection::Tag::Remove(std::string const &Name)
+pkgTagSection::Tag pkgTagSection::Tag::Remove(std::string_view Name)
 {
    return Tag(REMOVE, Name, "");
 }
-pkgTagSection::Tag pkgTagSection::Tag::Rename(std::string const &OldName, std::string const &NewName)
+pkgTagSection::Tag pkgTagSection::Tag::Rename(std::string_view OldName, std::string_view NewName)
 {
    return Tag(RENAME, OldName, NewName);
 }
-pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string const &Name, std::string const &Data)
+pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string_view Name, std::string_view Data)
 {
    if (Data.empty() == true)
       return Tag(REMOVE, Name, "");
    else
       return Tag(REWRITE, Name, Data);
 }
-static bool WriteTag(FileFd &File, std::string Tag, StringView Value)
+static bool WriteTag(FileFd &File, std::string Tag, string_view Value, pkgTagSection::WriteFlags flags)
 {
    if (Value.empty() || isspace_ascii(Value[0]) != 0)
       Tag.append(":");
    else
       Tag.append(": ");
+
+   if (flags & pkgTagSection::WRITE_HUMAN)
+      Tag = color("Show::Field", Tag);
+
    Tag.append(Value.data(), Value.length());
    Tag.append("\n");
    return File.Write(Tag.c_str(), Tag.length());
 }
-static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char const * const Tag,
-      std::vector<pkgTagSection::Tag>::const_iterator &R,
-      std::vector<pkgTagSection::Tag>::const_iterator const &REnd)
+static bool RewriteTags(FileFd &File, pkgTagSection const *const This, char const *const Tag,
+			std::vector<pkgTagSection::Tag>::const_iterator &R,
+			std::vector<pkgTagSection::Tag>::const_iterator const &REnd, pkgTagSection::WriteFlags flags)
 {
    size_t const TagLen = strlen(Tag);
    for (; R != REnd; ++R)
@@ -993,15 +1003,19 @@ static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char con
       }
       else if(R->Action == pkgTagSection::Tag::RENAME && R->Data.length() == TagLen &&
 	    strncasecmp(R->Data.c_str(), Tag, R->Data.length()) == 0)
-	 data = This->FindRaw(R->Name.c_str()).to_string();
+	 data = This->FindRaw(R->Name.c_str());
       else
 	 continue;
 
-      return WriteTag(File, Tag, data);
+      return WriteTag(File, Tag, data, flags);
    }
    return true;
 }
 bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::vector<Tag> const &Rewrite) const
+{
+   return Write(File, WRITE_DEFAULT, Order, Rewrite);
+}
+bool pkgTagSection::Write(FileFd &File, pkgTagSection::WriteFlags flags, char const *const *const Order, std::vector<Tag> const &Rewrite) const
 {
    // first pass: Write everything we have an order for
    if (Order != NULL)
@@ -1009,7 +1023,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
       for (unsigned int I = 0; Order[I] != 0; ++I)
       {
 	 std::vector<Tag>::const_iterator R = Rewrite.begin();
-	 if (RewriteTags(File, this, Order[I], R, Rewrite.end()) == false)
+	 if (RewriteTags(File, this, Order[I], R, Rewrite.end(), flags) == false)
 	    return false;
 	 if (R != Rewrite.end())
 	    continue;
@@ -1017,7 +1031,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
 	 if (Exists(Order[I]) == false)
 	    continue;
 
-	 if (WriteTag(File, Order[I], FindRaw(Order[I])) == false)
+	 if (WriteTag(File, Order[I], FindRaw(Order[I]), flags) == false)
 	    return false;
       }
    }
@@ -1042,12 +1056,12 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
 
 	 std::string const name(fieldname, fieldnamelen);
 	 std::vector<Tag>::const_iterator R = Rewrite.begin();
-	 if (RewriteTags(File, this, name.c_str(), R, Rewrite.end()) == false)
+	 if (RewriteTags(File, this, name.c_str(), R, Rewrite.end(), flags) == false)
 	    return false;
 	 if (R != Rewrite.end())
 	    continue;
 
-	 if (WriteTag(File, name, FindRaw(name)) == false)
+	 if (WriteTag(File, name, FindRaw(name), flags) == false)
 	    return false;
       }
    }
@@ -1071,7 +1085,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
 	    continue;
       }
 
-      if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data)) == false)
+      if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data), flags) == false)
 	 return false;
    }
    return true;
@@ -1080,4 +1094,4 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
 
 #include "tagfile-order.c"
 
-pkgTagSection::~pkgTagSection() { delete d; }
+pkgTagSection::~pkgTagSection() = default;
diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h
index a9f5814..23e42e4 100644
--- a/apt-pkg/tagfile.h
+++ b/apt-pkg/tagfile.h
@@ -3,17 +3,17 @@
 /* ######################################################################
 
    Fast scanner for RFC-822 type header information
-   
+
    This parser handles Debian package files (and others). Their form is
    RFC-822 type header fields in groups separated by a blank line.
-   
+
    The parser reads the file and provides methods to step linearly
    over it or to jump to a pre-recorded start point and read that record.
-   
+
    A second class is used to perform pre-parsing of the record. It works
-   by indexing the start of each header field and providing lookup 
+   by indexing the start of each header field and providing lookup
    functions for header fields.
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef PKGLIB_TAGFILE_H
@@ -21,13 +21,14 @@
 
 #include <apt-pkg/macros.h>
 
-#include <stdint.h>
-#include <stdio.h>
+#include <cstdint>
+#include <cstdio>
 
 #include <list>
+#include <memory>
 #include <string>
+#include <string_view>
 #include <vector>
-#include <apt-pkg/string_view.h>
 
 
 class FileFd;
@@ -47,11 +48,11 @@ class APT_PUBLIC pkgTagSection
    unsigned int AlphaIndexes[128];
    unsigned int BetaIndexes[128];
 
-   pkgTagSectionPrivate * const d;
+   std::unique_ptr<pkgTagSectionPrivate> const d;
 
    APT_HIDDEN bool FindInternal(unsigned int Pos,const char *&Start, const char *&End) const;
-   APT_HIDDEN APT::StringView FindInternal(unsigned int Pos) const;
-   APT_HIDDEN APT::StringView FindRawInternal(unsigned int Pos) const;
+   APT_HIDDEN std::string_view FindInternal(unsigned int Pos) const;
+   APT_HIDDEN std::string_view FindRawInternal(unsigned int Pos) const;
    APT_HIDDEN signed int FindIInternal(unsigned int Pos,signed long Default = 0) const;
    APT_HIDDEN bool FindBInternal(unsigned int Pos, bool Default = false) const;
    APT_HIDDEN unsigned long long FindULLInternal(unsigned int Pos, unsigned long long const &Default = 0) const;
@@ -67,8 +68,8 @@ class APT_PUBLIC pkgTagSection
    inline bool operator !=(const pkgTagSection &rhs) {return Section != rhs.Section;};
 
    // TODO: Remove internally
-   std::string FindS(APT::StringView sv) const { return Find(sv).to_string(); }
-   std::string FindRawS(APT::StringView sv) const { return FindRaw(sv).to_string(); };
+   std::string FindS(std::string_view sv) const { return std::string{Find(sv)}; }
+   std::string FindRawS(std::string_view sv) const { return std::string{FindRaw(sv)}; };
 
    // Functions for lookup with a perfect hash function
    enum class Key;
@@ -81,23 +82,23 @@ class APT_PUBLIC pkgTagSection
    bool FindFlag(Key key,uint8_t &Flags, uint8_t const Flag) const;
    bool FindFlag(Key key,unsigned long &Flags, unsigned long Flag) const;
    bool Exists(Key key) const;
-   APT::StringView Find(Key key) const;
-   APT::StringView FindRaw(Key key) const;
+   std::string_view Find(Key key) const;
+   std::string_view FindRaw(Key key) const;
 #endif
 
-   bool Find(APT::StringView Tag,const char *&Start, const char *&End) const;
-   bool Find(APT::StringView Tag,unsigned int &Pos) const;
-   APT::StringView Find(APT::StringView Tag) const;
-   APT::StringView FindRaw(APT::StringView Tag) const;
-   signed int FindI(APT::StringView Tag,signed long Default = 0) const;
-   bool FindB(APT::StringView, bool Default = false) const;
-   unsigned long long FindULL(APT::StringView Tag, unsigned long long const &Default = 0) const;
+   bool Find(std::string_view Tag,const char *&Start, const char *&End) const;
+   bool Find(std::string_view Tag,unsigned int &Pos) const;
+   std::string_view Find(std::string_view Tag) const;
+   std::string_view FindRaw(std::string_view Tag) const;
+   signed int FindI(std::string_view Tag,signed long Default = 0) const;
+   bool FindB(std::string_view, bool Default = false) const;
+   unsigned long long FindULL(std::string_view Tag, unsigned long long const &Default = 0) const;
 
-   bool FindFlag(APT::StringView Tag,uint8_t &Flags,
+   bool FindFlag(std::string_view Tag,uint8_t &Flags,
 		 uint8_t const Flag) const;
-   bool FindFlag(APT::StringView Tag,unsigned long &Flags,
+   bool FindFlag(std::string_view Tag,unsigned long &Flags,
 		 unsigned long Flag) const;
-   bool Exists(APT::StringView Tag) const;
+   bool Exists(std::string_view Tag) const;
 
    bool static FindFlag(uint8_t &Flags, uint8_t const Flag,
 				const char* const Start, const char* const Stop);
@@ -120,7 +121,7 @@ class APT_PUBLIC pkgTagSection
     * @return \b true if section end was found, \b false otherwise.
     *  Beware that internal state will be inconsistent if \b false is returned!
     */
-   APT_MUSTCHECK bool Scan(const char *Start, unsigned long MaxLength, bool const Restart = true);
+   [[nodiscard]] bool Scan(const char *Start, unsigned long MaxLength, bool const Restart = true);
 
    inline unsigned long size() const {return Stop - Section;};
    void Trim();
@@ -150,11 +151,11 @@ class APT_PUBLIC pkgTagSection
       std::string Name;
       std::string Data;
 
-      static Tag Remove(std::string const &Name);
-      static Tag Rename(std::string const &OldName, std::string const &NewName);
-      static Tag Rewrite(std::string const &Name, std::string const &Data);
+      static Tag Remove(std::string_view Name);
+      static Tag Rename(std::string_view OldName, std::string_view NewName);
+      static Tag Rewrite(std::string_view Name, std::string_view Data);
       private:
-      Tag(ActionType const Action, std::string const &Name, std::string const &Data) :
+      Tag(ActionType const Action, std::string_view Name, std::string_view Data) :
 	 Action(Action), Name(Name), Data(Data) {}
    };
 
@@ -166,6 +167,14 @@ class APT_PUBLIC pkgTagSection
     * @return \b true if successful, otherwise \b false
     */
    bool Write(FileFd &File, char const * const * const Order = NULL, std::vector<Tag> const &Rewrite = std::vector<Tag>()) const;
+#ifdef APT_COMPILING_APT
+   enum WriteFlags
+   {
+      WRITE_DEFAULT = 0,
+      WRITE_HUMAN = (1 << 0), /* write human readable output, may include highlighting */
+   };
+   bool Write(FileFd &File, WriteFlags flags, char const *const *const Order = NULL, std::vector<Tag> const &Rewrite = std::vector<Tag>()) const;
+#endif
 };
 
 
@@ -175,7 +184,7 @@ class APT_PUBLIC pkgTagSection
  * for comments e.g. needs to be enabled explicitly. */
 class APT_PUBLIC pkgTagFile
 {
-   pkgTagFilePrivate * const d;
+   std::unique_ptr<pkgTagFilePrivate> const d;
 
    APT_HIDDEN bool Fill();
    APT_HIDDEN bool Resize();
@@ -193,11 +202,11 @@ public:
       SUPPORT_COMMENTS = 1 << 0,
    };
 
-   void Init(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = 32*1024);
-   void Init(FileFd * const F,unsigned long long const Size = 32*1024);
+   void Init(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = APT_BUFFER_SIZE);
+   void Init(FileFd * const F,unsigned long long const Size = APT_BUFFER_SIZE);
 
-   pkgTagFile(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = 32*1024);
-   pkgTagFile(FileFd * const F,unsigned long long Size = 32*1024);
+   pkgTagFile(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = APT_BUFFER_SIZE);
+   pkgTagFile(FileFd * const F,unsigned long long Size = APT_BUFFER_SIZE);
    virtual ~pkgTagFile();
 };
 
diff --git a/apt-pkg/upgrade.cc b/apt-pkg/upgrade.cc
index e3e98e5..fad4783 100644
--- a/apt-pkg/upgrade.cc
+++ b/apt-pkg/upgrade.cc
@@ -18,102 +18,6 @@
 #include <apti18n.h>
 									/*}}}*/
 
-struct PhasedUpgrader
-{
-   std::string machineID;
-   bool isChroot;
-
-   PhasedUpgrader()
-   {
-      machineID = APT::Configuration::getMachineID();
-   }
-
-   // See if this version is a security update. This also checks, for installed packages,
-   // if any of the previous versions is a security update
-   bool IsSecurityUpdate(pkgCache::VerIterator const &Ver)
-   {
-      auto Pkg = Ver.ParentPkg();
-      auto Installed = Pkg.CurrentVer();
-
-      auto OtherVer = Pkg.VersionList();
-
-      // Advance to first version < our version
-      while (OtherVer->ID != Ver->ID)
-	 ++OtherVer;
-      ++OtherVer;
-
-      // Iterate over all versions < our version
-      for (; !OtherVer.end() && (Installed.end() || OtherVer->ID != Installed->ID); OtherVer++)
-      {
-	 for (auto PF = OtherVer.FileList(); !PF.end(); PF++)
-	    if (PF.File() && PF.File().Archive() != nullptr && APT::String::Endswith(PF.File().Archive(), "-security"))
-	       return true;
-      }
-      return false;
-   }
-
-   // Check if this version is a phased update that should be ignored
-   bool IsIgnoredPhasedUpdate(pkgCache::VerIterator const &Ver)
-   {
-      if (_config->FindB("APT::Get::Phase-Policy", false))
-	 return false;
-
-      // The order and fallbacks for the always/never checks come from update-manager and exist
-      // to preserve compatibility.
-      if (_config->FindB("APT::Get::Always-Include-Phased-Updates",
-			 _config->FindB("Update-Manager::Always-Include-Phased-Updates", false)))
-	 return false;
-
-      if (_config->FindB("APT::Get::Never-Include-Phased-Updates",
-			 _config->FindB("Update-Manager::Never-Include-Phased-Updates", false)))
-	 return true;
-
-      if (machineID.empty()			    // no machine-id
-	  || getenv("SOURCE_DATE_EPOCH") != nullptr // reproducible build - always include
-	  || APT::Configuration::isChroot())
-	 return false;
-
-      std::string seedStr = std::string(Ver.SourcePkgName()) + "-" + Ver.SourceVerStr() + "-" + machineID;
-      std::seed_seq seed(seedStr.begin(), seedStr.end());
-      std::minstd_rand rand(seed);
-      std::uniform_int_distribution<unsigned int> dist(0, 100);
-
-      return dist(rand) > Ver.PhasedUpdatePercentage();
-   }
-
-   bool ShouldKeep(pkgDepCache &Cache, pkgCache::PkgIterator Pkg)
-   {
-      if (Pkg->CurrentVer == 0)
-	 return false;
-      if (Cache[Pkg].InstallVer == 0)
-	 return false;
-      if (Cache[Pkg].InstVerIter(Cache).PhasedUpdatePercentage() == 100)
-	 return false;
-      if (IsSecurityUpdate(Cache[Pkg].InstVerIter(Cache)))
-	 return false;
-      if (!IsIgnoredPhasedUpdate(Cache[Pkg].InstVerIter(Cache)))
-	 return false;
-
-      return true;
-   }
-
-   // Hold back upgrades to phased versions of already installed packages, unless
-   // they are security updates
-   void HoldBackIgnoredPhasedUpdates(pkgDepCache &Cache, pkgProblemResolver *Fix)
-   {
-      for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
-      {
-	 if (not ShouldKeep(Cache, I))
-	    continue;
-
-	 Cache.MarkKeep(I, false, false);
-	 Cache.MarkProtected(I);
-	 if (Fix != nullptr)
-	    Fix->Protect(I);
-      }
-   }
-};
-
 // DistUpgrade - Distribution upgrade					/*{{{*/
 // ---------------------------------------------------------------------
 /* This autoinstalls every package and then force installs every 
@@ -134,14 +38,16 @@ static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
 
    pkgDepCache::ActionGroup group(Cache);
 
-   PhasedUpgrader().HoldBackIgnoredPhasedUpdates(Cache, nullptr);
-
    /* Upgrade all installed packages first without autoinst to help the resolver
       in versioned or-groups to upgrade the old solver instead of installing
       a new one (if the old solver is not the first one [anymore]) */
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+   {
+      if (Cache.PhasingApplied(I))
+	 continue;
       if (I->CurrentVer != 0)
 	 Cache.MarkInstall(I, false, 0, false);
+   }
 
    if (Progress != NULL)
       Progress->Progress(10);
@@ -149,8 +55,12 @@ static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
    /* Auto upgrade all installed packages, this provides the basis 
       for the installation */
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+   {
+      if (Cache.PhasingApplied(I))
+	 continue;
       if (I->CurrentVer != 0)
 	 Cache.MarkInstall(I, true, 0, false);
+   }
 
    if (Progress != NULL)
       Progress->Progress(50);
@@ -178,13 +88,19 @@ static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
 	 if (isEssential == false || instEssential == true)
 	    continue;
 	 pkgCache::PkgIterator P = G.FindPreferredPkg();
+	 if (Cache.PhasingApplied(P))
+	    continue;
 	 Cache.MarkInstall(P, true, 0, false);
       }
    }
    else if (essential != "none")
       for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+      {
+	 if (Cache.PhasingApplied(I))
+	    continue;
 	 if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
 	    Cache.MarkInstall(I, true, 0, false);
+      }
 
    if (Progress != NULL)
       Progress->Progress(55);
@@ -192,8 +108,12 @@ static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
    /* We do it again over all previously installed packages to force 
       conflict resolution on them all. */
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+   {
+      if (Cache.PhasingApplied(I))
+	 continue;
       if (I->CurrentVer != 0)
 	 Cache.MarkInstall(I, false, 0, false);
+   }
 
    if (Progress != NULL)
       Progress->Progress(65);
@@ -216,9 +136,23 @@ static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
       }
    }
 
-   PhasedUpgrader().HoldBackIgnoredPhasedUpdates(Cache, &Fix);
+   bool success = Fix.ResolveInternal(false);
+   if (success)
+   {
+      // Revert phased updates using keeps. An issue with ResolveByKeep is
+      // that it also keeps back packages due to (new) broken Recommends,
+      // even if Upgrade already decided this is fine, so we will mark all
+      // packages that dist-upgrade decided may have a broken policy as allowed
+      // to do so such that we do not keep them back again.
+      pkgProblemResolver FixPhasing(&Cache);
+
+      for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+	 if (Cache[I].InstPolicyBroken())
+	    FixPhasing.AllowBrokenPolicy(I);
+      FixPhasing.KeepPhasedUpdates();
+      success = FixPhasing.ResolveByKeepInternal();
+   }
 
-   bool const success = Fix.ResolveInternal(false);
    if (Progress != NULL)
       Progress->Done();
    return success;
@@ -237,7 +171,6 @@ static bool pkgAllUpgradeNoNewPackages(pkgDepCache &Cache, OpProgress * const Pr
 
    pkgDepCache::ActionGroup group(Cache);
    pkgProblemResolver Fix(&Cache);
-   PhasedUpgrader phasedUpgrader;
    // Upgrade all installed packages
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
    {
@@ -248,7 +181,7 @@ static bool pkgAllUpgradeNoNewPackages(pkgDepCache &Cache, OpProgress * const Pr
 	 if (I->SelectedState == pkgCache::State::Hold)
 	    continue;
 
-      if (phasedUpgrader.ShouldKeep(Cache, I))
+      if (Cache.PhasingApplied(I))
 	 continue;
 
       if (I->CurrentVer != 0 && Cache[I].InstallVer != 0)
@@ -258,7 +191,7 @@ static bool pkgAllUpgradeNoNewPackages(pkgDepCache &Cache, OpProgress * const Pr
    if (Progress != NULL)
       Progress->Progress(50);
 
-   phasedUpgrader.HoldBackIgnoredPhasedUpdates(Cache, &Fix);
+   Fix.KeepPhasedUpdates();
 
    // resolve remaining issues via keep
    bool const success = Fix.ResolveByKeepInternal();
@@ -286,7 +219,6 @@ static bool pkgAllUpgradeWithNewPackages(pkgDepCache &Cache, OpProgress * const
 
    pkgDepCache::ActionGroup group(Cache);
    pkgProblemResolver Fix(&Cache);
-   PhasedUpgrader phasedUpgrader;
 
    // provide the initial set of stuff we want to upgrade by marking
    // all upgradable packages for upgrade
@@ -297,7 +229,7 @@ static bool pkgAllUpgradeWithNewPackages(pkgDepCache &Cache, OpProgress * const
          if (_config->FindB("APT::Ignore-Hold",false) == false)
             if (I->SelectedState == pkgCache::State::Hold)
                continue;
-	 if (phasedUpgrader.ShouldKeep(Cache, I))
+	 if (Cache.PhasingApplied(I))
 	    continue;
 
 	 Cache.MarkInstall(I, false, 0, false);
@@ -323,7 +255,7 @@ static bool pkgAllUpgradeWithNewPackages(pkgDepCache &Cache, OpProgress * const
    if (Progress != NULL)
       Progress->Progress(60);
 
-   phasedUpgrader.HoldBackIgnoredPhasedUpdates(Cache, &Fix);
+   Fix.KeepPhasedUpdates();
 
    // resolve remaining issues via keep
    bool const success = Fix.ResolveByKeepInternal();
diff --git a/apt-pkg/upgrade.h b/apt-pkg/upgrade.h
index 8e89601..00914a1 100644
--- a/apt-pkg/upgrade.h
+++ b/apt-pkg/upgrade.h
@@ -11,7 +11,7 @@
 #define PKGLIB_UPGRADE_H
 
 #include <apt-pkg/macros.h>
-#include <stddef.h>
+#include <cstddef>
 
 class pkgDepCache;
 class OpProgress;
diff --git a/apt-pkg/version.cc b/apt-pkg/version.cc
index e0b83e0..df01507 100644
--- a/apt-pkg/version.cc
+++ b/apt-pkg/version.cc
@@ -11,8 +11,8 @@
 
 #include <apt-pkg/version.h>
 
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 									/*}}}*/
     
 static pkgVersioningSystem *VSList[10];
diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc
index 83a969c..3af51e4 100644
--- a/apt-pkg/versionmatch.cc
+++ b/apt-pkg/versionmatch.cc
@@ -17,14 +17,14 @@
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/versionmatch.h>
 
+#include <cctype>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <string>
-#include <ctype.h>
 #include <fnmatch.h>
 #include <regex.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 									/*}}}*/
 
 using std::string;
@@ -42,7 +42,7 @@ pkgVersionMatch::pkgVersionMatch(string Data,MatchType Type) : Type(Type)
       return;
    
    // Cut up the version representation
-   if (Type == Version)
+   if (Type == Version || Type == SourceVersion)
    {
       if (Data.end()[-1] == '*')
       {
@@ -177,6 +177,14 @@ pkgCache::VerIterator pkgVersionMatch::Find(pkgCache::PkgIterator Pkg)
 /* */
 bool pkgVersionMatch::VersionMatches(pkgCache::VerIterator Ver)
 {
+   if (Type == SourceVersion)
+   {
+      if (MatchVer(Ver.SourceVerStr(),VerStr,VerPrefixMatch) == true)
+	 return true;
+      if (ExpressionMatches(VerStr, Ver.SourceVerStr()) == true)
+	 return true;
+      return false;
+   }
    if (Type == Version)
    {
       if (MatchVer(Ver.VerStr(),VerStr,VerPrefixMatch) == true)
diff --git a/apt-pkg/versionmatch.h b/apt-pkg/versionmatch.h
index faf1fd4..283df61 100644
--- a/apt-pkg/versionmatch.h
+++ b/apt-pkg/versionmatch.h
@@ -13,7 +13,7 @@
      Release: a=testing
      Release: n=squeeze
      Release: *
-     Origin: ftp.debian.org
+     Origin: deb.debian.org
 
    Release may be a complex type that can specify matches for any of:
       Version (v= with prefix)
@@ -62,7 +62,7 @@ class APT_PUBLIC pkgVersionMatch
 
    public:
 
-   enum MatchType {None = 0,Version,Release,Origin} Type;
+   enum MatchType {None = 0,Version,Release,Origin, SourceVersion} Type;
 
    bool MatchVer(const char *A,std::string B,bool Prefix) APT_PURE;
    static bool ExpressionMatches(const char *pattern, const char *string);
diff --git a/apt-pkg/versionscript.in b/apt-pkg/versionscript.in
new file mode 100644
index 0000000..c133534
--- /dev/null
+++ b/apt-pkg/versionscript.in
@@ -0,0 +1,22 @@
+APTPKG_@MAJOR@
+{
+global:
+    *;
+local:
+    extern "C++" {
+        std::*;
+        typeinfo?for?std::*;
+        vtable?for?std::*;
+        typeinfo?name?for?std::*;
+        guard?variable?for?std::*;
+        void?std::*;
+        bool?std::*;
+        *std::__do_uninit_copy*;
+        typeinfo?for?__gnu_cxx::*;
+        vtable?for?__gnu_cxx::*;
+        typeinfo?name?for?__gnu_cxx::*;
+        guard?variable?for?__gnu_cxx::*;
+        __gnu_cxx::*;
+        int?__gnu_cxx::*;
+    };
+};
diff --git a/apt-private/acqprogress.cc b/apt-private/acqprogress.cc
index fa7edfc..b8b540e 100644
--- a/apt-private/acqprogress.cc
+++ b/apt-private/acqprogress.cc
@@ -9,6 +9,7 @@
 // Include files							/*{{{*/
 #include <config.h>
 
+#include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/acquire-item.h>
 #include <apt-pkg/acquire-worker.h>
 #include <apt-pkg/acquire.h>
@@ -19,11 +20,11 @@
 #include <apt-private/acqprogress.h>
 #include <apt-private/private-output.h>
 
+#include <csignal>
+#include <cstdio>
+#include <cstring>
 #include <iostream>
 #include <sstream>
-#include <signal.h>
-#include <stdio.h>
-#include <string.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -122,39 +123,63 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm)
    AssignItemID(Itm);
    clearLastLine();
 
-   bool ShowErrorText = true;
+   bool ShowErrorText = false;
    if (Itm.Owner->Status == pkgAcquire::Item::StatDone || Itm.Owner->Status == pkgAcquire::Item::StatIdle)
    {
       // TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
       // which failed to download, but the error is ignored (compare "Err:")
       ioprintf(out, _("Ign:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
-      if (Itm.Owner->ErrorText.empty() ||
-	    _config->FindB("Acquire::Progress::Ignore::ShowErrorText", false) == false)
-	 ShowErrorText = false;
+      if (not Itm.Owner->ErrorText.empty())
+      {
+	 if (_config->FindB("Acquire::Progress::Ignore::ShowErrorText", false))
+	    ShowErrorText = true;
+	 else
+	 {
+	    if (auto const ignored = IgnoredErrorTexts.find(Itm.Owner->ID); ignored != IgnoredErrorTexts.end())
+	    {
+	       if (std::find(ignored->second.begin(), ignored->second.end(), Itm.Owner->ErrorText) == ignored->second.end())
+		  ignored->second.emplace_back(Itm.Owner->ErrorText);
+	    }
+	    else
+	       IgnoredErrorTexts.emplace(Itm.Owner->ID, std::vector<std::string>{Itm.Owner->ErrorText});
+	 }
+      }
    }
    else
    {
       // TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
       // which failed to download and the error is critical (compare "Ign:")
       ioprintf(out, _("Err:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
+      ShowErrorText = true;
    }
 
-   if (ShowErrorText)
+   if (ShowErrorText && not Itm.Owner->ErrorText.empty())
    {
-      std::string::size_type line_start = 0;
-      std::string::size_type line_end;
-      while ((line_end = Itm.Owner->ErrorText.find_first_of("\n\r", line_start)) != std::string::npos) {
-	 out << std::endl << "  " << Itm.Owner->ErrorText.substr(line_start, line_end - line_start);
-	 line_start = Itm.Owner->ErrorText.find_first_not_of("\n\r", line_end + 1);
-	 if (line_start == std::string::npos)
-	    break;
+      auto const printErrorText = [](std::ostream &out, std::string_view errortext) {
+	 while (not errortext.empty())
+	 {
+	    auto const line_end = errortext.find_first_of("\n\r");
+	    out << "\n  " << errortext.substr(0, line_end);
+	    if (line_end == std::string_view::npos)
+	       break;
+	    errortext.remove_prefix(line_end);
+	    auto const line_start = errortext.find_first_not_of("\n\r");
+	    if (line_start == std::string_view::npos)
+	       break;
+	    errortext.remove_prefix(line_start);
+	 }
+      };
+      if (auto const ignored = IgnoredErrorTexts.find(Itm.Owner->ID); ignored != IgnoredErrorTexts.end())
+      {
+	 for (auto const &text : ignored->second)
+	    printErrorText(out, text);
+	 if (std::find(ignored->second.begin(), ignored->second.end(), Itm.Owner->ErrorText) == ignored->second.end())
+	    printErrorText(out, Itm.Owner->ErrorText);
       }
-      if (line_start == 0)
-	 out << std::endl << "  " << Itm.Owner->ErrorText;
-      else if (line_start != std::string::npos)
-	 out << std::endl << "  " << Itm.Owner->ErrorText.substr(line_start);
+      else
+	 printErrorText(out, Itm.Owner->ErrorText);
    }
-   out << std::endl;
+   out << '\n' << std::flush;
 
    Update = true;
 }
@@ -281,14 +306,14 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner)
 
    // Draw the current status
    if (_config->FindB("Apt::Color", false) == true)
-      out << _config->Find("APT::Color::Yellow");
+      out << APT::Configuration::color("Yellow");
    if (LastLineLength > Line.length())
       clearLastLine();
    else
       out << '\r';
    out << Line << std::flush;
    if (_config->FindB("Apt::Color", false) == true)
-      out << _config->Find("APT::Color::Neutral") << std::flush;
+      out << APT::Configuration::color("Neutral") << std::flush;
 
    LastLineLength = Line.length();
    Update = false;
diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h
index 87b957e..a26047f 100644
--- a/apt-private/acqprogress.h
+++ b/apt-private/acqprogress.h
@@ -14,6 +14,8 @@
 
 #include <iostream>
 #include <string>
+#include <unordered_map>
+#include <vector>
 
 class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus
 {
@@ -22,22 +24,22 @@ class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus
    size_t LastLineLength;
    unsigned long ID;
    unsigned long Quiet;
+   std::unordered_map<unsigned long, std::vector<std::string>> IgnoredErrorTexts;
 
    APT_HIDDEN void clearLastLine();
    APT_HIDDEN void AssignItemID(pkgAcquire::ItemDesc &Itm);
 
    public:
-
-   virtual bool ReleaseInfoChanges(metaIndex const * const LastRelease, metaIndex const * const CurrentRelease, std::vector<ReleaseInfoChange> &&Changes) APT_OVERRIDE;
-   virtual bool MediaChange(std::string Media,std::string Drive) APT_OVERRIDE;
-   virtual void IMSHit(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
-   virtual void Fetch(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
-   virtual void Done(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
-   virtual void Fail(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
-   virtual void Start() APT_OVERRIDE;
-   virtual void Stop() APT_OVERRIDE;
-
-   bool Pulse(pkgAcquire *Owner) APT_OVERRIDE;
+   bool ReleaseInfoChanges(metaIndex const *LastRelease, metaIndex const *CurrentRelease, std::vector<ReleaseInfoChange> &&Changes) override;
+   bool MediaChange(std::string Media, std::string Drive) override;
+   void IMSHit(pkgAcquire::ItemDesc &Itm) override;
+   void Fetch(pkgAcquire::ItemDesc &Itm) override;
+   void Done(pkgAcquire::ItemDesc &Itm) override;
+   void Fail(pkgAcquire::ItemDesc &Itm) override;
+   void Start() override;
+   void Stop() override;
+
+   bool Pulse(pkgAcquire *Owner) override;
 
    AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet);
 };
diff --git a/apt-private/private-cachefile.cc b/apt-private/private-cachefile.cc
index 9d875b4..96e45be 100644
--- a/apt-private/private-cachefile.cc
+++ b/apt-private/private-cachefile.cc
@@ -13,8 +13,8 @@
 #include <apt-private/private-output.h>
 
 #include <cstdlib>
+#include <cstring>
 #include <ostream>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -46,7 +46,7 @@ void SortedPackageUniverse::LazyInit() const
    List.reserve(Owner->Head().GroupCount);
    for (pkgCache::GrpIterator I{Owner->GrpBegin()}; I.end() != true; ++I)
       GrpList.emplace_back(I - Owner->GrpP);
-   std::stable_sort(GrpList.begin(), GrpList.end(), std::bind( &SortPackagesByName, Owner, std::placeholders::_1, std::placeholders::_2 ));
+   std::stable_sort(GrpList.begin(), GrpList.end(), [&](auto && l, auto && r) { return SortPackagesByName(Owner, l, r); });
    List.reserve(Owner->Head().PackageCount);
    for (auto G : GrpList)
    {
diff --git a/apt-private/private-cacheset.cc b/apt-private/private-cacheset.cc
index 1b2834e..bd8f629 100644
--- a/apt-private/private-cacheset.cc
+++ b/apt-private/private-cacheset.cc
@@ -13,7 +13,7 @@
 
 #include <apt-private/private-cacheset.h>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <apti18n.h>
 
diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h
index e8dba5a..8878780 100644
--- a/apt-private/private-cacheset.h
+++ b/apt-private/private-cacheset.h
@@ -68,6 +68,7 @@ class Matcher {
 public:
     virtual bool operator () (const pkgCache::PkgIterator &/*P*/) {
         return true;}
+    virtual ~Matcher() = default;
 };
 
 // FIXME: add default argument for OpProgress (or overloaded function)
@@ -85,9 +86,9 @@ class CacheSetHelperVirtuals: public APT::CacheSetHelper {
 public:
    APT::PackageSet virtualPkgs;
 
-   virtual pkgCache::VerIterator canNotGetVersion(enum CacheSetHelper::VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   virtual void canNotFindVersion(enum CacheSetHelper::VerSelector const select, APT::VersionContainerInterface * vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) APT_OVERRIDE;
+   pkgCache::VerIterator canNotGetVersion(enum CacheSetHelper::VerSelector select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override;
+   void canNotFindVersion(enum CacheSetHelper::VerSelector select, APT::VersionContainerInterface *vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override;
+   pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) override;
 
    CacheSetHelperVirtuals(bool const ShowErrors = true, GlobalError::MsgType const &ErrorType = GlobalError::NOTICE);
 };
@@ -107,20 +108,20 @@ public:
 
 	explicit CacheSetHelperAPTGet(std::ostream &out);
 
-	virtual void showPackageSelection(pkgCache::PkgIterator const &Pkg, enum PkgSelector const select, std::string const &pattern) APT_OVERRIDE;
+	void showPackageSelection(pkgCache::PkgIterator const &Pkg, enum PkgSelector select, std::string const &pattern) override;
 	void showTaskSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern);
 	void showFnmatchSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern);
 	void showRegExSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern);
-	void showVersionSelection(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver, enum VerSelector const select, std::string const &pattern) APT_OVERRIDE;
+	void showVersionSelection(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver, enum VerSelector select, std::string const &pattern) override;
 	bool showVirtualPackageErrors(pkgCacheFile &Cache);
 
-	pkgCache::VerIterator canNotGetVersion(enum VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-	void canNotFindVersion(enum VerSelector const select, APT::VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+	pkgCache::VerIterator canNotGetVersion(enum VerSelector select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override;
+	void canNotFindVersion(enum VerSelector select, APT::VersionContainerInterface *vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override;
 	pkgCache::VerIterator canNotFindCandidateVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
 	pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
 	pkgCache::VerIterator canNotFindVersionNumber(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg, std::string const &verstr);
 	pkgCache::VerIterator canNotFindVersionRelease(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg, std::string const &verstr);
-	virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) APT_OVERRIDE;
+	pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) override;
 
 	APT::VersionSet tryVirtualPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg,
 						CacheSetHelper::VerSelector const select);
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
index f607c4c..67a34a2 100644
--- a/apt-private/private-cmndline.cc
+++ b/apt-private/private-cmndline.cc
@@ -12,9 +12,9 @@
 #include <apt-private/private-cmndline.h>
 #include <apt-private/private-main.h>
 
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdarg>
+#include <cstdlib>
+#include <cstring>
 #include <unistd.h>
 
 #include <algorithm>
@@ -88,6 +88,7 @@ static bool addArgumentsAPTCache(std::vector<CommandLine::Args> &Args, char cons
    addArg('g', "generate", "APT::Cache::Generate", 0);
    addArg('t', "target-release", "APT::Default-Release", CommandLine::HasArg);
    addArg('t', "default-release", "APT::Default-Release", CommandLine::HasArg);
+   addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg);
 
    addArg('p', "pkg-cache", "Dir::Cache::pkgcache", CommandLine::HasArg);
    addArg('s', "src-cache", "Dir::Cache::srcpkgcache", CommandLine::HasArg);
@@ -183,19 +184,24 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const
       addArg(0, "show-progress", "DpkgPM::Progress", 0);
       addArg('f', "fix-broken", "APT::Get::Fix-Broken", 0);
       addArg(0, "purge", "APT::Get::Purge", 0);
-      addArg('V',"verbose-versions","APT::Get::Show-Versions",0);
+      addArg('V',"verbose-versions", "APT::Get::Show-Versions",0);
+      addArg(0, "list-columns", "APT::Get::List-Columns", 0);
       addArg(0, "autoremove", "APT::Get::AutomaticRemove", 0);
       addArg(0, "auto-remove", "APT::Get::AutomaticRemove", 0);
       addArg(0, "reinstall", "APT::Get::ReInstall", 0);
       addArg(0, "solver", "APT::Solver", CommandLine::HasArg);
+      addArg(0, "strict-pinning", "APT::Solver::Strict-Pinning", 0);
       addArg(0, "planner", "APT::Planner", CommandLine::HasArg);
+      addArg(0, "comment", "APT::History::Comment", CommandLine::HasArg);
+      addArg('U', "update", "APT::Update", 0);
       if (CmdMatches("upgrade"))
       {
          addArg(0, "new-pkgs", "APT::Get::Upgrade-Allow-New", 
                 CommandLine::Boolean);
       }
    }
-   else if (CmdMatches("update"))
+
+   else if (CmdMatches("update") || CmdMatches("install"))
    {
       addArg(0, "list-cleanup", "APT::Get::List-Cleanup", 0);
       addArg(0, "allow-insecure-repositories", "Acquire::AllowInsecureRepositories", 0);
@@ -211,6 +217,7 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const
    }
    else if (CmdMatches("source"))
    {
+      addArg('a', "host-architecture", "APT::Get::Host-Architecture", CommandLine::HasArg);
       addArg('b', "compile", "APT::Get::Compile", 0);
       addArg('b', "build", "APT::Get::Compile", 0);
       addArg('P', "build-profiles", "APT::Build-Profiles", CommandLine::HasArg);
@@ -225,6 +232,7 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const
       addArg('P', "build-profiles", "APT::Build-Profiles", CommandLine::HasArg);
       addArg(0, "purge", "APT::Get::Purge", 0);
       addArg(0, "solver", "APT::Solver", CommandLine::HasArg);
+      addArg(0, "strict-pinning", "APT::Solver::Strict-Pinning", 0);
       if (CmdMatches("build-dep"))
       {
          addArg(0,"arch-only","APT::Get::Arch-Only",0);
@@ -239,14 +247,13 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const
       addArg(0,"format","APT::Get::IndexTargets::Format", CommandLine::HasArg);
       addArg(0,"release-info","APT::Get::IndexTargets::ReleaseInfo", 0);
    }
-   else if (CmdMatches("clean", "autoclean", "auto-clean", "check", "download", "changelog") ||
+   else if (CmdMatches("clean", "autoclean", "auto-clean", "distclean", "dist-clean", "check", "download", "changelog") ||
 	    CmdMatches("markauto", "unmarkauto")) // deprecated commands
-      ;
-   else if (CmdMatches("moo"))
-      addArg(0, "color", "APT::Moo::Color", 0);
-
+   {
+   }
    if (CmdMatches("install", "reinstall", "remove", "purge", "upgrade", "dist-upgrade",
-	    "dselect-upgrade", "autoremove", "auto-remove", "autopurge", "clean", "autoclean", "auto-clean", "check",
+	    "dselect-upgrade", "autoremove", "auto-remove", "autopurge", "check",
+	    "clean", "autoclean", "auto-clean", "distclean", "dist-clean",
 	    "build-dep", "satisfy", "full-upgrade", "source"))
    {
       addArg('s', "simulate", "APT::Get::Simulate", 0);
@@ -267,6 +274,7 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const
    addArg('m',"ignore-missing","APT::Get::Fix-Missing",0);
    addArg('t',"target-release","APT::Default-Release",CommandLine::HasArg);
    addArg('t',"default-release","APT::Default-Release",CommandLine::HasArg);
+   addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg);
    addArg(0,"download","APT::Get::Download",0);
    addArg(0,"fix-missing","APT::Get::Fix-Missing",0);
    addArg(0,"ignore-hold","APT::Ignore-Hold",0);
@@ -346,11 +354,15 @@ static bool addArgumentsAPT(std::vector<CommandLine::Args> &Args, char const * c
       addArg(0,"manual-installed","APT::Cmd::Manual-Installed",0);
       addArg('v', "verbose", "APT::Cmd::List-Include-Summary", 0);
       addArg('a', "all-versions", "APT::Cmd::All-Versions", 0);
+      addArg('t', "target-release", "APT::Default-Release", CommandLine::HasArg);
+      addArg('t', "default-release", "APT::Default-Release", CommandLine::HasArg);
+      addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg);
    }
    else if (CmdMatches("show") || CmdMatches("info"))
    {
       addArg('a', "all-versions", "APT::Cache::AllVersions", 0);
       addArg('f', "full", "APT::Cache::ShowFull", 0);
+      addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg);
    }
    else if (addArgumentsAPTGet(Args, Cmd) || addArgumentsAPTCache(Args, Cmd))
    {
@@ -402,7 +414,9 @@ std::vector<CommandLine::Args> getCommandArgs(APT_CMD const Program, char const
    addArg('h', "help", "help", 0);
    addArg('v', "version", "version", 0);
    // general options
+   addArg(0, "color", "APT::Color", 0);
    addArg('q', "quiet", "quiet", CommandLine::IntLevel);
+   addArg(0, "audit", "APT::Audit", 0);
    addArg('q', "silent", "quiet", CommandLine::IntLevel);
    addArg('c', "config-file", 0, CommandLine::ConfigFile);
    addArg('o', "option", 0, CommandLine::ArbItem);
@@ -473,11 +487,16 @@ static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector<
 									/*}}}*/
 static void BinarySpecificConfiguration(char const * const Binary)	/*{{{*/
 {
-   std::string const binary = flNotDir(Binary);
+   auto const binary = flNotDir(Binary);
+   if (binary == "apt-cdrom" || binary == "apt-config")
+   {
+      _config->CndSet("Binary::apt-cdrom::APT::Internal::OpProgress::EraseLines", false);
+   }
    if (binary == "apt" || binary == "apt-config")
    {
-      if (getenv("NO_COLOR") == nullptr)
-         _config->CndSet("Binary::apt::APT::Color", true);
+      if (getenv("NO_COLOR") == nullptr && getenv("APT_NO_COLOR") == nullptr)
+	 _config->CndSet("Binary::apt::APT::Color", true);
+      _config->CndSet("Binary::apt::APT::Output-Version", 30);
       _config->CndSet("Binary::apt::APT::Cache::Show::Version", 2);
       _config->CndSet("Binary::apt::APT::Cache::AllVersions", false);
       _config->CndSet("Binary::apt::APT::Cache::ShowVirtuals", true);
@@ -490,6 +509,7 @@ static void BinarySpecificConfiguration(char const * const Binary)	/*{{{*/
       _config->CndSet("Binary::apt::APT::Keep-Downloaded-Packages", false);
       _config->CndSet("Binary::apt::APT::Get::Update::InteractiveReleaseInfoChanges", true);
       _config->CndSet("Binary::apt::APT::Cmd::Pattern-Only", true);
+      _config->CndSet("Binary::apt::Pager", true);
 
       if (isatty(STDIN_FILENO))
          _config->CndSet("Binary::apt::Dpkg::Lock::Timeout", -1);
@@ -502,7 +522,7 @@ static void BinarySpecificConfiguration(char const * const Binary)	/*{{{*/
 									/*}}}*/
 static void BinaryCommandSpecificConfiguration(char const * const Binary, char const * const Cmd)/*{{{*/
 {
-   std::string const binary = flNotDir(Binary);
+   auto const binary = flNotDir(Binary);
    if ((binary == "apt" || binary == "apt-get") && CmdMatches("upgrade", "dist-upgrade", "full-upgrade"))
    {
       //FIXME: the option is documented to apply only for install/remove, so
@@ -568,6 +588,12 @@ std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD c
       _error->Warning(_("--force-yes is deprecated, use one of the options starting with --allow instead."));
    }
 
+   if (not _config->FindB("APT::Solver::Strict-Pinning", true) && _config->Find("APT::Solver", "internal") == "internal")
+   {
+      _config->Set("APT::Solver", "3.0");
+      _error->Notice("Automatically enabled --solver 3.0 for --no-strict-pinning");
+   }
+
    // See if the help should be shown
    if (_config->FindB("help") == true || _config->FindB("version") == true ||
 	 (CmdL.FileSize() > 0 && strcmp(CmdL.FileList[0], "help") == 0))
@@ -590,10 +616,12 @@ unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector<CommandLine::D
 
    // Print any errors or warnings found during parsing
    bool const Errors = _error->PendingError();
-   if (_config->FindI("quiet",0) > 0)
+   if (_config->FindB("APT::Audit"))
+      _error->DumpErrors(GlobalError::AUDIT);
+   else if (_config->FindI("quiet",0) > 0)
       _error->DumpErrors();
    else
-      _error->DumpErrors(GlobalError::DEBUG);
+      _error->DumpErrors(GlobalError::NOTICE);
    if (returned == false)
       return 100;
    return Errors == true ? 100 : 0;
diff --git a/apt-private/private-depends.cc b/apt-private/private-depends.cc
index 95c747e..2664cc9 100644
--- a/apt-private/private-depends.cc
+++ b/apt-private/private-depends.cc
@@ -16,7 +16,7 @@
 #include <string>
 #include <vector>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <apti18n.h>
 									/*}}}*/
diff --git a/apt-private/private-download.cc b/apt-private/private-download.cc
index eddb901..e3d4252 100644
--- a/apt-private/private-download.cc
+++ b/apt-private/private-download.cc
@@ -33,7 +33,7 @@
 #endif
 #include <sys/mount.h>
 #endif
-#include <errno.h>
+#include <cerrno>
 #include <sys/stat.h>
 #include <sys/statvfs.h>
 
@@ -197,7 +197,8 @@ bool DoDownload(CommandLine &CmdL)
       pkgAcquire::Item *I = new pkgAcqArchive(&Fetcher, SrcList, &Recs, *Ver, storefile[i]);
       if (storefile[i].empty())
 	 continue;
-      std::string const filename = cwd + flNotDir(storefile[i]);
+      auto filename = cwd;
+      filename += flNotDir(storefile[i]);
       storefile[i].assign(filename);
       I->DestFile.assign(filename);
    }
@@ -303,9 +304,8 @@ bool DoChangelog(CommandLine &CmdL)
    return true;
 }
 									/*}}}*/
-
-// DoClean - Remove download archives					/*{{{*/
-bool DoClean(CommandLine &)
+// DoClean & DoDistClean - Remove download archives and/or lists	/*{{{*/
+static bool CleanDownloadDirectories(bool const ListsToo)
 {
    std::string const archivedir = _config->FindDir("Dir::Cache::archives");
    std::string const listsdir = _config->FindDir("Dir::state::lists");
@@ -314,29 +314,41 @@ bool DoClean(CommandLine &)
    {
       std::string const pkgcache = _config->FindFile("Dir::cache::pkgcache");
       std::string const srcpkgcache = _config->FindFile("Dir::cache::srcpkgcache");
-      std::cout << "Del " << archivedir << "* " << archivedir << "partial/*"<< std::endl
-	   << "Del " << listsdir << "partial/*" << std::endl
-	   << "Del " << pkgcache << " " << srcpkgcache << std::endl;
+      std::cout << "Del " << archivedir << "* " << archivedir << "partial/*" << std::endl
+		<< "Del " << listsdir << "partial/*" << std::endl;
+      if (ListsToo)
+	 std::cout << "Del " << listsdir << "*_{Packages,Sources,Translation-*}" << std::endl;
+      std::cout << "Del " << pkgcache << " " << srcpkgcache << std::endl;
       return true;
    }
 
    pkgAcquire Fetcher;
-   if (archivedir.empty() == false && FileExists(archivedir) == true &&
-	 Fetcher.GetLock(archivedir) == true)
+   if (not archivedir.empty() && FileExists(archivedir) &&
+       Fetcher.GetLock(archivedir))
    {
       Fetcher.Clean(archivedir);
       Fetcher.Clean(archivedir + "partial/");
    }
 
-   if (listsdir.empty() == false && FileExists(listsdir) == true &&
-	 Fetcher.GetLock(listsdir) == true)
+   if (not listsdir.empty() && FileExists(listsdir) &&
+       Fetcher.GetLock(listsdir))
    {
       Fetcher.Clean(listsdir + "partial/");
+      if (ListsToo)
+         Fetcher.CleanLists(listsdir);
    }
 
    pkgCacheFile::RemoveCaches();
 
    return true;
+}
+bool DoClean(CommandLine &)
+{
+   return CleanDownloadDirectories(false);
+}
+bool DoDistClean(CommandLine &)
+{
+   return CleanDownloadDirectories(true);
 }
 									/*}}}*/
 // DoAutoClean - Smartly remove downloaded archives			/*{{{*/
@@ -346,7 +358,7 @@ bool DoClean(CommandLine &)
  class LogCleaner : public pkgArchiveCleaner
 {
    protected:
-      virtual void Erase(int const dirfd, char const * const File, std::string const &Pkg, std::string const &Ver,struct stat const &St) APT_OVERRIDE
+      void Erase(int const dirfd, char const * const File, std::string const &Pkg, std::string const &Ver,struct stat const &St) override
       {
 	 c1out << "Del " << Pkg << " " << Ver << " [" << SizeToStr(St.st_size) << "B]" << std::endl;
 
diff --git a/apt-private/private-download.h b/apt-private/private-download.h
index d829e8b..e13ade1 100644
--- a/apt-private/private-download.h
+++ b/apt-private/private-download.h
@@ -33,6 +33,7 @@ APT_PUBLIC bool DoDownload(CommandLine &CmdL);
 APT_PUBLIC bool DoChangelog(CommandLine &CmdL);
 
 APT_PUBLIC bool DoClean(CommandLine &CmdL);
+APT_PUBLIC bool DoDistClean(CommandLine &CmdL);
 APT_PUBLIC bool DoAutoClean(CommandLine &CmdL);
 
 #endif
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
index 08d58a5..208a277 100644
--- a/apt-private/private-install.cc
+++ b/apt-private/private-install.cc
@@ -20,14 +20,17 @@
 #include <apt-pkg/prettyprinters.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/upgrade.h>
+#include <apt-pkg/version.h>
 
 #include <algorithm>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <map>
 #include <set>
 #include <vector>
-#include <stdlib.h>
-#include <string.h>
+#include <langinfo.h>
+#include <sys/statvfs.h>
 
 #include <apt-private/acqprogress.h>
 #include <apt-private/private-cachefile.h>
@@ -36,6 +39,7 @@
 #include <apt-private/private-install.h>
 #include <apt-private/private-json-hooks.h>
 #include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -110,8 +114,41 @@ static void RemoveDownloadNeedingItemsFromFetcher(pkgAcquire &Fetcher, bool &Tra
       I = Fetcher.ItemsBegin();
    }
 }
+#ifdef REQUIRE_MERGED_USR
+// \brief Issues a warning about usrmerge when destructed so we can call it after install finished or failed or whatever.
+struct WarnUsrMerge {
+   CacheFile &Cache;
+   WarnUsrMerge(CacheFile &Cache) : Cache(Cache) {
+
+   }
+   void warn() {
+      auto usrmergePkg = Cache->FindPkg("usrmerge");
+      if (not APT::Configuration::isChroot() && _config->FindDir("Dir") == std::string("/") &&
+	  not usrmergePkg.end() && not usrmergePkg.VersionList().end() &&
+	  not Cache[usrmergePkg].Install() && not APT::Configuration::checkUsrMerged())
+      {
+	 _error->Warning(_("Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr system."));
+	 for (auto VF = usrmergePkg.VersionList().FileList(); not VF.end(); ++VF)
+	    if (VF.File().Origin() != nullptr && VF.File().Origin() == std::string("Debian"))
+	    {
+	       // TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+	       _error->Notice(_("See %s for more details."), "https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#a-merged-usr-is-now-required");
+	       break;
+	    }
+      }
+   }
+   ~WarnUsrMerge() {
+      warn();
+   }
+};
+#endif
+static void ShowWeakDependencies(CacheFile &Cache);
 bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, bool ShwKept, bool Ask, bool Safety, std::string const &Hook, CommandLine const &CmdL)
 {
+   auto outVer = _config->FindI("APT::Output-Version");
+#ifdef REQUIRE_MERGED_USR
+   WarnUsrMerge warnUsrMerge(Cache);
+#endif
    if (not RunScripts("APT::Install::Pre-Invoke"))
       return false;
    if (_config->FindB("APT::Get::Purge", false) == true)
@@ -179,15 +216,38 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo
    }
 
    // Show all the various warning indicators
-   ShowDel(c1out,Cache);
+   if (_config->FindI("APT::Output-Version") < 30)
+      ShowDel(c1out,Cache);
+   if (_config->FindI("APT::Output-Version") >= 30 && _config->FindB("APT::Get::Show-Upgraded",true) == true)
+      ShowUpgraded(c1out,Cache);
    ShowNew(c1out,Cache);
+   if (_config->FindI("APT::Output-Version") >= 30)
+      ShowWeakDependencies(Cache);
    if (ShwKept == true)
-      ShowKept(c1out,Cache, HeldBackPackages);
+   {
+      APT::PackageVector PhasingPackages;
+      APT::PackageVector NotPhasingHeldBackPackages;
+      for (auto const &Pkg : HeldBackPackages)
+      {
+	 if (Cache->PhasingApplied(Pkg))
+	    PhasingPackages.push_back(Pkg);
+	 else
+	    NotPhasingHeldBackPackages.push_back(Pkg);
+      }
+
+      ShowPhasing(c1out, Cache, PhasingPackages);
+      ShowKept(c1out, Cache, NotPhasingHeldBackPackages);
+      if (not PhasingPackages.empty() && not NotPhasingHeldBackPackages.empty())
+	 _error->Notice("Some packages may have been kept back due to phasing.");
+   }
    bool const Hold = not ShowHold(c1out,Cache);
-   if (_config->FindB("APT::Get::Show-Upgraded",true) == true)
+   if (_config->FindI("APT::Output-Version") < 30 && _config->FindB("APT::Get::Show-Upgraded",true) == true)
       ShowUpgraded(c1out,Cache);
    bool const Downgrade = !ShowDowngraded(c1out,Cache);
 
+   // Show removed packages last
+   if (_config->FindI("APT::Output-Version") >= 30)
+      ShowDel(c1out,Cache);
    bool Essential = false;
    if (_config->FindB("APT::Get::Download-Only",false) == false)
         Essential = !ShowEssential(c1out,Cache);
@@ -214,6 +274,10 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo
    if (Cache->DelCount() != 0 && _config->FindB("APT::Get::Remove",true) == false)
       return _error->Error(_("Packages need to be removed but remove is disabled."));
 
+#ifdef REQUIRE_MERGED_USR
+   warnUsrMerge.warn();
+#endif
+
    // Fail safe check
    bool const Fail = (Essential || Downgrade || Hold);
    if (_config->FindI("quiet",0) >= 2 ||
@@ -261,27 +325,88 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo
       if (DebBytes != FetchBytes)
 	 //TRANSLATOR: The required space between number and unit is already included
 	 // in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
-	 ioprintf(c1out,_("Need to get %sB/%sB of archives.\n"),
+	 ioprintf(c1out,outVer < 30 ? _("Need to get %sB/%sB of archives.\n") : _("  Download size: %sB / %sB\n"),
 	       SizeToStr(FetchBytes).c_str(),SizeToStr(DebBytes).c_str());
       else if (DebBytes != 0)
 	 //TRANSLATOR: The required space between number and unit is already included
 	 // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-	 ioprintf(c1out,_("Need to get %sB of archives.\n"),
+	 ioprintf(c1out,outVer < 30 ? _("Need to get %sB of archives.\n") : _("  Download size: %sB\n"),
 	       SizeToStr(DebBytes).c_str());
    }
 
    // Size delta
    if (Cache->UsrSize() >= 0)
+   {
       //TRANSLATOR: The required space between number and unit is already included
       // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-      ioprintf(c1out,_("After this operation, %sB of additional disk space will be used.\n"),
-	       SizeToStr(Cache->UsrSize()).c_str());
+      if (outVer < 30)
+	 ioprintf(c1out, _("After this operation, %sB of additional disk space will be used.\n"),
+		  SizeToStr(Cache->UsrSize()).c_str());
+      else
+      {
+	 struct statvfs st;
+	 if (statvfs(_config->FindDir("Dir::Usr").c_str(), &st) == 0)
+	 {
+	    struct statvfs st_boot;
+	    unsigned long long BootSize = 0;
+	    unsigned long long InitrdSize = 0;
+	    if (statvfs(_config->FindDir("Dir::Boot").c_str(), &st_boot) == 0 && st_boot.f_fsid != st.f_fsid)
+	       BootSize = Cache->BootSize(false);
+	    else
+	       InitrdSize = Cache->BootSize(true); /* initrd only, adding to /usr space */
+
+	    ioprintf(c1out, "  ");
+	    // TRANSLATOR: The required space between number and unit is already included
+	    //  in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+	    ioprintf(c1out, _("Space needed: %sB / %sB available\n"),
+		     SizeToStr(Cache->UsrSize() + InitrdSize).c_str(), SizeToStr((st.f_bsize * st.f_bavail)).c_str());
+
+	    if (Cache->UsrSize() > 0 && static_cast<unsigned long long>(Cache->UsrSize()) > (st.f_bsize * st.f_bavail))
+	    {
+	       // TRANSLATOR: The required space between number and unit is already included
+	       //  in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+	       _error->Warning(_("More space needed than available: %sB > %sB, installation may fail"),
+			       SizeToStr(Cache->UsrSize()).c_str(),
+			       SizeToStr((st.f_bsize * st.f_bavail)).c_str());
+	    }
+	    if (BootSize != 0)
+	    {
+	       bool Unicode = strcmp(nl_langinfo(CODESET), "UTF-8") == 0;
+	       ioprintf(c1out,   Unicode ? "  └─ " : "   - ");
+	       // TRANSLATOR: The required space between number and unit is already included
+	       //  in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+	       //  The first %s is the location of the boot directory (determined from Dir::Boot),
+	       //  and it tells the space being needed there.
+	       //  (We have two spaces to align with parent "space needed:"for /boot)
+	       ioprintf(c1out, _("in %s:  %sB / %sB available\n"),
+			_config->FindFile("Dir::Boot").c_str(), SizeToStr(BootSize).c_str(), SizeToStr((st_boot.f_bsize * st_boot.f_bavail)).c_str());
+	       if (BootSize > (st_boot.f_bsize * st_boot.f_bavail))
+		  // TRANSLATOR: The required space between number and unit is already included
+		  //  in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+		  //  The first %s is the location of the boot directory (determined from Dir::Boot)
+		  _error->Warning(_("More space needed in %s than available: %sB > %sB, installation may fail"),
+				  _config->FindFile("Dir::Boot").c_str(),
+				  SizeToStr(BootSize).c_str(),
+				  SizeToStr((st_boot.f_bsize * st_boot.f_bavail)).c_str());
+	    }
+	 }
+	 else
+	 {
+	    // TRANSLATOR: The required space between number and unit is already included
+	    //  in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+	    ioprintf(c1out, "  ");
+	    ioprintf(c1out, _("Space needed: %sB\n"), SizeToStr(Cache->UsrSize()).c_str());
+	 }
+      }
+   }
    else
       //TRANSLATOR: The required space between number and unit is already included
       // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-      ioprintf(c1out,_("After this operation, %sB disk space will be freed.\n"),
+      ioprintf(c1out,outVer < 30 ? _("After this operation, %sB disk space will be freed.\n") : _("  Freed space: %sB\n"),
 	       SizeToStr(-1*Cache->UsrSize()).c_str());
 
+   if (outVer >= 30)
+      ioprintf(c1out,"\n");
    if (DownloadAllowed)
       if (CheckFreeSpaceBeforeDownload(_config->FindDir("Dir::Cache::Archives"), (FetchBytes - FetchPBytes)) == false)
 	 return false;
@@ -317,7 +442,9 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo
 	 if (_config->FindI("quiet",0) < 2 &&
 	     _config->FindB("APT::Get::Assume-Yes",false) == false)
 	 {
-	    if (YnPrompt(_("Do you want to continue?")) == false)
+	    // YnPrompt shows all warnings before prompting, so ask stronger and default to N if we have any.
+	    auto Default = outVer < 30 ? true : _error->empty();
+	    if (not YnPrompt(outVer < 30 ? _("Do you want to continue?") : (Default ? _("Continue?") : _("Continue anyway?")), Default))
 	    {
 	       c2out << _("Abort.") << std::endl;
 	       exit(1);
@@ -494,12 +621,14 @@ bool DoAutomaticRemove(CacheFile &Cache)
 	 for (APT::PackageSet::iterator Pkg = tooMuch.begin();
 	      Pkg != tooMuch.end(); ++Pkg)
 	 {
-	    APT::PackageSet too;
-	    too.insert(*Pkg);
-	    for (pkgCache::PrvIterator Prv = Cache[Pkg].CandidateVerIter(Cache).ProvidesList();
-		 Prv.end() == false; ++Prv)
-	       too.insert(Prv.ParentPkg());
-	    for (APT::PackageSet::const_iterator P = too.begin(); P != too.end(); ++P)
+	    auto const PkgCand = Cache[Pkg].CandidateVerIter(Cache);
+	    if (unlikely(PkgCand.end()))
+	       continue;
+	    std::vector<std::pair<pkgCache::PkgIterator, char const *>> too;
+	    too.emplace_back(*Pkg, PkgCand.VerStr());
+	    for (pkgCache::PrvIterator Prv = PkgCand.ProvidesList(); not Prv.end(); ++Prv)
+	       too.emplace_back(Prv.ParentPkg(), Prv.ProvideVersion());
+	    for (auto const &[P, PVerStr] : too)
 	    {
 	       for (pkgCache::DepIterator R = P.RevDependsList();
 		    R.end() == false; ++R)
@@ -524,6 +653,29 @@ bool DoAutomaticRemove(CacheFile &Cache)
 		 }
 		 else // ignore dependency from a non-candidate version
 		    continue;
+		 if (R->Version != 0)
+		 {
+		    if (not Cache->VS().CheckDep(PVerStr, R->CompareOp, R.TargetVer()))
+		       continue;
+		 }
+		 // ignore new providers if we have installed providers
+		 if (Pkg->CurrentVer == 0)
+		 {
+		    std::unique_ptr<pkgCache::Version *[]> VList(R.AllTargets());
+		    bool has_installed_alt_prov = false;
+		    for (pkgCache::Version **V = VList.get(); *V != 0; ++V)
+		    {
+		       pkgCache::VerIterator Ver(Cache, *V);
+		       auto const P = Ver.ParentPkg();
+		       if (not P.end() && P->CurrentVer != 0 && Cache[P].InstallVer == *V)
+		       {
+			  has_installed_alt_prov = true;
+			  break;
+		       }
+		    }
+		    if (has_installed_alt_prov)
+		       continue;
+		 }
 		 if (Debug == true)
 		    std::clog << "Save " << APT::PrettyPkg(Cache, Pkg) << " as another installed package depends on it: " << APT::PrettyPkg(Cache, RP) << std::endl;
 		 Cache->MarkInstall(Pkg, false, 0, false);
@@ -558,6 +710,16 @@ bool DoAutomaticRemove(CacheFile &Cache)
    // if we don't remove them, we should show them!
    if (doAutoRemove == false && autoRemoveCount != 0)
    {
+      std::string note;
+      std::string autocmd = "apt autoremove";
+      if (getenv("SUDO_USER") != nullptr)
+      {
+	 auto const envsudocmd = getenv("SUDO_COMMAND");
+	 auto const envshell = getenv("SHELL");
+	 if (envsudocmd == nullptr || envshell == nullptr || strcmp(envsudocmd, envshell) != 0)
+	    autocmd = "sudo " + autocmd;
+      }
+      strprintf(note, P_("Use '%s' to remove it.", "Use '%s' to remove them.", autoRemoveCount), autocmd.c_str());
       if (smallList == false)
       {
 	 // trigger marking now so that the package list is correct
@@ -567,21 +729,14 @@ bool DoAutomaticRemove(CacheFile &Cache)
 	          "The following packages were automatically installed and are no longer required:",
 	          autoRemoveCount), Universe,
 	       [&Cache](pkgCache::PkgIterator const &Pkg) { return (*Cache)[Pkg].Garbage == true && (*Cache)[Pkg].Delete() == false; },
-	       &PrettyFullName, CandidateVersion(&Cache));
+	       &PrettyFullName, CurrentVersion(&Cache), "", note);
       }
       else
+      {
 	 ioprintf(c1out, P_("%lu package was automatically installed and is no longer required.\n",
 	          "%lu packages were automatically installed and are no longer required.\n", autoRemoveCount), autoRemoveCount);
-      std::string autocmd = "apt autoremove";
-      if (getenv("SUDO_USER") != nullptr)
-      {
-	 auto const envsudocmd = getenv("SUDO_COMMAND");
-	 auto const envshell = getenv("SHELL");
-	 if (envsudocmd == nullptr || envshell == nullptr || strcmp(envsudocmd, envshell) != 0)
-	    autocmd = "sudo " + autocmd;
+	 c1out << note << std::endl;
       }
-      ioprintf(c1out, P_("Use '%s' to remove it.", "Use '%s' to remove them.", autoRemoveCount), autocmd.c_str());
-      c1out << std::endl;
    }
    return true;
 }
@@ -633,6 +788,9 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<PseudoPkg
       fallback = MOD_REMOVE;
    }
 
+   // We need to MarkAndSweep before parsing commandline so that ?garbage pattern works correctly.
+   Cache->MarkAndSweep();
+
    std::list<APT::VersionSet::Modifier> mods;
    mods.push_back(APT::VersionSet::Modifier(MOD_INSTALL, "+",
 		APT::VersionSet::Modifier::POSTFIX, APT::CacheSetHelper::CANDIDATE));
@@ -828,7 +986,7 @@ std::vector<PseudoPkg> GetAllPackagesAsPseudo(pkgSourceList *const SL, CommandLi
 std::vector<PseudoPkg> GetPseudoPackages(pkgSourceList *const SL, CommandLine &CmdL, bool (*Add)(pkgSourceList *const, PseudoPkg &&, std::vector<PseudoPkg> &), std::string const &pseudoArch)/*{{{*/
 {
    std::vector<PseudoPkg> VolatileCmdL;
-   std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const *const I) {
+   (void)std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const *const I) {
       return AddIfVolatile(SL, VolatileCmdL, Add, I, pseudoArch);
    });
    return VolatileCmdL;
@@ -849,9 +1007,106 @@ struct PkgIsExtraInstalled {
 	return std::find(verset->begin(), verset->end(), Cand) == verset->end();
    }
 };
+/* Print out a list of suggested and recommended packages */
+static void ShowWeakDependencies(CacheFile &Cache)
+{
+   std::list<std::string> Recommends, Suggests, SingleRecommends, SingleSuggests;
+   SortedPackageUniverse Universe(Cache);
+   for (auto const &Pkg: Universe)
+   {
+      /* Just look at the ones we want to install */
+      if ((*Cache)[Pkg].NewInstall() == false)
+	continue;
+
+      // get the recommends/suggests for the candidate ver
+      pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
+      for (pkgCache::DepIterator D = CV.DependsList(); D.end() == false; )
+      {
+	 pkgCache::DepIterator Start;
+	 pkgCache::DepIterator End;
+	 D.GlobOr(Start,End); // advances D
+	 if (Start->Type != pkgCache::Dep::Recommends && Start->Type != pkgCache::Dep::Suggests)
+	    continue;
+
+	 {
+	    // Skip if we already saw this
+	    std::string target;
+	    for (pkgCache::DepIterator I = Start; I != D; ++I)
+	    {
+	       if (target.empty() == false)
+		  target.append(" | ");
+	       target.append(I.TargetPkg().FullName(true));
+	    }
+	    std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? SingleRecommends : SingleSuggests;
+	    if (std::find(Type.begin(), Type.end(), target) != Type.end())
+	       continue;
+	    Type.push_back(target);
+	 }
+
+	 std::list<std::string> OrList;
+	 bool foundInstalledInOrGroup = false;
+	 for (pkgCache::DepIterator I = Start; I != D; ++I)
+	 {
+	    {
+	       // satisfying package is installed and not marked for deletion
+	       APT::VersionList installed = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::INSTALLED);
+	       if (std::find_if(installed.begin(), installed.end(),
+			[&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Delete() == false; }) != installed.end())
+	       {
+		  foundInstalledInOrGroup = true;
+		  break;
+	       }
+	    }
+
+	    {
+	       // satisfying package is upgraded to/new install
+	       APT::VersionList upgrades = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::CANDIDATE);
+	       if (std::find_if(upgrades.begin(), upgrades.end(),
+			[&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Upgrade(); }) != upgrades.end())
+	       {
+		  foundInstalledInOrGroup = true;
+		  break;
+	       }
+	    }
+
+	    if (OrList.empty())
+	       OrList.push_back(I.TargetPkg().FullName(true));
+	    else
+	       OrList.push_back("| " + I.TargetPkg().FullName(true));
+	 }
+
+	 if(foundInstalledInOrGroup == false)
+	 {
+	    std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? Recommends : Suggests;
+	    std::move(OrList.begin(), OrList.end(), std::back_inserter(Type));
+	 }
+      }
+   }
+   auto always_true = [](std::string const&) { return true; };
+   auto string_ident = [](std::string const&str) { return str; };
+   auto verbose_show_candidate =
+      [&Cache](std::string str)
+      {
+	 if (APT::String::Startswith(str, "| "))
+	    str.erase(0, 2);
+	 pkgCache::PkgIterator const Pkg = Cache->FindPkg(str);
+	 if (Pkg.end() == true)
+	    return "";
+	 return (*Cache)[Pkg].CandVersion;
+      };
+   ShowList(c1out,_("Suggested packages:"), Suggests,
+	 always_true, string_ident, verbose_show_candidate);
+   ShowList(c1out,_("Recommended packages:"), Recommends,
+	 always_true, string_ident, verbose_show_candidate);
+}
+
 bool DoInstall(CommandLine &CmdL)
 {
    CacheFile Cache;
+
+   if (_config->FindB("APT::Update") && not DoUpdate())
+      return false;
+
    Cache.InhibitActionGroups(true);
    if (Cache.BuildSourceList() == false)
       return false;
@@ -875,101 +1130,14 @@ bool DoInstall(CommandLine &CmdL)
    /* Print out a list of packages that are going to be installed extra
       to what the user asked */
    SortedPackageUniverse Universe(Cache);
-   if (Cache->InstCount() != verset[MOD_INSTALL].size())
+   if (_config->FindI("APT::Output-Version") < 30 && Cache->InstCount() != verset[MOD_INSTALL].size())
       ShowList(c1out, _("The following additional packages will be installed:"), Universe,
 	    PkgIsExtraInstalled(&Cache, &verset[MOD_INSTALL]),
-	    &PrettyFullName, CandidateVersion(&Cache));
+	    &PrettyFullName, CandidateVersion(&Cache), "action::install-dependencies");
 
    /* Print out a list of suggested and recommended packages */
-   {
-      std::list<std::string> Recommends, Suggests, SingleRecommends, SingleSuggests;
-      for (auto const &Pkg: Universe)
-      {
-	 /* Just look at the ones we want to install */
-	 if ((*Cache)[Pkg].Install() == false)
-	   continue;
-
-	 // get the recommends/suggests for the candidate ver
-	 pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
-	 for (pkgCache::DepIterator D = CV.DependsList(); D.end() == false; )
-	 {
-	    pkgCache::DepIterator Start;
-	    pkgCache::DepIterator End;
-	    D.GlobOr(Start,End); // advances D
-	    if (Start->Type != pkgCache::Dep::Recommends && Start->Type != pkgCache::Dep::Suggests)
-	       continue;
-
-	    {
-	       // Skip if we already saw this
-	       std::string target;
-	       for (pkgCache::DepIterator I = Start; I != D; ++I)
-	       {
-		  if (target.empty() == false)
-		     target.append(" | ");
-		  target.append(I.TargetPkg().FullName(true));
-	       }
-	       std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? SingleRecommends : SingleSuggests;
-	       if (std::find(Type.begin(), Type.end(), target) != Type.end())
-		  continue;
-	       Type.push_back(target);
-	    }
-
-	    std::list<std::string> OrList;
-	    bool foundInstalledInOrGroup = false;
-	    for (pkgCache::DepIterator I = Start; I != D; ++I)
-	    {
-	       {
-		  // satisfying package is installed and not marked for deletion
-		  APT::VersionList installed = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::INSTALLED);
-		  if (std::find_if(installed.begin(), installed.end(),
-			   [&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Delete() == false; }) != installed.end())
-		  {
-		     foundInstalledInOrGroup = true;
-		     break;
-		  }
-	       }
-
-	       {
-		  // satisfying package is upgraded to/new install
-		  APT::VersionList upgrades = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::CANDIDATE);
-		  if (std::find_if(upgrades.begin(), upgrades.end(),
-			   [&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Upgrade(); }) != upgrades.end())
-		  {
-		     foundInstalledInOrGroup = true;
-		     break;
-		  }
-	       }
-
-	       if (OrList.empty())
-		  OrList.push_back(I.TargetPkg().FullName(true));
-	       else
-		  OrList.push_back("| " + I.TargetPkg().FullName(true));
-	    }
-
-	    if(foundInstalledInOrGroup == false)
-	    {
-	       std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? Recommends : Suggests;
-	       std::move(OrList.begin(), OrList.end(), std::back_inserter(Type));
-	    }
-	 }
-      }
-      auto always_true = [](std::string const&) { return true; };
-      auto string_ident = [](std::string const&str) { return str; };
-      auto verbose_show_candidate =
-	 [&Cache](std::string str)
-	 {
-	    if (APT::String::Startswith(str, "| "))
-	       str.erase(0, 2);
-	    pkgCache::PkgIterator const Pkg = Cache->FindPkg(str);
-	    if (Pkg.end() == true)
-	       return "";
-	    return (*Cache)[Pkg].CandVersion;
-	 };
-      ShowList(c1out,_("Suggested packages:"), Suggests,
-	    always_true, string_ident, verbose_show_candidate);
-      ShowList(c1out,_("Recommended packages:"), Recommends,
-	    always_true, string_ident, verbose_show_candidate);
-   }
+   if (_config->FindI("APT::Output-Version") < 30)
+      ShowWeakDependencies(Cache);
 
    RunJsonHook("AptCli::Hooks::Install", "org.debian.apt.hooks.install.pre-prompt", CmdL.FileList, Cache);
 
diff --git a/apt-private/private-json-hooks.cc b/apt-private/private-json-hooks.cc
index ddf1c89..6169488 100644
--- a/apt-private/private-json-hooks.cc
+++ b/apt-private/private-json-hooks.cc
@@ -20,7 +20,7 @@
 #include <stack>
 #include <unordered_map>
 
-#include <signal.h>
+#include <csignal>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -350,11 +350,43 @@ static void NotifyHook(std::ostream &os, std::string const &method, const char *
    jsonWriter.endObject(); // main
 }
 
+static JsonWriter &BuildOptionsArray(JsonWriter &writer)
+{
+   const Configuration::Item *Top = _config->Tree(nullptr);
+   if (Top == 0)
+      return writer.beginArray().endArray();
+
+   writer.beginArray();
+   do
+   {
+      if (not Top->Value.empty())
+	 writer.beginObject().name("name").value(Top->FullTag()).name("value").value(Top->Value).endObject();
+      if (Top->Child != 0)
+      {
+	 Top = Top->Child;
+	 continue;
+      }
+
+      while (Top != 0 && Top->Next == 0)
+	 Top = Top->Parent;
+      if (Top != 0)
+	 Top = Top->Next;
+
+   } while (Top != 0);
+
+   writer.endArray();
+
+   return writer;
+}
+
 /// @brief Build the hello handshake message for 0.1 protocol
 static std::string BuildHelloMessage()
 {
    std::stringstream Hello;
-   JsonWriter(Hello).beginObject().name("jsonrpc").value("2.0").name("method").value("org.debian.apt.hooks.hello").name("id").value(0).name("params").beginObject().name("versions").beginArray().value("0.1").value("0.2").endArray().endObject().endObject();
+   auto writer = JsonWriter(Hello).beginObject().name("jsonrpc").value("2.0").name("method").value("org.debian.apt.hooks.hello").name("id").value(0).name("params").beginObject().name("versions").beginArray().value("0.1").value("0.2").endArray().name("options");
+
+   BuildOptionsArray(writer);
+   writer.endObject().endObject();
 
    return Hello.str();
 }
diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc
index eee657c..c5589af 100644
--- a/apt-private/private-list.cc
+++ b/apt-private/private-list.cc
@@ -63,12 +63,12 @@ class PackageNameMatcher : public Matcher
          filters.push_back(cachefilter);
       }
    }
-   virtual ~PackageNameMatcher()
+   ~PackageNameMatcher() override
    {
       for(J=filters.begin(); J != filters.end(); ++J)
          delete *J;
    }
-   virtual bool operator () (const pkgCache::PkgIterator &P) APT_OVERRIDE
+   bool operator()(const pkgCache::PkgIterator &P) override
    {
       for(J=filters.begin(); J != filters.end(); ++J)
       {
@@ -131,6 +131,10 @@ bool DoList(CommandLine &Cmd)
    GetLocalitySortedVersionSet(CacheFile, &bag, matcher, &progress);
    bool const ShowAllVersions = _config->FindB("APT::Cmd::All-Versions", false);
    std::map<std::string, std::string> output_map;
+
+   if (not InitOutputPager())
+      return false;
+
    for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); ++V)
    {
       std::stringstream outs;
diff --git a/apt-private/private-main.cc b/apt-private/private-main.cc
index d4ce0ab..7b4f05a 100644
--- a/apt-private/private-main.cc
+++ b/apt-private/private-main.cc
@@ -6,12 +6,13 @@
 #include <apt-pkg/strutl.h>
 
 #include <apt-private/private-main.h>
+#include <apt-private/private-output.h>
 
 #include <iostream>
 #include <locale>
 
-#include <signal.h>
-#include <string.h>
+#include <csignal>
+#include <cstring>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -68,6 +69,8 @@ void CheckIfSimulateMode(CommandLine &CmdL)				/*{{{*/
 	    "      Keep also in mind that locking is deactivated,\n"
 	    "      so don't depend on the relevance to the real current situation!\n"),
 	    _config->Find("Binary").c_str());
+      if (_config->FindI("APT::Output-Version") >= 30)
+	 std::cout << std::endl;
       _config->Set("Debug::NoLocking",true);
    }
 }
@@ -76,9 +79,11 @@ void CheckIfCalledByScript(int argc, const char *argv[])		/*{{{*/
 {
    if (unlikely(argc < 1)) return;
 
-   if(!isatty(STDOUT_FILENO) &&
-      _config->FindB("Apt::Cmd::Disable-Script-Warning", false) == false)
+   if (not IsStdoutAtty() &&
+       _config->FindB("Apt::Cmd::Disable-Script-Warning", false) == false)
    {
+      // NOTE: CLI interface is redundant on the I/interface, this is
+      // intentional to make it easier to read.
       std::cerr << std::endl
                 << "WARNING: " << flNotDir(argv[0]) << " "
                 << "does not have a stable CLI interface. "
diff --git a/apt-private/private-moo.cc b/apt-private/private-moo.cc
index ca456ed..5eb6db5 100644
--- a/apt-private/private-moo.cc
+++ b/apt-private/private-moo.cc
@@ -17,12 +17,12 @@
 #include <apt-private/private-output.h>
 #include <apt-private/private-utils.h>
 
+#include <cstddef>
+#include <cstring>
+#include <ctime>
 #include <iostream>
 #include <sstream>
 #include <string>
-#include <stddef.h>
-#include <string.h>
-#include <time.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -96,7 +96,7 @@ static bool DoMoo2(time_t const timenow)				/*{{{*/
       return printMooLine(timenow);
    std::string const moo = getMooLine(timenow);
    size_t const depth = moo.length()/4;
-   if (_config->FindB("APT::Moo::Color", false) == false)
+   if (_config->FindB("APT::Color", false) == false)
       c1out <<
 	 OutputInDepth(depth, " ") << "         (__)  \n" <<
 	 OutputInDepth(depth, " ") << " _______~(..)~ \n" <<
diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc
index 03fbe47..4480d73 100644
--- a/apt-private/private-output.cc
+++ b/apt-private/private-output.cc
@@ -1,10 +1,12 @@
 // Include files							/*{{{*/
 #include <config.h>
 
+#include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/cachefile.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/depcache.h>
 #include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/pkgrecords.h>
 #include <apt-pkg/policy.h>
@@ -13,15 +15,18 @@
 #include <apt-private/private-cachefile.h>
 #include <apt-private/private-output.h>
 
+#include <csignal>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <fcntl.h>
 #include <iomanip>
 #include <iostream>
 #include <langinfo.h>
 #include <regex.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <termios.h>
 #include <unistd.h>
 
 #include <sstream>
@@ -30,6 +35,7 @@
 									/*}}}*/
 
 using namespace std;
+using APT::Configuration::color;
 
 std::ostream c0out(0);
 std::ostream c1out(0);
@@ -38,6 +44,14 @@ std::ofstream devnull("/dev/null");
 
 
 unsigned int ScreenWidth = 80 - 1; /* - 1 for the cursor */
+static pid_t Pager = -1;
+static constexpr std::array<int, 5> PagerSignalsToHandle = {
+   SIGINT,
+   SIGHUP,
+   SIGTERM,
+   SIGQUIT,
+   SIGPIPE,
+};
 
 // SigWinch - Window size change signal handler				/*{{{*/
 // ---------------------------------------------------------------------
@@ -53,9 +67,164 @@ static void SigWinch(int)
 #endif
 }
 									/*}}}*/
+
+bool IsStdoutAtty()
+{
+   static bool is = isatty(STDOUT_FILENO);
+   return is;
+}
+
+static void WaitPager()
+{
+   if (Pager != -1)
+   {
+      c0out.flush();
+      c1out.flush();
+      c2out.flush();
+      std::cerr.flush();
+      std::cout.flush();
+      fflush(stdout);
+      fflush(stderr);
+      close(STDOUT_FILENO);
+      close(STDERR_FILENO);
+      waitpid(Pager, nullptr, 0);
+      Pager = -1;
+   }
+}
+
+static void SignalPager(int signo)
+{
+   if (Pager != -1)
+   {
+      // We can't flush from inside the signal handler.
+      close(STDOUT_FILENO);
+      close(STDERR_FILENO);
+      waitpid(Pager, nullptr, 0);
+      Pager = -1;
+      for (auto signalToHandle : PagerSignalsToHandle)
+	 signal(signalToHandle, SIG_DFL);
+      raise(signo);
+   }
+}
+
+static std::string DeterminePager()
+{
+   if (not IsStdoutAtty() || not _config->FindB("Pager", false))
+      return "";
+   if (auto pager = getenv("APT_PAGER"); pager)
+      return pager;
+   if (auto pager = getenv("PAGER"); pager)
+      return pager;
+   return DEFAULT_PAGER;
+}
+
+bool InitOutputPager()
+{
+   // InitOutputPager() behaves like a singleton, do not run twice-
+   static bool alreadyRan = false;
+   if (alreadyRan)
+      return true;
+   alreadyRan = true;
+
+   auto pager = DeterminePager();
+   if (pager.empty() || pager == "cat")
+      return true;
+
+   auto pagerEnv = VectorizeString(PAGER_ENV, '\n');
+
+   int pipefds[2] = {-1, -1};
+   int notifyPipe[2] = {-1, -1};
+
+   DEFER([&] () {
+      close(pipefds[0]);
+      close(pipefds[1]);
+      close(notifyPipe[0]);
+      close(notifyPipe[1]);
+   });
+
+   if (pipe(pipefds) || pipe(notifyPipe))
+      return _error->Errno("pipe", "Failed to setup pipe");
+
+   Pager = ExecFork();
+   if (Pager < 0)
+      return _error->Errno("fork", "Failed to fork");
+   if (Pager == 0)
+   {
+      // Child process
+      if (dup2(pipefds[0], STDIN_FILENO) == -1)
+	 goto err;
+      if (dup2(STDOUT_FILENO, STDERR_FILENO) == -1)
+	 goto err;
+
+      for (int sig = 1; sig < NSIG; sig++)
+	 signal(sig, SIG_DFL);
+
+      for (auto &v: pagerEnv)
+	 putenv(v.data());
+
+      {
+	 // If our pager name contains a space we need to invoke it in a shell. Boooo!
+	 char *cmd[] = {(char*)"/bin/sh", (char*)"-c", pager.data(), nullptr};
+	 constexpr std::string_view allowed_chars{"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" "+-._=/"};
+	 static_assert(allowed_chars.size() == 26 + 26 + 10 + 6);
+	 if (pager.find_first_not_of(allowed_chars) == pager.npos)
+	 {
+	    cmd[0] = pager.data();
+	    cmd[1] = nullptr;
+	 }
+	 execvp(cmd[0], cmd);
+      }
+   err:
+      int err = errno;
+      FileFd::Write(notifyPipe[1], &err, sizeof(err));
+      _exit(128);
+   }
+
+   // Parent process.
+
+   // Figure out if we were able to execvp() the child successfully. To do so,
+   // read from the notifyPipe. If execvp() was successful, it was closed due
+   // to CLOEXEC. On failure, our child code writes an errno to it.
+   _error->PushToStack();
+   close(notifyPipe[1]);   // Need to close our write end so our read doesn't block
+   notifyPipe[1] = -1;
+   if (int err = 0; FileFd::Read(notifyPipe[0], &err, sizeof(err))) {
+      errno = err;
+      _error->WarningE("PagerSetup", "Could not execute pager");
+      _error->MergeWithStack();
+      return true;
+   }
+   _error->RevertToStack();
+
+   // When running a pager, we must not be reading from stdin/tty, so
+   // let's be safe and open /dev/null in its place.
+   if (int const nullfd = open("/dev/null", O_RDONLY); nullfd != -1)
+   {
+      dup2(nullfd, STDIN_FILENO);
+      close(nullfd);
+   }
+
+   // Redirect the output(s) to the pager
+   if (dup2(pipefds[1], STDOUT_FILENO) == -1)
+      abort();
+   if (isatty(STDERR_FILENO) && dup2(pipefds[1], STDERR_FILENO) == -1)
+      abort();
+
+   // From now on, we can't show any progress messages as we are outputting
+   // to the pager.
+   _config->CndSet("quiet::NoUpdate", "1");
+
+   // Setup signal handlers and exit handlers for the pager, such that
+   // we wait for it.
+   for (auto signalToHandle : PagerSignalsToHandle)
+      signal(signalToHandle, SignalPager);
+   atexit(WaitPager);
+
+   return true;
+}
 bool InitOutput(std::basic_streambuf<char> * const out)			/*{{{*/
 {
-   if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1)
+   if (not IsStdoutAtty() && _config->FindI("quiet", -1) == -1)
       _config->Set("quiet","1");
 
    c0out.rdbuf(out);
@@ -86,7 +255,7 @@ bool InitOutput(std::basic_streambuf<char> * const out)			/*{{{*/
       SigWinch(0);
    }
 
-   if (isatty(STDOUT_FILENO) == 0 || not _config->FindB("APT::Color", true) || getenv("NO_COLOR") != nullptr)
+   if (not IsStdoutAtty() || not _config->FindB("APT::Color", true) || getenv("NO_COLOR") != nullptr || getenv("APT_NO_COLOR") != nullptr)
    {
       _config->Set("APT::Color", false);
       _config->Set("APT::Color::Highlight", "");
@@ -94,6 +263,7 @@ bool InitOutput(std::basic_streambuf<char> * const out)			/*{{{*/
    } else {
       // Colors
       _config->CndSet("APT::Color::Highlight", "\x1B[32m");
+      _config->CndSet("APT::Color::Bold", "\x1B[1m");
       _config->CndSet("APT::Color::Neutral", "\x1B[0m");
       
       _config->CndSet("APT::Color::Red", "\x1B[31m");
@@ -103,6 +273,14 @@ bool InitOutput(std::basic_streambuf<char> * const out)			/*{{{*/
       _config->CndSet("APT::Color::Magenta", "\x1B[35m");
       _config->CndSet("APT::Color::Cyan", "\x1B[36m");
       _config->CndSet("APT::Color::White", "\x1B[37m");
+
+      _config->CndSet("APT::Color::Action::Upgrade", "green");
+      _config->CndSet("APT::Color::Action::Install", "green");
+      _config->CndSet("APT::Color::Action::Install-Dependencies", "green");
+      _config->CndSet("APT::Color::Action::Downgrade", "yellow");
+      _config->CndSet("APT::Color::Action::Remove", "red");
+      _config->CndSet("APT::Color::Show::Field", "\x1B[1m");
+      _config->CndSet("APT::Color::Show::Package", "\x1B[32m");
    }
 
    return true;
@@ -302,8 +480,8 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,	/*{{{*/
    else if (V.ParentPkg()->CurrentState == pkgCache::State::ConfigFiles)
       StatusStr = _("[residual-config]");
    output = SubstVar(output, "${apt:Status}", StatusStr);
-   output = SubstVar(output, "${color:highlight}", _config->Find("APT::Color::Highlight", ""));
-   output = SubstVar(output, "${color:neutral}", _config->Find("APT::Color::Neutral", ""));
+   output = SubstVar(output, "${color:highlight}", color("Highlight"));
+   output = SubstVar(output, "${color:neutral}", color("Neutral"));
    output = SubstVar(output, "${Description}", GetShortDescription(CacheFile, records, P));
    if (output.find("${LongDescription}") != string::npos)
       output = SubstVar(output, "${LongDescription}", GetLongDescription(CacheFile, records, P));
@@ -316,6 +494,83 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,	/*{{{*/
    out << output;
 }
 									/*}}}*/
+// ShowWithColumns - Show a list in the style of ls			/*{{{*/
+// ---------------------------------------------------------------------
+/* This prints out a vector of strings with the given indent and in as
+   many columns as will fit the screen width.
+   
+   The output looks like:
+  abiword                debootstrap                  gir1.2-upowerglib-1.0
+  abiword-common         dh-make                      google-chrome-beta
+  abiword-plugin-grammar dmeventd                     gstreamer1.0-clutter-3.0
+  binfmt-support         dmsetup                      hostname
+  console-setup          evolution-data-server        iproute2
+  console-setup-linux    evolution-data-server-common
+  coreutils              ffmpeg
+ */
+struct columnInfo
+{
+   bool ValidLen;
+   size_t LineWidth;
+   vector<size_t> RemainingWidths;
+};
+void ShowWithColumns(ostream &out, vector<string> const &List, size_t Indent, size_t ScreenWidth)
+{
+   constexpr size_t MinColumnWidth = 2;
+   constexpr size_t ColumnSpace = 2;
+
+   size_t const ListSize = List.size();
+   size_t const MaxScreenCols = (ScreenWidth - Indent) /
+         MinColumnWidth;
+   size_t const MaxNumCols = min(MaxScreenCols, ListSize);
+
+   vector<columnInfo> ColumnInfo(MaxNumCols);
+   for (size_t I = 0; I < MaxNumCols; ++I) {
+      ColumnInfo[I].ValidLen = true;
+      ColumnInfo[I].LineWidth = (I + 1) * MinColumnWidth;
+      ColumnInfo[I].RemainingWidths.resize(I + 1, MinColumnWidth);
+   }
+
+   for (size_t I = 0; I < ListSize; ++I) {
+      for (size_t J = 0; J < MaxNumCols; ++J) {
+         auto& Col = ColumnInfo[J];
+         if (!Col.ValidLen)
+            continue;
+
+         size_t Idx = I / ((ListSize + J) / (J + 1));
+         size_t RealColLen = List[I].size() + (Idx == J ? 0 : ColumnSpace);
+         if (Col.RemainingWidths[Idx] < RealColLen) {
+            Col.LineWidth += RealColLen - Col.RemainingWidths[Idx];
+            Col.RemainingWidths[Idx] = RealColLen;
+            Col.ValidLen = Col.LineWidth < ScreenWidth;
+         }
+      }
+   }
+   size_t NumCols = MaxNumCols;
+   while (NumCols > 1 && !ColumnInfo[NumCols - 1].ValidLen)
+      --NumCols;
+
+   size_t NumRows = ListSize / NumCols + (ListSize % NumCols != 0);
+   auto const &LineFormat = ColumnInfo[NumCols - 1];
+   for (size_t Row = 0; Row < NumRows; ++Row) {
+      size_t Col = 0;
+      size_t I = Row;
+      out << string(Indent, ' ');
+      while (true) {
+         out << List[I];
+
+         size_t CurLen = List[I].size();
+         size_t MaxLen = LineFormat.RemainingWidths[Col++];
+         I += NumRows;
+         if (I >= ListSize)
+            break;
+
+         out << string(MaxLen - CurLen, ' ');
+      }
+      out << endl;
+   }
+}
+									/*}}}*/
 // ShowBroken - Debugging aide						/*{{{*/
 // ---------------------------------------------------------------------
 /* This prints out the names of all the packages that are broken along
@@ -447,8 +702,10 @@ void ShowBroken(ostream &out, CacheFile &Cache, bool const Now)
 {
    if (Cache->BrokenCount() == 0)
       return;
-
-   out << _("The following packages have unmet dependencies:") << endl;
+   if (_config->FindI("APT::Output-Version") < 30)
+      out << _("The following packages have unmet dependencies:") << endl;
+   else
+      out << _("Unsatisfied dependencies:") << endl;
    SortedPackageUniverse Universe(Cache);
    for (auto const &Pkg: Universe)
       ShowBrokenPackage(out, &Cache, Pkg, Now);
@@ -458,7 +715,10 @@ void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now)
    if (Cache->BrokenCount() == 0)
       return;
 
-   out << _("The following packages have unmet dependencies:") << endl;
+   if (_config->FindI("APT::Output-Version") < 30)
+      out << _("The following packages have unmet dependencies:") << endl;
+   else
+      out << _("Unsatisfied dependencies:") << endl;
    APT::PackageUniverse Universe(Cache);
    for (auto const &Pkg: Universe)
       ShowBrokenPackage(out, &Cache, Pkg, Now);
@@ -468,17 +728,33 @@ void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now)
 void ShowNew(ostream &out,CacheFile &Cache)
 {
    SortedPackageUniverse Universe(Cache);
-   ShowList(out,_("The following NEW packages will be installed:"), Universe,
-	 [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall(); },
+   if (_config->FindI("APT::Output-Version") < 30) {
+      ShowList(out,_("The following NEW packages will be installed:"), Universe,
+	    [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall(); },
+	    &PrettyFullName,
+	    CandidateVersion(&Cache),
+	    "action::install");
+      return;
+   }
+
+   ShowList(out,_("Installing:"), Universe,
+	 [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall() && (Cache[Pkg].Flags & pkgCache::Flag::Auto) == 0; },
 	 &PrettyFullName,
-	 CandidateVersion(&Cache));
+	 CandidateVersion(&Cache),
+	 "action::install");
+   ShowList(out,_("Installing dependencies:"), Universe,
+	 [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall() && Cache[Pkg].Flags & pkgCache::Flag::Auto;},
+	 &PrettyFullName,
+	 CandidateVersion(&Cache),
+	 "action::install-dependencies");
 }
 									/*}}}*/
 // ShowDel - Show packages to delete					/*{{{*/
 void ShowDel(ostream &out,CacheFile &Cache)
 {
    SortedPackageUniverse Universe(Cache);
-   ShowList(out,_("The following packages will be REMOVED:"), Universe,
+   auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be REMOVED:") : _("REMOVING:");
+   ShowList(out,title, Universe,
 	 [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Delete(); },
 	 [&Cache](pkgCache::PkgIterator const &Pkg)
 	 {
@@ -487,14 +763,29 @@ void ShowDel(ostream &out,CacheFile &Cache)
 	       str.append("*");
 	    return str;
 	 },
-	 CandidateVersion(&Cache));
+	 CurrentVersion(&Cache),
+	 "action::remove");
+}
+									/*}}}*/
+// ShowPhasing - Show packages kept due to phasing			/*{{{*/
+void ShowPhasing(ostream &out, CacheFile &Cache, APT::PackageVector const &HeldBackPackages)
+{
+   SortedPackageUniverse Universe(Cache);
+   auto title = _config->FindI("APT::Output-Version") < 30
+	       ? _("The following upgrades have been deferred due to phasing:")
+	       : _("Not upgrading yet due to phasing:");
+   ShowList(out, title, HeldBackPackages,
+	    &AlwaysTrue,
+	    &PrettyFullName,
+	    CurrentToCandidateVersion(&Cache));
 }
 									/*}}}*/
 // ShowKept - Show kept packages					/*{{{*/
 void ShowKept(ostream &out,CacheFile &Cache, APT::PackageVector const &HeldBackPackages)
 {
    SortedPackageUniverse Universe(Cache);
-   ShowList(out,_("The following packages have been kept back:"), HeldBackPackages,
+   auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages have been kept back:") : _("Not upgrading:");
+   ShowList(out, title, HeldBackPackages,
 	 &AlwaysTrue,
 	 &PrettyFullName,
 	 CurrentToCandidateVersion(&Cache));
@@ -504,13 +795,15 @@ void ShowKept(ostream &out,CacheFile &Cache, APT::PackageVector const &HeldBackP
 void ShowUpgraded(ostream &out,CacheFile &Cache)
 {
    SortedPackageUniverse Universe(Cache);
-   ShowList(out,_("The following packages will be upgraded:"), Universe,
+   auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be upgraded:") : _("Upgrading:");
+   ShowList(out, title, Universe,
 	 [&Cache](pkgCache::PkgIterator const &Pkg)
 	 {
 	    return Cache[Pkg].Upgrade() == true && Cache[Pkg].NewInstall() == false;
 	 },
 	 &PrettyFullName,
-	 CurrentToCandidateVersion(&Cache));
+	 CurrentToCandidateVersion(&Cache),
+	 "action::upgrade");
 }
 									/*}}}*/
 // ShowDowngraded - Show downgraded packages				/*{{{*/
@@ -519,20 +812,23 @@ void ShowUpgraded(ostream &out,CacheFile &Cache)
 bool ShowDowngraded(ostream &out,CacheFile &Cache)
 {
    SortedPackageUniverse Universe(Cache);
-   return ShowList(out,_("The following packages will be DOWNGRADED:"), Universe,
+   auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be DOWNGRADED:") : _("DOWNGRADING:");
+   return ShowList(out, title, Universe,
 	 [&Cache](pkgCache::PkgIterator const &Pkg)
 	 {
 	    return Cache[Pkg].Downgrade() == true && Cache[Pkg].NewInstall() == false;
 	 },
 	 &PrettyFullName,
-	 CurrentToCandidateVersion(&Cache));
+	 CurrentToCandidateVersion(&Cache),
+	 "action::downgrade");
 }
 									/*}}}*/
 // ShowHold - Show held but changed packages				/*{{{*/
 bool ShowHold(ostream &out,CacheFile &Cache)
 {
    SortedPackageUniverse Universe(Cache);
-   return ShowList(out,_("The following held packages will be changed:"), Universe,
+   auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following held packages will be changed:") : _("Changing held packages:");
+   return ShowList(out, title, Universe,
 	 [&Cache](pkgCache::PkgIterator const &Pkg)
 	 {
 	    return Pkg->SelectedState == pkgCache::State::Hold &&
@@ -611,7 +907,7 @@ bool ShowEssential(ostream &out,CacheFile &Cache)
    }
    return ShowList(out,_("WARNING: The following essential packages will be removed.\n"
 			 "This should NOT be done unless you know exactly what you are doing!"),
-	 pkglist, &AlwaysTrue, withdue, &EmptyString);
+	 pkglist, &AlwaysTrue, withdue, &EmptyString, "action::remove");
 }
 									/*}}}*/
 // Stats - Show some statistics						/*{{{*/
@@ -623,6 +919,7 @@ void Stats(ostream &out, pkgDepCache &Dep, APT::PackageVector const &HeldBackPac
    unsigned long Downgrade = 0;
    unsigned long Install = 0;
    unsigned long ReInstall = 0;
+   auto outVer = _config->FindI("APT::Output-Version");
    for (pkgCache::PkgIterator I = Dep.PkgBegin(); I.end() == false; ++I)
    {
       if (Dep[I].NewInstall() == true)
@@ -639,21 +936,27 @@ void Stats(ostream &out, pkgDepCache &Dep, APT::PackageVector const &HeldBackPac
       if (Dep[I].Delete() == false && (Dep[I].iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall)
 	 ReInstall++;
    }   
-
-   ioprintf(out,_("%lu upgraded, %lu newly installed, "),
+   if (outVer >= 30) {
+      ioprintf(out, _("Summary:"));
+      ioprintf(out, "\n  ");
+   }
+   ioprintf(out,outVer < 30 ? _("%lu upgraded, %lu newly installed, ") : _("Upgrading: %lu, Installing: %lu, "),
 	    Upgrade,Install);
    
    if (ReInstall != 0)
-      ioprintf(out,_("%lu reinstalled, "),ReInstall);
+      ioprintf(out,outVer < 30 ? _("%lu reinstalled, ") : _("Reinstalling: %lu, "),ReInstall);
    if (Downgrade != 0)
-      ioprintf(out,_("%lu downgraded, "),Downgrade);
+      ioprintf(out,outVer < 30 ? _("%lu downgraded, ") : _("Downgrading: %lu, "),Downgrade);
 
-   ioprintf(out,_("%lu to remove and %lu not upgraded.\n"),
+   ioprintf(out, outVer < 30 ? _("%lu to remove and %lu not upgraded.\n") : _("Removing: %lu, Not Upgrading: %lu\n"),
 	    Dep.DelCount(), HeldBackPackages.size());
-   
-   if (Dep.BadCount() != 0)
+
+   if (Dep.BadCount() != 0) {
+      if (outVer >= 30)
+	 ioprintf(out, "  ");
       ioprintf(out,_("%lu not fully installed or removed.\n"),
 	       Dep.BadCount());
+   }
 }
 									/*}}}*/
 // YnPrompt - Yes No Prompt.						/*{{{*/
@@ -666,10 +969,18 @@ bool YnPrompt(char const * const Question, bool const Default, bool const ShowGl
    // if we ask interactively, show warnings/notices before the question
    if (ShowGlobalErrors == true && AssumeYes == false && AssumeNo == false)
    {
-      if (_config->FindI("quiet",0) > 0)
+      if (_config->FindB("APT::Audit"))
+	 _error->DumpErrors(c2o, GlobalError::AUDIT);
+      else if (_config->FindI("quiet",0) > 0)
 	 _error->DumpErrors(c2o);
       else
-	 _error->DumpErrors(c2o, GlobalError::DEBUG);
+	 _error->DumpErrors(c2o, GlobalError::NOTICE);
+   }
+   // ignore pending input on terminal
+   if (not AssumeYes && not AssumeNo && isatty(STDIN_FILENO) == 1)
+   {
+      tcflush(STDIN_FILENO, TCIFLUSH);
+      std::cin.clear();
    }
 
    c2o << Question << std::flush;
@@ -716,9 +1027,10 @@ bool YnPrompt(char const * const Question, bool const Default, bool const ShowGl
 
    char response[1024] = "";
    std::cin.getline(response, sizeof(response));
-
    if (!std::cin)
       return false;
+   if (isatty(STDIN_FILENO) == 0)
+      c1o << response << '\n';
 
    if (strlen(response) == 0)
       return Default;
@@ -750,13 +1062,21 @@ std::string PrettyFullName(pkgCache::PkgIterator const &Pkg)
 {
    return Pkg.FullName(true);
 }
+std::string CurrentVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg)
+{
+   return (*Cache)[Pkg].CurVersion;
+}
+std::function<std::string(pkgCache::PkgIterator const &)> CurrentVersion(pkgCacheFile * const Cache)
+{
+   return [=](pkgCache::PkgIterator const &i) { return CurrentVersion(Cache, i); };
+}
 std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg)
 {
    return (*Cache)[Pkg].CandVersion;
 }
 std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache)
 {
-   return std::bind(static_cast<std::string(*)(pkgCacheFile * const, pkgCache::PkgIterator const&)>(&CandidateVersion), Cache, std::placeholders::_1);
+   return [=](pkgCache::PkgIterator const &i) { return CandidateVersion(Cache, i); };
 }
 std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg)
 {
@@ -772,7 +1092,7 @@ std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgI
 }
 std::function<std::string(pkgCache::PkgIterator const &)> CurrentToCandidateVersion(pkgCacheFile * const Cache)
 {
-   return std::bind(static_cast<std::string(*)(pkgCacheFile * const, pkgCache::PkgIterator const&)>(&CurrentToCandidateVersion), Cache, std::placeholders::_1);
+   return [=](pkgCache::PkgIterator const &i) { return CurrentToCandidateVersion(Cache, i); };
 }
 bool AlwaysTrue(pkgCache::PkgIterator const &)
 {
diff --git a/apt-private/private-output.h b/apt-private/private-output.h
index d6f25e1..ebc8408 100644
--- a/apt-private/private-output.h
+++ b/apt-private/private-output.h
@@ -1,6 +1,7 @@
 #ifndef APT_PRIVATE_OUTPUT_H
 #define APT_PRIVATE_OUTPUT_H
 
+#include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/cacheset.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/macros.h>
@@ -10,6 +11,7 @@
 #include <functional>
 #include <iostream>
 #include <string>
+#include <vector>
 
 // forward declaration
 class pkgCacheFile;
@@ -17,7 +19,6 @@ class CacheFile;
 class pkgDepCache;
 class pkgRecords;
 
-
 APT_PUBLIC extern std::ostream c0out;
 APT_PUBLIC extern std::ostream c1out;
 APT_PUBLIC extern std::ostream c2out;
@@ -25,6 +26,8 @@ APT_PUBLIC extern std::ofstream devnull;
 APT_PUBLIC extern unsigned int ScreenWidth;
 
 APT_PUBLIC bool InitOutput(std::basic_streambuf<char> * const out = std::cout.rdbuf());
+[[nodiscard]] APT_PUBLIC bool InitOutputPager();
+APT_PUBLIC bool IsStdoutAtty();
 
 void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,
                        pkgCache::VerIterator const &V, std::ostream &out,
@@ -35,16 +38,25 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,
 APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now);
 APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now);
 
+APT_PUBLIC void ShowWithColumns(std::ostream &out, const std::vector<std::string> &List, size_t Indent, size_t ScreenWidth);
+
 template<class Container, class PredicateC, class DisplayP, class DisplayV> bool ShowList(std::ostream &out, std::string const &Title,
       Container const &cont,
       PredicateC Predicate,
       DisplayP PkgDisplay,
-      DisplayV VerboseDisplay)
+      DisplayV VerboseDisplay,
+      std::string colorName = "",
+	      std::string Note = "")
 {
    size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0;
    int ScreenUsed = 0;
    bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false);
+   bool const ListColumns = _config->FindB("APT::Get::List-Columns", _config->FindI("APT::Output-Version") >= 30);
    bool printedTitle = false;
+   std::vector<std::string> PackageList;
+
+   auto setColor = APT::Configuration::color(colorName);
+   auto resetColor = not setColor.empty() ? APT::Configuration::color("neutral") : "";
 
    for (auto const &Pkg: cont)
    {
@@ -59,7 +71,7 @@ template<class Container, class PredicateC, class DisplayP, class DisplayV> bool
 
       if (ShowVersions == true)
       {
-	 out << std::endl << "   " << PkgDisplay(Pkg);
+	 out << std::endl << "   " << setColor << PkgDisplay(Pkg) << resetColor;
 	 std::string const verbose = VerboseDisplay(Pkg);
 	 if (verbose.empty() == false)
 	    out << " (" << verbose << ")";
@@ -67,24 +79,39 @@ template<class Container, class PredicateC, class DisplayP, class DisplayV> bool
       else
       {
 	 std::string const PkgName = PkgDisplay(Pkg);
-	 if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth)
+	 if (ListColumns)
+	    PackageList.push_back(PkgName);
+	 else
 	 {
-	    out << std::endl << "  ";
-	    ScreenUsed = 0;
+	    if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth)
+	    {
+	       out << std::endl
+		   << "  ";
+	       ScreenUsed = 0;
+	    }
+	    else if (ScreenUsed != 0)
+	    {
+	       out << " ";
+	       ++ScreenUsed;
+	    }
+	    out << setColor << PkgName << resetColor;
+	    ScreenUsed += PkgName.length();
 	 }
-	 else if (ScreenUsed != 0)
-	 {
-	    out << " ";
-	    ++ScreenUsed;
-	 }
-	 out << PkgName;
-	 ScreenUsed += PkgName.length();
       }
    }
 
    if (printedTitle == true)
    {
       out << std::endl;
+      if (ListColumns && not PackageList.empty()) {
+	 out << setColor;
+	 ShowWithColumns(out, PackageList, 2, ScreenWidth);
+	 out << resetColor;
+      }
+      if (not Note.empty())
+	 out << Note << std::endl;
+      if (_config->FindI("APT::Output-Version") >= 30)
+	 out << std::endl;
       return false;
    }
    return true;
@@ -93,6 +120,7 @@ template<class Container, class PredicateC, class DisplayP, class DisplayV> bool
 void ShowNew(std::ostream &out,CacheFile &Cache);
 void ShowDel(std::ostream &out,CacheFile &Cache);
 void ShowKept(std::ostream &out,CacheFile &Cache, APT::PackageVector const &HeldBackPackages);
+void ShowPhasing(std::ostream &out, CacheFile &Cache, APT::PackageVector const &HeldBackPackages);
 void ShowUpgraded(std::ostream &out,CacheFile &Cache);
 bool ShowDowngraded(std::ostream &out,CacheFile &Cache);
 bool ShowHold(std::ostream &out,CacheFile &Cache);
@@ -106,6 +134,8 @@ APT_PUBLIC bool YnPrompt(char const *const Question, bool Default = true);
 bool YnPrompt(char const * const Question, bool const Default, bool const ShowGlobalErrors, std::ostream &c1o, std::ostream &c2o);
 
 APT_PUBLIC std::string PrettyFullName(pkgCache::PkgIterator const &Pkg);
+std::string CurrentVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
+std::function<std::string(pkgCache::PkgIterator const &)> CurrentVersion(pkgCacheFile * const Cache);
 std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
 std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache);
 std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc
index b211474..d6654eb 100644
--- a/apt-private/private-search.cc
+++ b/apt-private/private-search.cc
@@ -20,13 +20,13 @@
 #include <apt-private/private-search.h>
 #include <apt-private/private-show.h>
 
+#include <cstring>
 #include <iostream>
 #include <map>
 #include <sstream>
 #include <string>
 #include <utility>
 #include <vector>
-#include <string.h>
 
 #include <apti18n.h>
 									/*}}}*/
@@ -169,6 +169,9 @@ static bool FullTextSearch(CommandLine &CmdL)				/*{{{*/
    APT_FREE_PATTERNS();
    progress.Done();
 
+   if (not InitOutputPager())
+      return false;
+
    // FIXME: SORT! and make sorting flexible (alphabetic, by pkg status)
    // output the sorted map
    std::map<std::string, std::string>::const_iterator K;
diff --git a/apt-private/private-show.cc b/apt-private/private-show.cc
index 08a4fe6..3e969ab 100644
--- a/apt-private/private-show.cc
+++ b/apt-private/private-show.cc
@@ -1,6 +1,7 @@
 // Includes								/*{{{*/
 #include <config.h>
 
+#include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/cachefile.h>
 #include <apt-pkg/cacheset.h>
 #include <apt-pkg/cmndline.h>
@@ -25,14 +26,16 @@
 #include <apt-private/private-install.h>
 #include <apt-private/private-show.h>
 
+#include <cstdio>
 #include <ostream>
 #include <string>
-#include <stdio.h>
 #include <unistd.h>
 
 #include <apti18n.h>
 									/*}}}*/
 
+using APT::Configuration::color;
+
 pkgRecords::Parser &LookupParser(pkgRecords &Recs, pkgCache::VerIterator const &V, pkgCache::VerFileIterator &Vf) /*{{{*/
 {
    Vf = V.FileList();
@@ -218,6 +221,10 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/
    // Check and load the package list file
    pkgCache::PkgFileIterator I = Vf.File();
 
+   // Extract the policy object for use later
+   pkgDepCache::Policy *Policy = CacheFile.GetPolicy();
+   if (Policy == nullptr)
+      return false;
    // find matching sources.list metaindex
    pkgSourceList *SrcList = CacheFile.GetSourceList();
    pkgIndexFile *Index;
@@ -271,7 +278,8 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/
    RW.push_back(pkgTagSection::Tag::Remove("Description"));
    RW.push_back(pkgTagSection::Tag::Remove("Description-md5"));
    // improve
-   RW.push_back(pkgTagSection::Tag::Rewrite("Package", V.ParentPkg().FullName(true)));
+   RW.push_back(pkgTagSection::Tag::Rewrite("Package", color("Show::Package", V.ParentPkg().FullName(true))));
+
    RW.push_back(pkgTagSection::Tag::Rewrite("Installed-Size", installed_size));
    RW.push_back(pkgTagSection::Tag::Remove("Size"));
    RW.push_back(pkgTagSection::Tag::Rewrite("Download-Size", package_size));
@@ -279,10 +287,18 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/
    if (manual_installed != nullptr)
       RW.push_back(pkgTagSection::Tag::Rewrite("APT-Manual-Installed", manual_installed));
    RW.push_back(pkgTagSection::Tag::Rewrite("APT-Sources", source_index_file));
+   if (_config->FindB("APT::Cache::ShowFull", false))
+   {
+      RW.push_back(pkgTagSection::Tag::Rewrite("APT-Pin", std::to_string(Policy->GetPriority(V))));
+      if (Policy->GetCandidateVer(V.ParentPkg()) == V)
+	 RW.push_back(pkgTagSection::Tag::Rewrite("APT-Candidate", "yes"));
+      if (auto Release = I.RelStr(); not I.Flagged(pkgCache::Flag::NotSource) && not Release.empty())
+	 RW.push_back(pkgTagSection::Tag::Rewrite("APT-Release", Release));
+   }
 
    FileFd stdoutfd;
    if (stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false) == false ||
-	 Tags.Write(stdoutfd, TFRewritePackageOrder, RW) == false || stdoutfd.Close() == false)
+       Tags.Write(stdoutfd, pkgTagSection::WRITE_HUMAN, TFRewritePackageOrder, RW) == false || stdoutfd.Close() == false)
       return _error->Error("Internal Error, Unable to parse a package record");
 
    // write the description
@@ -291,7 +307,7 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/
    if (Desc.end() == false)
    {
       pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
-      out << "Description: " << P.LongDesc();
+      out << color("Show::Field", "Description: ") << P.LongDesc();
    }
 
    // write a final newline (after the description)
@@ -347,6 +363,10 @@ bool ShowPackage(CommandLine &CmdL)					/*{{{*/
 
    int const ShowVersion = _config->FindI("APT::Cache::Show::Version", 1);
    pkgRecords Recs(CacheFile);
+
+   if (not InitOutputPager())
+      return false;
+
    for (APT::VersionList::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver)
    {
       pkgCache::VerFileIterator Vf;
@@ -437,19 +457,30 @@ bool ShowSrcPackage(CommandLine &CmdL)					/*{{{*/
    if (_error->PendingError() == true)
       return false;
 
+   if (not InitOutputPager())
+      return false;
+
    bool found = false;
    // avoid showing identical records
    std::set<std::string> seen;
    for (const char **I = CmdL.FileList + 1; *I != 0; I++)
    {
+      const char *pkgname = *I;
       SrcRecs.Restart();
 
       pkgSrcRecords::Parser *Parse;
       bool found_this = false;
-      while ((Parse = SrcRecs.Find(*I,false)) != 0) {
+      bool only_source = _config->FindB("APT::Cache::Only-Source", false);
+      if (APT::String::Startswith(pkgname, "src:"))
+      {
+	 only_source = true;
+	 pkgname += 4;
+      }
+      while ((Parse = SrcRecs.Find(pkgname, false)) != 0)
+      {
 	 // SrcRecs.Find() will find both binary and source names
-	 if (_config->FindB("APT::Cache::Only-Source", false) == true)
-	    if (Parse->Package() != *I)
+	 if (only_source)
+	    if (Parse->Package() != pkgname)
 	       continue;
          std::string sha1str = Sha1FromString(Parse->AsStr());
          if (std::find(seen.begin(), seen.end(), sha1str) == seen.end())
@@ -484,6 +515,9 @@ bool Policy(CommandLine &CmdL)
    if (unlikely(Plcy == nullptr))
       return false;
 
+   if (not InitOutputPager())
+      return false;
+
    // Print out all of the package files
    if (CmdL.FileList[1] == 0)
    {
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc
index 14bc5b4..ac52de9 100644
--- a/apt-private/private-source.cc
+++ b/apt-private/private-source.cc
@@ -31,10 +31,10 @@
 #include <apt-pkg/debindexfile.h>
 #include <apt-pkg/deblistparser.h>
 
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -77,7 +77,14 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,
    std::string ArchTag = "";
    std::string RelTag = _config->Find("APT::Default-Release");
    std::string TmpSrc = Name;
+   bool MatchSrcOnly = _config->FindB("APT::Get::Only-Source");
 
+   // Check if we should look by source package
+   if (APT::String::Startswith(TmpSrc, "src:"))
+   {
+      MatchSrcOnly = true;
+      TmpSrc = TmpSrc.substr(4);
+   }
    // extract release
    size_t found = TmpSrc.find_last_of("/");
    if (found != std::string::npos)
@@ -103,7 +110,6 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,
    /* Lookup the version of the package we would install if we were to
       install a version and determine the source package name, then look
       in the archive for a source package of the same name. */
-   bool MatchSrcOnly = _config->FindB("APT::Get::Only-Source");
    pkgCache::PkgIterator Pkg;
    if (ArchTag != "")
       Pkg = Cache.GetPkgCache()->FindPkg(TmpSrc, ArchTag);
@@ -417,7 +423,7 @@ bool DoSource(CommandLine &CmdL)
 	 queued.insert(Last->Index().ArchiveURI(I->Path));
 
 	 // check if we have a file with that md5 sum already localy
-	 std::string localFile = flNotDir(I->Path);
+	 std::string localFile{flNotDir(I->Path)};
 	 if (FileExists(localFile) == true)
 	    if(I->Hashes.VerifyFile(localFile) == true)
 	    {
diff --git a/apt-private/private-sources.cc b/apt-private/private-sources.cc
index 4cfb879..9e6deb1 100644
--- a/apt-private/private-sources.cc
+++ b/apt-private/private-sources.cc
@@ -6,6 +6,7 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/hashes.h>
+#include <apt-pkg/metaindex.h>
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/strutl.h>
 
@@ -13,15 +14,18 @@
 #include <apt-private/private-sources.h>
 #include <apt-private/private-utils.h>
 
+#include <cstddef>
 #include <iostream>
+#include <regex>
 #include <string>
-#include <stddef.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
 
 #include <apti18n.h>
 
+using namespace std::literals;
+
 /* Interface discussion with donkult (for the future):
   apt [add-{archive,release,component}|edit|change-release|disable]-sources
  and be clever and work out stuff from the Release file
@@ -40,8 +44,6 @@ bool EditSources(CommandLine &CmdL)
    if (CmdL.FileList[1] != NULL)
    {
       sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1];
-      if (!APT::String::Endswith(sourceslist, ".list"))
-         sourceslist += ".list";
    } else {
       sourceslist = _config->FindFile("Dir::Etc::sourcelist");
    }
@@ -103,3 +105,222 @@ bool EditSources(CommandLine &CmdL)
    return res;
 }
 									/*}}}*/
+
+template <typename T, typename V>
+static auto contains(T const &container, V const &value) -> bool
+{
+   return std::find(container.begin(), container.end(), value) != container.end();
+}
+static auto merge(std::vector<std::string> &a, std::vector<std::string> const &b)
+{
+   for (auto const &e : b)
+      if (not contains(a, e))
+	 a.push_back(e);
+}
+
+static bool Modernize(std::string const &filename) /*{{{*/
+{
+   auto isMain = filename == _config->FindFile("Dir::Etc::SourceList");
+   auto simulate = _config->FindB("APT::Get::Simulate");
+
+   std::cerr << "Modernizing " << filename << "...\n";
+   pkgSourceList list;
+   if (not list.Read(filename))
+      return false;
+
+   struct Entry
+   {
+      std::set<std::string> types;
+      std::vector<std::string> uris;
+      std::vector<std::string> suites;
+      std::vector<std::string> components;
+      std::string signedBy;
+      std::map<std::string, std::string> options;
+      std::string origin;
+      bool merged = false;
+
+      auto Merge(Entry &other) -> bool
+      {
+	 auto howManyDifferent = (types != other.types) + (uris != other.uris) + (suites != other.suites) + (components != other.components);
+	 if (howManyDifferent > 1)
+	    return false;
+	 if (options != other.options)
+	    return false;
+	 if (origin != other.origin)
+	    return false;
+	 if (signedBy.empty() && not other.signedBy.empty() && (uris != other.uris || suites != other.suites))
+	    return false;
+	 if (not signedBy.empty() && not other.signedBy.empty() && signedBy != other.signedBy)
+	    return false;
+
+	 types.insert(other.types.begin(), other.types.end());
+	 merge(uris, other.uris);
+	 merge(suites, other.suites);
+	 merge(components, other.components);
+	 if (signedBy.empty())
+	    signedBy = other.signedBy;
+
+	 other.merged = true;
+	 return true;
+      }
+   };
+   std::vector<Entry> entries;
+   for (auto const &meta : list)
+   {
+      Entry e;
+
+      e.uris.push_back(meta->GetURI());
+      e.suites.push_back(meta->GetDist());
+      for (auto const &t : meta->GetIndexTargets())
+      {
+	 e.types.insert(t.Option(IndexTarget::TARGET_OF));
+	 if (not contains(e.components, t.Option(IndexTarget::COMPONENT)))
+	    e.components.push_back(t.Option(IndexTarget::COMPONENT));
+      }
+
+      if (meta->IsTrustedSet())
+	 e.options["Trusted"] = "yes";
+
+      std::string err;
+      e.signedBy = meta->GetSignedBy();
+      meta->Load(&err);
+      if (e.signedBy.empty() && not meta->GetOrigin().empty())
+      {
+	 std::string dir = _config->FindDir("Dir") + std::string{"usr/share/keyrings/"};
+	 std::string keyring = std::regex_replace(meta->GetOrigin(), std::regex(" "), "-") + "-archive-keyring.gpg";
+	 std::transform(keyring.begin(), keyring.end(), keyring.begin(), tolower);
+	 if (FileExists(dir + keyring))
+	    e.signedBy = dir + keyring;
+      }
+      if (auto k = _config->FindDir("Dir::Etc::trustedparts") += flNotDir(std::regex_replace(filename, std::regex("\\.list$"), ".gpg")); FileExists(k))
+	 e.signedBy = k;
+      if (auto k = _config->FindDir("Dir::Etc::trustedparts") += flNotDir(std::regex_replace(filename, std::regex("\\.list$"), ".asc")); FileExists(k))
+	 e.signedBy = k;
+
+      if (isMain && not meta->GetOrigin().empty())
+      {
+	 constexpr auto bad = "\\|{}[]<>\"^~_=!@#$%^&*"sv;
+	 e.origin = meta->GetOrigin();
+	 std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), tolower);
+	 std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), [](char c) -> char
+			{ return isspace(c) ? '-' : c; });
+	 std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), [bad](char c) -> char
+			{ return bad.find(c) != bad.npos ? '-' : c; });
+	 std::replace(e.origin.begin(), e.origin.end(), '/', '-');
+      }
+
+      entries.push_back(std::move(e));
+   }
+
+   for (bool merged = false; merged;)
+   {
+      merged = false;
+      for (auto it = entries.begin(); it != entries.end(); ++it)
+      {
+	 for (auto it2 = it + 1; it2 != entries.end(); ++it2)
+	    if (not it2->merged)
+	       merged |= it->Merge(*it2);
+      }
+   }
+
+   std::map<std::string, std::ofstream> streams;
+   for (auto const &e : entries)
+   {
+      std::string outname;
+      if (not isMain)
+	 outname = std::regex_replace(filename, std::regex("\\.list$"), ".sources");
+      else if (e.origin.empty())
+	 outname = _config->FindDir("Dir::Etc::SourceParts") + "moved-from-main.sources";
+      else
+	 outname = _config->FindDir("Dir::Etc::SourceParts") + (e.origin) + ".sources";
+
+      if (auto it = streams.find(outname); not simulate && it == streams.end())
+      {
+	 std::cerr << "- Writing " << outname << "\n";
+	 streams[outname].open(outname, std::ios::app);
+      }
+      auto &out = simulate ? std::cout : streams[outname];
+      if (not out)
+	 _error->Warning("Cannot open %s for writing.", outname.c_str());
+      if (e.merged)
+	 continue;
+
+      if (out.tellp() != 0)
+	 out << "\n";
+
+      if (simulate)
+	 out << "# Would write to: " << outname << "\n";
+      if (isMain)
+	 out << "# Modernized from " << filename << "\n";
+      out << "Types:";
+      for (auto const &t : e.types)
+	 out << " " << t;
+      out << "\n";
+      out << "URIs: " << APT::String::Join(e.uris, " ") << "\n";
+      out << "Suites: " << APT::String::Join(e.suites, " ") << "\n";
+      out << "Components: " << APT::String::Join(e.components, " ") << "\n";
+      out << "Signed-By: " << e.signedBy << "\n";
+      for (auto const &[key, value] : e.options)
+	 out << key << ": " << value << "\n";
+      if (e.signedBy.empty())
+	 _error->Warning("Could not determine Signed-By for URIs: %s, Suites: %s", APT::String::Join(e.uris, " ").c_str(), APT::String::Join(e.suites, " ").c_str());
+   }
+
+   if (not simulate && rename(filename.c_str(), (filename + ".bak").c_str()) != 0)
+      _error->WarningE("rename", "Could not rename %s", filename.c_str());
+
+   _error->DumpErrors();
+   std::cerr << "\n";
+   return true;
+}
+									/*}}}*/
+bool ModernizeSources(CommandLine &) /*{{{*/
+{
+   auto main = _config->FindFile("Dir::Etc::SourceList");
+   auto parts = _config->FindDir("Dir::Etc::SourceParts");
+   std::vector<std::string> files;
+   if (FileExists(main))
+      files.push_back(main);
+   for (auto const &I : GetListOfFilesInDir(parts, std::vector<std::string>{"list", "sources"}, true))
+      if (APT::String::Endswith(I, ".list"))
+	 files.push_back(I);
+   if (files.empty())
+   {
+      std::cout << "All sources are modern.\n";
+      return true;
+   }
+
+   // TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+   auto no = _("N");
+
+   std::cout << "The following files need modernizing:\n";
+   for (auto const &I : files)
+      std::cout << "  - " << I << "\n";
+   std::cout << "\n"
+             << "Modernizing will replace .list files with the new .sources format,\n"
+             << "add Signed-By values where they can be determined automatically,\n"
+             << "and save the old files into .list.bak files.\n"
+             << "\n"
+             << "This command supports the 'signed-by' and 'trusted' options. If you\n"
+             << "have specified other options inside [] brackets, please transfer them\n"
+             << "manually to the output files; see sources.list(5) for a mapping.\n"
+             << "\n"
+             << "For a simulation, respond " << no << " in the following prompt.\n";
+
+   std::string prompt;
+   strprintf(prompt, _("Rewrite %zu sources?"), files.size());
+   if (YnPrompt(prompt.c_str(), true) == false)
+   {
+      _config->Set("APT::Get::Simulate", true);
+      std::cout << "Simulating only..." << std::endl;
+      // Make it visible.
+      usleep(100 * 1000);
+   }
+
+   bool good = true;
+   for (auto const &I : files)
+      good = good && Modernize(I);
+
+   return good;
+}
+									/*}}}*/
diff --git a/apt-private/private-sources.h b/apt-private/private-sources.h
index 0c42190..0f1e89a 100644
--- a/apt-private/private-sources.h
+++ b/apt-private/private-sources.h
@@ -6,5 +6,6 @@
 class CommandLine;
 
 APT_PUBLIC bool EditSources(CommandLine &CmdL);
+APT_PUBLIC bool ModernizeSources(CommandLine &CmdL);
 
 #endif
diff --git a/apt-private/private-unmet.cc b/apt-private/private-unmet.cc
index f5161fc..229e5a2 100644
--- a/apt-private/private-unmet.cc
+++ b/apt-private/private-unmet.cc
@@ -10,7 +10,7 @@
 #include <apt-private/private-cacheset.h>
 #include <apt-private/private-unmet.h>
 
-#include <stddef.h>
+#include <cstddef>
 
 #include <iostream>
 
diff --git a/apt-private/private-update.cc b/apt-private/private-update.cc
index f1734fe..9896196 100644
--- a/apt-private/private-update.cc
+++ b/apt-private/private-update.cc
@@ -21,37 +21,20 @@
 
 #include <ostream>
 #include <string>
-#include <tuple>
 
 #include <apti18n.h>
 									/*}}}*/
 
 // DoUpdate - Update the package lists					/*{{{*/
-static bool isDebianBookwormRelease(pkgCache::RlsFileIterator const &RlsFile)
-{
-   std::tuple<std::string_view, std::string_view, std::string_view> const affected[] = {
-      {"Debian", "Debian", "bookworm"},
-      {"Debian", "Debian", "sid"},
-   };
-   if (RlsFile.end() || RlsFile->Origin == nullptr || RlsFile->Label == nullptr || RlsFile->Codename == nullptr)
-      return false;
-   std::tuple<std::string_view, std::string_view, std::string_view> const release{RlsFile.Origin(), RlsFile.Label(), RlsFile.Codename()};
-   return std::find(std::begin(affected), std::end(affected), release) != std::end(affected);
-}
-static void suggestDebianNonFreeFirmware(char const *const repo, char const *const val,
-					 char const *const from, char const *const to)
-{
-   // Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-   _error->Notice(_("Repository '%s' changed its '%s' value from '%s' to '%s'"), repo, val, from, to);
-   std::string notes;
-   strprintf(notes, "https://www.debian.org/releases/bookworm/%s/release-notes/ch-information.html#non-free-split", _config->Find("APT::Architecture").c_str());
-   _error->Notice(_("More information about this can be found online in the Release notes at: %s"), notes.c_str());
-}
 bool DoUpdate(CommandLine &CmdL)
 {
    if (CmdL.FileSize() != 1)
       return _error->Error(_("The update command takes no arguments"));
+   return DoUpdate();
+}
 
+bool DoUpdate()
+{
    CacheFile Cache;
 
    // Get the source list
@@ -75,7 +58,7 @@ bool DoUpdate(CommandLine &CmdL)
       pkgAcquire::UriIterator I = Fetcher.UriBegin();
       for (; I != Fetcher.UriEnd(); ++I)
       {
-         std::string FileName = flNotDir(I->Owner->DestFile);
+         auto FileName = flNotDir(I->Owner->DestFile);
          if(compExt.empty() == false && 
             APT::String::Endswith(FileName, compExt))
             FileName = FileName.substr(0, FileName.size() - compExt.size() - 1);
@@ -121,111 +104,42 @@ bool DoUpdate(CommandLine &CmdL)
       }
    }
 
-   if (_config->FindB("APT::Get::Update::SourceListWarnings::NonFreeFirmware", SLWarnings))
+   if (_config->FindB("APT::Get::Update::SourceListWarnings::SignedBy", SLWarnings))
    {
-      // If a Debian source has a non-free component, suggest adding non-free-firmware
-      bool found_affected_release = false;
-      bool found_non_free = false;
-      bool found_non_free_firmware = false;
+      bool modernize = false;
       for (auto *S : *List)
       {
-	 if (not isDebianBookwormRelease(S->FindInCache(Cache, false)))
-	    continue;
+	 URI uri(S->GetURI());
 
-	 for (auto PkgFile = Cache.GetPkgCache()->FileBegin(); not PkgFile.end(); ++PkgFile)
+	 if (not S->HasFlag(metaIndex::Flag::DEB822))
 	 {
-	    if (PkgFile.Flagged(pkgCache::Flag::NoPackages))
-	       continue;
-	    found_affected_release = true;
-	    const auto * const comp = PkgFile.Component();
-	    if (comp == nullptr)
-	      continue;
-	    if (strcmp(comp, "non-free") == 0)
-	       found_non_free = true;
-	    else if (strcmp(comp, "non-free-firmware") == 0)
-	    {
-	       found_non_free_firmware = true;
-	       break;
-	    }
+	    // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+	    _error->Audit(_("The %s entry for '%s' should be upgraded to deb822 .sources"),
+			  "sources.list(5)", URI::ArchiveOnly(uri).c_str());
 	 }
-	 if (found_non_free_firmware)
-	    break;
-      }
-      if (not found_non_free_firmware && found_non_free && found_affected_release)
-      {
-	 /* See if a well-known firmware package is installable from this codename
-	    if so, we likely operate with new apt on an old snapshot not supporting non-free-firmware */
-	 bool suggest_non_free_firmware = true;
-	 if (auto const Grp = Cache.GetPkgCache()->FindGrp("firmware-linux-nonfree"); not Grp.end())
+	 if (S->GetSignedBy().empty())
 	 {
-	    for (auto Pkg = Grp.PackageList(); not Pkg.end() && suggest_non_free_firmware; Pkg = Grp.NextPkg(Pkg))
+	    if (S->HasFlag(metaIndex::Flag::DEB822))
 	    {
-	       for (auto Ver = Pkg.VersionList(); not Ver.end(); ++Ver)
-	       {
-		  if (not Ver.Downloadable())
-		     continue;
-		  for (auto VerFile = Ver.FileList(); not VerFile.end(); ++VerFile)
-		  {
-		     auto const PkgFile = VerFile.File();
-		     if (PkgFile.end())
-			continue;
-		     if (not isDebianBookwormRelease(PkgFile.ReleaseFile()))
-			continue;
-		     suggest_non_free_firmware = false;
-		     break;
-		  }
-		  if (not suggest_non_free_firmware)
-		     break;
-	       }
+	       // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+	       _error->Notice(_("Missing Signed-By in the %s entry for '%s'"),
+			      "sources.list(5)", URI::ArchiveOnly(uri).c_str());
 	    }
-	 }
-	 if (suggest_non_free_firmware)
-	    suggestDebianNonFreeFirmware("Debian bookworm", "non-free component", "non-free", "non-free non-free-firmware");
-      }
-
-      if (not found_non_free_firmware && not found_non_free && found_affected_release)
-      {
-	 /* Try to notify users who have installed firmware packages at some point, but
-	    have not enabled non-free currently – they might want to opt into updates now */
-	 APT::StringView const affected_pkgs[] = {
-	    "amd64-microcode", "atmel-firmware", "bluez-firmware", "dahdi-firmware-nonfree",
-	    "firmware-amd-graphics", "firmware-ast", "firmware-atheros", "firmware-bnx2",
-	    "firmware-bnx2x", "firmware-brcm80211", "firmware-cavium", "firmware-intel-sound",
-	    "firmware-intelwimax", "firmware-ipw2x00", "firmware-ivtv", "firmware-iwlwifi",
-	    "firmware-libertas", "firmware-linux", "firmware-linux-nonfree", "firmware-misc-nonfree",
-	    "firmware-myricom", "firmware-netronome", "firmware-netxen", "firmware-qcom-media",
-	    "firmware-qcom-soc", "firmware-qlogic", "firmware-realtek", "firmware-realtek-rtl8723cs-bt",
-	    "firmware-samsung", "firmware-siano", "firmware-sof-signed", "firmware-ti-connectivity",
-	    "firmware-zd1211", "intel-microcode", "midisport-firmware", "raspi-firmware",
-	 };
-	 bool suggest_non_free_firmware = false;
-	 for (auto pkgname : affected_pkgs)
-	 {
-	    auto const Grp = Cache.GetPkgCache()->FindGrp(pkgname);
-	    if (Grp.end())
-	       continue;
-	    for (auto Pkg = Grp.PackageList(); not Pkg.end(); Pkg = Grp.NextPkg(Pkg))
+	    else
 	    {
-	       auto const Ver = Pkg.CurrentVer();
-	       if (Ver.end() || Ver.Downloadable())
-		  continue;
-	       bool another = false;
-	       for (auto V = Pkg.VersionList(); not V.end(); ++V)
-		  if (V.Downloadable())
-		  {
-		     another = true;
-		     break;
-		  }
-	       if (another)
-		  continue;
-	       suggest_non_free_firmware = true;
-	       break;
+	       // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+	       _error->Audit(_("Missing Signed-By in the %s entry for '%s'"),
+			     "sources.list(5)", URI::ArchiveOnly(uri).c_str());
+	       modernize = true;
 	    }
-	    if (suggest_non_free_firmware)
-	       break;
 	 }
-	 if (suggest_non_free_firmware)
-	    suggestDebianNonFreeFirmware("Debian bookworm", "firmware component", "non-free", "non-free-firmware");
+      }
+      if (modernize)
+      {
+         _error->Audit(_("Consider migrating all sources.list(5) entries to the deb822 .sources format"));
+         _error->Audit(_("The deb822 .sources format supports both embedded as well as external OpenPGP keys"));
+	 _error->Audit(_("See apt-secure(8) for best practices in configuring repository signing."));
+	 _error->Notice(_("Some sources can be modernized. Run 'apt modernize-sources' to do so."));
       }
    }
 
@@ -248,7 +162,11 @@ bool DoUpdate(CommandLine &CmdL)
       if (upgradable == 0)
          c1out << _("All packages are up to date.") << std::endl;
       else
-         ioprintf(c1out, msg, upgradable);
+      {
+	 c1out << _config->Find("APT::Color::Bold");
+	 ioprintf(c1out, msg, upgradable);
+	 c1out << _config->Find("APT::Color::Neutral");
+      }
 
       RunScripts("APT::Update::Post-Invoke-Stats");
    }
diff --git a/apt-private/private-update.h b/apt-private/private-update.h
index e584f70..8ca706c 100644
--- a/apt-private/private-update.h
+++ b/apt-private/private-update.h
@@ -6,5 +6,6 @@
 class CommandLine;
 
 APT_PUBLIC bool DoUpdate(CommandLine &CmdL);
+APT_PUBLIC bool DoUpdate();
 
 #endif
diff --git a/apt-private/private-upgrade.cc b/apt-private/private-upgrade.cc
index 97603dc..143879f 100644
--- a/apt-private/private-upgrade.cc
+++ b/apt-private/private-upgrade.cc
@@ -11,6 +11,7 @@
 #include <apt-private/private-install.h>
 #include <apt-private/private-json-hooks.h>
 #include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
 #include <apt-private/private-upgrade.h>
 
 #include <iostream>
@@ -21,6 +22,9 @@
 // this is actually performing the various upgrade operations 
 static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
 {
+   if (_config->FindB("APT::Update") && not DoUpdate())
+      return false;
+
    CacheFile Cache;
    auto VolatileCmdL = GetPseudoPackages(Cache.GetSourceList(), CmdL, AddVolatileBinaryFile, "");
 
diff --git a/cmdline/CMakeLists.txt b/cmdline/CMakeLists.txt
index 91bf9bb..4c5e85a 100644
--- a/cmdline/CMakeLists.txt
+++ b/cmdline/CMakeLists.txt
@@ -11,14 +11,6 @@ add_executable(apt-extracttemplates apt-extracttemplates.cc)
 add_executable(apt-internal-solver apt-internal-solver.cc)
 add_executable(apt-dump-solver apt-dump-solver.cc)
 add_executable(apt-internal-planner apt-internal-planner.cc)
-add_vendor_file(OUTPUT apt-key
-                INPUT apt-key.in
-                MODE 755
-                VARIABLES keyring-filename
-                          keyring-removed-filename
-                          keyring-master-filename
-                          keyring-uri keyring-package)
-
 
 # Link the executables against the libraries
 target_link_libraries(apt apt-pkg apt-private)
@@ -46,14 +38,11 @@ set_target_properties(apt-internal-planner
 
 # Install the executables
 install(TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-mark apt-sortpkgs
-                apt-extracttemplates
         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-install(TARGETS apt-helper RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/)
+install(TARGETS apt-helper apt-extracttemplates RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/)
 install(TARGETS apt-dump-solver apt-internal-solver RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/solvers)
 install(TARGETS apt-internal-planner RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/planners)
 
 add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/planners ../solvers/dump planners/dump)
-
-# Install the not-to-be-compiled programs
-INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/apt-key DESTINATION ${CMAKE_INSTALL_BINDIR})
+add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/solvers apt solver3)
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc
index ffe6509..d8e9e7e 100644
--- a/cmdline/apt-cache.cc
+++ b/cmdline/apt-cache.cc
@@ -47,6 +47,9 @@
 #include <apt-private/private-unmet.h>
 
 #include <algorithm>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
 #include <cstring>
 #include <iomanip>
 #include <iostream>
@@ -56,9 +59,6 @@
 #include <string>
 #include <vector>
 #include <regex.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -87,9 +87,10 @@ static bool DumpPackage(CommandLine &CmdL)
 	 cout << endl;
 	 for (pkgCache::DescIterator D = Cur.DescriptionList(); D.end() == false; ++D)
 	 {
-	    cout << " Description Language: " << D.LanguageCode() << endl
-		 << "                 File: " << D.FileList().File().FileName() << endl
-		 << "                  MD5: " << D.md5() << endl;
+	    cout << " Description Language: " << D.LanguageCode() << '\n';
+	    for (auto DF = D.FileList(); not DF.end(); ++DF)
+	       cout << "                 File: " << DF.File().FileName() << '\n';
+	    cout << "                  MD5: " << D.md5() << '\n';
 	 }
 	 cout << endl;
       }
@@ -238,6 +239,8 @@ static bool Stats(CommandLine &CmdL)
    cout << _("  Mixed virtual packages: ") << NVirt << endl;
    cout << _("  Missing: ") << Missing << endl;
 
+   cout << _("Total distinct source versions: ") << Cache->Head().SourceVersionCount << " (" << SizeToStr(Cache->Head().SourceVersionCount * Cache->Head().SourceVersionSz) << ')' << endl;
+
    cout << _("Total distinct versions: ") << Cache->Head().VersionCount << " (" <<
       SizeToStr(Cache->Head().VersionCount*Cache->Head().VersionSz) << ')' << endl;
    cout << _("Total distinct descriptions: ") << Cache->Head().DescriptionCount << " (" <<
@@ -265,8 +268,8 @@ static bool Stats(CommandLine &CmdL)
 	    stritems.insert(V->VerStr);
 	 if (V->Section != 0)
 	    stritems.insert(V->Section);
-	 stritems.insert(V->SourcePkgName);
-	 stritems.insert(V->SourceVerStr);
+	 // FIXME: Count the source versions
+	 stritems.insert(V.SourceVersion()->VerStr);
 	 for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; ++D)
 	 {
 	    if (D->Version != 0)
@@ -316,18 +319,19 @@ static bool Stats(CommandLine &CmdL)
    unsigned long Total = 0;
 #define APT_CACHESIZE(X,Y) (Cache->Head().X * Cache->Head().Y)
    Total = Slack + Size +
-      APT_CACHESIZE(GroupCount, GroupSz) +
-      APT_CACHESIZE(PackageCount, PackageSz) +
-      APT_CACHESIZE(VersionCount, VersionSz) +
-      APT_CACHESIZE(DescriptionCount, DescriptionSz) +
-      APT_CACHESIZE(DependsCount, DependencySz) +
-      APT_CACHESIZE(DependsDataCount, DependencyDataSz) +
-      APT_CACHESIZE(ReleaseFileCount, ReleaseFileSz) +
-      APT_CACHESIZE(PackageFileCount, PackageFileSz) +
-      APT_CACHESIZE(VerFileCount, VerFileSz) +
-      APT_CACHESIZE(DescFileCount, DescFileSz) +
-      APT_CACHESIZE(ProvidesCount, ProvidesSz) +
-      (2 * Cache->Head().GetHashTableSize() * sizeof(map_id_t));
+	   APT_CACHESIZE(GroupCount, GroupSz) +
+	   APT_CACHESIZE(PackageCount, PackageSz) +
+	   APT_CACHESIZE(VersionCount, VersionSz) +
+	   APT_CACHESIZE(SourceVersionCount, SourceVersionSz) +
+	   APT_CACHESIZE(DescriptionCount, DescriptionSz) +
+	   APT_CACHESIZE(DependsCount, DependencySz) +
+	   APT_CACHESIZE(DependsDataCount, DependencyDataSz) +
+	   APT_CACHESIZE(ReleaseFileCount, ReleaseFileSz) +
+	   APT_CACHESIZE(PackageFileCount, PackageFileSz) +
+	   APT_CACHESIZE(VerFileCount, VerFileSz) +
+	   APT_CACHESIZE(DescFileCount, DescFileSz) +
+	   APT_CACHESIZE(ProvidesCount, ProvidesSz) +
+	   (2 * Cache->Head().GetHashTableSize() * sizeof(map_id_t));
    cout << _("Total space accounted for: ") << SizeToStr(Total) << endl;
 #undef APT_CACHESIZE
 
@@ -464,7 +468,6 @@ static bool DumpAvail(CommandLine &)
    stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false);
 
    // Iterate over all the package files and write them out.
-   char *Buffer = new char[Cache->HeaderP->MaxVerFileSize+10];
    for (pkgCache::VerFile **J = VFList; *J != 0;)
    {
       pkgCache::PkgFileIterator File(*Cache, Cache->PkgFileP + (*J)->File);
@@ -472,40 +475,23 @@ static bool DumpAvail(CommandLine &)
       FileFd PkgF(File.FileName(),FileFd::ReadOnly, FileFd::Extension);
       if (_error->PendingError() == true)
 	 break;
-      
-      /* Write all of the records from this package file, since we
-       	 already did locality sorting we can now just seek through the
-       	 file in read order. We apply 1 more optimization here, since often
-       	 there will be < 1 byte gaps between records (for the \n) we read that
-       	 into the next buffer and offset a bit.. */
-      unsigned long Pos = 0;
+
+      pkgTagFile tagsfile(&PkgF, Cache->HeaderP->MaxVerFileSize);
+      pkgTagSection Tags;
+
       for (; *J != 0; J++)
       {
 	 if (Cache->PkgFileP + (*J)->File != File)
 	    break;
-	 
-	 const pkgCache::VerFile &VF = **J;
 
-	 // Read the record and then write it out again.
-	 unsigned long Jitter = VF.Offset - Pos;
-	 if (Jitter > 8)
-	 {
-	    if (PkgF.Seek(VF.Offset) == false)
-	       break;
-	    Jitter = 0;
-	 }
-	 
-	 if (PkgF.Read(Buffer,VF.Size + Jitter) == false)
+	 const pkgCache::VerFile &VF = **J;
+	 if (not tagsfile.Jump(Tags, VF.Offset))
 	    break;
-	 Buffer[VF.Size + Jitter] = '\n';
 
-	 // See above..
 	 if ((File->Flags & pkgCache::Flag::NotSource) == pkgCache::Flag::NotSource)
 	 {
-	    pkgTagSection Tags;
-	    if (Tags.Scan(Buffer+Jitter,VF.Size+1) == false ||
-		Tags.Write(stdoutfd, NULL, RW) == false ||
-		stdoutfd.Write("\n", 1) == false)
+	    if (not Tags.Write(stdoutfd, NULL, RW) ||
+		  not stdoutfd.Write("\n", 1))
 	    {
 	       _error->Error("Internal Error, Unable to parse a package record");
 	       break;
@@ -513,18 +499,24 @@ static bool DumpAvail(CommandLine &)
 	 }
 	 else
 	 {
-	    if (stdoutfd.Write(Buffer + Jitter, VF.Size + 1) == false)
+	    char const *Start, *Stop;
+	    Tags.GetSection(Start, Stop);
+	    for (; Start < Stop; --Stop)
+	       if (std::string_view{"\n\r"}.find(*(Stop - 1)) == std::string_view::npos)
+		  break;
+	    if (not stdoutfd.Write(Start, Stop - Start) ||
+		not stdoutfd.Write("\n\n", 2))
+	    {
+	       _error->Error("Internal Error, Unable to parse a package record");
 	       break;
+	    }
 	 }
-
-	 Pos = VF.Offset + VF.Size;
       }
 
-      if (_error->PendingError() == true)
+      if (_error->PendingError())
          break;
    }
 
-   delete [] Buffer;
    delete [] VFList;
    return !_error->PendingError();
 }
@@ -745,7 +737,7 @@ static bool XVcg(CommandLine &CmdL)
 // ---------------------------------------------------------------------
 /* Dotty is the graphvis program for generating graphs. It is a fairly
    simple queuing algorithm that just writes dependencies and nodes. 
-   http://www.research.att.com/sw/tools/graphviz/ */
+   https://graphviz.org/ */
 static bool Dotty(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
diff --git a/cmdline/apt-cdrom.cc b/cmdline/apt-cdrom.cc
index 94202d9..13d8753 100644
--- a/cmdline/apt-cdrom.cc
+++ b/cmdline/apt-cdrom.cc
@@ -44,12 +44,12 @@ protected:
    OpTextProgress Progress;
    void Prompt(const char *Text);
    string PromptLine(const char *Text);
-   bool AskCdromName(string &name) APT_OVERRIDE;
+   bool AskCdromName(string &name) override;
 
 public:
-   virtual void Update(string text, int current) APT_OVERRIDE;
-   virtual bool ChangeCdrom() APT_OVERRIDE;
-   virtual OpProgress* GetOpProgress() APT_OVERRIDE;
+   void Update(string text, int current) override;
+   bool ChangeCdrom() override;
+   OpProgress* GetOpProgress() override;
 };
 
 void pkgCdromTextStatus::Prompt(const char *Text)
diff --git a/cmdline/apt-config.cc b/cmdline/apt-config.cc
index 8ad7cac..6b1e385 100644
--- a/cmdline/apt-config.cc
+++ b/cmdline/apt-config.cc
@@ -25,11 +25,11 @@
 #include <apt-pkg/pkgsystem.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstring>
 #include <iostream>
 #include <map>
 #include <string>
 #include <vector>
-#include <string.h>
 
 #include <apt-private/private-cmndline.h>
 #include <apt-private/private-main.h>
diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc
index ab44b9f..05142d9 100644
--- a/cmdline/apt-dump-solver.cc
+++ b/cmdline/apt-dump-solver.cc
@@ -17,6 +17,7 @@
 
 #include <apt-private/private-cmndline.h>
 
+#include <array>
 #include <cstdio>
 #include <iostream>
 #include <memory>
@@ -25,7 +26,7 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
-#include <string.h>
+#include <cstring>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -134,10 +135,10 @@ int main(int argc,const char *argv[])					/*{{{*/
       return WriteError("ERR_READ_ERROR", out, stdoutfd, Solver);
    }
 
-   std::unique_ptr<char[]> Buf(new char[APT_BUFFER_SIZE]);
+   std::array<char, APT_BUFFER_SIZE> Buf;
    unsigned long long ToRead = 0;
    do {
-      if (input.Read(Buf.get(), APT_BUFFER_SIZE, &ToRead) == false)
+      if (input.Read(Buf.data(), Buf.size(), &ToRead) == false)
       {
 	 std::ostringstream out;
 	 out << "Writing EDSP solver input to file '" << filename << "' failed as reading from stdin failed!\n";
@@ -145,9 +146,9 @@ int main(int argc,const char *argv[])					/*{{{*/
       }
       if (ToRead == 0)
 	 break;
-      if (forward.IsOpen() && forward.Failed() == false && forward.Write(Buf.get(),ToRead) == false)
+      if (forward.IsOpen() && forward.Failed() == false && forward.Write(Buf.data(),ToRead) == false)
 	 forward.Close();
-      if (dump.IsOpen() && dump.Failed() == false && dump.Write(Buf.get(),ToRead) == false)
+      if (dump.IsOpen() && dump.Failed() == false && dump.Write(Buf.data(),ToRead) == false)
 	 dump.Close();
    } while (true);
    input.Close();
diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc
index 88a2041..1354928 100644
--- a/cmdline/apt-extracttemplates.cc
+++ b/cmdline/apt-extracttemplates.cc
@@ -1,14 +1,14 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    APT Extract Templates - Program to extract debconf config and template
                            files
 
-   This is a simple program to extract config and template information 
+   This is a simple program to extract config and template information
    from Debian packages. It can be used to speed up the preconfiguration
    process for debconf-enabled packages
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -35,10 +35,10 @@
 #include <apt-private/private-cmndline.h>
 #include <apt-private/private-main.h>
 
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 
 #include "apt-extracttemplates.h"
@@ -75,7 +75,7 @@ DebFile::~DebFile()
 string DebFile::GetInstalledVer(const string &package)
 {
 	pkgCache::PkgIterator Pkg = Cache->FindPkg(package);
-	if (Pkg.end() == false) 
+	if (Pkg.end() == false)
 	{
 		pkgCache::VerIterator V = Pkg.CurrentVer();
 		if (V.end() == false)
@@ -120,8 +120,8 @@ bool DebFile::DoItem(Item &I, int &Fd)
 		Config = new char[I.Size+1];
 		Config[I.Size] = 0;
 		Which = IsConfig;
-		Fd = -2; 
-	} 
+		Fd = -2;
+	}
 	else if (strcmp(I.Name, "templates") == 0)
 	{
 		delete [] Template;
@@ -129,8 +129,8 @@ bool DebFile::DoItem(Item &I, int &Fd)
 		Template[I.Size] = 0;
 		Which = IsTemplate;
 		Fd = -2;
-	} 
-	else 
+	}
+	else
 	{
 		// Ignore it
 		Fd = -1;
@@ -171,7 +171,7 @@ bool DebFile::ParseInfo()
 	if (Section.Scan(Control, ControlLen) == false)
 		return false;
 
-	Package = Section.Find(pkgTagSection::Key::Package).to_string();
+	Package = Section.Find(pkgTagSection::Key::Package);
 	Version = GetInstalledVer(Package);
 
 	const char *Start, *Stop;
@@ -210,7 +210,7 @@ bool DebFile::ParseInfo()
 			if (Start == Stop) break;
 		}
 	}
-	
+
 	return true;
 }
 									/*}}}*/
@@ -249,7 +249,7 @@ static void WriteConfig(const DebFile &file)
 
 	if (templatefile.empty() == true || configscript.empty() == true)
 		return;
-	cout << file.Package << " " << file.Version << " " 
+	cout << file.Package << " " << file.Version << " "
 	     << templatefile << " " << configscript << endl;
 }
 									/*}}}*/
@@ -257,7 +257,7 @@ static void WriteConfig(const DebFile &file)
 // ---------------------------------------------------------------------
 /* */
 static bool Go(CommandLine &CmdL)
-{	
+{
 	// Initialize the apt cache
 	MMap *Map = 0;
 	pkgSourceList List;
@@ -303,17 +303,17 @@ static bool Go(CommandLine &CmdL)
 			if (file.PreDepVer != "" &&
 			    DebFile::Cache->VS->CheckDep(debconfver.c_str(),
 			                file.PreDepOp,file.PreDepVer.c_str()
-							 ) == false) 
+							 ) == false)
 				continue;
 
 			WriteConfig(file);
 		}
 	}
-	
+
 
 	delete Map;
 	delete DebFile::Cache;
-	
+
 	return !_error->PendingError();
 }
 									/*}}}*/
diff --git a/cmdline/apt-extracttemplates.h b/cmdline/apt-extracttemplates.h
index bbd926e..e0451ec 100644
--- a/cmdline/apt-extracttemplates.h
+++ b/cmdline/apt-extracttemplates.h
@@ -24,10 +24,10 @@ class DebFile : public pkgDirStream
 	
 public:
 	explicit DebFile(const char *FileName);
-	~DebFile();
-	bool DoItem(Item &I, int &fd) APT_OVERRIDE;
-	bool Process(pkgDirStream::Item &I, const unsigned char *data, 
-		unsigned long long size, unsigned long long pos) APT_OVERRIDE;
+	~DebFile() override;
+	bool DoItem(Item &I, int &fd) override;
+	bool Process(pkgDirStream::Item &I, const unsigned char *data,
+		unsigned long long size, unsigned long long pos) override;
 
 	bool Go();
 	bool ParseInfo();
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 95c4a85..2828ad6 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -67,14 +67,14 @@
 #include <apt-private/private-upgrade.h>
 #include <apt-private/private-utils.h>
 
-#include <errno.h>
+#include <cerrno>
+#include <csignal>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <grp.h>
 #include <pwd.h>
-#include <signal.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -424,6 +424,8 @@ static std::vector<aptDispatchWithHelp> GetCommands()			/*{{{*/
       {"clean", &DoClean, _("Erase downloaded archive files")},
       {"autoclean", &DoAutoClean, _("Erase old downloaded archive files")},
       {"auto-clean", &DoAutoClean, nullptr},
+      {"distclean", &DoDistClean, nullptr},
+      {"dist-clean", &DoDistClean, nullptr},
       {"check", &DoCheck, _("Verify that there are no broken dependencies")},
       {"source", &DoSource, _("Download source archives")},
       {"download", &DoDownload, _("Download the binary package into the current directory")},
diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc
index 85795e0..4404259 100644
--- a/cmdline/apt-helper.cc
+++ b/cmdline/apt-helper.cc
@@ -30,7 +30,7 @@
 #include <string>
 #include <vector>
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -201,7 +201,37 @@ static bool DoCatFile(CommandLine &CmdL)				/*{{{*/
    return true;
 }
 									/*}}}*/
+static bool DoHashFile(CommandLine &CmdL) /*{{{*/
+{
+   FileFd fd;
+
+   if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+      return false;
+   for (size_t i = 1; CmdL.FileList[i] != NULL; ++i)
+   {
+      std::string const name = CmdL.FileList[i];
+      Hashes hashes;
+
+      if (name != "-")
+      {
+	 if (fd.Open(name, FileFd::ReadOnly, FileFd::Extension) == false)
+	    return false;
+      }
+      else
+      {
+	 if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+	    return false;
+      }
+      if (hashes.AddFD(fd) == false)
+	 return false;
 
+      for (auto hs : hashes.GetHashStringList())
+	 std::cout << hs.toStr() << std::endl;
+      std::cout << std::endl;
+   }
+   return true;
+}
+									/*}}}*/
 static pid_t ExecuteProcess(const char *Args[])				/*{{{*/
 {
    pid_t pid = ExecFork();
@@ -310,16 +340,17 @@ static bool ShowHelp(CommandLine &)					/*{{{*/
 static std::vector<aptDispatchWithHelp> GetCommands()			/*{{{*/
 {
    return {
-       {"download-file", &DoDownloadFile, _("download the given uri to the target-path")},
-       {"srv-lookup", &DoSrvLookup, _("lookup a SRV record (e.g. _http._tcp.ftp.debian.org)")},
-       {"cat-file", &DoCatFile, _("concatenate files, with automatic decompression")},
-       {"auto-detect-proxy", &DoAutoDetectProxy, _("detect proxy using apt.conf")},
-       {"wait-online", &DoWaitOnline, _("wait for system to be online")},
-       {"drop-privs", &DropPrivsAndRun, _("drop privileges before running given command")},
-       {"analyze-pattern", &AnalyzePattern, _("analyse a pattern")},
-       {"analyse-pattern", &AnalyzePattern, nullptr},
-       {"quote-string", &DoQuoteString, nullptr},
-       {nullptr, nullptr, nullptr}};
+      {"download-file", &DoDownloadFile, _("download the given uri to the target-path")},
+      {"srv-lookup", &DoSrvLookup, _("lookup a SRV record (e.g. _http._tcp.ftp.debian.org)")},
+      {"cat-file", &DoCatFile, _("concatenate files, with automatic decompression")},
+      {"hash-file", &DoHashFile, _("hash file")},
+      {"auto-detect-proxy", &DoAutoDetectProxy, _("detect proxy using apt.conf")},
+      {"wait-online", &DoWaitOnline, _("wait for system to be online")},
+      {"drop-privs", &DropPrivsAndRun, _("drop privileges before running given command")},
+      {"analyze-pattern", &AnalyzePattern, _("analyse a pattern")},
+      {"analyse-pattern", &AnalyzePattern, nullptr},
+      {"quote-string", &DoQuoteString, nullptr},
+      {nullptr, nullptr, nullptr}};
 }
 									/*}}}*/
 int main(int argc,const char *argv[])					/*{{{*/
diff --git a/cmdline/apt-internal-planner.cc b/cmdline/apt-internal-planner.cc
index be9de4e..b850ed6 100644
--- a/cmdline/apt-internal-planner.cc
+++ b/cmdline/apt-internal-planner.cc
@@ -29,12 +29,12 @@
 #include <apt-private/private-output.h>
 
 #include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <list>
 #include <sstream>
 #include <string>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -51,7 +51,7 @@ static bool ShowHelp(CommandLine &)					/*{{{*/
 	return true;
 }
 									/*}}}*/
-APT_NORETURN static void DIE(std::string const &message) {		/*{{{*/
+[[noreturn]] static void DIE(std::string const &message) {		/*{{{*/
 	std::cerr << "ERROR: " << message << std::endl;
 	_error->DumpErrors(std::cerr);
 	exit(EXIT_FAILURE);
@@ -68,17 +68,17 @@ class PMOutput: public pkgPackageManager				/*{{{*/
    bool const Debug;
 
 protected:
-   virtual bool Install(PkgIterator Pkg,std::string) APT_OVERRIDE
+   bool Install(PkgIterator Pkg,std::string /*filename*/) override
    {
       //std::cerr << "INSTALL: " << APT::PrettyPkg(&Cache, Pkg) << std::endl;
       return EDSP::WriteSolutionStanza(output, "Unpack", Cache[Pkg].InstVerIter(Cache));
    }
-   virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE
+   bool Configure(PkgIterator Pkg) override
    {
       //std::cerr << "CONFIGURE: " << APT::PrettyPkg(&Cache, Pkg) << " " << std::endl;
       return EDSP::WriteSolutionStanza(output, "Configure", Cache[Pkg].InstVerIter(Cache));
    }
-   virtual bool Remove(PkgIterator Pkg,bool) APT_OVERRIDE
+   bool Remove(PkgIterator Pkg, bool /*Purge*/) override
    {
       //std::cerr << "REMOVE: " << APT::PrettyPkg(&Cache, Pkg) << " " << std::endl;
       return EDSP::WriteSolutionStanza(output, "Remove", Pkg.CurrentVer());
diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc
index 23af6da..ceedd96 100644
--- a/cmdline/apt-internal-solver.cc
+++ b/cmdline/apt-internal-solver.cc
@@ -29,12 +29,12 @@
 #include <apt-private/private-output.h>
 
 #include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <list>
 #include <sstream>
 #include <string>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -51,7 +51,7 @@ static bool ShowHelp(CommandLine &)					/*{{{*/
 	return true;
 }
 									/*}}}*/
-APT_NORETURN static void DIE(std::string const &message) {		/*{{{*/
+[[noreturn]] static void DIE(std::string const &message) {		/*{{{*/
 	std::cerr << "ERROR: " << message << std::endl;
 	_error->DumpErrors(std::cerr);
 	exit(EXIT_FAILURE);
@@ -119,7 +119,10 @@ int main(int argc,const char *argv[])					/*{{{*/
 		_config->Set("Debug::EDSP::WriteSolution", true);
 
 	_config->Set("APT::System", "Debian APT solver interface");
-	_config->Set("APT::Solver", "internal");
+	if (strcmp(basename(argv[0]), "solver3") == 0)
+	   _config->Set("APT::Solver", "3.0");
+	else if (_config->Find("APT::Solver") != "3.0")
+	   _config->Set("APT::Solver", "internal");
 	_config->Set("edsp::scenario", "/nonexistent/stdin");
 	_config->Clear("Dir::Log");
 	FileFd output;
diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in
deleted file mode 100644
index 80b0c2a..0000000
--- a/cmdline/apt-key.in
+++ /dev/null
@@ -1,831 +0,0 @@
-#!/bin/sh
-
-set -e
-unset GREP_OPTIONS GPGHOMEDIR CURRENTTRAP
-export IFS="$(printf "\n\b")"
-
-MASTER_KEYRING='&keyring-master-filename;'
-eval "$(apt-config shell MASTER_KEYRING APT::Key::MasterKeyring)"
-ARCHIVE_KEYRING='&keyring-filename;'
-eval "$(apt-config shell ARCHIVE_KEYRING APT::Key::ArchiveKeyring)"
-REMOVED_KEYS='&keyring-removed-filename;'
-eval "$(apt-config shell REMOVED_KEYS APT::Key::RemovedKeys)"
-ARCHIVE_KEYRING_URI='&keyring-uri;'
-eval "$(apt-config shell ARCHIVE_KEYRING_URI APT::Key::ArchiveKeyringURI)"
-
-aptkey_echo() { echo "$@"; }
-
-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 "$@")"
-
-apt_warn() {
-    if [ -z "$GPGHOMEDIR" ]; then
-	echo >&2 'W:' "$@"
-    else
-	echo 'W:' "$@" > "${GPGHOMEDIR}/aptwarnings.log"
-    fi
-    if [ -n "$GPGSTATUSFD" ]; then
-	echo >&${GPGSTATUSFD} '[APTKEY:] WARNING' "$@"
-    fi
-}
-apt_error() {
-    if [ -z "$GPGHOMEDIR" ]; then
-	echo >&2 'E:' "$@"
-    else
-	echo 'E:' "$@" > "${GPGHOMEDIR}/aptwarnings.log"
-    fi
-    if [ -n "$GPGSTATUSFD" ]; then
-	echo >&${GPGSTATUSFD} '[APTKEY:] ERROR' "$@"
-    fi
-}
-
-cleanup_gpg_home() {
-    if [ -z "$GPGHOMEDIR" ]; then return; fi
-    if [ -s "$GPGHOMEDIR/aptwarnings.log" ]; then
-	cat >&2 "$GPGHOMEDIR/aptwarnings.log"
-    fi
-    if command_available 'gpgconf'; then
-	GNUPGHOME="${GPGHOMEDIR}" gpgconf --kill all >/dev/null 2>&1 || true
-    fi
-    rm -rf "$GPGHOMEDIR"
-}
-
-# gpg needs (in different versions more or less) files to function correctly,
-# so we give it its own homedir and generate some valid content for it later on
-create_gpg_home() {
-    # for cases in which we want to cache a homedir due to expensive setup
-    if [ -n "$GPGHOMEDIR" ]; then
-	return
-    fi
-    if [ -n "$TMPDIR" ]; then
-	# tmpdir is a directory and current user has rwx access to it
-	# same tests as in apt-pkg/contrib/fileutl.cc GetTempDir()
-	if [ ! -d "$TMPDIR" ] || [ ! -r "$TMPDIR" ] || [ ! -w "$TMPDIR" ] || [ ! -x "$TMPDIR" ]; then
-	    unset TMPDIR
-	fi
-    fi
-    GPGHOMEDIR="$(mktemp --directory --tmpdir 'apt-key-gpghome.XXXXXXXXXX')"
-    CURRENTTRAP="${CURRENTTRAP} cleanup_gpg_home;"
-    trap "${CURRENTTRAP}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
-    if [ -z "$GPGHOMEDIR" ]; then
-	apt_error "Could not create temporary gpg home directory in $TMPDIR (wrong permissions?)"
-	exit 28
-    fi
-    chmod 700 "$GPGHOMEDIR"
-}
-
-requires_root() {
-	if [ "$(id -u)" -ne 0 ]; then
-		apt_error "This command can only be used by root."
-		exit 1
-	fi
-}
-
-command_available() {
-    if [ -x "$1" ]; then return 0; fi
-    command -v "$1" >/dev/null # required by policy, see #747320
-}
-
-escape_shell() {
-    echo "$@" | sed -e "s#'#'\"'\"'#g"
-}
-
-get_fingerprints_of_keyring() {
-    aptkey_execute "$GPG_SH" --keyring "$1" --with-colons --fingerprint | while read publine; do
-	# search for a public key
-	if [ "${publine%%:*}" != 'pub' ]; then continue; fi
-	# search for the associated fingerprint (should be the very next line)
-	while read fprline; do
-	   if [ "${fprline%%:*}" = 'sub' ]; then break; # should never happen
-	   elif [ "${fprline%%:*}" != 'fpr' ]; then continue; fi
-	   echo "$fprline" | cut -d':' -f 10
-	done
-	# order in the keyring shouldn't be important
-    done | sort
-}
-
-add_keys_with_verify_against_master_keyring() {
-    ADD_KEYRING="$1"
-    MASTER="$2"
-
-    if [ ! -f "$ADD_KEYRING" ]; then
-	apt_error "Keyring '$ADD_KEYRING' to be added not found"
-	return
-    fi
-    if [ ! -f "$MASTER" ]; then
-	apt_error "Master-Keyring '$MASTER' not found"
-	return
-    fi
-
-    # when adding new keys, make sure that the archive-master-keyring
-    # is honored. so:
-    #   all keys that are exported must have a valid signature
-    #   from a key in the $distro-master-keyring
-    add_keys="$(get_fingerprints_of_keyring "$ADD_KEYRING")"
-    all_add_keys="$(aptkey_execute "$GPG_SH" --keyring "$ADD_KEYRING" --with-colons --list-keys | grep ^[ps]ub | cut -d: -f5)"
-    master_keys="$(aptkey_execute "$GPG_SH" --keyring "$MASTER" --with-colons --list-keys | grep ^pub | cut -d: -f5)"
-
-    # ensure there are no colisions LP: #857472
-    for all_add_key in $all_add_keys; do
-	for master_key in $master_keys; do
-            if [ "$all_add_key" = "$master_key" ]; then
-                echo >&2 "Keyid collision for '$all_add_key' detected, operation aborted"
-                return 1
-            fi
-        done
-    done
-
-    for add_key in $add_keys; do
-        # export the add keyring one-by-one
-	local TMP_KEYRING="${GPGHOMEDIR}/tmp-keyring.gpg"
-	aptkey_execute "$GPG_SH" --batch --yes --keyring "$ADD_KEYRING" --output "$TMP_KEYRING" --export "$add_key"
-	if ! aptkey_execute "$GPG_SH" --batch --yes --keyring "$TMP_KEYRING" --import "$MASTER" > "${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
-	    cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
-	    false
-	fi
-	# check if signed with the master key and only add in this case
-	ADDED=0
-	for master_key in $master_keys; do
-	    if aptkey_execute "$GPG_SH" --keyring "$TMP_KEYRING" --check-sigs --with-colons "$add_key" \
-	       | grep '^sig:!:' | cut -d: -f5 | grep -q "$master_key"; then
-		aptkey_execute "$GPG_SH" --batch --yes --keyring "$ADD_KEYRING" --export "$add_key" \
-		   | aptkey_execute "$GPG" --batch --yes --import
-		ADDED=1
-	    fi
-	done
-	if [ $ADDED = 0 ]; then
-	    echo >&2 "Key '$add_key' not added. It is not signed with a master key"
-	fi
-	rm -f "${TMP_KEYRING}"
-    done
-}
-
-# update the current archive signing keyring from a network URI
-# the archive-keyring keys needs to be signed with the master key
-# (otherwise it does not make sense from a security POV)
-net_update() {
-    local APT_DIR='/'
-    eval $(apt-config shell APT_DIR Dir)
-
-    # Disabled for now as code is insecure (LP: #1013639 (and 857472, 1013128))
-    APT_KEY_NET_UPDATE_ENABLED=""
-    eval $(apt-config shell APT_KEY_NET_UPDATE_ENABLED APT::Key::Net-Update-Enabled)
-    if [ -z "$APT_KEY_NET_UPDATE_ENABLED" ]; then
-        exit 1
-    fi
-
-    if [ -z "$ARCHIVE_KEYRING_URI" ]; then
-	apt_error 'Your distribution is not supported in net-update as no uri for the archive-keyring is set'
-	exit 1
-    fi
-    # in theory we would need to depend on wget for this, but this feature
-    # isn't usable in debian anyway as we have no keyring uri nor a master key
-    if ! command_available 'wget'; then
-	apt_error 'wget is required for a network-based update, but it is not installed'
-	exit 1
-    fi
-    if [ ! -d "${APT_DIR}/var/lib/apt/keyrings" ]; then
-	mkdir -p "${APT_DIR}/var/lib/apt/keyrings"
-    fi
-    keyring="${APT_DIR}/var/lib/apt/keyrings/$(basename "$ARCHIVE_KEYRING_URI")"
-    old_mtime=0
-    if [ -e $keyring ]; then
-	old_mtime=$(stat -c %Y "$keyring")
-    fi
-    (cd  "${APT_DIR}/var/lib/apt/keyrings"; wget --timeout=90 -q -N "$ARCHIVE_KEYRING_URI")
-    if [ ! -e "$keyring" ]; then
-	return
-    fi
-    new_mtime=$(stat -c %Y "$keyring")
-    if [ $new_mtime -ne $old_mtime ]; then
-	aptkey_echo "Checking for new archive signing keys now"
-	add_keys_with_verify_against_master_keyring "$keyring" "$MASTER_KEYRING"
-    fi
-}
-
-update() {
-    if [ -z "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
-	echo >&2 "Warning: 'apt-key update' is deprecated and should not be used anymore!"
-	if [ -z "$ARCHIVE_KEYRING" ]; then
-	    echo >&2 "Note: In your distribution this command is a no-op and can therefore be removed safely."
-	    exit 0
-	fi
-    fi
-    if [ ! -f "$ARCHIVE_KEYRING" ]; then
-	apt_error "Can't find the archive-keyring (Is the &keyring-package; package installed?)"
-	exit 1
-    fi
-
-    # add new keys from the package;
-
-    # we do not use add_keys_with_verify_against_master_keyring here,
-    # because "update" is run on regular package updates.  A
-    # attacker might as well replace the master-archive-keyring file
-    # in the package and add his own keys. so this check wouldn't
-    # add any security. we *need* this check on net-update though
-    import_keyring_into_keyring "$ARCHIVE_KEYRING" '' && cat "${GPGHOMEDIR}/gpgoutput.log"
-
-    if [ -r "$REMOVED_KEYS" ]; then
-	# remove no-longer supported/used keys
-	get_fingerprints_of_keyring "$(dearmor_filename "$REMOVED_KEYS")" | while read key; do
-	    foreach_keyring_do 'remove_key_from_keyring' "$key"
-	done
-    else
-	apt_warn "Removed keys keyring '$REMOVED_KEYS' missing or not readable"
-    fi
-}
-
-remove_key_from_keyring() {
-    local KEYRINGFILE="$1"
-    shift
-    # non-existent keyrings have by definition no keys
-    if [ ! -e "$KEYRINGFILE" ]; then
-       return
-    fi
-
-    local FINGERPRINTS="${GPGHOMEDIR}/keyringfile.keylst"
-    local DEARMOR="$(dearmor_filename "$KEYRINGFILE")"
-    get_fingerprints_of_keyring "$DEARMOR" > "$FINGERPRINTS"
-
-    for KEY in "$@"; do
-	# strip leading 0x, if present:
-	KEY="$(echo "${KEY#0x}" | tr -d ' ')"
-
-	# check if the key is in this keyring
-	if ! grep -iq "^[0-9A-F]*${KEY}$" "$FINGERPRINTS"; then
-	    continue
-	fi
-	if [ ! -w "$KEYRINGFILE" ]; then
-	    apt_warn "Key ${KEY} is in keyring ${KEYRINGFILE}, but can't be removed as it is read only."
-	    continue
-	fi
-	# check if it is the only key in the keyring and if so remove the keyring altogether
-	if [ '1' = "$(uniq "$FINGERPRINTS" | wc -l)" ]; then
-	    mv -f "$KEYRINGFILE" "${KEYRINGFILE}~" # behave like gpg
-	    return
-	fi
-	# we can't just modify pointed to files as these might be in /usr or something
-	local REALTARGET
-	if [ -L "$DEARMOR" ]; then
-	    REALTARGET="$(readlink -f "$DEARMOR")"
-	    mv -f "$DEARMOR" "${DEARMOR}.dpkg-tmp"
-	    cp -a "$REALTARGET" "$DEARMOR"
-	fi
-	# delete the key from the keyring
-	aptkey_execute "$GPG_SH" --keyring "$DEARMOR" --batch --delete-keys --yes "$KEY"
-	if [ -n "$REALTARGET" ]; then
-	    # the real backup is the old link, not the copy we made
-	    mv -f "${DEARMOR}.dpkg-tmp" "${DEARMOR}~"
-	fi
-	if [ "$DEARMOR" != "$KEYRINGFILE" ]; then
-	    mv -f "$KEYRINGFILE" "${KEYRINGFILE}~"
-	    create_new_keyring "$KEYRINGFILE"
-	    aptkey_execute "$GPG_SH" --keyring "$DEARMOR" --armor --export > "$KEYRINGFILE"
-	fi
-	get_fingerprints_of_keyring "$DEARMOR" > "$FINGERPRINTS"
-    done
-}
-
-accessible_file_exists() {
-   if ! test -s "$1"; then
-      return 1
-   fi
-   if test -r "$1"; then
-      return 0
-   fi
-   apt_warn "The key(s) in the keyring $1 are ignored as the file is not readable by user '$USER' executing apt-key."
-   return 1
-}
-
-is_supported_keyring() {
-    # empty files are always supported
-    if ! test -s "$1"; then
-	return 0
-    fi
-    local FILEEXT="${1##*.}"
-    if [ "$FILEEXT" = 'gpg' ]; then
-	# 0x98, 0x99 and 0xC6 via octal as hex isn't supported by dashs printf
-	if printf '\231' | cmp -s -n 1 - "$1"; then
-	    true
-	elif printf '\230' | cmp -s -n 1 - "$1"; then
-	    true
-	elif printf '\306' | cmp -s -n 1 - "$1"; then
-	    true
-	else
-	    apt_warn "The key(s) in the keyring $1 are ignored as the file has an unsupported filetype."
-	    return 1
-	fi
-    elif [ "$FILEEXT" = 'asc' ]; then
-	true #dearmor_filename will deal with them
-    else
-	# most callers ignore unsupported extensions silently
-	apt_warn "The key(s) in the keyring $1 are ignored as the file has an unsupported filename extension."
-	return 1
-    fi
-    return 0
-}
-
-foreach_keyring_do() {
-   local ACTION="$1"
-   shift
-   # if a --keyring was given, just work on this one
-   if [ -n "$FORCED_KEYRING" ]; then
-	$ACTION "$FORCED_KEYRING" "$@"
-   else
-	# otherwise all known keyrings are up for inspection
-	if accessible_file_exists "$TRUSTEDFILE" && is_supported_keyring "$TRUSTEDFILE"; then
-	    $ACTION "$TRUSTEDFILE" "$@"
-	fi
-	local TRUSTEDPARTS="/etc/apt/trusted.gpg.d"
-	eval "$(apt-config shell TRUSTEDPARTS Dir::Etc::TrustedParts/d)"
-	if [ -d "$TRUSTEDPARTS" ]; then
-	    TRUSTEDPARTS="$(readlink -f "$TRUSTEDPARTS")"
-	    local TRUSTEDPARTSLIST="$(cd /; find "$TRUSTEDPARTS" -mindepth 1 -maxdepth 1 \( -name '*.gpg' -o -name '*.asc' \))"
-	    for trusted in $(echo "$TRUSTEDPARTSLIST" | sort); do
-		if accessible_file_exists "$trusted" && is_supported_keyring "$trusted"; then
-		    $ACTION "$trusted" "$@"
-		fi
-	    done
-	fi
-   fi
-}
-
-list_keys_in_keyring() {
-    local KEYRINGFILE="$1"
-    shift
-    # fingerprint and co will fail if key isn't in this keyring
-    aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$KEYRINGFILE")" "$@" > "${GPGHOMEDIR}/gpgoutput.log" 2> "${GPGHOMEDIR}/gpgoutput.err" || true
-    if [ ! -s "${GPGHOMEDIR}/gpgoutput.log" ]; then
-	return
-    fi
-    # we fake gpg header here to refer to the real asc file rather than a temp file
-    if [ "${KEYRINGFILE##*.}" = 'asc' ]; then
-	if expr match "$(sed -n '2p' "${GPGHOMEDIR}/gpgoutput.log")" '^-\+$' >/dev/null 2>&1; then
-	    echo "$KEYRINGFILE"
-	    echo "$KEYRINGFILE" | sed 's#[^-]#-#g'
-	    sed '1,2d' "${GPGHOMEDIR}/gpgoutput.log" || true
-	else
-	    cat "${GPGHOMEDIR}/gpgoutput.log"
-	fi
-    else
-	cat "${GPGHOMEDIR}/gpgoutput.log"
-    fi
-    if [ -s "${GPGHOMEDIR}/gpgoutput.err" ]; then
-	cat >&2 "${GPGHOMEDIR}/gpgoutput.err"
-    fi
-}
-
-export_key_from_to() {
-    local FROM="$1"
-    local TO="$2"
-    shift 2
-    if ! aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$FROM")" --export "$@" > "$TO" 2> "${GPGHOMEDIR}/gpgoutput.log"; then
-	cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
-	false
-    else
-	chmod 0644 -- "$TO"
-    fi
-}
-
-import_keyring_into_keyring() {
-    local FROM="${1:-${GPGHOMEDIR}/pubring.gpg}"
-    local TO="${2:-${GPGHOMEDIR}/pubring.gpg}"
-    shift 2
-    rm -f "${GPGHOMEDIR}/gpgoutput.log"
-    # the idea is simple: We take keys from one keyring and copy it to another
-    # we do this with so many checks in between to ensure that WE control the
-    # creation, so we know that the (potentially) created $TO keyring is a
-    # simple keyring rather than a keybox as gpg2 would create it which in turn
-    # can't be read by gpgv.
-    # BEWARE: This is designed more in the way to work with the current
-    # callers, than to have a well defined it would be easy to add new callers to.
-    if [ ! -s "$TO" ]; then
-	if [ -s "$FROM" ]; then
-	    if [ -z "$2" ]; then
-		local OPTS
-		if [ "${TO##*.}" = 'asc' ]; then
-		    OPTS='--armor'
-		fi
-		export_key_from_to "$(dearmor_filename "$FROM")" "$TO" $OPTS ${1:+"$1"}
-	    else
-		create_new_keyring "$TO"
-	    fi
-	else
-	    create_new_keyring "$TO"
-	fi
-    elif [ -s "$FROM" ]; then
-	local EXPORTLIMIT="$1"
-	if [ -n "$1$2" ]; then shift; fi
-	local DEARMORTO="$(dearmor_filename "$TO")"
-	if ! aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$FROM")" --export ${EXPORTLIMIT:+"$EXPORTLIMIT"} \
-	   | aptkey_execute "$GPG_SH" --keyring "$DEARMORTO" --batch --import "$@" > "${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
-	    cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
-	    false
-	fi
-	if [ "$DEARMORTO" != "$TO" ]; then
-	    export_key_from_to "$DEARMORTO" "${DEARMORTO}.asc" --armor
-	    if ! cmp -s "$TO" "${DEARMORTO}.asc" 2>/dev/null; then
-		cp -a "$TO" "${TO}~"
-		mv -f "${DEARMORTO}.asc" "$TO"
-	    fi
-	fi
-    fi
-}
-
-dearmor_keyring() {
-    # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=831409#67
-    # The awk script is more complex through to skip surrounding garbage and
-    # to support multiple keys in one file (old gpgs generate version headers
-    # which get printed with the original and hence result in garbage input for base64
-    awk '/^-----BEGIN/{ x = 1; }
-/^$/{ if (x == 1) { x = 2; }; }
-/^[^=-]/{ if (x == 2) { print $0; }; }
-/^-----END/{ x = 0; }' | base64 -d
-}
-dearmor_filename() {
-    if [ "${1##*.}" = 'asc' ]; then
-	local trusted="${GPGHOMEDIR}/${1##*/}.gpg"
-	if [ -s "$1" ]; then
-	    dearmor_keyring < "$1" > "$trusted"
-	fi
-	echo "$trusted"
-    elif [ "${1##*.}" = 'gpg' ]; then
-	echo "$1"
-    elif [ "$(head -n 1 "$1" 2>/dev/null)" = '-----BEGIN PGP PUBLIC KEY BLOCK-----' ]; then
-	local trusted="${GPGHOMEDIR}/${1##*/}.gpg"
-	dearmor_keyring < "$1" > "$trusted"
-	echo "$trusted"
-    else
-	echo "$1"
-    fi
-}
-catfile() {
-    cat "$(dearmor_filename "$1")" >> "$2"
-}
-
-merge_all_trusted_keyrings_into_pubring() {
-    # does the same as:
-    # foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg"
-    # but without using gpg, just cat and find
-    local PUBRING="$(readlink -f "${GPGHOMEDIR}")/pubring.gpg"
-    rm -f "$PUBRING"
-    touch "$PUBRING"
-    foreach_keyring_do 'catfile' "$PUBRING"
-}
-
-import_keys_from_keyring() {
-    import_keyring_into_keyring "$1" "$2"
-}
-
-merge_keys_into_keyrings() {
-    import_keyring_into_keyring "$2" "$1" '' --import-options 'merge-only'
-}
-
-merge_back_changes() {
-    if [ -n "$FORCED_KEYRING" ]; then
-	# if the keyring was forced merge is already done
-	if [ "$FORCED_KEYRING" != "$TRUSTEDFILE" ]; then
-	    mv -f "$FORCED_KEYRING" "${FORCED_KEYRING}~"
-	    export_key_from_to "$TRUSTEDFILE" "$FORCED_KEYRING" --armor
-	fi
-	return
-    fi
-    if [ -s "${GPGHOMEDIR}/pubring.gpg" ]; then
-	# merge all updated keys
-	foreach_keyring_do 'merge_keys_into_keyrings' "${GPGHOMEDIR}/pubring.gpg"
-    fi
-    # look for keys which were added or removed
-    get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.orig.gpg" > "${GPGHOMEDIR}/pubring.orig.keylst"
-    get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.gpg" > "${GPGHOMEDIR}/pubring.keylst"
-    comm -3 "${GPGHOMEDIR}/pubring.keylst" "${GPGHOMEDIR}/pubring.orig.keylst" > "${GPGHOMEDIR}/pubring.diff"
-    # key isn't part of new keyring, so remove
-    cut -f 2 "${GPGHOMEDIR}/pubring.diff" | while read key; do
-	if [ -z "$key" ]; then continue; fi
-	foreach_keyring_do 'remove_key_from_keyring' "$key"
-    done
-    # key is only part of new keyring, so we need to import it
-    cut -f 1 "${GPGHOMEDIR}/pubring.diff" | while read key; do
-	if [ -z "$key" ]; then continue; fi
-	import_keyring_into_keyring '' "$TRUSTEDFILE" "$key"
-    done
-}
-
-setup_merged_keyring() {
-    if [ -n "$FORCED_KEYID" ]; then
-	merge_all_trusted_keyrings_into_pubring
-	FORCED_KEYRING="${GPGHOMEDIR}/forcedkeyid.gpg"
-	TRUSTEDFILE="${FORCED_KEYRING}"
-	echo "#!/bin/sh
-exec sh '($(escape_shell "${GPG}")' --keyring '$(escape_shell "${TRUSTEDFILE}")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
-	GPG="${GPGHOMEDIR}/gpg.1.sh"
-	# ignore error as this "just" means we haven't found the forced keyid and the keyring will be empty
-	import_keyring_into_keyring '' "$TRUSTEDFILE" "$FORCED_KEYID" || true
-    elif [ -z "$FORCED_KEYRING" ]; then
-	merge_all_trusted_keyrings_into_pubring
-	if [ -r "${GPGHOMEDIR}/pubring.gpg" ]; then
-	    cp -a "${GPGHOMEDIR}/pubring.gpg" "${GPGHOMEDIR}/pubring.orig.gpg"
-	else
-	   touch "${GPGHOMEDIR}/pubring.gpg" "${GPGHOMEDIR}/pubring.orig.gpg"
-	fi
-	echo "#!/bin/sh
-exec sh '$(escape_shell "${GPG}")' --keyring '$(escape_shell "${GPGHOMEDIR}/pubring.gpg")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
-	GPG="${GPGHOMEDIR}/gpg.1.sh"
-    else
-	TRUSTEDFILE="$(dearmor_filename "$FORCED_KEYRING")"
-	create_new_keyring "$TRUSTEDFILE"
-	echo "#!/bin/sh
-exec sh '$(escape_shell "${GPG}")' --keyring '$(escape_shell "${TRUSTEDFILE}")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
-	GPG="${GPGHOMEDIR}/gpg.1.sh"
-    fi
-}
-
-create_new_keyring() {
-    # gpg defaults to mode 0600 for new keyrings. Create one with 0644 instead.
-    if ! [ -e "$1" ]; then
-	if [ -w "$(dirname "$1")" ]; then
-	    touch -- "$1"
-	    chmod 0644 -- "$1"
-	fi
-    fi
-}
-
-aptkey_execute() { sh "$@"; }
-
-usage() {
-    echo "Usage: apt-key [--keyring file] [command] [arguments]"
-    echo
-    echo "Manage apt's list of trusted keys"
-    echo
-    echo "  apt-key add <file>          - add the key contained in <file> ('-' for stdin)"
-    echo "  apt-key del <keyid>         - remove the key <keyid>"
-    echo "  apt-key export <keyid>      - output the key <keyid>"
-    echo "  apt-key exportall           - output all trusted keys"
-    echo "  apt-key update              - update keys using the keyring package"
-    echo "  apt-key net-update          - update keys using the network"
-    echo "  apt-key list                - list keys"
-    echo "  apt-key finger              - list fingerprints"
-    echo "  apt-key adv                 - pass advanced options to gpg (download key)"
-    echo
-    echo "If no specific keyring file is given the command applies to all keyring files."
-}
-
-while [ -n "$1" ]; do
-   case "$1" in
-      --keyring)
-	 shift
-	 if [ -z "$FORCED_KEYRING" -o "$FORCED_KEYRING" = '/dev/null' ]; then
-	     TRUSTEDFILE="$1"
-	     FORCED_KEYRING="$1"
-	 elif [ "$TRUSTEDFILE" = "$FORCED_KEYRING" ]; then
-	     create_gpg_home
-	     FORCED_KEYRING="${GPGHOMEDIR}/mergedkeyrings.gpg"
-	     echo -n '' > "$FORCED_KEYRING"
-	     chmod 0644 -- "$FORCED_KEYRING"
-	     catfile "$TRUSTEDFILE" "$FORCED_KEYRING"
-	     catfile "$1" "$FORCED_KEYRING"
-	 else
-	     catfile "$1" "$FORCED_KEYRING"
-	 fi
-	 ;;
-      --keyid)
-	 shift
-	 if [ -n "$FORCED_KEYID" ]; then
-	     apt_error 'Specifying --keyid multiple times is not supported'
-	     exit 1
-	 fi
-	 FORCED_KEYID="$1"
-	 ;;
-      --secret-keyring)
-	 shift
-	 FORCED_SECRET_KEYRING="$1"
-	 ;;
-      --readonly)
-	 merge_back_changes() { true; }
-	 create_new_keyring() { if [ ! -r "$FORCED_KEYRING" ]; then TRUSTEDFILE='/dev/null'; FORCED_KEYRING="$TRUSTEDFILE"; fi; }
-	 ;;
-      --fakeroot)
-	 requires_root() { true; }
-	 ;;
-      --quiet)
-	 aptkey_echo() { true; }
-	 ;;
-      --debug1)
-	 # some cmds like finger redirect stderr to /dev/null …
-	aptkey_execute() { echo 'EXEC:' "$@"; sh "$@"; }
-	;;
-      --debug2)
-	 # … other more complicated ones pipe gpg into gpg.
-	aptkey_execute() { echo >&2 'EXEC:' "$@"; sh "$@"; }
-	;;
-      --homedir)
-	 # force usage of a specific homedir instead of creating a temporary
-	 shift
-	 GPGHOMEDIR="$1"
-	;;
-      --*)
-	 echo >&2 "Unknown option: $1"
-	 usage
-	 exit 1;;
-      *)
-	 break;;
-   esac
-   shift
-done
-
-if [ -z "$TRUSTEDFILE" ]; then
-   TRUSTEDFILE="/etc/apt/trusted.gpg"
-   eval $(apt-config shell TRUSTEDFILE Apt::GPGV::TrustedKeyring)
-   eval $(apt-config shell TRUSTEDFILE Dir::Etc::Trusted/f)
-   if [ "$APT_KEY_NO_LEGACY_KEYRING" ]; then
-        TRUSTEDFILE="/dev/null"
-   fi
-fi
-
-command="$1"
-if [ -z "$command" ]; then
-    usage
-    exit 1
-fi
-shift
-
-prepare_gpg_home() {
-    # crude detection if we are called from a maintainerscript where the
-    # package depends on gnupg or not. We accept recommends here as
-    # well as the script hopefully uses apt-key optionally then like e.g.
-    # debian-archive-keyring for (upgrade) cleanup did
-    if [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] && [ -z "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
-	if ! dpkg-query --show --showformat '${Pre-Depends}${Depends}${Recommends}\n' "$DPKG_MAINTSCRIPT_PACKAGE" 2>/dev/null | grep -E -q 'gpg|gnupg'; then
-	    cat >&2 <<EOF
-Warning: The $DPKG_MAINTSCRIPT_NAME maintainerscript of the package $DPKG_MAINTSCRIPT_PACKAGE
-Warning: seems to use apt-key (provided by apt) without depending on gpg, gnupg, or gnupg2.
-Warning: This will BREAK in the future and should be fixed by the package maintainer(s).
-Note: Check first if apt-key functionality is needed at all - it probably isn't!
-EOF
-	fi
-    fi
-    eval "$(apt-config shell GPG_EXE Apt::Key::gpgcommand)"
-    if [ -n "$GPG_EXE" ] && command_available "$GPG_EXE"; then
-	true
-    elif command_available 'gpg'; then
-	GPG_EXE="gpg"
-    elif command_available 'gpg2'; then
-	GPG_EXE="gpg2"
-    elif command_available 'gpg1'; then
-	GPG_EXE="gpg1"
-    else
-	apt_error 'gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation'
-	exit 255
-    fi
-
-    create_gpg_home
-
-    # now tell gpg that it shouldn't try to maintain this trustdb file
-    echo "#!/bin/sh
-exec '$(escape_shell "${GPG_EXE}")' --ignore-time-conflict --no-options --no-default-keyring \\
---homedir '$(escape_shell "${GPGHOMEDIR}")' --no-auto-check-trustdb --trust-model always \"\$@\"" > "${GPGHOMEDIR}/gpg.0.sh"
-    GPG_SH="${GPGHOMEDIR}/gpg.0.sh"
-    GPG="$GPG_SH"
-
-    # create the trustdb with an (empty) dummy keyring
-    # older gpgs required it, newer gpgs even warn that it isn't needed,
-    # but require it nonetheless for some commands, so we just play safe
-    # here for the foreseeable future and create a dummy one
-    touch "${GPGHOMEDIR}/empty.gpg"
-    if ! "$GPG_EXE" --ignore-time-conflict --no-options --no-default-keyring \
-       --homedir "$GPGHOMEDIR" --quiet --check-trustdb --keyring "${GPGHOMEDIR}/empty.gpg" >"${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
-       cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
-       false
-    fi
-
-    # We don't usually need a secret keyring, of course, but
-    # for advanced operations, we might really need a secret keyring after all
-    if [ -n "$FORCED_SECRET_KEYRING" ] && [ -r "$FORCED_SECRET_KEYRING" ]; then
-	if ! aptkey_execute "$GPG" -v --batch --import "$FORCED_SECRET_KEYRING" >"${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
-	    # already imported keys cause gpg1 to fail for some reason… ignore this error
-	    if ! grep -q 'already in secret keyring' "${GPGHOMEDIR}/gpgoutput.log"; then
-		cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
-		false
-	    fi
-	fi
-    else
-       # and then, there are older versions of gpg which panic and implode
-       # if there isn't one available - and writeable for imports
-       # and even if not output is littered with the creation of a secring,
-       # so lets call import once to have it create what it wants in silence
-       echo -n | aptkey_execute "$GPG" --batch --import >/dev/null 2>&1 || true
-    fi
-}
-
-warn_on_script_usage() {
-    if [ -n "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
-	return
-    fi
-    # (Maintainer) scripts should not be using apt-key
-    if [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ]; then
-	echo >&2 "Warning: apt-key should not be used in scripts (called from $DPKG_MAINTSCRIPT_NAME maintainerscript of the package ${DPKG_MAINTSCRIPT_PACKAGE})"
-    fi
-
-    echo >&2 "Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))."
-}
-
-warn_outside_maintscript() {
-    # In del, we want to warn in interactive use, but not inside maintainer
-    # scripts, so as to give people a chance to migrate keyrings.
-    #
-    # FIXME: We should always warn starting in 2022.
-    if [ -z "$DPKG_MAINTSCRIPT_PACKAGE" ]; then
-	echo >&2 "Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))."
-    fi
-}
-
-if [ "$command" != 'help' ] && [ "$command" != 'verify' ]; then
-    prepare_gpg_home
-fi
-
-case "$command" in
-    add)
-	warn_on_script_usage
-	requires_root
-	setup_merged_keyring
-	aptkey_execute "$GPG" --quiet --batch --import "$@"
-	merge_back_changes
-	aptkey_echo "OK"
-        ;;
-    del|rm|remove)
-	# no script warning here as removing 'add' usage needs 'del' for cleanup
-	warn_outside_maintscript
-	requires_root
-	foreach_keyring_do 'remove_key_from_keyring' "$@"
-	aptkey_echo "OK"
-        ;;
-    update)
-	warn_on_script_usage
-	requires_root
-	setup_merged_keyring
-	update
-	merge_back_changes
-	;;
-    net-update)
-	warn_on_script_usage
-	requires_root
-	setup_merged_keyring
-	net_update
-	merge_back_changes
-	;;
-    list|finger*)
-	warn_on_script_usage
-	foreach_keyring_do 'list_keys_in_keyring' --fingerprint "$@"
-	;;
-    export|exportall)
-	warn_on_script_usage
-	merge_all_trusted_keyrings_into_pubring
-	aptkey_execute "$GPG_SH" --keyring "${GPGHOMEDIR}/pubring.gpg" --armor --export "$@"
-	;;
-    adv*)
-	warn_on_script_usage
-	setup_merged_keyring
-	aptkey_echo "Executing: $GPG" "$@"
-	aptkey_execute "$GPG" "$@"
-	merge_back_changes
-	;;
-    verify)
-	GPGV=''
-	eval $(apt-config shell GPGV Apt::Key::gpgvcommand)
-	if [ -n "$GPGV" ] && command_available "$GPGV"; then true;
-	elif command_available 'gpgv'; then GPGV='gpgv';
-	elif command_available 'gpgv2'; then GPGV='gpgv2';
-	elif command_available 'gpgv1'; then GPGV='gpgv1';
-	else
-	   apt_error 'gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed'
-	   exit 29
-	fi
-	# for a forced keyid we need gpg --export, so full wrapping required
-	if [ -n "$FORCED_KEYID" ]; then
-	    prepare_gpg_home
-	else
-	    create_gpg_home
-	fi
-	setup_merged_keyring
-	if [ -n "$FORCED_KEYRING" ]; then
-	    "$GPGV" --homedir "${GPGHOMEDIR}" --keyring "$(dearmor_filename "${FORCED_KEYRING}")" --ignore-time-conflict "$@"
-	else
-	    "$GPGV" --homedir "${GPGHOMEDIR}" --keyring "${GPGHOMEDIR}/pubring.gpg" --ignore-time-conflict "$@"
-	fi
-	;;
-    help)
-        usage
-        ;;
-    *)
-        usage
-        exit 1
-        ;;
-esac
diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc
index 3f3b008..33716bb 100644
--- a/cmdline/apt-mark.cc
+++ b/cmdline/apt-mark.cc
@@ -26,16 +26,16 @@
 #include <apt-private/private-output.h>
 
 #include <algorithm>
+#include <cerrno>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <fstream>
 #include <iostream>
 #include <string>
 #include <vector>
-#include <errno.h>
 #include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
diff --git a/cmdline/apt-sortpkgs.cc b/cmdline/apt-sortpkgs.cc
index 5198254..8442a95 100644
--- a/cmdline/apt-sortpkgs.cc
+++ b/cmdline/apt-sortpkgs.cc
@@ -1,13 +1,13 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    APT Sort Packages - Program to sort Package and Source files
 
    This program is quite simple, it just sorts the package files by
    package and sorts the fields inside by the internal APT sort order.
    Input is taken from a named file and sent to stdout.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -27,11 +27,11 @@
 #include <apt-private/private-main.h>
 
 #include <algorithm>
+#include <cstdio>
 #include <iostream>
 #include <memory>
 #include <string>
 #include <vector>
-#include <stdio.h>
 #include <unistd.h>
 
 #include <apti18n.h>
@@ -46,7 +46,7 @@ struct PkgName								/*{{{*/
    string Arch;
    unsigned long Offset;
    unsigned long Length;
-   
+
    inline int Compare3(const PkgName &x) const
    {
       int A = stringcasecmp(Name,x.Name);
@@ -58,7 +58,7 @@ struct PkgName								/*{{{*/
       }
       return A;
    }
-   
+
    bool operator <(const PkgName &x) const {return Compare3(x) < 0;};
    bool operator >(const PkgName &x) const {return Compare3(x) > 0;};
    bool operator ==(const PkgName &x) const {return Compare3(x) == 0;};
@@ -73,7 +73,7 @@ static bool DoIt(string InFile)
    pkgTagFile Tags(&Fd);
    if (_error->PendingError() == true)
       return false;
-   
+
    // Parse.
    vector<PkgName> List;
    pkgTagSection Section;
@@ -83,28 +83,28 @@ static bool DoIt(string InFile)
    while (Tags.Step(Section) == true)
    {
       PkgName Tmp;
-      
-      /* Fetch the name, auto-detecting if this is a source file or a 
+
+      /* Fetch the name, auto-detecting if this is a source file or a
          package file */
-      Tmp.Name = Section.Find(pkgTagSection::Key::Package).to_string();
-      Tmp.Ver = Section.Find(pkgTagSection::Key::Version).to_string();
-      Tmp.Arch = Section.Find(pkgTagSection::Key::Architecture).to_string();
-      
+      Tmp.Name = Section.Find(pkgTagSection::Key::Package);
+      Tmp.Ver = Section.Find(pkgTagSection::Key::Version);
+      Tmp.Arch = Section.Find(pkgTagSection::Key::Architecture);
+
       if (Tmp.Name.empty() == true)
 	 return _error->Error(_("Unknown package record!"));
-      
+
       Tmp.Offset = Offset;
       Tmp.Length = Section.size();
       if (Largest < Tmp.Length)
 	 Largest = Tmp.Length;
-      
+
       List.push_back(Tmp);
-      
+
       Offset = Tags.Offset();
    }
    if (_error->PendingError() == true)
       return false;
-   
+
    // Sort it
    sort(List.begin(),List.end());
 
diff --git a/cmdline/apt.cc b/cmdline/apt.cc
index f53d4e4..af8a95f 100644
--- a/cmdline/apt.cc
+++ b/cmdline/apt.cc
@@ -78,6 +78,7 @@ static std::vector<aptDispatchWithHelp> GetCommands()			/*{{{*/
 
       // misc
       {"edit-sources", &EditSources, _("edit the source information file")},
+      {"modernize-sources", &ModernizeSources, _("modernize .list files to .sources files")},
       {"moo", &DoMoo, nullptr},
       {"satisfy", &DoBuildDep, _("satisfy dependency strings")},
 
@@ -89,6 +90,8 @@ static std::vector<aptDispatchWithHelp> GetCommands()			/*{{{*/
       {"policy",&Policy, nullptr},
       {"build-dep", &DoBuildDep,nullptr},
       {"clean", &DoClean, nullptr},
+      {"distclean", &DoDistClean, nullptr},
+      {"dist-clean", &DoDistClean, nullptr},
       {"autoclean", &DoAutoClean, nullptr},
       {"auto-clean", &DoAutoClean, nullptr},
       {"source", &DoSource, nullptr},
diff --git a/completions/bash/apt b/completions/bash/apt
index 59a8eaa..9881d5c 100644
--- a/completions/bash/apt
+++ b/completions/bash/apt
@@ -48,6 +48,7 @@ _apt()
         "clean" "autoclean"
         "download" "changelog"
         "moo"
+        "modernize-sources"
         "depends" "rdepends"
         "policy")
 
@@ -73,7 +74,7 @@ _apt()
         case ${command-} in
             install|reinstall|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove|autopurge)
                 COMPREPLY=( $( compgen -W '--show-progress
-                  --fix-broken --purge --verbose-versions --auto-remove
+                  --fix-broken --purge --verbose-versions --no-list-columns --auto-remove
                   -s --simulate --dry-run
                   --download
                   --fix-missing
@@ -81,7 +82,7 @@ _apt()
                   --ignore-hold
                   --force-yes
                   --trivial-only
-                  --reinstall --solver
+                  --reinstall --solver --no-strict-pinning
                   -t --target-release'"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
                 return 0
                 ;;
@@ -151,7 +152,7 @@ _apt()
                     -s --simulate --dry-run
                     -P --build-profiles
                     -t --target-release
-                    --purge --solver
+                    --purge --solver --no-strict-pinning
                     '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
                 return 0
                 ;;
diff --git a/debian/NEWS b/debian/NEWS
index 4edfd43..096415a 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,53 @@
+apt (2.9.24) unstable; urgency=medium
+
+  /etc/apt/trusted.gpg is no longer trusted. Setting the Dir::Etc::trusted
+  option manually continues to work for some more time.
+
+  sources.list(5) entries without the Signed-By field are deprecated;
+  migrate any legacy entries to the deb822 .sources format. See the
+  apt-secure(8) manual page for best practices for signer configuration.
+  This deprecates the /etc/apt/trusted.gpg.d directory.
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 21 Jan 2025 12:17:36 +0100
+
+apt (2.9.19) unstable; urgency=medium
+
+  This release switches to OpenSSL for hashing and TLS, replacing the
+  GnuTLS and gcrypt libraries.
+
+  This release switches to Sequoia for OpenPGP verification on supported
+  Debian platforms. A Sequoia policy override enabling SHA1 self-signatures
+  until 2026 is included. To override the policy, the following environment
+  variables and files are considered:
+
+  * The APT_SEQUOIA_CRYPTO_POLICY environment variable, and failing that:
+    - /etc/crypto-policies/back-ends/apt-sequoia.config,
+    - /var/lib/crypto-config/profiles/current/apt-sequoia.config
+  * The SEQUOIA_CRYPTO_POLICY environment variable, and failing that:
+    - /etc/crypto-policies/back-ends/sequoia.config
+    - /var/lib/crypto-config/profiles/current/sequoia.config
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 23 Dec 2024 12:16:22 +0100
+
+apt (2.9.15) unstable; urgency=medium
+
+  This release stops using apt-key to verify the signatures.
+  Final call to stop using it before it's gone next week.
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 28 Nov 2024 19:31:24 +0100
+
+apt (2.9.11) unstable; urgency=medium
+
+  The ftp, rsh, and ssh methods have been removed. They have been unsupported
+  and disabled since 1.8. Please, migrate to http(s) instead, or contribute
+  an sftp method.
+
+  If you need ad hoc access to a remote repository, you can usually run
+  `python3 -m http.server` on that machine and use SSH port forwarding to
+  run HTTP over SSH.
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 07 Nov 2024 14:02:07 +0100
+
 apt (2.5.2) unstable; urgency=medium
 
   Installing or upgrading a binary package now upgrades other binaries from
@@ -54,7 +104,7 @@ apt (1.9.11) experimental; urgency=medium
 apt (1.9.6) experimental; urgency=medium
 
   apt(8) no longer treats package names passed as regular expressions or fnmatch
-  expressions, requiring the use of patterns (apt-patterns(5)) to perform complex
+  expressions, requiring the use of patterns (apt-patterns(7)) to perform complex
   searches. For ease of use, regular expressions starting with ^ or ending with
   $ continue to work.
 
diff --git a/debian/apt-utils.install b/debian/apt-utils.install
index 9b304e5..6c2978a 100644
--- a/debian/apt-utils.install
+++ b/debian/apt-utils.install
@@ -1,4 +1,3 @@
-usr/bin/apt-extracttemplates
 usr/bin/apt-ftparchive
 usr/bin/apt-sortpkgs
 usr/lib/apt/planners/
diff --git a/debian/apt-utils.links b/debian/apt-utils.links
new file mode 100644
index 0000000..1324afc
--- /dev/null
+++ b/debian/apt-utils.links
@@ -0,0 +1,2 @@
+../lib/apt/apt-extracttemplates usr/bin/apt-extracttemplates
+
diff --git a/debian/apt.install b/debian/apt.install
index e3a911a..40bcfcf 100644
--- a/debian/apt.install
+++ b/debian/apt.install
@@ -1,16 +1,17 @@
-debian/*.service /lib/systemd/system/
-debian/*.timer /lib/systemd/system/
+debian/*.service /usr/lib/systemd/system/
+debian/*.timer /usr/lib/systemd/system/
 debian/apt.systemd.daily usr/lib/apt
+debian/default-sequoia.config usr/share/apt/
 etc/apt/
 usr/bin/apt
 usr/bin/apt-cache
 usr/bin/apt-cdrom
 usr/bin/apt-config
 usr/bin/apt-get
-usr/bin/apt-key
 usr/bin/apt-mark
 usr/lib/*/libapt-private.so*
 usr/lib/apt/apt-helper
+usr/lib/apt/apt-extracttemplates
 usr/lib/apt/methods/
 usr/lib/apt/planners/dump
 usr/lib/apt/solvers/dump
diff --git a/debian/apt.manpages b/debian/apt.manpages
index 80dbabd..582c145 100644
--- a/debian/apt.manpages
+++ b/debian/apt.manpages
@@ -2,7 +2,6 @@ usr/share/man/*/*/apt-cache.*
 usr/share/man/*/*/apt-cdrom.*
 usr/share/man/*/*/apt-config.*
 usr/share/man/*/*/apt-get.*
-usr/share/man/*/*/apt-key.*
 usr/share/man/*/*/apt-mark.*
 usr/share/man/*/*/apt-secure.*
 usr/share/man/*/*/apt-patterns.*
@@ -15,7 +14,6 @@ usr/share/man/*/apt-cache.*
 usr/share/man/*/apt-cdrom.*
 usr/share/man/*/apt-config.*
 usr/share/man/*/apt-get.*
-usr/share/man/*/apt-key.*
 usr/share/man/*/apt-mark.*
 usr/share/man/*/apt-secure.*
 usr/share/man/*/apt-patterns.*
diff --git a/debian/changelog b/debian/changelog
index 5961148..9a8b116 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,13 +1,991 @@
-apt (2.6.1) unstable; urgency=medium
+apt (2.9.30) unstable; urgency=medium
 
-  * Restore adduser dependency for bookworm.
-    This caused some regressions to late in the bookworm cycle. To keep
-    upgrade paths (which will have adduser installed) the same, we drop
-    the base-password alternative rather than requiring both dependencies,
-    as that could change resolving or ordering bugs. (Closes: #1035654)
-  * Point gitlab-ci and gbp to bookworm/2.6.y
+  * Upload libapt-pkg 7.0 ABI transition to unstable:
+    - Use smart pointers in a whole bunch of places (probably only an API break)
+    - Add a version script to hide any standard library symbols
+    - Remove the functions marked as deprecated, such as PrintStatus and _strtabexpand
+    - Introduce SourceVersion objects in the cache
+    - Migrate from APT::StringView to std::string view and change a bunch of
+      functions from std::string to std::string_view.
+      Thanks to наб for the merge requests, very appreciated, that was a lot
+      of busywork.
+    Several other changes were already queued in the previous releases in
+    #ifdef, please have a look at them.
 
- -- Julian Andres Klode <jak@debian.org>  Thu, 25 May 2023 16:11:37 +0200
+ -- Julian Andres Klode <jak@debian.org>  Sun, 16 Feb 2025 17:58:07 +0100
+
+apt (2.9.29) unstable; urgency=medium
+
+  [ Helge Kreutzmann ]
+  * German program translation update (Closes: #1052411)
+  * German program translation update (Closes: #1095681)
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1095409)
+  * Dutch manpages translation update (Closes: #1095411)
+
+  [ Jean-Pierre Giraud ]
+  * French manpage translation update (Closes: #1088326, #1050876)
+
+  [ Arnaud Rebillout ]
+  * test: Fix skipping test cases
+
+  [ Peter Krefting ]
+  * Swedish program translation update (Closes: #1070029)
+
+  [ Julian Andres Klode ]
+  * Add DepIterator::IsSatisfied(PkgIterator)
+  * test: Support comments in --skip/--only files
+  * Major 3.0 solver update, improving version selection, unit propagation,
+    and as a result significantly performance (2x for apt-tests). Also new:
+    - Phased updates are now supported
+    - The number of broken test cases is down from 31 to 9
+    - dist-upgrade now installs Essential packages
+    - The order of alternatives in or groups is now better preserved
+    - Recommends for upgrades of installed dependencies are now upgraded
+      to Depends if they are new or previously satisfied; to avoid breaking
+      Recommends or introducing unsatisfied Recommends in an upgrade.
+    - A time out of 10s has been added that is checked whenever the solver
+      backtracks to prevent practically infinite runtime.
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 14 Feb 2025 19:42:43 +0100
+
+apt (2.9.28) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * modernize-sources: Avoid opening /dev/stdout for simulate
+  * dpkg: Pass --admindir if a different one is specified; fixes issue
+    where foreign architectures from the host were used when Dir is set.
+  * Various updates to the '3.0' solver: Particularly it now has a clause
+    database for reals rather than rediscovering clauses when backtracking.
+    - refactor: Drop unused code, annotate [[nodiscard]] and const, simplify,
+      extract functions, and particularly introduce the Clause class.
+    - algorithm: Simplify work ordering. This may cause some changes in
+      how dependencies are resolved.
+    - algorithm: Replace PropagateInstall() with Discover() and then
+      propagate based on the stored clauses. Clauses are discovered
+      from package dependencies and persistent, i.e. they have no
+      decision level associated. Discovery is incremental so far.
+    - algorithm: Support comparing packages and versions, such that
+      we can store both package and version variables in a clause.
+    - algorithm: Use a package clause for optional roots. This allows
+      deciding to keep an automatically installed package installed,
+      without having to decide the version (and hence enqueue common
+      dependencies first).
+    - performance: Cache calls to policy.
+    - performance: Cache all configuration calls
+    - performance: Point to stored clauses, do not copy them
+    - performance: Avoid std::vector for statically sized arrays. Due
+      to adding libstdc++ assertions, vector range checks accounted
+      for up to 20% of solver runtime.
+
+  [ Christopher Bock ]
+  * completion: Add modernize-sources (Closes: #1094904)
+  * edit-sources: don't force .list
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 07 Feb 2025 21:00:48 +0100
+
+apt (2.9.27) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * Symbols: Update for 2.9.23/2.9.25
+  * Updates for the '3.0' solver:
+    - Soft unit propagation for optional items
+    - Do not accidentally solve new Recommends before hard dependencies
+    - Use a propagation queue instead of recursively propagating facts
+  * Correctly calculate kernel size in /boot (Closes: #1085184)
+  * Measure BootSize as integer
+
+  [ Boyuan Yang ]
+  * po/zh_CN.po: Refresh Simplified Chinese translation for apt
+
+  [ Rafael Fontenelle ]
+  * Brazilian Portuguese program translation update (Closes: #1092563)
+
+  [ David Kalnischkies ]
+  * Cleanups and fixes for cache counters/size fields:
+    - Do not overflow ver/desc<->file relation counters
+    - Drop unused description size info from binary cache
+    - Drop unused version stanza size info from binary cache
+    - Do not create descriptions structs for each architecture
+    - Record all available sources for descriptions
+    - Include Extra in the size counted for Version struct
+
+  [ Samuel Thibault ]
+  * Also support debian-ports modernization
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 03 Feb 2025 13:44:58 +0100
+
+apt (2.9.26) unstable; urgency=medium
+
+  [ Sam Hartman ]
+  * Fix regression that prevented sending intermediate client certificates
+
+  [ Andreas Rönnquist ]
+  * apt-secure manual page is in manual section 8
+
+  [ Julian Andres Klode ]
+  * apt: Introduce the modernize-sources command
+  * Make notices about .list sources without signed-by less obnoxious
+    You get a single line telling you about modernize-sources now, unless
+    you run --audit (or have deb822 files without Signed-By).
+  * Documentation updates:
+    - Deprecate legacy one-line-style format harder. Removal not before 2029.
+    - Set signed-by/Signed-By in sources.list(5) short examples for Debian, Ubuntu
+    - Update Debian, Ubuntu example default sources to best practices:
+      We now ship debian.sources/ubuntu.sources instead of sources.list
+    - Update codenames for trixie, plucky as stable
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 28 Jan 2025 19:49:53 +0100
+
+apt (2.9.25) unstable; urgency=medium
+
+  * sqv, gpgv: Do not fail if Dir::Etc::Trusted is set and trusted.gpg.d is missing
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 22 Jan 2025 11:07:01 +0100
+
+apt (2.9.24) unstable; urgency=medium
+
+  * gitlab-ci: Use platform: linux/i386 instead of i386/debian image
+  * Warn about missing Signed-By in .list format, this deprecates
+    /etc/apt/trusted.gpg.d.
+  * Remove superseded warning about trusted.gpg fallback
+  * Unset Dir::Etc::trusted, this removes /etc/apt/trusted.gpg from
+    the trusted path.
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 21 Jan 2025 12:17:24 +0100
+
+apt (2.9.23) unstable; urgency=high
+
+  [ David Kalnischkies ]
+  * Write Pre-Depends with a dash again in EDSP (Closes: #1093254)
+  * Grep for more evil in test as a signature can contain evil
+
+  [ Julian Andres Klode ]
+  * Workaround gcc 14.2.0-9 regression in no-tree-slp-vectorize on Graviton;
+    this prevented https connections from working.
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 17 Jan 2025 20:37:48 +0100
+
+apt (2.9.22) unstable; urgency=medium
+
+  [ Balint Reczey ]
+  * apt-pkg/deb/debsystem.cc: Fall back to "dpkg" when Dir::Bin::dpkg is not found
+
+  [ Julian Andres Klode ]
+  * debian/changelog: v3 signature packet, not v3 subkey
+  * Ensure we can build with APT_PKG_ABI > 601
+  * ssl: Set an error when we receive SSL_ERROR_SYSCALL
+  * ssl: Explictly return -1 (error) or 0 (server closed connection)
+  * abicheck: Add some workarounds to avoid errors
+  * t/i/test-method-gpgv-legacy-keyring: Switch to http, extend
+  * proxy: Avoids triggering bounds check in std::string_view
+  * methods/connect: Avoid unused argument warning
+
+  [ David Kalnischkies ]
+  * Resolve autopkgtest failures caused by dpkg >= 1.22.12 (Closes: #1092090)
+  * Try stomping a little less on global macro namespace
+  * Add pkgCache::{Priority,DepType}_NoL10n to avoid duplication
+  * Replaces macros with C++ attributes: APT_OVERRIDE, APT_ARRAY_SIZE, APT_NORETURN,
+    APT_DEPRECATED, APT_UNUSED, APT_MUSTCHECK, APT_IGNORE_DEPRECATED
+  * Drop SourceListWarnings::NonFreeFirmware messages
+  * Remove leftovers of the apt-key removal
+  * Move apt-extractexamples desc line from apt-utils to apt (Closes: #1091344)
+  * Remove leftovers from ftp and rsh/ssh methods removal
+  * Change multi sources.list entry example from FTP to HTTPS
+
+  [ Sergio Durigan Junior ]
+  * d/t/control: Don't depend on gdb-minimal.
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 14 Jan 2025 18:33:08 +0100
+
+apt (2.9.21) unstable; urgency=medium
+
+  [ Simon McVittie ]
+  * sources.list(5): Suggest VENDOR.sources for new systems
+
+  [ Guillem Jover ]
+  * Remove non-US leftovers in code and documentation
+  * Remove obsolete references to ftp://ftp.debian.org
+  * Use deb.debian.org instead of ftp.debian.org URLs
+
+  [ Julian Andres Klode ]
+  * Extend v3 signature packet expiry to 2026, owing to OBS use
+  * sqv: Avoid propagating errors between files (Closes: #1091679)
+  * http: seccomp: Allow reading directories (Closes: #1091351)
+  * test: Check "${METHODSDIR}/sqv" not "/usr/bin/sqv"
+  * Unfuzzy documentation translations
+  * Run update-po4a
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 01 Jan 2025 22:48:55 +0100
+
+apt (2.9.20) unstable; urgency=medium
+
+  * symbols: Merge 2.9.19 and fix version for InsertErrno
+  * Re-include std:: symbols in the symbols file as optional again
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 28 Dec 2024 22:59:50 +0100
+
+apt (2.9.19) unstable; urgency=medium
+
+  * Replace GnuTLS and gcrypt with OpenSSL
+  * Replace GnuPG with Sequoia on supported Debian platforms
+    - methods: Add new sqv method
+    - debian: Add default policy to allow SHA-1 self-signatures until 2026
+    - debian: Plug sqv into the package build
+  * Smaller bits:
+    - apt-helper: Add a hash-file helper to debug file hashing
+    - Use sq in the test suite, remove apt-key
+    - abicheck: Add symbol-merge.py helper
+    - Symbols: Merge stable, noble, testing, unstable
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 23 Dec 2024 12:16:19 +0100
+
+apt (2.9.18) unstable; urgency=medium
+
+  * Fix out-of-bounds read in `apt show :` (Closes: #1090068)
+  * Introduce git-like automatic pager for apt(8), emulating git behavior.
+    It is enabled for the show, list, search, policy, showsrc commands.
+    The pager can be set using APT_PAGER or PAGER and defaults to `pager`
+  * Add initial pinning information to apt show --full.
+    The fields `APT-Pin`, `APT-Candidate`, and `APT-Release` provide
+    pinning information. It is not yet possible to see multiple sources,
+    and the per-source pinning is not shown.
+  * gpgv: Extract VerifyDetachedSignatureFile()
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 19 Dec 2024 18:38:04 +0100
+
+apt (2.9.17) unstable; urgency=medium
+
+  * solver3:
+    - Fix intransitivity of version comparison on upgrade, this
+      means no-strict-pinning gets the correct order now.
+    - Add a missing debug level check
+    - Reject all non-candidates outright for strict pinning
+  * gpgv: Merge all keyrings into a single one again. This fixes
+    issues with arbitrary gpgv restrictions, such as strange
+    filenames or more than 40 keys
+  * Stop installing apt-key, make it a test suite helper
+    - gpgv: Drop references to apt-key
+    - Remove the apt-key manual page and add documentation to apt-secure
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 07 Dec 2024 17:12:51 +0100
+
+apt (2.9.16) unstable; urgency=medium
+
+  * Avoid extension check for .gpg in Signed-By keyrings (Closes: #1088656)
+    A warning for extensions other than .pgp and .gpg will be introduced at
+    a later point, but not now as we try to be bug compatible.
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 29 Nov 2024 09:45:11 +0100
+
+apt (2.9.15) unstable; urgency=medium
+
+  [ David Kalnischkies ]
+  * Collect unprinted Ign errors for display in Err output
+
+  [ Julian Andres Klode ]
+  * Stop using apt-key for signature verification
+    - test-apt-cdrom: Hande assert-pubkey-algo like other gpgv messages
+    - Fix accidental ABI break in debListParser::ParseDepends
+    - tagfile: Avoid uninitialized variable warnings
+    - gpgv: Generalize apt_error to apt_msg(), add apt_warning()
+    - Do not implode key file name vector for calling gpgv
+    - apt-key: Only cat supported keyrings into the merged one
+    - apt-key: Temporarily accept 'pub' as an extension for binary gpg keys
+    - gpgv: Explictly pass all the keyrings to gpgv from apt
+    - gpgv: Use std::string instead of const char *
+    - strutl: Add Base64Decode
+    - gpgv: Verify keyrings and dearmor outside apt-key
+    - Directly call gpgv instead of apt-key
+    - gpgv: Add direct support for --assert-pubkey-algo
+    - fileutl: Use execvp() in Popen() instead of execv()
+    - Detect working gpgv using gpgv --dump-options
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 28 Nov 2024 19:33:03 +0100
+
+apt (2.9.14) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * test: Do not fail if valgrind is not available
+  * test: Handle gpgv-sq differeces and test with it
+  * apt-key: Prefer gpgv-sq if installed
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1087458)
+  * Dutch manpages translation update (Closes: #1087461)
+
+  [ Алексей Шилин ]
+  * Russian program translation update (Closes: #1087804)
+
+  [ Luca Vercelli ]
+  * Italian program translation update (Closes: #1081992)
+
+  [ David Kalnischkies ]
+  * Fixes for several compile-time warnings:
+    - Acknowledge non-erase usage of remove_if for volatile sources
+    - Fix expired std::string usage in APT::StringView testcase
+    - Add a virtual destructor to private CacheSet Matcher
+    - Avoid unnormalized paths for CMake install destinations
+    - Tag hidden acquire classes as final for devirtualization
+  * Support uncompressed indexes from partial file:/ mirrors, and
+    other fixes for the acquire system:
+    - Show hashes calculated by main thread in error messages
+    - Alternatively calculate alternative file hashes in file method
+    - Rewrite hidden config option checker for more patterns
+    - Allow AutoDetectProxy to work with more than just http(s)
+    - Do not assume mirror-URIs end in a filename causing a hang
+    - Do not change UsedMirror on local copy of InRelease
+    - Clear previous ignored errors before processing acquire item again
+    - Never consider file/copy/cdrom sources bad sites due to errors
+    - Allow HashSum mismatches to fallback to other mirrors
+    - Look at non by-hash paths in copy and file methods
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 22 Nov 2024 17:13:23 +0100
+
+apt (2.9.13) unstable; urgency=medium
+
+  * Add a --comment option to record Comment: in history
+  * Hardening: Add -Wp,-D_GLIBCXX_ASSERTIONS to CXXFLAGS to enable bounds
+    checking for all STL containers.
+  * patterns: Avoid out-of-bounds std::string_view read.
+    We only pass NUL-terminated strings to the function, and the code expects
+    that but we pass through an interface which doesn't guarantee that, so
+    we trigger an index < size() assertion when accessing the terminating
+    NUL byte when compiled with -Wp,-D_GLIBCXX_ASSERTIONS.
+  * ftparchive: Remove fixed size buffers on trusted inputs (LP: #2087848)
+    - ftparchive: override: Remove fixed-size line buffers in override files
+    - ftparchive: cachedb: Remove 600-byte key (and hence file path) limit
+    - ftparchive: writer: Remove line length limit on file lists
+  * tests: Temporarily disable valgrind-if-available on armhf and ppc64el
+    to avoid having to wait for a new valgrind without those architectures
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 20 Nov 2024 15:59:46 +0100
+
+apt (2.9.12) unstable; urgency=medium
+
+  [ наб ]
+  * More refactorings for string_view
+  * Provide a DEFER() macro for cleanup of local variables
+
+  [ Julian Andres Klode ]
+  * string_view: Include missing headers, fixes rust-rust-apt failure
+  * Handle Retry-After by default
+
+  [ Felix Moessbauer ]
+  * http: use Retry-After HTTP header to optimize retries
+  * http: add test for Retry-After handling
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 18 Nov 2024 15:03:10 +0100
+
+apt (2.9.11) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * Various refactorings to the 3.0 solver
+  * Remove ftp, rsh, ssh methods (disabled since 1.8)
+  * Apply messaging fixes from Robert Krátký
+  * Fix keeping back removals of obsolete packages (LP: #2078720)
+  * Return an error if ResolveByKeep() is unsuccessful (LP: #2078720)
+  * Move apt-extracttemplates to /usr/lib/apt in 'apt' package
+  * json: Add "options" array to JSON hooks; adjust test cases accordingly
+
+  [ наб ]
+  * Refactor buffers into std::array and bump sizes, improving performance:
+    - Bump various buffer sizes to the default APT_BUFFER_SIZE
+    - Turn char[APT_BUFFER_SIZE] buffers into std::array<char, APT_BUFFER_SIZE>
+    - Turn std::unique_ptr<char[]/std::array<char>>(APT_BUFFER_SIZE) buffers into std::array<char, APT_BUFFER_SIZE>
+    - dpkgpm: use sysconf(_SC_GETPW_R_SIZE_MAX)-sized + growing buffer for getpwuid_r() instead of 255
+    - dpkgpm: use std::array<unsigned char, APT_BUFFER_SIZE> for I/O copy buffers
+  * File reading changes, fixing static line size limitations:
+    - dpkgpm: lift out CopyIndented() and make_unique_*() for FILEs; use getline() for reading lines instead of 1k buffer
+    - dpkgpm: use getline() for Apport var/crash lines
+    - dpkgpm: fdopen() failing doesn't close the fd
+  * Only run valgrind in tests if valgrind available on host
+  * ReportMirrorFailureToCentral: fix use-after-free
+  * Non-functional changes:
+    - Replace constant-size never-reallicated getservbyport_r() std::vector buffer with std::array
+    - FileFd::Open: don't needlessly copy filename in three-arg constructor
+    - Replace std::bind with lambdas
+    - Turn unique_ptr<decltype(fclose and free)> into real deleter types (warnings now, UB in C++20)
+    - dpkgpm: append ":$printarchitecture" instead of ':'+${#printarchitecture} to package name
+    - Prepare for APT::StringView -> std::string_view
+
+  [ Américo Monteiro ]
+  * Portuguese manpages translation update (Closes: #1086336)
+
+  [ Miroslav Kure ]
+  * Czech program translation update (Closes: #1087220)
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 14 Nov 2024 18:29:35 +0100
+
+apt (2.9.10) unstable; urgency=medium
+
+  [ Rafael Marian ]
+  * Fixed missing spaces in apt-mark(8) (Closes: #959854)
+  * Update manual link in apt-secure(8) (Closes: #1050616)
+  * Fix misspeling in italian apt --help (Closes: #967973)
+
+  [ David Kalnischkies ]
+  * Ignore pending input before confirmation prompts (Closes: #1082956)
+  * Show prompt reply if input is from non-terminal
+
+  [ Julian Andres Klode ]
+  * extracttar: Move large buffer to heap for valgrind
+
+  [ Christopher Bock ]
+  * apt-patterns(7): document recommends
+
+  [ Raziel Anarki ]
+  * Support --target-release in `apt list`
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 22 Oct 2024 18:47:04 +0200
+
+apt (2.9.9) unstable; urgency=medium
+
+  [ Chongyun Lee ]
+  * Fix compilation error with clang/libc++ 18
+
+  [ Julian Andres Klode ]
+  * Implement 'Pin: source-version <foo>'
+  * Fix buffer overflow, stack overflow, exponential complexity in
+    apt-ftparchive Contents generation (LP: #2083697)
+    - ftparchive: Mystrdup: Add safety check and bump buffer size
+    - ftparchive: contents: Avoid exponential complexity and overflows
+    - test framework: Improve valgrind support
+    - test: Check that apt-ftparchive handles deep paths
+
+  [ Remus-Gabriel Chelu ]
+  * Romanian program translation update (Closes: #1080210)
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 17 Oct 2024 09:41:18 +0200
+
+apt (2.9.8) unstable; urgency=medium
+
+  [ Aristo Chen ]
+  * Do not return error if `Signed-By` value in source list is empty
+
+  [ Carles Pina i Estany ]
+  * Update Catalan translation
+
+  [ Julian Andres Klode ]
+  * Fix obsoleted-by handling for experimental in 3.0 solver
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 12 Aug 2024 16:12:43 +0200
+
+apt (2.9.7) unstable; urgency=medium
+
+  [ sid ]
+  * Show installed version (not candidate version) while removing a package
+
+  [ David Kalnischkies ]
+  * Parse snapshot option for apt show/list (Closes: #1075819)
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1075874)
+  * Dutch manpages translation update (Closes: #1075875)
+
+  [ Michał Kułach ]
+  * Polish program translation update (Closes: #1075975)
+
+  [ Julian Andres Klode ]
+  * worker: Add an audit level to log audit messages
+  * gpgv: Add a LaterWorthless level, a SoonWorthless but at 'audit' level
+  * gpgv: Add IsAssertedPubKeyAlgo() function
+  * Only revoke weak RSA keys for now, add 'next' and 'future' levels
+    (LP: #2073126)
+  * solver3: Refactor Reason.Pkg()/Reason.Ver() use with iterator
+  * Add note that redundant 'CLI interface' is intentional
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 30 Jul 2024 13:19:24 +0900
+
+apt (2.9.6) unstable; urgency=medium
+
+  * solver3: Do not accidentally promote Replaces and Enhances to
+    dependencies; this fixes a regression in 2.9.5 when we added
+    code to promote currently satisfied Suggests to Depends.
+  * solver3: Unmark packages before setting any in ToDepCache
+  * solver3: Refactor (rewrite) FromDepCache() (Closes: #1071519)
+    This was intended to not have any behavioural changes, but verifying
+    the things that changed actually showed that they fixed subtle bugs.
+  * solver3: Consider packages as obsolete and not versions; this makes things
+    a bit easier to reason about.
+  * solver3: Only demote obsolete packages in choices for upgrades; this
+    fixes packages being needlessly replaced in apt install.
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 02 Jul 2024 22:20:36 +0200
+
+apt (2.9.5) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * CI: Set /bin/sh shell for travis user, so flock -c works
+  * Fix test cases for non-amd64 architectures
+  * edsp: Parse source version from the Source-Version field
+  * Check gpgv --dump-options for --assert-pubkey-algo support.
+    Thanks to Justus Winter for the idea
+  * Make the failure mode for non-executable tests stronger
+  * solver3: Do not dump sizes that are clearly pointers
+  * solver3: Group work items
+  * solver3: Remove no longer necessary comparisons
+  * solver3: Order obsolete choices last
+
+  [ Noah Meyerhans ]
+  * Fix spelling of @SNAPSHOTID@ in apt.conf.5.xml (Closes: #1072189)
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1072493)
+  * Dutch manpages translation update (Closes: #1072494)
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 13 Jun 2024 21:04:40 +0200
+
+apt (2.9.4) unstable; urgency=medium
+
+  [ David Kalnischkies ]
+  * Fix accidental silencing of output differences in tests
+  * Do not mark new if we have already installed providers
+  * Do not save new if we have already installed providers (Closes: #839546)
+  * Deal better with spurious spaces in arch restrictions (Closes: #1071219)
+
+  [ Julian Andres Klode ]
+  * pkgcachegen: Do not try to chmod or write to /dev/null (LP: #2067138)
+  * test: Show statistics for parallel tests too
+  * test: Run working tests against the 3.0 solver, and adjust as many as possible
+    (more bug fixes in a further release)
+    - test: Temporarily ignore autoremovable lists for solver3
+    - test: Support the 3.0 solver in most existing test cases
+  * Various improvements to the 3.0 solver:
+    - edsp: solver3: Show some progress
+    - solver3: Implement APT::Solver::RemoveManual to allow removing manual packages
+    - solver3: Promote satisfied Suggests to Recommends
+    - solver3: Solve optional dependencies before optional packages
+    - solver3: Try candidate before installed version on upgrade
+    - solver3: Use stable sort
+    - solver3: Actually restore unsolved items rather than solved ones
+    - solver3: Fix translations of removals for marked install
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 25 May 2024 10:58:49 +0200
+
+apt (2.9.3) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * Initial implementation ("alpha") of the 3.0 solver:
+    This new solver is available using the --solver 3.0 option.
+    Highlights:
+    - Fully backtracking solver, think DPLL without pure literal elimination
+    - Manually installed packages are not offered up for removal
+    - New --no-strict-pinning option allows APT to fallback to non-candidate
+      versions, e.g. apt install --no-strict-pinning foo/experimental installs
+      foo from experimental and will switch dependencies where needed.
+    - Autoremove is more aggressive and only keeps the strongest automatically
+      installed package. For example, gcc-<version> will now be offered for
+      removal and no longer kept around due libtool Depends: gcc | c-compiler
+      and gcc-<version> Provides: c-compiler, as `gcc` is already satisfied.
+    Caveats right now:
+    - Test suite is not yet passing
+    - The list of automatically removable packages is not displayed
+      when automatically installed packages are not removed
+    - Error information gets lost on backtracking (see Debug::APT::Solver=2)
+    - Error information is just rendered as A -> B implication graphs,
+      with some nodes perhaps containing a "not".
+    - The logic for replacing obsolete manually installed packages with
+      new replacement packages (think Conflits/Replaces/Provides) is not
+      yet implemented.
+    - Conflict-driven clause learning is not implemented, so backtracking
+      is technically pretty inefficient.
+  * Solver3 integration fixes:
+    - test: Ignore progress output in comparing output..
+    - test-allow-scores-for-all-dependency-types: Adjust for solver3
+    - EDSP: Add "solver3" alias for apt-internal-solver
+  * UI work:
+    - Highlight essential removals with action::remove color
+    - The text of notices and audits shall not be bold
+    - Separate columns by 2 spaces in lists (Closes: #1070064)
+  * Support src:name shortcuts in showsrc, source, build-dep commands
+
+  [ David Kalnischkies ]
+  * Do not ignore if a cmake execute_process fails
+  * Avoid figuring which kept pkgs are phased if we don't display it
+  * Match version constraints before saving garbage packages
+  * Do not upgrade rev-deps ear-marked for removal
+  * Drop sudo-related envvars in testing framework
+  * Add test for dealing with unsat Suggests promoted to Recommends
+  * Allow parsing an empty Provides line (Closes: #1069874)
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1070142)
+  * Dutch manpages translation update (Closes: #1070143)
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 14 May 2024 13:01:31 +0200
+
+apt (2.9.2) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * Output customization and color refactoring:
+    - Also respect an APT_NO_COLOR variable
+    - Add a --color, --no-color option
+    - Add APT::Configuration::color helper to colorize things
+    - Use APT::Configuration::color to apply color to output
+    - Configure individual action colors using APT::Color::Action
+    - apt.conf(5): Document the APT::Color scope
+  * Introduce the new --audit error level
+    - Add an "audit" error level, and change the default to notice
+    - Add an --audit option to switch on audit logging
+    - Add an audit message for missing InRelease files
+  * Change the rendering for notices, warnings, errors:
+    - i18n: Use Error:/Warning:/Notice: instead of E:/W:/N:
+    - Render notices without (yellow) color, just in bold
+    - Keep the entire error/warning/notice message bold
+  * Other UI changes:
+    - apt update: Show upgradable package count in bold
+    - show: Highlight field names and colorize package name
+    - Remove spurious newline inside `apt autoremove` message
+    - Insert blank line following simulation note
+    - Show "Upgrading:" before other sections
+    - Only erase OpProgress lines in output version 3.0
+  * Test fixes:
+    - test: configuration: color: reset _config after tests
+    - build: test: Silence warnings in GTest code
+
+  [ Miroslav Kure ]
+  * Czech program translation update (Closes: #1068943)
+
+  [ Boyuan Yang ]
+  * Simplified Chinese program translation update (Closes: #1069118)
+
+  [ David Kalnischkies ]
+  * Allow no spaces for the last dependency in ParseDepends, too (LP: #2061834)
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 22 Apr 2024 19:36:30 +0200
+
+apt (2.9.1) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * Further UX improvements for apt(8)
+    - Estimate free space and issue warnings if exceeded, incl. /boot
+      + Rename "Installed size:" to "Space needed:"
+      + Space needed: Show space available in /usr
+      + Show space estimate for /boot, if separate; or estimate initrd for /usr
+      + Add warnings if space estimate exceeds free space
+    - Show downgrades as yellow
+    - Use "Continue anyway?" if a warning is queued, and default to N
+    - Use unicode install progress bar on UTF-8 locales
+  * Hide some of the output formatting and details from translatable strings,
+    do expect some more translation churn in upcoming uploads.
+
+  [ Rafael ]
+  * Remove duplicate sentence "Changing held packages:"
+
+ -- Julian Andres Klode <jak@debian.org>  Sun, 14 Apr 2024 18:45:28 +0200
+
+apt (2.9.0) unstable; urgency=medium
+
+  * Welcome to the APT 3.0 development series. It has a new UI for
+    apt(8). It has colors, columnar display, some more padding, and
+    shows removals last (Closes: #755088), making the output more
+    easy to quickly scan.
+
+  [ David Kalnischkies ]
+  * Avoid subshell hiding failure report from testfilestats
+  * Ignore umask of leftover diff_Index in failed pdiff test
+  * Fix and unfuzzy previous VCG/Graphviz URI change
+
+  [ Julian Andres Klode ]
+  * Revert "Temporarily downgrade key assertions to "soon worthless""
+    We temporarily downgraded the errors to warnings to give the
+    launchpad PPAs time to be fixed, but warnings are not safe:
+    Untrusted keys could be hiding on your system, but just not
+    used at the moment. Hence revert this so we get the errors we
+    want.
+    This reverts commit 66998ed3d299bede651ad40368bdb270f5f5b0f9. (LP: #2060721)
+  * columnar: Fix floating point exception (list is empty if -V)
+  * OpProgress: Erase lines when done
+  * apt: Introduce the new terse apt output format 3.0
+  * Show Recommends/Suggests for upgrades too, move them down
+  * Only show Recommends/Suggests for new installs, not upgrades
+  * Use the same words for the summary
+
+  [ Christian Blichmann ]
+  * Columnar output for package lists similar to 'ls'
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 12 Apr 2024 20:17:34 +0200
+
+apt (2.7.14) unstable; urgency=medium
+
+  [ Steve Langasek ]
+  * Support building without gnutls
+  * Add an artificial Conflicts: against libnettle8
+    to force upgrades in launchpad buildd chroots
+
+  [ David Kalnischkies ]
+  * Handle EINTR in the static FileFd::Write overload
+  * Remove non-existent Debug::BuildDeps from apt.conf(5)
+  * Parse unsupported != relation in dependencies
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1065513)
+  * Dutch manpages translation update (Closes: #1065517)
+
+  [ Wesley Schwengle ]
+  * Update documentation for apt-get upgrade with pkg arg (Closes: #1065831)
+  * Update documentation for apt upgrade with pkg arg (Closes: #1065831)
+  * Include Dutch translation for apt/apt-get upgrade documenation update
+  * Update Graphviz URL to https://graphviz.org/
+  * Update VCG tool URI to new location
+  * s#http://bugs.debian.org/src/#https://bugs.debian.org/src#
+
+  [ Julian Andres Klode ]
+  * pkgTagFile::Jump: Use lookback buffer to rejump to current position
+    (Closes: #1067440)
+  * debrecords: Do not reparse if given same location (Closes: #1067440)
+  * Revert "debrecords: Do not reparse if given same location"
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 22 Mar 2024 11:11:44 +0100
+
+apt (2.7.13) unstable; urgency=medium
+
+  * Acknowledge NMU; thank you, Steve!
+
+  [ Wesley Schwengle ]
+  * Show correct location of configure-index in man page
+
+  [ Yuan Tao ]
+  * Fix spelling mistake in zh_CN.po
+
+  [ Julian Andres Klode ]
+  * gpgv: Surface [GNUPG:] ERROR and [GNUPG:] WARNING status messages
+  * gpgv: Add a reason to worthless signers
+  * Implement gpgv --assert-pubkey-algo=>=rsa2048,ed25519,ed448 (LP: #2055193)
+  * Rename 'weak digest algorithm' to 'weak algorithm'
+  * Temporarily downgrade key assertions to "soon worthless"
+  * Do not require versioned dpkg-dev on CI
+  * prepare-release: Adjust for t64 suffix
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 28 Feb 2024 19:48:27 +0100
+
+apt (2.7.12+nmu1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Rename libraries for 64-bit time_t transition.  Closes: #1061896
+
+ -- Steve Langasek <vorlon@debian.org>  Wed, 28 Feb 2024 01:20:31 +0000
+
+apt (2.7.12) unstable; urgency=medium
+
+  [ Kenyon Ralph ]
+  * apt-key: remove carriage returns from armored keyrings before dearmoring
+
+  [ наб ]
+  * apt.8: summarise remaining verbs (Closes: #827785)
+
+  [ Adam Saponara ]
+  * Prevent infinite loop in `ReadConfigFile`
+
+  [ Gábor Németh ]
+  * Typos in integration tests
+  * Document 'dist-clean'
+
+  [ Wesley Schwengle ]
+  * Configure the amount of kernels to keep
+  * Fix bug where ./git-clang-format.sh errors incorrectly
+  * Add documentation of autoremove to apt.conf (5)
+
+  [ Julian Andres Klode ]
+  * Bump Ubuntu apt-key deprecation notice to 24.04
+  * Modernize standard library includes
+  * Automatically enable snapshots where supported
+  * test-snapshot: Fix a test case
+  * Move systemd units to /usr/lib (Closes: #1054137)
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 20 Feb 2024 19:38:02 +0100
+
+apt (2.7.11) unstable; urgency=medium
+
+  [ David Kalnischkies ]
+  * Remove erroneous -a flag from apt-get synopsis in manpage
+  * Support -a for setting host architecture in apt-get source -b
+
+  [ Julian Andres Klode ]
+  * For phasing, check if current version is a security update, not just previous ones
+    (LP: #2051181)
+  * Add public phased update API
+  * Add a new ?phasing pattern
+  * Add the ?security pattern
+  * Show a separate list of upgrades deferred due to phasing (LP: #1988819)
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 13 Feb 2024 16:31:00 +0100
+
+apt (2.7.10) unstable; urgency=medium
+
+  * pkgcachegen: Use placement new to construct header to make
+    valgrind happy when we hash/write out padding bytes
+  * Add Conflicts: apt-verify.
+    The APT team is very concerned about the encroachement of its
+    namespace and the impact on security of its file verification
+    process. We have expressed those concerns in the ITP bug, but
+    the package was nonetheless uploaded and accepted, so we have
+    to take this extraordinary step to protect our users.
+
+ -- Julian Andres Klode <jak@debian.org>  Fri, 19 Jan 2024 09:31:13 +0100
+
+apt (2.7.9) unstable; urgency=medium
+
+  [ David Kalnischkies ]
+  * Accept file system disorder in test-ignored-files
+
+  [ Julian Andres Klode ]
+  * CI: Pull from testing, unstable broken atm
+
+ -- Julian Andres Klode <jak@debian.org>  Thu, 11 Jan 2024 10:04:52 +0100
+
+apt (2.7.8) unstable; urgency=medium
+
+  [ Gábor Németh ]
+  * Add 'dist-clean' command to remove packages and list files (Closes:
+    #959093); this is experimental and does not yet have docs or tests.
+
+  [ David Kalnischkies ]
+  * Have Grp.FindPreferredPkg return very foreign pkgs as last resort
+  * Improve and test distclean implementation
+  * Do not store .diff_Index files in update
+
+  [ Tianyu Chen ]
+  * apt-pkg/cacheset.cc: set ShowErrors to true when no version matched
+    (Closes: #1053887)
+
+  [ Julian Andres Klode ]
+  * Do not silently ignore directories for reserved file names
+  * test: Disable valgrind on armhf, incompatible with stack clash protector
+    (Closes: #1059352)
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 08 Jan 2024 10:32:31 +0100
+
+apt (2.7.7) unstable; urgency=medium
+
+  [ sid ]
+  * Fix incorrect time unit comment for PulseInterval
+
+  [ Patrice Duroux ]
+  * Update fr.po (add a missing dot)
+
+  [ Julian Andres Klode ]
+  * Stop calculating Description-md5 if missing
+  * Revert "Do not fail on systems running in FIPSmode."
+  * s/AlreadDownloaded/AlreadyDownloaded/ in doc/progress-reporting.md.
+    Thanks to jwilk for suggestion
+  * Bump Priority to required to match Debian archive.
+    This unbreaks mmdebstrap scenarios if you mirror Debian or use
+    a distro where apt did not get overridden to required.
+    Reported-By: josch on IRC, following discovery by helmut
+  * Restore ?garbage by calling MarkAndSweep before parsing (LP: #1995790)
+  * Fix the test suite by adding new "m" flags to debug output
+
+  [ Frans Spiesschaert ]
+  * Dutch program translation update (Closes: #1055178)
+
+  [ David Kalnischkies ]
+  * Raise cmake_minimum_required to 3.13 to avoid warnings
+  * Use different variable name in GTest source path detection
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 22 Nov 2023 16:43:47 +0100
+
+apt (2.7.6) unstable; urgency=medium
+
+  [ Américo Monteiro ]
+  * Portuguese manpages translation update (Closes: #1051731)
+
+  [ Julian Andres Klode ]
+  * Downgrade unmerged-usr from error to two warnings (Closes: #1052058)
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 20 Sep 2023 10:25:26 +0200
+
+apt (2.7.5) unstable; urgency=medium
+
+  * doc/po/nl.po: Fix spurious translation of docbook tag
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 16 Sep 2023 13:32:18 +0200
+
+apt (2.7.4) unstable; urgency=medium
+
+  [ Julian Andres Klode ]
+  * CI: Do not require UID 1000 for our test user.
+  * methods: store: Use APT_BUFFER_SIZE (64k) instead of 4k buffers
+  * Only accept installs of usrmerge on unmerged-usr systems.
+    As of bookworm, merged-usr is mandatory, and people got caught
+    in the crosshairs of the dpkg fsys-unmessusr debacle and inadvertently
+    reverted back to an unmerged configuration and continue to remain
+    on an unsupported system unknowingly.
+  * Drop alternatives to the gpgv dependency (Closes: #1051642)
+  * Remove unnecessary explicit st_dev check for merged-usr
+
+  [ Frans Spiesschaert ]
+  * Dutch translation update (Closes: #1051720)
+  * Dutch documentation translation update (Closes: #1051723)
+
+  [ Helge Kreutzmann ]
+  * updated German translation (Closes: #1049427)
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 16 Sep 2023 13:01:48 +0200
+
+apt (2.7.3) unstable; urgency=medium
+
+  [ Tianon Gravi ]
+  * Add "apt-patterns" reference to "apt list" description in apt(8)
+
+  [ Frans Spiesschaert ]
+  * Dutch manpages translation update (Closes: #1033904)
+  * Dutch program translation update (Closes: #1033909)
+
+  [ Mert Dirik ]
+  * Turkish program translation update
+
+  [ Remus-Gabriel Chelu ]
+  * Romanian program translation update (Closes: #1040644)
+
+  [ David Kalnischkies ]
+  * Add apt-patterns(7) to apt{,-cache,-get} SEE ALSO sections
+
+  [ Julian Andres Klode ]
+  * Compare SHA256 to check if versions are really the same (Closes: #931175)
+    (LP: #2029268)
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 02 Aug 2023 14:30:47 +0200
+
+apt (2.7.2) unstable; urgency=medium
+
+  [ A. Maitland Bottoms ]
+  * Do not fail on systems running in FIPSmode.
+
+  [ Julian Andres Klode ]
+  * Upload to unstable
+  * update: Add notice about missing Signed-By in deb822 sources
+  * doc: Bump distro versions for apt-key removal
+  * dist-upgrade: Revert phased updates using keeps only (LP: #2025462)
+  * Do not mark updates for install that are still phasing
+  * Fix snapshot crashes with multiple components inside Ubuntu docker
+    image
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 12 Jul 2023 17:23:26 +0200
+
+apt (2.7.1) experimental; urgency=medium
+
+  * Seed snapshot servers for well-known hosts, including PPAs. Note
+    that it is preferable for repositories to declare their snapshot
+    server in the Snapshots Release file field than to rely on this
+    feature.
+
+ -- Julian Andres Klode <jak@debian.org>  Wed, 24 May 2023 18:56:31 +0200
+
+apt (2.7.0) experimental; urgency=medium
+
+  [ Jacob Kauffmann ]
+  * Keep "or group" when installing package to satisfy it
+
+  [ Julian Andres Klode ]
+  * Add apt install,upgrade,... -U,--update options. Please note that
+    this still releases locks in between and is subject to races.
+  * Initial support for snapshot servers, apt --snapshot option. Some
+    implementation details may change down the road to 2.8
+
+ -- Julian Andres Klode <jak@debian.org>  Tue, 02 May 2023 16:41:47 +0200
 
 apt (2.6.0) unstable; urgency=medium
 
diff --git a/debian/control b/debian/control
index 58c6be1..157ca07 100644
--- a/debian/control
+++ b/debian/control
@@ -1,13 +1,14 @@
 Source: apt
 Section: admin
-Priority: important
+Priority: required
 Maintainer: APT Development Team <deity@lists.debian.org>
 Uploaders: Michael Vogt <mvo@debian.org>,
            Julian Andres Klode <jak@debian.org>,
            David Kalnischkies <donkult@debian.org>
 Rules-Requires-Root: no
 Standards-Version: 4.1.1
-Build-Depends: cmake (>= 3.4),
+Build-Depends: dpkg-dev (>= 1.22.5) <!pkg.apt.ci>,
+               cmake (>= 3.4),
                debhelper-compat (= 12),
                docbook-xml <!nodoc>,
                docbook-xsl <!nodoc>,
@@ -16,8 +17,7 @@ Build-Depends: cmake (>= 3.4),
                googletest <!nocheck> | libgtest-dev <!nocheck>,
                libbz2-dev,
                libdb-dev,
-               libgnutls28-dev (>= 3.4.6),
-               libgcrypt20-dev,
+               libssl-dev,
                liblz4-dev (>= 0.0~r126),
                liblzma-dev,
                libseccomp-dev (>= 2.4.2) [amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x hppa powerpc powerpcspe ppc64 x32],
@@ -28,6 +28,7 @@ Build-Depends: cmake (>= 3.4),
                ninja-build,
                pkg-config,
                po4a (>= 0.34-2) <!nodoc>,
+               sqv [amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x hurd-amd64 hurd-i386 loong64 powerpc ppc64 sparc64] <!pkg.apt.nosqv> | gpgv,
                triehash,
                xsltproc <!nodoc>,
                zlib1g-dev
@@ -37,9 +38,9 @@ Vcs-Browser: https://salsa.debian.org/apt-team/apt
 
 Package: apt
 Architecture: any
-Depends: adduser,
-         gpgv | gpgv2 | gpgv1,
-         libapt-pkg6.0 (>= ${binary:Version}),
+Depends: base-passwd (>= 3.6.1) | adduser,
+         ${openpgp:Depends},
+         libapt-pkg7.0 (>= ${binary:Version}),
          ${apt:keyring},
          ${misc:Depends},
          ${shlibs:Depends}
@@ -47,6 +48,7 @@ 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)
+Conflicts: apt-verify, libnettle8 (<< 3.9.1-2.2~)
 Provides: apt-transport-https (= ${binary:Version})
 Recommends: ca-certificates
 Suggests: apt-doc,
@@ -67,9 +69,10 @@ Description: commandline package manager
     as well as installable packages
   * apt-cdrom to use removable media as a source for packages
   * apt-config as an interface to the configuration settings
-  * apt-key as an interface to manage authentication keys
+  * apt-extracttemplates is used by debconf to prompt for configuration
+    questions before installation.
 
-Package: libapt-pkg6.0
+Package: libapt-pkg7.0
 Architecture: any
 Multi-Arch: same
 Priority: optional
@@ -77,8 +80,9 @@ Pre-Depends: ${misc:Pre-Depends}
 Depends: ${misc:Depends}, ${shlibs:Depends}
 Breaks: appstream (<< 0.9.0-3~), apt (<< 1.6~), aptitude (<< 0.8.9), libapt-inst1.5 (<< 0.9.9~), dpkg (<< 1.20.8)
 Recommends: apt (>= ${binary:Version})
+Conflicts: libnettle8 (<< 3.9.1-2.2~)
 Section: libs
-Provides: libapt-pkg (= ${binary:Version})
+Provides: ${t64:Provides}, libapt-pkg (= ${binary:Version})
 Description: package management runtime library
  This library provides the common functionality for searching and
  managing packages as well as information about packages.
@@ -91,8 +95,8 @@ Description: package management runtime library
     solver or by interfacing with an external one
   * authenticating the sources and validating the retrieved data
   * installation and removal of packages in the system
-  * providing different transports to retrieve data over cdrom, ftp,
-    http(s), rsh as well as an interface to add more transports like
+  * providing different transports to retrieve data over cdrom and
+    http(s) as well as an interface to add more transports like
     tor+http(s) (apt-transport-tor).
 
 Package: apt-doc
@@ -142,8 +146,6 @@ Description: package management related utility programs
  This package contains some less used commandline utilities related
  to package management with APT.
  .
-  * apt-extracttemplates is used by debconf to prompt for configuration
-    questions before installation.
   * apt-ftparchive is used to create Packages and other index files
     needed to publish an archive of Debian packages
   * apt-sortpkgs is a Packages/Sources file normalizer.
diff --git a/debian/copyright b/debian/copyright
index 21b874f..0f0e3f6 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -16,11 +16,8 @@ Comment:
  for the project has always been GPL-2+, so we cannot be sure that contributors
  meant to grant additional permissions.
  .
- Translation files are considered to generally be GPL-2+,
- but they also include strings used by methods/rsh.cc which appears to be GPL-2.
- As the translations are split into separate domains later on,
- these strings are not loaded by library users outside of apt
- (they are in the 'apt' translation domain).
+ Translation files are also considered to generally be GPL-2+,
+ but they might include strings used in code with other licenses.
  .
  The apt-pkg/contrib/fileutl.cc file states "RunScripts()" is "GPLv2".
  We believe that this was not meant to exclude later versions of the GPL,
@@ -52,22 +49,9 @@ Copyright: 1997-1999 Jason Gunthorpe and others
            2014 Anthony Towns
 License: GPL-2+
 
-Files: methods/rsh.cc
-Copyright: 2000 Ben Collins <bcollins@debian.org>
-License: GPL-2
-Comment:
- This file stated:
- Licensed under the GNU General Public License v2 [no exception clauses]
- .
- We believe that this was intended to be not a statement against future
- versions of the GPL, but meant to exclude the Qt license exception in
- place in APT until that time.
- .
- We received permission from Ben in 2021 to relicense under GPL-2+,
- contributions from Adam Heath and Daniel Hartwig may still have to
- be considered GPL-2 for the time being.
- .
- Other contributions are GPL-2+
+Files: methods/connect.c
+Copyright: Copyright (c) 1996 - 2023, Daniel Stenberg, <daniel@haxx.se>, and many contributors
+License: GPL-2+ and curl
 
 Files: CMake/FindBerkeley.cmake
 Copyright: 2006, Alexander Dymo, <adymo@kdevelop.org>
@@ -153,3 +137,20 @@ License: GPL-2+
 Comment:
  On Debian systems, the complete text of the GNU General
  Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+License: curl
+ Permission to use, copy, modify, and distribute this software for any purpose
+ with or without fee is hereby granted, provided that the above copyright
+ notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+ OR OTHER DEALINGS IN THE SOFTWARE.
+ .
+ Except as contained in this notice, the name of a copyright holder shall not
+ be used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization of the copyright holder.
diff --git a/debian/default-sequoia.config b/debian/default-sequoia.config
new file mode 100644
index 0000000..b0abc90
--- /dev/null
+++ b/debian/default-sequoia.config
@@ -0,0 +1,4 @@
+[hash_algorithms]
+sha1.second_preimage_resistance = 2026-01-01
+[packets]
+signature.v3 = 2026-01-01
diff --git a/debian/gbp.conf b/debian/gbp.conf
index 0cc6618..a0312de 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -3,7 +3,7 @@
 ;preexport = ./prepare-release pre-export
 prebuild = ./prepare-release pre-build
 postbuild = ./prepare-release post-build
-debian-branch = 2.6.y
+debian-branch = main
 debian-tag = %(version)s
 export-dir = ../build-area
 sign-tags = True
diff --git a/debian/libapt-pkg6.0.symbols b/debian/libapt-pkg6.0.symbols
deleted file mode 100644
index d297eb1..0000000
--- a/debian/libapt-pkg6.0.symbols
+++ /dev/null
@@ -1,1378 +0,0 @@
-libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
-* Build-Depends-Package: libapt-pkg-dev
- TFRewritePackageOrder@APTPKG_6.0 0.8.0
- TFRewriteSourceOrder@APTPKG_6.0 0.8.0
- (c++)"FileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"IdentCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_6.0" 0.8.0
- (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@APTPKG_6.0" 0.8.0
- (c++)"MountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"ParseCWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"ReadPinDir(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"RunScripts(char const*)@APTPKG_6.0" 0.8.0
- (c++)"SafeGetCWD[abi:cxx11]()@APTPKG_6.0" 0.8.0
- (c++)"QuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_6.0" 0.8.0
- (c++)"ReadPinFile(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@APTPKG_6.0" 0.8.0
- (c++)"SetNonBlock(int, bool)@APTPKG_6.0" 0.8.0
- (c++)"flExtension(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"Base64Encode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"ReadMessages(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_6.0" 0.8.0
- (c++)"SetCloseExec(int, bool)@APTPKG_6.0" 0.8.0
- (c++)"StringToBool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_6.0" 0.8.0
- (c++)"UnmountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"_GetErrorObj()@APTPKG_6.0" 0.8.0
- (c++)"Base256ToNum(char const*, unsigned long long&, unsigned int)@APTPKG_6.0" 1.0.5
- (c++)"pkgFixBroken(pkgDepCache&)@APTPKG_6.0" 0.8.0
- (c++)"DeQuoteString(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)@APTPKG_6.0" 0.8.0
- (c++)"DeQuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"OutputInDepth[abi:cxx11](unsigned long, char const*)@APTPKG_6.0" 0.8.0
- (c++)"ReadConfigDir(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_6.0" 0.8.0
- (c++)"URItoFileName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"UTF8ToCodeset(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_6.0" 0.8.0
- (c++)"pkgInitConfig(Configuration&)@APTPKG_6.0" 0.8.0
- (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@APTPKG_6.0" 0.8.0
- (c++)"safe_snprintf(char*, char*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_6.0" 0.8.0
- (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"ParseQuoteWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"ReadConfigFile(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_6.0" 0.8.0
- (c++)"TokSplitString(char, char*, char**, unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"pkgApplyStatus(pkgDepCache&)@APTPKG_6.0" 0.8.0
- (c++)"CheckDomainList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"CreateDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"DirectoryExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"VectorizeString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@APTPKG_6.0" 0.8.0
- (c++)"pkgMinimizeUpgrade(pkgDepCache&)@APTPKG_6.0" 0.8.0
- (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"WaitFd(int, bool, unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_6.0" 0.8.0
- (c++)"Hex2Num(APT::StringView, unsigned char*, unsigned int)@APTPKG_6.0" 1.9~
- (c++)"CopyFile(FileFd&, FileFd&)@APTPKG_6.0" 0.8.0
- (c++)"ExecFork()@APTPKG_6.0" 0.8.0
- (c++)"ExecWait(int, char const*, bool)@APTPKG_6.0" 0.8.0
- (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@APTPKG_6.0" 0.8.0
- (c++)"SubstVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"SubstVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SubstVar const*)@APTPKG_6.0" 0.8.0
- (c++)"flNoLink(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"flNotDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"ioprintf(std::basic_ostream<char, std::char_traits<char> >&, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"IsMounted(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"LookupTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"SizeToStr[abi:cxx11](double)@APTPKG_6.0" 0.8.0
- (c++)"TimeToStr[abi:cxx11](unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"_strstrip(char*)@APTPKG_6.0" 0.8.0
- (c++)"flCombine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"flNotFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_6.0" 0.8.0
- (c++)"stringcmp(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"strprintf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"HashString::SupportedHashes()@APTPKG_6.0" 0.8.0
- (c++)"HashString::_SupportedHashes@APTPKG_6.0" 0.8.0
- (c++)"HashString::HashString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"HashString::HashString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"HashString::HashString()@APTPKG_6.0" 0.8.0
- (c++)"OpProgress::CheckChange(float)@APTPKG_6.0" 0.8.0
- (c++)"OpProgress::OpProgress()@APTPKG_6.0" 0.8.0
- (c++)"SourceCopy::~SourceCopy()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqFile::~pkgAcqFile()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::FetchNeeded()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::TotalNeeded()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::MethodConfig::MethodConfig()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::PartialPresent()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Add(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Run(int)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Bump()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Item::Finished()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Item::~Item()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Clean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Bump()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Cycle()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Startup()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::FindItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::Shutdown(bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Queue::~Queue()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::UriEnd()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::OutFdReady()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::MediaChange(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::RunMessages()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Capabilities(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::ReadMessages()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::MethodFailure()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::SendConfiguration()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Pulse()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Start()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::ItemDone()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Construct()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::InFdReady()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Worker::~Worker()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::Shutdown()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::UriBegin()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::GetConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::QueueName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig const*&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::pkgAcquire()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquire::~pkgAcquire()@APTPKG_6.0" 0.8.0
- (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgRecords::pkgRecords(pkgCache&)@APTPKG_6.0" 0.8.0
- (c++)"pkgRecords::~pkgRecords()@APTPKG_6.0" 0.8.0
- (c++)"pkgTagFile::Step(pkgTagSection&)@APTPKG_6.0" 0.8.0
- (c++)"pkgTagFile::~pkgTagFile()@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::Parse(int, char const**)@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::~CommandLine()@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::DumpErrors(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::MsgType const&, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::PopMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::PushToStack()@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::RevertToStack()@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::MergeWithStack()@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Debug(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Errno(char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Error(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Fatal(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::DebugE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::FatalE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Notice(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Discard()@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::NoticeE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::Warning(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::WarningE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::GlobalError()@APTPKG_6.0" 0.8.0
- (c++)"PackageCopy::~PackageCopy()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::ActionGroup::release()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::ActionGroup::~ActionGroup()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::readStateFile(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::GetRootSetFunc()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkFollowsSuggests()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkFollowsRecommends()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Init(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Update(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Update(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::Sweep()@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDepCache::~pkgDepCache()@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.9.11~
- (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::~pkgSimulate()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::FetchResult::FetchResult()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Configuration(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Log(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Run(bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Fail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Fail(bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Status(char const*, ...)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::Redirect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::MediaFail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqMethod::~pkgAcqMethod()@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::Open(OpProgress*, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::Close()@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::pkgCacheFile()@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheFile::~pkgCacheFile()@APTPKG_6.0" 0.8.0
- (c++)"pkgIndexFile::Type::GlobalList@APTPKG_6.0" 0.8.0
- (c++)"pkgIndexFile::Type::GlobalListLen@APTPKG_6.0" 0.8.0
- (c++)"pkgIndexFile::Type::GetType(char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgIndexFile::Type::Type()@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::OrderUnpack(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::OrderCritical()@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::OrderConfigure()@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DoRun()@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::WipeFlags(unsigned long)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgOrderList::~pkgOrderList()@APTPKG_6.0" 0.8.0
- (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Set(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Set(char const*, int const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::CndSet(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Lookup(char const*, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Configuration(Configuration::Item const*)@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Configuration()@APTPKG_6.0" 0.8.0
- (c++)"Configuration::~Configuration()@APTPKG_6.0" 0.8.0
- (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@APTPKG_6.0" 0.8.0
- (c++)"debListParser::GetPrio(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqArchive::Finished()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqArchive::QueueNext()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcqArchive::~pkgAcqArchive()@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::Type::GlobalList@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::Type::GlobalListLen@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::Type::GetType(char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::ReadMainList()@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::Reset()@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::pkgSourceList()@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::~pkgSourceList()@APTPKG_6.0" 0.8.0
- (c++)"pkgSrcRecords::Find(char const*, bool const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgSrcRecords::Restart()@APTPKG_6.0" 0.8.0
- (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@APTPKG_6.0" 0.8.0
- (c++)"pkgSrcRecords::~pkgSrcRecords()@APTPKG_6.0" 0.8.0
- (c++)"pkgTagSection::TrimRecord(bool, char const*&)@APTPKG_6.0" 0.8.0
- (c++)"pkgTagSection::Trim()@APTPKG_6.0" 0.8.0
- (c++)"OpTextProgress::Done()@APTPKG_6.0" 0.8.0
- (c++)"OpTextProgress::Write(char const*)@APTPKG_6.0" 0.8.0
- (c++)"OpTextProgress::Update()@APTPKG_6.0" 0.8.0
- (c++)"OpTextProgress::OpTextProgress(Configuration&)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::ExpressionMatches(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::MatchVer(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersionMatch::pkgVersionMatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgVersionMatch::MatchType)@APTPKG_6.0" 0.8.0
- (c++)"TranslationsCopy::CopyTranslations(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquireStatus::Stop()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquireStatus::Start()@APTPKG_6.0" 0.8.0
- (c++)"pkgAcquireStatus::pkgAcquireStatus()@APTPKG_6.0" 0.8.0
- (c++)"pkgArchiveCleaner::Go(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::FixMissing()@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::ConfigureAll()@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::OrderInstall()@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::CreateOrderList()@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgPackageManager::~pkgPackageManager()@APTPKG_6.0" 0.8.0
- (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgProblemResolver::~pkgProblemResolver()@APTPKG_6.0" 0.8.0
- (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"debVersioningSystem::UpstreamVersion[abi:cxx11](char const*)@APTPKG_6.0" 0.8.0
- (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@APTPKG_6.0" 0.8.0
- (c++)"debVersioningSystem::debVersioningSystem()@APTPKG_6.0" 0.8.0
- (c++)"pkgUdevCdromDevices::Scan()@APTPKG_6.0" 0.8.0
- (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@APTPKG_6.0" 0.8.0
- (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@APTPKG_6.0" 0.8.0
- (c++)"pkgVersioningSystem::GlobalList@APTPKG_6.0" 0.8.0
- (c++)"pkgVersioningSystem::GlobalListLen@APTPKG_6.0" 0.8.0
- (c++)"pkgVersioningSystem::GetVS(char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgVersioningSystem::pkgVersioningSystem()@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::Configuration::checkArchitecture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"APT::CacheSetHelper::~CacheSetHelper()@APTPKG_6.0" 0.8.0
- (c++)"URI::NoUserPassword(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"URI::CopyFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"URI::SiteOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.0
- (c++)"URI::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >()@APTPKG_6.0" 0.8.0
- (c++)"FileFd::Size()@APTPKG_6.0" 0.8.0
- (c++)"FileFd::Sync()@APTPKG_6.0" 0.8.0
- (c++)"FileFd::Tell()@APTPKG_6.0" 0.8.0
- (c++)"FileFd::Close()@APTPKG_6.0" 0.8.0
- (c++)"FileFd::~FileFd()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::CompTypeDeb(unsigned char)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::DepIterator::operator++()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::GrpIterator::operator++()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::PkgIterator::operator++()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::PkgFileIterator::RelStr[abi:cxx11]()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::ReMap(bool const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::Header::Header()@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::DepType(unsigned char)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::FindGrp(APT::StringView)@APTPKG_6.0" 1.9~
- (c++)"pkgCache::FindPkg(APT::StringView)@APTPKG_6.0" 1.9~
- (c++)"pkgCache::FindPkg(APT::StringView, APT::StringView)@APTPKG_6.0" 1.9~
- (c++)"pkgCache::CompType(unsigned char)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::Priority(unsigned char)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::pkgCache(MMap*, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::~pkgCache()@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::DropRepeats(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::FindPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*, unsigned int)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::WriteDatabase(Configuration&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::DropBinaryArch(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::WriteSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::ReduceSourcelist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::Add(pkgCdromStatus*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::Ident(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0
- (c++)"pkgCdrom::Score(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::CopyPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::ReconstructChop(unsigned long&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::ReconstructPrefix(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::ConvertToSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::ChopDirs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::GrabFirst(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_6.0" 0.8.0
- (c++)"SigVerify::CopyAndVerify(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::DoTerminalPty(int)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::WriteHistoryTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::Reset()@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::DoStdin(int)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::OpenLog()@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::CloseLog()@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgDPkgPM::~pkgDPkgPM()@APTPKG_6.0" 0.8.0
- (c++)"pkgPolicy::InitDefaults()@APTPKG_6.0" 0.8.0
- (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0
- (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short)@APTPKG_6.0" 0.8.0
- (c++)"pkgPolicy::pkgPolicy(pkgCache*)@APTPKG_6.0" 0.8.0
- (c++)"pkgPolicy::~pkgPolicy()@APTPKG_6.0" 0.8.0
- (c++)"pkgSystem::GlobalList@APTPKG_6.0" 0.8.0
- (c++)"pkgSystem::GlobalListLen@APTPKG_6.0" 0.8.0
- (c++)"pkgSystem::GetSystem(char const*)@APTPKG_6.0" 0.8.0
- (c++)"HashString::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_6.0" 0.8.0
- (c++)"HashString::empty() const@APTPKG_6.0" 0.8.0
- (c++)"HashString::toStr[abi:cxx11]() const@APTPKG_6.0" 0.8.0
- (c++)"CommandLine::FileSize() const@APTPKG_6.0" 0.8.0
- (c++)"GlobalError::empty(GlobalError::MsgType const&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgIndexFile::FindInCache(pkgCache&) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Find[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Item::FullTag[abi:cxx11](Configuration::Item const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::FindB(char const*, bool const&) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::FindI(char const*, int const&) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::Exists(char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::FindAny[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::FindDir[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::FindFile[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0
- (c++)"Configuration::ExistsAny(char const*) const@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::Type::FixupURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgTagSection::Find(APT::StringView, char const*&, char const*&) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::Find(APT::StringView, unsigned int&) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::FindI(APT::StringView, long) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::Find(APT::StringView) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::FindULL(APT::StringView, unsigned long long const&) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::FindFlag(APT::StringView, unsigned long&, unsigned long) const@APTPKG_6.0" 1.9~
- (c++)"pkgCache::DepIterator::AllTargets() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::DepIterator::IsCritical() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::GrpIterator::FindPkg(APT::StringView) const@APTPKG_6.0" 1.9~
- (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::PkgIterator::CurVersion() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::PkgIterator::State() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::NewestFile() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::Downloadable() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::TranslatedDescription() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::RelStr[abi:cxx11]() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::VerIterator::Automatic() const@APTPKG_6.0" 0.8.0
- (c++)"pkgCache::sHash(APT::StringView) const@APTPKG_6.0" 1.9~
- (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@APTPKG_6.0" 0.8.0
- (c++)"metaIndex::GetURI[abi:cxx11]() const@APTPKG_6.0" 0.8.0
- (c++)"metaIndex::GetDist[abi:cxx11]() const@APTPKG_6.0" 0.8.0
- (c++)"metaIndex::GetType() const@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for OpProgress@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for SourceCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcqFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcquire@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for PackageCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDepCache@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgSimulate@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcqMethod@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgCacheFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgIndexFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcqArchive@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgTagSection@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for OpTextProgress@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcquireStatus@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgPackageManager@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for debVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for FileFd@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgCache@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for IndexCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for metaIndex@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDPkgPM@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgPolicy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgAcquire::Item@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDepCache::Policy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgSimulate::Policy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgIndexFile::Type@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgSourceList::Type@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for APT::CacheSetHelper@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgCache::Namespace@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for OpProgress@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for SourceCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcqFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcquire@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for PackageCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDepCache@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgSimulate@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcqMethod@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgCacheFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgIndexFile@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcqArchive@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgTagSection@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for OpTextProgress@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcquireStatus@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgPackageManager@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for debVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for FileFd@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgCache@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for IndexCopy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for metaIndex@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDPkgPM@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgPolicy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgSystem@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgAcquire::Item@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDepCache::Policy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgSimulate::Policy@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgIndexFile::Type@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgSourceList::Type@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for APT::CacheSetHelper@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgCache::Namespace@APTPKG_6.0" 0.8.0
- (c++)"vtable for OpProgress@APTPKG_6.0" 0.8.0
- (c++)"vtable for SourceCopy@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcqFile@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcquire@APTPKG_6.0" 0.8.0
- (c++)"vtable for PackageCopy@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDepCache@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgSimulate@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcqMethod@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgCacheFile@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgIndexFile@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcqArchive@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgTagSection@APTPKG_6.0" 0.8.0
- (c++)"vtable for OpTextProgress@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcquireStatus@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgPackageManager@APTPKG_6.0" 0.8.0
- (c++)"vtable for debVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgVersioningSystem@APTPKG_6.0" 0.8.0
- (c++)"vtable for FileFd@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgCache@APTPKG_6.0" 0.8.0
- (c++)"vtable for IndexCopy@APTPKG_6.0" 0.8.0
- (c++)"vtable for metaIndex@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDPkgPM@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgPolicy@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgSystem@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgAcquire::Item@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDepCache::Policy@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgSimulate::Policy@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgIndexFile::Type@APTPKG_6.0" 0.8.0
- (c++)"vtable for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgSourceList::Type@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0
- (c++)"vtable for APT::CacheSetHelper@APTPKG_6.0" 0.8.0
- _config@APTPKG_6.0 0.8.0
- _system@APTPKG_6.0 0.8.0
- debVS@APTPKG_6.0 0.8.0
- pkgLibVersion@APTPKG_6.0 0.8.0
- pkgVersion@APTPKG_6.0 0.8.0
- (c++)"pkgAcquireStatus::~pkgAcquireStatus()@APTPKG_6.0" 0.8.0
- (c++)"IndexCopy::~IndexCopy()@APTPKG_6.0" 0.8.0
- (c++)"pkgArchiveCleaner::~pkgArchiveCleaner()@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgArchiveCleaner@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgArchiveCleaner@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgArchiveCleaner@APTPKG_6.0" 0.8.0
-### architecture specific: va_list
- (arch=armel armhf arm64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@APTPKG_6.0" 0.8.15~exp1
- (arch=i386 hurd-i386 kfreebsd-i386 ppc64 ppc64el|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@APTPKG_6.0" 0.8.15~exp1
- (arch=hppa ia64 mips mipsel mips64el sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@APTPKG_6.0" 0.8.15~exp1
- (arch=amd64 kfreebsd-amd64 powerpc powerpcspe s390 s390x x32|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag (&) [1]) const@APTPKG_6.0" 0.8.15~exp1
- (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@APTPKG_6.0" 0.8.15~exp1
- (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@APTPKG_6.0" 0.8.15~exp1
-### architecture specific: va_list & size_t
- (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=arm64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=alpha|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=powerpc powerpcspe x32|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=hppa mips mipsel sparc|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=ia64 sparc64 mips64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=sh4|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=ppc64 ppc64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=arm64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=alpha|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=powerpc powerpcspe x32|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@APTPKG_6.0" 0.8.11.4
- (arch=hppa mips mipsel sparc|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=ia64 sparc64 mips64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4 1
- (arch=sh4|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4
- (arch=ppc64 ppc64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4
-### architecture specific: size_t
- (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc x32|c++)"_strtabexpand(char*, unsigned int)@APTPKG_6.0" 0.8.0
- (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el s390 s390x sparc64 ppc64 ppc64el|c++)"_strtabexpand(char*, unsigned long)@APTPKG_6.0" 0.8.0
-### architecture specific: time_t
- (arch=!x32|c++)"FTPMDTMStrToTime(char const*, long&)@APTPKG_6.0" 0.8.0
- (arch=x32|c++)"FTPMDTMStrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0
- (arch=x32|c++)"RFC1123StrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0
- (arch=!x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long&)@APTPKG_6.0" 1.9.0
- (arch=x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long&)@APTPKG_6.0" 1.9.0
-### architecture specific: mode_t
- (arch=!kfreebsd-i386 !kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned int)@APTPKG_6.0" 1.1~exp9
- (arch=kfreebsd-i386 kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned short)@APTPKG_6.0" 1.1~exp9
-###
- (c++)"CreateAPTDirectoryIfNeeded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.2
- (c++)"FileFd::FileSize()@APTPKG_6.0" 0.8.8
- (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@APTPKG_6.0" 0.8.11
- (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@APTPKG_6.0" 0.8.11
- (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.11
- (c++)"RealFileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.11
- (c++)"StripEpoch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.11
- (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@APTPKG_6.0" 0.8.11
- (c++)"FindMountPointForDevice[abi:cxx11](char const*)@APTPKG_6.0" 0.8.12
- (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@APTPKG_6.0" 0.8.12
- (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@APTPKG_6.0" 0.8.12
- (c++)"APT::Configuration::getCompressors(bool)@APTPKG_6.0" 0.8.12
- (c++)"APT::Configuration::getCompressorExtensions[abi:cxx11]()@APTPKG_6.0" 0.8.12
- (c++)"pkgCache::DepIterator::IsNegative() const@APTPKG_6.0" 0.8.15~exp1
- (c++)"Configuration::CndSet(char const*, int)@APTPKG_6.0" 0.8.15.3
- (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.15.3
- (c++)"DeEscapeString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.15.4
- (c++)"GetModificationTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.15.6
- (c++)"pkgSourceList::GetLastModifiedTime()@APTPKG_6.0" 0.8.15.6
- (c++)"pkgCacheFile::RemoveCaches()@APTPKG_6.0" 0.8.15.7
- (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@APTPKG_6.0" 0.8.15.7
-### external dependency resolver ###
- (c++)"EDSP::ApplyRequest(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, pkgDepCache&)@APTPKG_6.0" 0.8.16~exp2
- (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@APTPKG_6.0" 0.8.16~exp2
- (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_6.0" 0.8.16~exp6
-### generalisation of checksums (with lfs) -- mostly api-compatible available (without sha512 in previous versions)
-### large file support - available in older api-compatible versions without lfs ###
- (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@APTPKG_6.0" 0.8.16~exp6
- (c++)"OpProgress::SubProgress(unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, float)@APTPKG_6.0" 0.8.16~exp6
- (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.16~exp6
- (c++)"OpProgress::Progress(unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"SourceCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgAcquire::UriIterator::~UriIterator()@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgAcquire::MethodConfig::~MethodConfig()@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgTagFile::Offset()@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"PackageCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgTagSection::~pkgTagSection()@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@APTPKG_6.0" 0.8.16~exp6
- (c++)"FileFd::Seek(unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"FileFd::Skip(unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"FileFd::Write(void const*, unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"FileFd::Truncate(unsigned long long)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgTagFile@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgTagFile@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6
- (c++)"typeinfo name for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgTagFile@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6
- (c++)"vtable for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6
-### remove deprecated parameter
- (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.16~exp6
- (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.16~exp6
-### used internally by public interfaces - if you use them directly, you can keep the pieces
-### orderlist rework: the touched methods are protected
- (c++)"pkgPackageManager::SigINTStop@APTPKG_6.0" 0.8.16~exp14
- (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@APTPKG_6.0" 0.8.16~exp14
- (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@APTPKG_6.0" 0.8.16~exp14
-### FileFd rework: supporting different on-the-fly (de)compressing needs more parameter (abi), but the api is stable
- (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@APTPKG_6.0" 0.8.16~exp9
- (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@APTPKG_6.0" 0.8.16~exp9
- (c++)"FileFd::ModificationTime()@APTPKG_6.0" 0.8.16~exp9
- (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_6.0" 0.8.16~exp9
- (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@APTPKG_6.0" 0.8.16~exp9
- (c++)"FileFd::ReadLine(char*, unsigned long long)@APTPKG_6.0" 0.8.16~exp9
-### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper)
- (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo name for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo name for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9
- (c++)"vtable for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9
- (c++)"vtable for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9
-### rework of the packagemanager rework
- (c++)"APT::Progress::PackageManagerFancy::HandleSIGWINCH(int)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::~PackageManagerFancy()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::PackageManagerFancy()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::SetupTerminalScrollArea(int)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::Stop()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManager::~PackageManager()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StartDpkg()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Stop()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressDeb822Fd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFactory()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::~PackageManagerProgressFd()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::PackageManagerProgressFd(int)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::StartDpkg()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::Stop()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerProgressFd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManager::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerText::~PackageManagerText()@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerText::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::String::Strip(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.9.13~exp1
- (c++)"pkgDPkgPM::BuildPackagesProgressMap()@APTPKG_6.0" 0.9.13~exp1
- (c++)"pkgDPkgPM::DoDpkgStatusFd(int)@APTPKG_6.0" 0.9.13~exp1
- (c++)"pkgDPkgPM::ProcessDpkgStatusLine(char*)@APTPKG_6.0" 0.9.13~exp1
- (c++)"pkgDPkgPM::StartPtyMagic()@APTPKG_6.0" 0.9.13~exp1
- (c++)"pkgDPkgPM::StopPtyMagic()@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo name for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo name for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo name for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo name for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1
- (c++)"typeinfo name for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1
- (c++)"vtable for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1
- (c++)"vtable for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1
- (c++)"vtable for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1
- (c++)"vtable for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1
- (c++)"vtable for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1
- (c++)"APT::Progress::PackageManagerFancy::instances@APTPKG_6.0" 0.9.14.2
- (c++)"APT::Progress::PackageManagerFancy::Start(int)@APTPKG_6.0" 0.9.14.2
-### install foo.deb support
- (c++)"flAbsPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp1
- (c++)"metaIndex::~metaIndex()@APTPKG_6.0" 1.1~exp1
-### CacheFilter functors
- (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::~ANDMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::Matcher::~Matcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::NOTMatcher::NOTMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::NOTMatcher::~NOTMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::OR(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::~ORMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::ORMatcher::ORMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::PackageIsNewInstall::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::PackageIsNewInstall::~PackageIsNewInstall()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile*)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::PackageMatcher::~PackageMatcher()@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::CacheFilter::TrueMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo name for APT::CacheFilter::TrueMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4
- (c++)"vtable for APT::CacheFilter::TrueMatcher@APTPKG_6.0" 1.1~exp4
-### cacheset redesign (API, but not ABI compatible)
-# (c++|optional=inline)"APT::PackageContainerInterface::FromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::PackageContainerInterface::FromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::PackageContainerInterface::Modifier, std::allocator<APT::PackageContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::PackageContainerInterface::FromName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::PackageContainerInterface::FromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::PackageContainerInterface::FromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&, bool)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++|optional=inline)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++)"APT::PackageContainerInterface::FromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9
-# (c++)"APT::PackageContainerInterface::FromGroup(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_6.0" 0.9.7
-# (c++)"APT::PackageContainerInterface::FromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_6.0" 0.9.11
- (c++)"APT::CacheSetHelper::canNotFindFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::canNotFindPackage(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::canNotFindVersion(APT::CacheSetHelper::VerSelector, APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::canNotGetCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::canNotGetInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::canNotGetVersion(APT::CacheSetHelper::VerSelector, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFrom(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::CacheSetHelper::PkgModifier, std::allocator<APT::CacheSetHelper::PkgModifier> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromPackageName(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::PackageFromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const&, APT::CacheSetHelper::PkgSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::CacheSetHelper::VerSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp4
- (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&, bool)@APTPKG_6.0" 1.1~exp4
- (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo name for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo name for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo name for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"vtable for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"vtable for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"vtable for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 0.8.16~exp9
- (c++)"typeinfo for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 1.1~exp15
- (c++)"typeinfo name for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 1.1~exp15
- (c++)"vtable for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_6.0" 1.1~exp15
-### all the hashes are belong to us
- (c++)"Hashes::GetHashStringList()@APTPKG_6.0" 1.1~exp1
- (c++)"Hashes::Hashes()@APTPKG_6.0" 1.1~exp1
- (c++)"Hashes::~Hashes()@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::find(char const*) const@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::push_back(HashString const&)@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::supported(char const*)@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::usable() const@APTPKG_6.0" 1.1~exp1
- (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_6.0" 1.1~exp1
- (c++)"HashString::operator==(HashString const&) const@APTPKG_6.0" 1.1~exp1
- (c++)"HashString::operator!=(HashString const&) const@APTPKG_6.0" 1.1~exp1
- (c++)"pkgAcqArchive::IsTrusted() const@APTPKG_6.0" 1.1~exp1
- (c++)"pkgAcqFile::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp1
- (c++)"pkgAcqMethod::DropPrivsOrDie()@APTPKG_6.0" 1.1~exp1
- (c++)"pkgAcquire::Item::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp1
- (c++)"pkgAcquire::Item::IsTrusted() const@APTPKG_6.0" 1.1~exp1
- (c++)"typeinfo for Hashes@APTPKG_6.0" 1.1~exp1
- (c++)"typeinfo name for Hashes@APTPKG_6.0" 1.1~exp1
- (c++)"vtable for Hashes@APTPKG_6.0" 1.1~exp1
-### more transactional update
- (c++)"pkgAcquire::GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"pkgAcquire::Item::Dequeue()@APTPKG_6.0" 1.1~exp4
- (c++)"pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc&)@APTPKG_6.0" 1.1~exp4
- (c++)"pkgAcquire::Item::SetActiveSubprocess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp4
- (c++)"pkgDepCache::MarkAndSweep()@APTPKG_6.0" 1.1~exp4
- (c++)"pkgDepCache::MarkAndSweep(pkgDepCache::InRootSetFunc&)@APTPKG_6.0" 1.1~exp4
-### mixed stuff
- (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_6.0" 0.8.16~exp13
- (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@APTPKG_6.0" 0.8.16~exp10
- (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@APTPKG_6.0" 0.8.16~exp10
- (c++)"FileFd::Write(int, void const*, unsigned long long)@APTPKG_6.0" 0.8.16~exp14
- (c++)"_strrstrip(char*)@APTPKG_6.0" 0.9.7.9~exp2
- (c++)"SplitClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, FileFd*)@APTPKG_6.0" 0.9.7.9~exp2
- (c++)"OpenMaybeClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_6.0" 0.9.7.9~exp2
- (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&, char const*, char const*, bool)@APTPKG_6.0" 0.9.3
- (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@APTPKG_6.0" 0.9.3
- (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_6.0" 0.9.7
- (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@APTPKG_6.0" 0.9.7
- (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.9.7
- (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@APTPKG_6.0" 0.9.7
- (c++)"APT::Configuration::checkLanguage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_6.0" 0.9.7.5
- (c++)"pkgCdrom::DropTranslation(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_6.0" 0.9.7.5
- (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@APTPKG_6.0" 0.9.8
- (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@APTPKG_6.0" 0.9.8
- (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.9.9.1
- (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.9.9.1
- (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@APTPKG_6.0" 0.9.9.1
- (c++)"pkgCache::VerIterator::MultiArchType() const@APTPKG_6.0" 0.9.9.1
- (c++)"AutoDetectProxy(URI&)@APTPKG_6.0" 0.9.10
- (c++)"CommandLine::GetCommand(CommandLine::Dispatch const*, unsigned int, char const* const*)@APTPKG_6.0" 0.9.11
- (c++)"CommandLine::MakeArgs(char, char const*, char const*, unsigned long)@APTPKG_6.0" 0.9.11
- (c++)"Configuration::Clear()@APTPKG_6.0" 0.9.11
- (c++)"Glob(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_6.0" 0.9.11
- (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 0.9.11
- (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.9.11
- (c++)"pkgTagSection::pkgTagSection()@APTPKG_6.0" 0.9.11
- (c++)"strv_length(char const**)@APTPKG_6.0" 0.9.11
- (c++)"StringSplit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)@APTPKG_6.0" 0.9.11.3
- (c++)"pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState)@APTPKG_6.0" 0.9.12
- (c++)"APT::String::Endswith(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 0.9.13.1
- (c++)"ExecFork(std::set<int, std::less<int>, std::allocator<int> >)@APTPKG_6.0" 0.9.13.1
- (c++)"MergeKeepFdsFromConfiguration(std::set<int, std::less<int>, std::allocator<int> >&)@APTPKG_6.0" 0.9.13.1
- (c++)"HashString::FromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.13.1
- (c++)"HashString::GetHashForFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_6.0" 0.9.13.1
- (c++)"GetTempDir[abi:cxx11]()@APTPKG_6.0" 0.9.14.2
- (c++)"APT::Configuration::getBuildProfiles[abi:cxx11]()@APTPKG_6.0" 0.9.16
- (c++)"APT::Configuration::getBuildProfilesString[abi:cxx11]()@APTPKG_6.0" 0.9.16
- (c++)"Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.9.16
- (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 1.0
- (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@APTPKG_6.0" 1.0
- (c++)"APT::Progress::PackageManagerFancy::GetTextProgressStr[abi:cxx11](float, int)@APTPKG_6.0" 1.0
- (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@APTPKG_6.0" 1.0.4
- (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@APTPKG_6.0" 1.0.4
- (c++)"pkgSrcRecords::Step()@APTPKG_6.0" 1.0.4
- (c++)"pkgDPkgPM::SetupSlavePtyMagic()@APTPKG_6.0" 1.0.8
- (c++)"HashStringList::find(char const*) const@APTPKG_6.0" 1.0.9.4
- (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_6.0" 1.0.9.4
- (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_6.0" 1.0.9.4
- (c++)"HashStringList::push_back(HashString const&)@APTPKG_6.0" 1.0.9.4
- (c++)"HashStringList::supported(char const*)@APTPKG_6.0" 1.0.9.4
- (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_6.0" 1.0.9.4
- (c++)"HashString::operator==(HashString const&) const@APTPKG_6.0" 1.0.9.4
- (c++)"HashString::operator!=(HashString const&) const@APTPKG_6.0" 1.0.9.4
- (c++)"APT::Progress::PackageManager::PackageManager()@APTPKG_6.0" 1.1~exp1
- (c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1
- (c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1
- (c++)"pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1
- (c++)"pkgTagFile::Init(FileFd*, unsigned long long)@APTPKG_6.0" 1.1~exp1
- (c++)"pkgTagSection::Count() const@APTPKG_6.0" 1.1~exp1
- (c++)"pkgTagSection::Exists(APT::StringView) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::FindB(APT::StringView, bool) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::Scan(char const*, unsigned long, bool)@APTPKG_6.0" 1.1~exp1
- (c++)"StartsWithGPGClearTextSignature(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp1
- (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode, bool, bool)@APTPKG_6.0" 1.9.0~
- (c++)"APT::String::Startswith(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp2
- (c++)"APT::Upgrade::Upgrade(pkgDepCache&, int, OpProgress*)@APTPKG_6.0" 1.1~exp4
- (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@APTPKG_6.0" 1.1~exp4
- (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@APTPKG_6.0" 1.1~exp4
- (c++)"DropPrivileges()@APTPKG_6.0" 1.1~exp4
- (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned long)@APTPKG_6.0" 1.1~exp4
- (c++)"metaIndex::metaIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@APTPKG_6.0" 1.1~exp9
-### ABI 5 changed so much (+ abicxx11 transition)
- (c++)"APT::CacheSetHelper::CacheSetHelper(bool, GlobalError::MsgType)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::Configuration::getArchitectures[abi:cxx11](bool const&)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::Configuration::getCompressionTypes[abi:cxx11](bool const&)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.9.11~
- (c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageUniverse::PackageUniverse(pkgCache*)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::PackageUniverse::PackageUniverse(pkgCacheFile*)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::Progress::PackageManagerText::PackageManagerText()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::VersionContainerInterface::FromDependency(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::DepIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.1~exp9
- (c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_6.0" 1.1~exp9
- (c++)"APT::VersionContainerInterface::VersionContainerInterface(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.9.11~
- (c++)"CommandLine::CommandLine()@APTPKG_6.0" 1.1~exp9
- (c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) const@APTPKG_6.0" 1.1~exp9
- (c++)"debDscFileIndex::CreateSrcParser() const@APTPKG_6.0" 1.1~exp9
- (c++)"debDscFileIndex::~debDscFileIndex()@APTPKG_6.0" 1.1~exp9
- (c++)"debDscFileIndex::debDscFileIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"debDscFileIndex::GetType() const@APTPKG_6.0" 1.1~exp9
- (c++)"ExecGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"FileFd::FileFd()@APTPKG_6.0" 1.1~exp9
- (c++)"FileFd::FileFd(int, bool)@APTPKG_6.0" 1.1~exp9
- (c++)"FileFd::FileFd(int, unsigned int, FileFd::CompressMode)@APTPKG_6.0" 1.1~exp9
- (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_6.0" 1.1~exp9
- (c++)"GetTempFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, FileFd*)@APTPKG_6.0" 1.1~exp9
- (c++)"Hashes::AddFD(FileFd&, unsigned long long)@APTPKG_6.0" 1.1~exp9
- (c++)"Hashes::AddFD(int, unsigned long long)@APTPKG_6.0" 1.1~exp9
- (c++)"Hashes::Add(unsigned char const*, unsigned long long)@APTPKG_6.0" 1.1~exp9
- (c++)"Hashes::Hashes(HashStringList const&)@APTPKG_6.0" 1.1~exp9
- (c++)"Hashes::Hashes(unsigned int)@APTPKG_6.0" 1.1~exp9
- (c++)"HashStringList::FileSize() const@APTPKG_6.0" 1.1~exp9
- (c++)"HashStringList::FileSize(unsigned long long)@APTPKG_6.0" 1.1~exp9
- (c++)"IndexCopy::IndexCopy()@APTPKG_6.0" 1.1~exp9
- (c++)"IndexTarget::Format(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_6.0" 1.1~exp9
- (c++)"IndexTarget::IndexTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"IndexTarget::Option[abi:cxx11](IndexTarget::OptionKeys) const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::CheckDist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::Describe[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::FindInCache(pkgCache&, bool) const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetCodename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetDate() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetExpectedDist[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetLoadedSuccessfully() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetSignedBy[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetSuite[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetSupportsAcquireByHash() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetTrusted() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::GetValidUntil() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::Lookup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::MetaKeys[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"metaIndex::swapLoad(metaIndex*)@APTPKG_6.0" 1.1~exp9
- (c++)"PackageCopy::PackageCopy()@APTPKG_6.0" 1.1~exp9
- (c++)"PackageCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::DescURI[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::GetFinalFilename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::HashesRequired() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqArchive::ShortDesc[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::~pkgAcqChangelog()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::RlsFileIterator const&, char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::RlsFileIterator const&, char const*, char const*, char const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::URI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, char const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqChangelog::URITemplate[abi:cxx11](pkgCache::RlsFileIterator const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqFile::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqFile::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqFile::HashesRequired() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqMethod::FetchItem::FetchItem()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqMethod::FetchItem::~FetchItem()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcqMethod::FetchResult::~FetchResult()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::GetFinalFilename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::GetItemDesc()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::GetOwner() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::HashSum[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::Item(pkgAcquire*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::ShortDesc[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::Start(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Item::VerifyDone(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Queue::QItem::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Queue::QItem::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Queue::QItem::GetMaximumSize() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Queue::QItem::SyncDestinationFiles() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::Queue::Queue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgArchiveCleaner::pkgArchiveCleaner()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCache::DepIterator::IsImplicit() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCacheFile::pkgCacheFile(pkgDepCache*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCache::RlsFileIterator::RelStr[abi:cxx11]()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCdrom::~pkgCdrom()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCdrom::pkgCdrom()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCdromStatus::~pkgCdromStatus()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgCdromStatus::pkgCdromStatus()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexFile::FindInCache(pkgCache&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexFile::~pkgDebianIndexFile()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexFile::pkgDebianIndexFile(bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::Describe[abi:cxx11](bool) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::Exists() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::GetProgressDescription[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::IndexFileName[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::~pkgDebianIndexRealFile()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexRealFile::Size() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::Describe[abi:cxx11](bool) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::Exists() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::GetProgressDescription[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::IndexFileName[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const&, bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDebianIndexTargetFile::Size() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator const&, int, pkgCache::PkgIterator&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgIndexFile::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgIndexFile::~pkgIndexFile()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgIndexFile::pkgIndexFile(bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgIndexFile::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgRecords::Parser::~Parser()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgRecords::Parser::Parser()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::AddVolatileFile(pkgIndexFile*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::GetVolatileFiles() const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::ReadAppend(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::ReadSourceDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::Read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::Type::ParseLine(std::vector<metaIndex*, std::allocator<metaIndex*> >&, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::Type::ParseStanza(std::vector<metaIndex*, std::allocator<metaIndex*> >&, pkgTagSection&, unsigned int, FileFd&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::Type::~Type()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::Type::Type(char const*, char const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSrcRecords::Parser::~Parser()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSrcRecords::Parser::Parser(pkgIndexFile const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSystem::~pkgSystem()@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSystem::pkgSystem(char const*, pkgVersioningSystem*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::FindFlag(APT::StringView, unsigned char&, unsigned char) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::FindFlag(unsigned char&, unsigned char, char const*, char const*)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::FindRaw(APT::StringView) const@APTPKG_6.0" 1.9~
- (c++)"pkgTagSection::Tag::Remove(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::Tag::Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::Tag::Rewrite(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgTagSection::Write(FileFd&, char const* const*, std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> > const&) const@APTPKG_6.0" 1.1~exp9
- (c++)"pkgVersioningSystem::~pkgVersioningSystem()@APTPKG_6.0" 1.1~exp9
- (c++)"SigVerify::~SigVerify()@APTPKG_6.0" 1.1~exp9
- (c++)"SigVerify::SigVerify()@APTPKG_6.0" 1.1~exp9
- (c++)"SourceCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"SourceCopy::SourceCopy()@APTPKG_6.0" 1.1~exp9
- (c++)"TranslationsCopy::~TranslationsCopy()@APTPKG_6.0" 1.1~exp9
- (c++)"TranslationsCopy::TranslationsCopy()@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for debDscFileIndex@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgCdrom@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgCdromStatus@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgOrderList@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgProblemResolver@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgRecords@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for pkgSourceList@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for SigVerify@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo for TranslationsCopy@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for debDscFileIndex@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgCdrom@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgCdromStatus@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgOrderList@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgProblemResolver@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgRecords@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for pkgSourceList@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for SigVerify@APTPKG_6.0" 1.1~exp9
- (c++)"typeinfo name for TranslationsCopy@APTPKG_6.0" 1.1~exp9
- (c++)"URI::ArchiveOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for debDscFileIndex@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgCdrom@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgCdromStatus@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgOrderList@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgProblemResolver@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgRecords@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for pkgSourceList@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for SigVerify@APTPKG_6.0" 1.1~exp9
- (c++)"vtable for TranslationsCopy@APTPKG_6.0" 1.1~exp9
-### ABI 6
- (c++)"APT::CacheFilter::ParsePattern(APT::StringView, pkgCacheFile*)@APTPKG_6.0" 1.9.11~
- (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.11~
- (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.11~
- (c++)"APT::String::DisplayLength(APT::StringView)@APTPKG_6.0" 1.9.11~
- (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_6.0" 1.9.11~
- (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(APT::StringView) const@APTPKG_6.0" 1.9.11~
- (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_6.0" 1.9.11~
- (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_6.0" 1.9.11~
- (c++)"pkgDebianIndexFile::Merge(pkgCacheGenerator&, OpProgress*)@APTPKG_6.0" 1.9.11~
- (c++)"metaIndex::Merge(pkgCacheGenerator&, OpProgress*) const@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo for APT::PackageContainer<std::vector<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo name for APT::PackageContainer<std::vector<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 1.9.11~
- (c++)"vtable for APT::PackageContainer<std::vector<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_6.0" 1.9.11~
- (c++)"pkgDepCache::CheckConsistency(char const*)@APTPKG_6.0" 2.1.5~
-### dpkg selection state changer & general dpkg interfacing
- (c++)"APT::StateChanges::clear()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::empty() const@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Error()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Hold()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Hold(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Install()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Install(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::operator=(APT::StateChanges&&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Purge()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Purge(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Remove()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Remove(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Save(bool)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::~StateChanges()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::StateChanges()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::StateChanges(APT::StateChanges&&)@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Unhold()@APTPKG_6.0" 1.1~exp15
- (c++)"APT::StateChanges::Unhold(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"metaIndex::IsArchitectureSupported(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.1~exp15
-### misc stuff
- (c++)"RemoveFile(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp15
- (c++)"pkgOrderList::OrderCompareA(pkgCache::Package*, pkgCache::Package*)@APTPKG_6.0" 1.1~exp15
- (c++)"pkgOrderList::OrderCompareB(pkgCache::Package*, pkgCache::Package*)@APTPKG_6.0" 1.1~exp15
- (c++)"CommandLine::DispatchArg(CommandLine::Dispatch const*, bool)@APTPKG_6.0" 1.1~exp15
- (c++)"Configuration::MoveSubTree(char const*, char const*)@APTPKG_6.0" 1.1~exp15
- (c++)"GetTempDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp15
- (c++)"HashString::usable() const@APTPKG_6.0" 1.1~exp15
- (c++)"IndexTarget::OptionBool(IndexTarget::OptionKeys) const@APTPKG_6.0" 1.1~exp12
- (c++)"pkgDepCache::GetCandidateVersion(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp15
- (c++)"pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_6.0" 1.1~exp15
- (c++)"pkgPackageManager::CheckRBreaks(pkgCache::PkgIterator const&, pkgCache::DepIterator, char const*)@APTPKG_6.0" 1.1~exp11
- (c++)"pkgPolicy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_6.0" 1.1~exp9
- (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.1~exp15
- (c++)"pkgVersionMatch::VersionMatches(pkgCache::VerIterator)@APTPKG_6.0" 1.1~exp9
- (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_6.0" 1.1~exp15
- (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_6.0" 1.1~exp15
- (c++)"PopFromSrvRecs(std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_6.0" 1.1~exp15
- (c++)"SrvRec::operator==(SrvRec const&) const@APTPKG_6.0" 1.1~exp15
- (c++)"debDscFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.1.4
- (c++)"debDscFileIndex::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.1.4
- (c++)"debDscFileIndex::GetIndexFlags() const@APTPKG_6.0" 1.1.4
- (c++)"FileFd::Flush()@APTPKG_6.0" 1.1.9
- (c++)"metaIndex::IsArchitectureAllSupportedFor(IndexTarget const&) const@APTPKG_6.0" 1.1.9
- (c++)"pkgTagFile::Init(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_6.0" 1.2~exp1
- (c++)"pkgTagFile::pkgTagFile(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_6.0" 1.2~exp1
-### symbol versioning:
- APTPKG_6.0@APTPKG_6.0 1.1~exp9
-### gcc artifacts
- (c++|optional=std)"void std::vector<char const*, std::allocator<char const*> >::emplace_back<char const*>(char const*&&)@APTPKG_6.0" 1.1~exp9
-# (c++|optional=std)"void std::vector<pkgCache::RlsFileIterator*, std::allocator<pkgCache::RlsFileIterator*> >::emplace_back<pkgCache::RlsFileIterator*>(pkgCache::RlsFileIterator*&&)@APTPKG_6.0" 1.1~exp9
- (c++|optional=std)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item>(pkgDPkgPM::Item&&)@APTPKG_6.0" 1.1~exp9
- (c++|optional=std)"void std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> >::emplace_back<pkgTagSection::Tag>(pkgTagSection::Tag&&)@APTPKG_6.0" 1.1~exp9
- (c++|optional=std)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@APTPKG_6.0" 1.1~exp9
-### try to ignore std:: template instances
- (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@APTPKG_6.0$" 0.8.0
- (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@APTPKG_6.0$" 0.8.0
- (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@APTPKG_6.0$" 0.8.0
- (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@APTPKG_6.0$" 0.8.0
- (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@APTPKG_6.0$" 0.8.0
-###
- (c++)"debStringPackageIndex::~debStringPackageIndex()@APTPKG_6.0" 1.2.2
- (c++)"debStringPackageIndex::debStringPackageIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.2.2
- (c++)"debStringPackageIndex::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.2.2
- (c++)"debStringPackageIndex::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.2.2
- (c++)"debStringPackageIndex::GetIndexFlags() const@APTPKG_6.0" 1.2.2
- (c++)"debStringPackageIndex::GetType() const@APTPKG_6.0" 1.2.2
- (c++)"pkgCacheFile::AddIndexFile(pkgIndexFile*)@APTPKG_6.0" 1.2.2
- (c++)"typeinfo for debStringPackageIndex@APTPKG_6.0" 1.2.2
- (c++)"typeinfo name for debStringPackageIndex@APTPKG_6.0" 1.2.2
- (c++)"vtable for debStringPackageIndex@APTPKG_6.0" 1.2.2
- (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyDep const&)@APTPKG_6.0" 1.3~exp1
- (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyPkg const&)@APTPKG_6.0" 1.3~exp1
- (c++)"EDSP::ReadRequest(int, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, unsigned int&)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, unsigned int, OpProgress*)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, std::vector<bool, std::allocator<bool> > const&, OpProgress*)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteProgress(unsigned short, char const*, FileFd&)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteRequest(pkgDepCache&, FileFd&, unsigned int, OpProgress*)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_6.0" 1.3~exp2
- (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_6.0" 1.3~exp2
- (c++)"int __gnu_cxx::__stoa<long, int, char, int>(long (*)(char const*, char**, int), char const*, char const*, unsigned long*, int)@APTPKG_6.0" 1.3~exp2
- (c++)"EIPP::ApplyRequest(std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_6.0" 1.3~rc2
- (c++)"EIPP::ReadRequest(int, std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_6.0" 1.3~rc2
- (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_6.0" 1.3~rc2
- (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_6.0" 1.3~rc2
- (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_6.0" 1.3~rc2
- (c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_6.0" 1.3~rc2
- (c++)"void std::shuffle<__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&>(__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, __gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&)@APTPKG_6.0" 1.3~rc2
- (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&&)@APTPKG_6.0" 1.3~rc2
- (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator&>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&)@APTPKG_6.0" 1.3~rc2
- (c++)"void std::vector<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(pkgDPkgPM::Item*&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@APTPKG_6.0" 1.3~rc2
- (c++)"APT::String::Join(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.4~beta4
- (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&, bool const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.4~beta3
- (c++)"debListParser::ParseDepends(char const*, char const*, APT::StringView&, APT::StringView&, unsigned int&, bool, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.9.0~
- (c++|optional=std)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<char const (&) [4]>(char const (&) [4])@APTPKG_6.0" 1.4~beta4
- (c++)"FileFd::ReadLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_6.0" 1.5~beta2~
- (c++)"MaybeAddAuth(FileFd&, URI&)@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::GetDefaultPin() const@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::GetLabel[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::GetOrigin[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::GetReleaseNotes[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::GetVersion[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~
- (c++)"metaIndex::HasSupportForComponent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_6.0" 1.5~beta2~
- (c++)"pkgAcquireStatus::ReleaseInfoChanges(metaIndex const*, metaIndex const*, std::vector<pkgAcquireStatus::ReleaseInfoChange, std::allocator<pkgAcquireStatus::ReleaseInfoChange> >&&)@APTPKG_6.0" 1.5~beta2~
- (c++)"RemoveFileAt(char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.5~beta2~
- (c++|optional=std)"void std::vector<pkgAcquireStatus::ReleaseInfoChange, std::allocator<pkgAcquireStatus::ReleaseInfoChange> >::emplace_back<pkgAcquireStatus::ReleaseInfoChange>(pkgAcquireStatus::ReleaseInfoChange&&)@APTPKG_6.0" 1.5~beta2~
- (c++)"pkgAcqMethod::FetchItem::Proxy[abi:cxx11]()@APTPKG_6.0" 1.6~alpha1~
-# gcc-8 artifacts
- (c++|optional=std)"pkgAcqMethod::SendMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&)@APTPKG_6.0" 1.7.0~alpha3~
- (c++)"APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(pkgCache*, bool)@APTPKG_6.0" 2.1.16
- (c++)"ExtractTar::Done()@APTPKG_6.0" 1.1~exp12
- (c++)"ExtractTar::Go(pkgDirStream&)@APTPKG_6.0" 0.8.0
- (c++)"ExtractTar::StartGzip()@APTPKG_6.0" 0.8.0
- (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.0.5
- (c++)"ExtractTar::~ExtractTar()@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::GotoMember(char const*)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::CheckMember(char const*)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTPKG_6.0" 0.9.15.4
- (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTPKG_6.0" 1.0.5
- (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0
- (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTPKG_6.0" 1.0.5
- (c++)"debDebFile::debDebFile(FileFd&)@APTPKG_6.0" 0.8.0
- (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTPKG_6.0" 0.8.0
- (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTPKG_6.0" 0.8.0
- (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0
- (c++)"ARArchive::LoadHeaders()@APTPKG_6.0" 0.8.0
- (c++)"ARArchive::ARArchive(FileFd&)@APTPKG_6.0" 0.8.0
- (c++)"ARArchive::~ARArchive()@APTPKG_6.0" 0.8.0
- (c++)"ARArchive::FindMember(char const*) const@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for ExtractTar@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for pkgDirStream@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0
- (c++)"typeinfo for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for ExtractTar@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for pkgDirStream@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0
- (c++)"typeinfo name for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0
- (c++)"vtable for ExtractTar@APTPKG_6.0" 0.8.0
- (c++)"vtable for pkgDirStream@APTPKG_6.0" 0.8.0
- (c++)"vtable for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0
- (c++)"vtable for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0
-### gcc artifacts
- (c++|optional=std)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)@APTPKG_6.0" 1.7.0~alpha3~
- (c++|optional=std)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
- (c++|optional=std)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
- (c++|optional=std)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
- (c++|optional=std)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
-### Internal functions needed for testing purposes
- (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.9.11~
- (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_6.0" 1.9.11~
- (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
- (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
- (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
- (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
- (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
diff --git a/debian/libapt-pkg6.0.install b/debian/libapt-pkg7.0.install
similarity index 100%
rename from debian/libapt-pkg6.0.install
rename to debian/libapt-pkg7.0.install
diff --git a/debian/libapt-pkg7.0.symbols b/debian/libapt-pkg7.0.symbols
new file mode 100644
index 0000000..398e061
--- /dev/null
+++ b/debian/libapt-pkg7.0.symbols
@@ -0,0 +1,1318 @@
+libapt-pkg.so.7.0 libapt-pkg7.0 #MINVER#
+* Build-Depends-Package: libapt-pkg-dev
+ TFRewritePackageOrder@APTPKG_7.0 0.8.0
+ TFRewriteSourceOrder@APTPKG_7.0 0.8.0
+ (c++)"FileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"IdentCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_7.0" 0.8.0
+ (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@APTPKG_7.0" 0.8.0
+ (c++)"MountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"ParseCWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"ReadPinDir(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"RunScripts(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"SafeGetCWD[abi:cxx11]()@APTPKG_7.0" 0.8.0
+ (c++)"QuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"ReadPinFile(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@APTPKG_7.0" 0.8.0
+ (c++)"SetNonBlock(int, bool)@APTPKG_7.0" 0.8.0
+ (c++)"flExtension(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"Base64Encode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"ReadMessages(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_7.0" 0.8.0
+ (c++)"SetCloseExec(int, bool)@APTPKG_7.0" 0.8.0
+ (c++)"StringToBool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_7.0" 0.8.0
+ (c++)"UnmountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"_GetErrorObj()@APTPKG_7.0" 0.8.0
+ (c++)"Base256ToNum(char const*, unsigned long long&, unsigned int)@APTPKG_7.0" 1.0.5
+ (c++)"pkgFixBroken(pkgDepCache&)@APTPKG_7.0" 0.8.0
+ (c++)"DeQuoteString(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)@APTPKG_7.0" 0.8.0
+ (c++)"DeQuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"OutputInDepth[abi:cxx11](unsigned long, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"ReadConfigDir(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_7.0" 0.8.0
+ (c++)"URItoFileName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"UTF8ToCodeset(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgInitConfig(Configuration&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@APTPKG_7.0" 0.8.0
+ (c++)"safe_snprintf(char*, char*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_7.0" 0.8.0
+ (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"ParseQuoteWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"ReadConfigFile(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_7.0" 0.8.0
+ (c++)"TokSplitString(char, char*, char**, unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"pkgApplyStatus(pkgDepCache&)@APTPKG_7.0" 0.8.0
+ (c++)"CheckDomainList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"CreateDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"DirectoryExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"VectorizeString[abi:cxx11](std::basic_string_view<char, std::char_traits<char> > const&, char const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@APTPKG_7.0" 0.8.0
+ (c++)"pkgMinimizeUpgrade(pkgDepCache&)@APTPKG_7.0" 0.8.0
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"WaitFd(int, bool, unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 0.8.0
+ (c++)"Hex2Num(std::basic_string_view<char, std::char_traits<char> >, unsigned char*, unsigned int)@APTPKG_7.0" 1.9~
+ (c++)"CopyFile(FileFd&, FileFd&)@APTPKG_7.0" 0.8.0
+ (c++)"ExecFork()@APTPKG_7.0" 0.8.0
+ (c++)"ExecWait(int, char const*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@APTPKG_7.0" 0.8.0
+ (c++)"SubstVar[abi:cxx11](std::basic_string_view<char, std::char_traits<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"SubstVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SubstVar const*)@APTPKG_7.0" 0.8.0
+ (c++)"flNoLink(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"flNotDir(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"ioprintf(std::basic_ostream<char, std::char_traits<char> >&, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"IsMounted(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"LookupTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"SizeToStr[abi:cxx11](double)@APTPKG_7.0" 0.8.0
+ (c++)"TimeToStr[abi:cxx11](unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"_strstrip(char*)@APTPKG_7.0" 0.8.0
+ (c++)"flCombine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"flNotFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_7.0" 0.8.0
+ (c++)"stringcmp(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"strprintf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"HashString::SupportedHashes()@APTPKG_7.0" 0.8.0
+ (c++)"HashString::_SupportedHashes@APTPKG_7.0" 0.8.0
+ (c++)"HashString::HashString(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"HashString::HashString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"HashString::HashString()@APTPKG_7.0" 0.8.0
+ (c++)"OpProgress::CheckChange(float)@APTPKG_7.0" 0.8.0
+ (c++)"OpProgress::OpProgress()@APTPKG_7.0" 0.8.0
+ (c++)"SourceCopy::~SourceCopy()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqFile::~pkgAcqFile()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::FetchNeeded()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::TotalNeeded()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::MethodConfig::MethodConfig()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::PartialPresent()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Add(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Run(int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Bump()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Item::Finished()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Item::~Item()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Clean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Bump()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Cycle()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Startup()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::FindItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Shutdown(bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Queue::~Queue()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::UriEnd()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::OutFdReady()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::MediaChange(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::RunMessages()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Capabilities(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::ReadMessages()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::MethodFailure()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::SendConfiguration()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Pulse()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Start()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::ItemDone()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Construct()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::InFdReady()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Worker::~Worker()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::Shutdown()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::UriBegin()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::GetConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::QueueName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig const*&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::pkgAcquire()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquire::~pkgAcquire()@APTPKG_7.0" 0.8.0
+ (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgRecords::pkgRecords(pkgCache&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgRecords::~pkgRecords()@APTPKG_7.0" 0.8.0
+ (c++)"pkgTagFile::Step(pkgTagSection&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgTagFile::~pkgTagFile()@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::Parse(int, char const**)@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::~CommandLine()@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::DumpErrors(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::MsgType const&, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::PopMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::PushToStack()@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::RevertToStack()@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::MergeWithStack()@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Debug(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Errno(char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Error(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Fatal(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::DebugE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::FatalE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Notice(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Discard()@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::NoticeE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::Warning(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::WarningE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::GlobalError()@APTPKG_7.0" 0.8.0
+ (c++)"PackageCopy::~PackageCopy()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::release()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::~ActionGroup()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::readStateFile(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::GetRootSetFunc()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkFollowsSuggests()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkFollowsRecommends()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Init(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Update(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Update(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::Sweep()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDepCache::~pkgDepCache()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_7.0" 1.9.11~
+ (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSimulate::~pkgSimulate()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::FetchResult::FetchResult()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Configuration(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Log(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Run(bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Fail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Fail(bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Status(char const*, ...)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::Redirect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::MediaFail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqMethod::~pkgAcqMethod()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::Open(OpProgress*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::Close()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::pkgCacheFile()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheFile::~pkgCacheFile()@APTPKG_7.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GlobalList@APTPKG_7.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GlobalListLen@APTPKG_7.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GetType(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgIndexFile::Type::Type()@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::OrderUnpack(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::OrderCritical()@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::OrderConfigure()@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DoRun()@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::WipeFlags(unsigned long)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgOrderList::~pkgOrderList()@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Set(char const*, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Set(char const*, int const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::CndSet(char const*, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Lookup(char const*, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Configuration(Configuration::Item const*)@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Configuration()@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::~Configuration()@APTPKG_7.0" 0.8.0
+ (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@APTPKG_7.0" 0.8.0
+ (c++)"debListParser::GetPrio(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqArchive::Finished()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqArchive::QueueNext()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcqArchive::~pkgAcqArchive()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::Type::GlobalList@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::Type::GlobalListLen@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::Type::GetType(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::ReadMainList()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::Reset()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::pkgSourceList()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::~pkgSourceList()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSrcRecords::Find(char const*, bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSrcRecords::Restart()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgSrcRecords::~pkgSrcRecords()@APTPKG_7.0" 0.8.0
+ (c++)"pkgTagSection::TrimRecord(bool, char const*&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgTagSection::Trim()@APTPKG_7.0" 0.8.0
+ (c++)"OpTextProgress::Done()@APTPKG_7.0" 0.8.0
+ (c++)"OpTextProgress::Write(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"OpTextProgress::Update()@APTPKG_7.0" 0.8.0
+ (c++)"OpTextProgress::OpTextProgress(Configuration&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::ExpressionMatches(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::MatchVer(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersionMatch::pkgVersionMatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgVersionMatch::MatchType)@APTPKG_7.0" 0.8.0
+ (c++)"TranslationsCopy::CopyTranslations(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquireStatus::Stop()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquireStatus::Start()@APTPKG_7.0" 0.8.0
+ (c++)"pkgAcquireStatus::pkgAcquireStatus()@APTPKG_7.0" 0.8.0
+ (c++)"pkgArchiveCleaner::Go(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::FixMissing()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::ConfigureAll()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::OrderInstall()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::CreateOrderList()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPackageManager::~pkgPackageManager()@APTPKG_7.0" 0.8.0
+ (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgProblemResolver::~pkgProblemResolver()@APTPKG_7.0" 0.8.0
+ (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debVersioningSystem::UpstreamVersion[abi:cxx11](char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debVersioningSystem::debVersioningSystem()@APTPKG_7.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::Scan()@APTPKG_7.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@APTPKG_7.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersioningSystem::GlobalList@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersioningSystem::GlobalListLen@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersioningSystem::GetVS(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgVersioningSystem::pkgVersioningSystem()@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::Configuration::checkArchitecture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"APT::CacheSetHelper::~CacheSetHelper()@APTPKG_7.0" 0.8.0
+ (c++)"URI::NoUserPassword(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"URI::CopyFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"URI::SiteOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.0
+ (c++)"URI::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >()@APTPKG_7.0" 0.8.0
+ (c++)"FileFd::Size()@APTPKG_7.0" 0.8.0
+ (c++)"FileFd::Sync()@APTPKG_7.0" 0.8.0
+ (c++)"FileFd::Tell()@APTPKG_7.0" 0.8.0
+ (c++)"FileFd::Close()@APTPKG_7.0" 0.8.0
+ (c++)"FileFd::~FileFd()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::CompTypeDeb(unsigned char)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::DepIterator::operator++()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::operator++()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::operator++()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::PkgFileIterator::RelStr[abi:cxx11]()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::ReMap(bool const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::Header::Header()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::DepType(unsigned char)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::FindGrp(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::FindPkg(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::FindPkg(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::CompType(unsigned char)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::Priority(unsigned char)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::pkgCache(MMap*, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::~pkgCache()@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::DropRepeats(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::FindPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*, unsigned int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::WriteDatabase(Configuration&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::DropBinaryArch(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::WriteSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::ReduceSourcelist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::Add(pkgCdromStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::Ident(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgCdrom::Score(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::CopyPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::ReconstructChop(unsigned long&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::ReconstructPrefix(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::ConvertToSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::ChopDirs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::GrabFirst(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_7.0" 0.8.0
+ (c++)"SigVerify::CopyAndVerify(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::DoTerminalPty(int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::WriteHistoryTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::Reset()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::DoStdin(int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::OpenLog()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::CloseLog()@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDPkgPM::~pkgDPkgPM()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPolicy::InitDefaults()@APTPKG_7.0" 0.8.0
+ (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPolicy::pkgPolicy(pkgCache*)@APTPKG_7.0" 0.8.0
+ (c++)"pkgPolicy::~pkgPolicy()@APTPKG_7.0" 0.8.0
+ (c++)"pkgSystem::GlobalList@APTPKG_7.0" 0.8.0
+ (c++)"pkgSystem::GlobalListLen@APTPKG_7.0" 0.8.0
+ (c++)"pkgSystem::GetSystem(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"HashString::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_7.0" 0.8.0
+ (c++)"HashString::empty() const@APTPKG_7.0" 0.8.0
+ (c++)"HashString::toStr[abi:cxx11]() const@APTPKG_7.0" 0.8.0
+ (c++)"CommandLine::FileSize() const@APTPKG_7.0" 0.8.0
+ (c++)"GlobalError::empty(GlobalError::MsgType const&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgIndexFile::FindInCache(pkgCache&) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Find[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Item::FullTag[abi:cxx11](Configuration::Item const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::FindB(char const*, bool const&) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::FindI(char const*, int const&) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::Exists(char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::FindAny[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::FindDir[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::FindFile[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"Configuration::ExistsAny(char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::Type::FixupURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgTagSection::Find(std::basic_string_view<char, std::char_traits<char> >, char const*&, char const*&) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::Find(std::basic_string_view<char, std::char_traits<char> >, unsigned int&) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::FindI(std::basic_string_view<char, std::char_traits<char> >, long) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::Find(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::FindULL(std::basic_string_view<char, std::char_traits<char> >, unsigned long long const&) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::FindFlag(std::basic_string_view<char, std::char_traits<char> >, unsigned long&, unsigned long) const@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::DepIterator::AllTargets() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::DepIterator::IsCritical() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::FindPkg(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::CurVersion() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::State() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::NewestFile() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::Downloadable() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::TranslatedDescription() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::RelStr[abi:cxx11]() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::Automatic() const@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::sHash(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9~
+ (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@APTPKG_7.0" 0.8.0
+ (c++)"metaIndex::GetURI[abi:cxx11]() const@APTPKG_7.0" 0.8.0
+ (c++)"metaIndex::GetDist[abi:cxx11]() const@APTPKG_7.0" 0.8.0
+ (c++)"metaIndex::GetType() const@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for OpProgress@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for SourceCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcqFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcquire@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for PackageCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgSimulate@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcqMethod@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgCacheFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgIndexFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcqArchive@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgTagSection@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for OpTextProgress@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcquireStatus@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgPackageManager@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for debVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for FileFd@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgCache@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for IndexCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for metaIndex@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDPkgPM@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgPolicy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgAcquire::Item@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::Policy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgSimulate::Policy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgIndexFile::Type@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgSourceList::Type@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for APT::CacheSetHelper@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgCache::Namespace@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for OpProgress@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for SourceCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquire@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for PackageCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgSimulate@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqMethod@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgCacheFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgIndexFile@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqArchive@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgTagSection@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for OpTextProgress@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquireStatus@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgPackageManager@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for debVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for FileFd@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgCache@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for IndexCopy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for metaIndex@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDPkgPM@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgPolicy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgSystem@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquire::Item@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::Policy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgSimulate::Policy@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgIndexFile::Type@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgSourceList::Type@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for APT::CacheSetHelper@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgCache::Namespace@APTPKG_7.0" 0.8.0
+ (c++)"vtable for OpProgress@APTPKG_7.0" 0.8.0
+ (c++)"vtable for SourceCopy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcqFile@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcquire@APTPKG_7.0" 0.8.0
+ (c++)"vtable for PackageCopy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDepCache@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgSimulate@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcqMethod@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgCacheFile@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgIndexFile@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcqArchive@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgTagSection@APTPKG_7.0" 0.8.0
+ (c++)"vtable for OpTextProgress@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcquireStatus@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgPackageManager@APTPKG_7.0" 0.8.0
+ (c++)"vtable for debVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgVersioningSystem@APTPKG_7.0" 0.8.0
+ (c++)"vtable for FileFd@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgCache@APTPKG_7.0" 0.8.0
+ (c++)"vtable for IndexCopy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for metaIndex@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDPkgPM@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgPolicy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgSystem@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgAcquire::Item@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDepCache::Policy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgSimulate::Policy@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgIndexFile::Type@APTPKG_7.0" 0.8.0
+ (c++)"vtable for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgSourceList::Type@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0
+ (c++)"vtable for APT::CacheSetHelper@APTPKG_7.0" 0.8.0
+ _config@APTPKG_7.0 0.8.0
+ _system@APTPKG_7.0 0.8.0
+ debVS@APTPKG_7.0 0.8.0
+ pkgLibVersion@APTPKG_7.0 0.8.0
+ pkgVersion@APTPKG_7.0 0.8.0
+ (c++)"pkgAcquireStatus::~pkgAcquireStatus()@APTPKG_7.0" 0.8.0
+ (c++)"IndexCopy::~IndexCopy()@APTPKG_7.0" 0.8.0
+ (c++)"pkgArchiveCleaner::~pkgArchiveCleaner()@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgArchiveCleaner@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgArchiveCleaner@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgArchiveCleaner@APTPKG_7.0" 0.8.0
+ (c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned int)@APTPKG_7.0" 1.1~exp9
+ (c++)"CreateAPTDirectoryIfNeeded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.2
+ (c++)"FileFd::FileSize()@APTPKG_7.0" 0.8.8
+ (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@APTPKG_7.0" 0.8.11
+ (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@APTPKG_7.0" 0.8.11
+ (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.11
+ (c++)"RealFileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.11
+ (c++)"StripEpoch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.11
+ (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@APTPKG_7.0" 0.8.11
+ (c++)"FindMountPointForDevice[abi:cxx11](char const*)@APTPKG_7.0" 0.8.12
+ (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@APTPKG_7.0" 0.8.12
+ (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@APTPKG_7.0" 0.8.12
+ (c++)"APT::Configuration::getCompressors(bool)@APTPKG_7.0" 0.8.12
+ (c++)"APT::Configuration::getCompressorExtensions[abi:cxx11]()@APTPKG_7.0" 0.8.12
+ (c++)"pkgCache::DepIterator::IsNegative() const@APTPKG_7.0" 0.8.15~exp1
+ (c++)"Configuration::CndSet(char const*, int)@APTPKG_7.0" 0.8.15.3
+ (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.15.3
+ (c++)"DeEscapeString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.15.4
+ (c++)"GetModificationTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.15.6
+ (c++)"pkgSourceList::GetLastModifiedTime()@APTPKG_7.0" 0.8.15.6
+ (c++)"pkgCacheFile::RemoveCaches()@APTPKG_7.0" 0.8.15.7
+ (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@APTPKG_7.0" 0.8.15.7
+ (c++)"EDSP::ApplyRequest(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, pkgDepCache&)@APTPKG_7.0" 0.8.16~exp2
+ (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@APTPKG_7.0" 0.8.16~exp2
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"OpProgress::SubProgress(unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, float)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"OpProgress::Progress(unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"SourceCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgAcquire::UriIterator::~UriIterator()@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgAcquire::MethodConfig::~MethodConfig()@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgTagFile::Offset()@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"PackageCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgTagSection::~pkgTagSection()@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"FileFd::Seek(unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"FileFd::Skip(unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"FileFd::Write(void const*, unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"FileFd::Truncate(unsigned long long)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgTagFile@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgTagFile@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgTagFile@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.16~exp6
+ (c++)"pkgPackageManager::SigINTStop@APTPKG_7.0" 0.8.16~exp14
+ (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@APTPKG_7.0" 0.8.16~exp14
+ (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@APTPKG_7.0" 0.8.16~exp14
+ (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"FileFd::ModificationTime()@APTPKG_7.0" 0.8.16~exp9
+ (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"FileFd::ReadLine(char*, unsigned long long)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"vtable for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"vtable for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9
+ (c++)"APT::Progress::PackageManagerFancy::HandleSIGWINCH(int)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::~PackageManagerFancy()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::PackageManagerFancy()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::SetupTerminalScrollArea(int)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::Stop()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManager::~PackageManager()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StartDpkg()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Stop()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFactory()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::~PackageManagerProgressFd()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::PackageManagerProgressFd(int)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::StartDpkg()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::Stop()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManager::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerText::~PackageManagerText()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerText::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::String::Strip(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::BuildPackagesProgressMap()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::DoDpkgStatusFd(int)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::ProcessDpkgStatusLine(char*)@APTPKG_7.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::StartPtyMagic()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::StopPtyMagic()@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::instances@APTPKG_7.0" 0.9.14.2
+ (c++)"APT::Progress::PackageManagerFancy::Start(int)@APTPKG_7.0" 0.9.14.2
+ (c++)"flAbsPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp1
+ (c++)"metaIndex::~metaIndex()@APTPKG_7.0" 1.1~exp1
+ (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::~ANDMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::Matcher::~Matcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::NOTMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::~NOTMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::OR(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::~ORMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::~PackageIsNewInstall()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile*)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageMatcher::~PackageMatcher()@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotFindFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotFindPackage(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotFindVersion(APT::CacheSetHelper::VerSelector, APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetVersion(APT::CacheSetHelper::VerSelector, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFrom(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::CacheSetHelper::PkgModifier, std::allocator<APT::CacheSetHelper::PkgModifier> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromPackageName(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const&, APT::CacheSetHelper::PkgSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::CacheSetHelper::VerSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&, bool)@APTPKG_7.0" 1.1~exp4
+ (c++)"Hashes::GetHashStringList()@APTPKG_7.0" 1.1~exp1
+ (c++)"Hashes::Hashes()@APTPKG_7.0" 1.1~exp1
+ (c++)"Hashes::~Hashes()@APTPKG_7.0" 1.1~exp1
+ (c++)"HashStringList::find(char const*) const@APTPKG_7.0" 1.0.9.4
+ (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_7.0" 1.0.9.4
+ (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_7.0" 1.0.9.4
+ (c++)"HashStringList::push_back(HashString const&)@APTPKG_7.0" 1.0.9.4
+ (c++)"HashStringList::supported(char const*)@APTPKG_7.0" 1.0.9.4
+ (c++)"HashStringList::usable() const@APTPKG_7.0" 1.1~exp1
+ (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_7.0" 1.0.9.4
+ (c++)"HashString::operator==(HashString const&) const@APTPKG_7.0" 1.0.9.4
+ (c++)"HashString::operator!=(HashString const&) const@APTPKG_7.0" 1.0.9.4
+ (c++)"pkgAcqArchive::IsTrusted() const@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgAcqFile::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgAcqMethod::DropPrivsOrDie()@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgAcquire::Item::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgAcquire::Item::IsTrusted() const@APTPKG_7.0" 1.1~exp1
+ (c++)"typeinfo for Hashes@APTPKG_7.0" 1.1~exp1
+ (c++)"typeinfo name for Hashes@APTPKG_7.0" 1.1~exp1
+ (c++)"vtable for Hashes@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgAcquire::GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::Dequeue()@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc&)@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::SetActiveSubprocess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgDepCache::MarkAndSweep()@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgDepCache::MarkAndSweep(pkgDepCache::InRootSetFunc&)@APTPKG_7.0" 1.1~exp4
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 0.8.16~exp13
+ (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@APTPKG_7.0" 0.8.16~exp10
+ (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@APTPKG_7.0" 0.8.16~exp10
+ (c++)"FileFd::Write(int, void const*, unsigned long long)@APTPKG_7.0" 0.8.16~exp14
+ (c++)"_strrstrip(char*)@APTPKG_7.0" 0.9.7.9~exp2
+ (c++)"SplitClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, FileFd*)@APTPKG_7.0" 0.9.7.9~exp2
+ (c++)"OpenMaybeClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_7.0" 0.9.7.9~exp2
+ (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&, char const*, char const*, bool)@APTPKG_7.0" 0.9.3
+ (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@APTPKG_7.0" 0.9.3
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@APTPKG_7.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@APTPKG_7.0" 0.9.7
+ (c++)"APT::Configuration::checkLanguage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_7.0" 0.9.7.5
+ (c++)"pkgCdrom::DropTranslation(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_7.0" 0.9.7.5
+ (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@APTPKG_7.0" 0.9.8
+ (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@APTPKG_7.0" 0.9.8
+ (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.9.9.1
+ (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.9.9.1
+ (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@APTPKG_7.0" 0.9.9.1
+ (c++)"pkgCache::VerIterator::MultiArchType() const@APTPKG_7.0" 0.9.9.1
+ (c++)"AutoDetectProxy(URI&)@APTPKG_7.0" 0.9.10
+ (c++)"CommandLine::GetCommand(CommandLine::Dispatch const*, unsigned int, char const* const*)@APTPKG_7.0" 0.9.11
+ (c++)"CommandLine::MakeArgs(char, char const*, char const*, unsigned long)@APTPKG_7.0" 0.9.11
+ (c++)"Configuration::Clear()@APTPKG_7.0" 0.9.11
+ (c++)"Glob(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_7.0" 0.9.11
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 0.9.11
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.9.11
+ (c++)"pkgTagSection::pkgTagSection()@APTPKG_7.0" 0.9.11
+ (c++)"strv_length(char const**)@APTPKG_7.0" 0.9.11
+ (c++)"StringSplit[abi:cxx11](std::basic_string_view<char, std::char_traits<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&, unsigned int)@APTPKG_7.0" 0.9.11.3
+ (c++)"pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState)@APTPKG_7.0" 0.9.12
+ (c++)"APT::String::Endswith(std::basic_string_view<char, std::char_traits<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 0.9.13.1
+ (c++)"ExecFork(std::set<int, std::less<int>, std::allocator<int> >)@APTPKG_7.0" 0.9.13.1
+ (c++)"MergeKeepFdsFromConfiguration(std::set<int, std::less<int>, std::allocator<int> >&)@APTPKG_7.0" 0.9.13.1
+ (c++)"HashString::FromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 0.9.13.1
+ (c++)"HashString::GetHashForFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_7.0" 0.9.13.1
+ (c++)"GetTempDir[abi:cxx11]()@APTPKG_7.0" 0.9.14.2
+ (c++)"APT::Configuration::getBuildProfiles[abi:cxx11]()@APTPKG_7.0" 0.9.16
+ (c++)"APT::Configuration::getBuildProfilesString[abi:cxx11]()@APTPKG_7.0" 0.9.16
+ (c++)"Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 0.9.16
+ (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 1.0
+ (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@APTPKG_7.0" 1.0
+ (c++)"APT::Progress::PackageManagerFancy::GetTextProgressStr[abi:cxx11](float, int)@APTPKG_7.0" 1.0
+ (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@APTPKG_7.0" 1.0.4
+ (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@APTPKG_7.0" 1.0.4
+ (c++)"pkgSrcRecords::Step()@APTPKG_7.0" 1.0.4
+ (c++)"pkgDPkgPM::SetupSlavePtyMagic()@APTPKG_7.0" 1.0.8
+ (c++)"APT::Progress::PackageManager::PackageManager()@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgTagFile::Init(FileFd*, unsigned long long)@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgTagSection::Count() const@APTPKG_7.0" 1.1~exp1
+ (c++)"pkgTagSection::Exists(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::FindB(std::basic_string_view<char, std::char_traits<char> >, bool) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::Scan(char const*, unsigned long, bool)@APTPKG_7.0" 1.1~exp1
+ (c++)"StartsWithGPGClearTextSignature(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp1
+ (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode, bool, bool)@APTPKG_7.0" 1.9.0~
+ (c++)"APT::String::Startswith(std::basic_string_view<char, std::char_traits<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 1.1~exp2
+ (c++)"APT::Upgrade::Upgrade(pkgDepCache&, int, OpProgress*)@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@APTPKG_7.0" 1.1~exp4
+ (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@APTPKG_7.0" 1.1~exp4
+ (c++)"DropPrivileges()@APTPKG_7.0" 1.1~exp4
+ (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned long)@APTPKG_7.0" 1.1~exp4
+ (c++)"metaIndex::metaIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::CacheSetHelper::CacheSetHelper(bool, GlobalError::MsgType)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::Configuration::getArchitectures[abi:cxx11](bool const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::Configuration::getCompressionTypes[abi:cxx11](bool const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::PackageContainerInterface const&)@APTPKG_7.0" 1.9.11~
+ (c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::PackageUniverse(pkgCache*)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::PackageUniverse(pkgCacheFile*)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::Progress::PackageManagerText::PackageManagerText()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::FromDependency(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::DepIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::VersionContainerInterface(APT::VersionContainerInterface const&)@APTPKG_7.0" 1.9.11~
+ (c++)"CommandLine::CommandLine()@APTPKG_7.0" 1.1~exp9
+ (c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) const@APTPKG_7.0" 1.1~exp9
+ (c++)"debDscFileIndex::CreateSrcParser() const@APTPKG_7.0" 1.1~exp9
+ (c++)"debDscFileIndex::~debDscFileIndex()@APTPKG_7.0" 1.1~exp9
+ (c++)"debDscFileIndex::debDscFileIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"debDscFileIndex::GetType() const@APTPKG_7.0" 1.1~exp9
+ (c++)"ExecGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"FileFd::FileFd()@APTPKG_7.0" 1.1~exp9
+ (c++)"FileFd::FileFd(int, bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"FileFd::FileFd(int, unsigned int, FileFd::CompressMode)@APTPKG_7.0" 1.1~exp9
+ (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_7.0" 1.1~exp9
+ (c++)"GetTempFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, FileFd*)@APTPKG_7.0" 1.1~exp9
+ (c++)"Hashes::AddFD(FileFd&, unsigned long long)@APTPKG_7.0" 1.1~exp9
+ (c++)"Hashes::AddFD(int, unsigned long long)@APTPKG_7.0" 1.1~exp9
+ (c++)"Hashes::Add(unsigned char const*, unsigned long long)@APTPKG_7.0" 1.1~exp9
+ (c++)"Hashes::Hashes(HashStringList const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"Hashes::Hashes(unsigned int)@APTPKG_7.0" 1.1~exp9
+ (c++)"HashStringList::FileSize() const@APTPKG_7.0" 1.1~exp9
+ (c++)"HashStringList::FileSize(unsigned long long)@APTPKG_7.0" 1.1~exp9
+ (c++)"IndexCopy::IndexCopy()@APTPKG_7.0" 1.1~exp9
+ (c++)"IndexTarget::Format(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_7.0" 1.1~exp9
+ (c++)"IndexTarget::IndexTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"IndexTarget::Option[abi:cxx11](IndexTarget::OptionKeys) const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::CheckDist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::Describe[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::FindInCache(pkgCache&, bool) const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetCodename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetDate() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetExpectedDist[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetLoadedSuccessfully() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetSignedBy[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetSuite[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetSupportsAcquireByHash() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetTrusted() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::GetValidUntil() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::Lookup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::MetaKeys[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"metaIndex::swapLoad(metaIndex*)@APTPKG_7.0" 1.1~exp9
+ (c++)"PackageCopy::PackageCopy()@APTPKG_7.0" 1.1~exp9
+ (c++)"PackageCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::DescURI[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::GetFinalFilename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::HashesRequired() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqArchive::ShortDesc[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::~pkgAcqChangelog()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::RlsFileIterator const&, char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::RlsFileIterator const&, char const*, char const*, char const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, char const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URITemplate[abi:cxx11](pkgCache::RlsFileIterator const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqFile::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqFile::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqFile::HashesRequired() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchItem::FetchItem()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchItem::~FetchItem()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchResult::~FetchResult()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetFinalFilename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetItemDesc()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetOwner() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::HashSum[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Item(pkgAcquire*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::ShortDesc[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Start(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::VerifyDone(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::GetMaximumSize() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::SyncDestinationFiles() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::Queue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgArchiveCleaner::pkgArchiveCleaner()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCache::DepIterator::IsImplicit() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCacheFile::pkgCacheFile(pkgDepCache*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCache::RlsFileIterator::RelStr[abi:cxx11]()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCdrom::~pkgCdrom()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCdrom::pkgCdrom()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCdromStatus::~pkgCdromStatus()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgCdromStatus::pkgCdromStatus()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::FindInCache(pkgCache&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::~pkgDebianIndexFile()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::pkgDebianIndexFile(bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Describe[abi:cxx11](bool) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Exists() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::GetProgressDescription[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::IndexFileName[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::~pkgDebianIndexRealFile()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Size() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Describe[abi:cxx11](bool) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Exists() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetProgressDescription[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::IndexFileName[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const&, bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Size() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator const&, int, pkgCache::PkgIterator&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgIndexFile::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgIndexFile::~pkgIndexFile()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgIndexFile::pkgIndexFile(bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgIndexFile::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgRecords::Parser::~Parser()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgRecords::Parser::Parser()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::AddVolatileFile(pkgIndexFile*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::GetVolatileFiles() const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::ReadAppend(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::ReadSourceDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::Read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::ParseLine(std::vector<metaIndex*, std::allocator<metaIndex*> >&, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::ParseStanza(std::vector<metaIndex*, std::allocator<metaIndex*> >&, pkgTagSection&, unsigned int, FileFd&)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::~Type()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::Type(char const*, char const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSrcRecords::Parser::~Parser()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSrcRecords::Parser::Parser(pkgIndexFile const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSystem::~pkgSystem()@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSystem::pkgSystem(char const*, pkgVersioningSystem*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgTagSection::FindFlag(std::basic_string_view<char, std::char_traits<char> >, unsigned char&, unsigned char) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::FindFlag(unsigned char&, unsigned char, char const*, char const*)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgTagSection::FindRaw(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9~
+ (c++)"pkgTagSection::Tag::Remove(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgTagSection::Tag::Rename(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgTagSection::Tag::Rewrite(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 2.9.27+exp1
+ (c++)"pkgTagSection::Write(FileFd&, char const* const*, std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> > const&) const@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgVersioningSystem::~pkgVersioningSystem()@APTPKG_7.0" 1.1~exp9
+ (c++)"SigVerify::~SigVerify()@APTPKG_7.0" 1.1~exp9
+ (c++)"SigVerify::SigVerify()@APTPKG_7.0" 1.1~exp9
+ (c++)"SourceCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"SourceCopy::SourceCopy()@APTPKG_7.0" 1.1~exp9
+ (c++)"TranslationsCopy::~TranslationsCopy()@APTPKG_7.0" 1.1~exp9
+ (c++)"TranslationsCopy::TranslationsCopy()@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for debDscFileIndex@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgCdrom@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgCdromStatus@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgOrderList@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgProblemResolver@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgRecords@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for pkgSourceList@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for SigVerify@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo for TranslationsCopy@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for debDscFileIndex@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgCdrom@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgCdromStatus@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgOrderList@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgProblemResolver@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgRecords@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for pkgSourceList@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for SigVerify@APTPKG_7.0" 1.1~exp9
+ (c++)"typeinfo name for TranslationsCopy@APTPKG_7.0" 1.1~exp9
+ (c++)"URI::ArchiveOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for debDscFileIndex@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgCdrom@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgCdromStatus@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgOrderList@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgProblemResolver@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgRecords@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for pkgSourceList@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for SigVerify@APTPKG_7.0" 1.1~exp9
+ (c++)"vtable for TranslationsCopy@APTPKG_7.0" 1.1~exp9
+ (c++)"APT::CacheFilter::ParsePattern(std::basic_string_view<char, std::char_traits<char> >, pkgCacheFile*)@APTPKG_7.0" 1.9.11~
+ (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.9.11~
+ (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.9.11~
+ (c++)"APT::String::DisplayLength(std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 1.9.11~
+ (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_7.0" 1.9.11~
+ (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(std::basic_string_view<char, std::char_traits<char> >) const@APTPKG_7.0" 1.9.11~
+ (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_7.0" 1.9.11~
+ (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_7.0" 1.9.11~
+ (c++)"pkgDebianIndexFile::Merge(pkgCacheGenerator&, OpProgress*)@APTPKG_7.0" 1.9.11~
+ (c++)"metaIndex::Merge(pkgCacheGenerator&, OpProgress*) const@APTPKG_7.0" 1.9.11~
+ (c++)"pkgDepCache::CheckConsistency(char const*)@APTPKG_7.0" 2.1.5~
+ (c++)"APT::StateChanges::clear()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::empty() const@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Error()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Hold()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Hold(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Install()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Install(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::operator=(APT::StateChanges&&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Purge()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Purge(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Remove()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Remove(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Save(bool)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::~StateChanges()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::StateChanges()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::StateChanges(APT::StateChanges&&)@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Unhold()@APTPKG_7.0" 1.1~exp15
+ (c++)"APT::StateChanges::Unhold(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"metaIndex::IsArchitectureSupported(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.1~exp15
+ (c++)"RemoveFile(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"pkgOrderList::OrderCompareA(pkgCache::Package*, pkgCache::Package*)@APTPKG_7.0" 1.1~exp15
+ (c++)"pkgOrderList::OrderCompareB(pkgCache::Package*, pkgCache::Package*)@APTPKG_7.0" 1.1~exp15
+ (c++)"CommandLine::DispatchArg(CommandLine::Dispatch const*, bool)@APTPKG_7.0" 1.1~exp15
+ (c++)"Configuration::MoveSubTree(char const*, char const*)@APTPKG_7.0" 1.1~exp15
+ (c++)"GetTempDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"HashString::usable() const@APTPKG_7.0" 1.1~exp15
+ (c++)"IndexTarget::OptionBool(IndexTarget::OptionKeys) const@APTPKG_7.0" 1.1~exp12
+ (c++)"pkgDepCache::GetCandidateVersion(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_7.0" 1.1~exp15
+ (c++)"pkgPackageManager::CheckRBreaks(pkgCache::PkgIterator const&, pkgCache::DepIterator, char const*)@APTPKG_7.0" 1.1~exp11
+ (c++)"pkgPolicy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_7.0" 1.1~exp9
+ (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.1~exp15
+ (c++)"pkgVersionMatch::VersionMatches(pkgCache::VerIterator)@APTPKG_7.0" 1.1~exp9
+ (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_7.0" 1.1~exp15
+ (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_7.0" 1.1~exp15
+ (c++)"PopFromSrvRecs(std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_7.0" 1.1~exp15
+ (c++)"SrvRec::operator==(SrvRec const&) const@APTPKG_7.0" 1.1~exp15
+ (c++)"debDscFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.1.4
+ (c++)"debDscFileIndex::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.1.4
+ (c++)"debDscFileIndex::GetIndexFlags() const@APTPKG_7.0" 1.1.4
+ (c++)"FileFd::Flush()@APTPKG_7.0" 1.1.9
+ (c++)"metaIndex::IsArchitectureAllSupportedFor(IndexTarget const&) const@APTPKG_7.0" 1.1.9
+ (c++)"pkgTagFile::Init(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_7.0" 1.2~exp1
+ (c++)"pkgTagFile::pkgTagFile(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_7.0" 1.2~exp1
+ APTPKG_7.0@APTPKG_7.0 1.1~exp9
+ (c++)"debStringPackageIndex::~debStringPackageIndex()@APTPKG_7.0" 1.2.2
+ (c++)"debStringPackageIndex::debStringPackageIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.2.2
+ (c++)"debStringPackageIndex::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.2.2
+ (c++)"debStringPackageIndex::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.2.2
+ (c++)"debStringPackageIndex::GetIndexFlags() const@APTPKG_7.0" 1.2.2
+ (c++)"debStringPackageIndex::GetType() const@APTPKG_7.0" 1.2.2
+ (c++)"pkgCacheFile::AddIndexFile(pkgIndexFile*)@APTPKG_7.0" 1.2.2
+ (c++)"typeinfo for debStringPackageIndex@APTPKG_7.0" 1.2.2
+ (c++)"typeinfo name for debStringPackageIndex@APTPKG_7.0" 1.2.2
+ (c++)"vtable for debStringPackageIndex@APTPKG_7.0" 1.2.2
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyDep const&)@APTPKG_7.0" 1.3~exp1
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyPkg const&)@APTPKG_7.0" 1.3~exp1
+ (c++)"EDSP::ReadRequest(int, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, unsigned int&)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, unsigned int, OpProgress*)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, std::vector<bool, std::allocator<bool> > const&, OpProgress*)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteProgress(unsigned short, char const*, FileFd&)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteRequest(pkgDepCache&, FileFd&, unsigned int, OpProgress*)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_7.0" 1.3~exp2
+ (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_7.0" 1.3~exp2
+ (c++)"EIPP::ApplyRequest(std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_7.0" 1.3~rc2
+ (c++)"EIPP::ReadRequest(int, std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_7.0" 1.3~rc2
+ (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_7.0" 1.3~rc2
+ (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_7.0" 1.3~rc2
+ (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_7.0" 1.3~rc2
+ (c++)"APT::String::Join(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::basic_string_view<char, std::char_traits<char> > const&)@APTPKG_7.0" 1.4~beta4
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&, bool const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.4~beta3
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string_view<char, std::char_traits<char> >&, std::basic_string_view<char, std::char_traits<char> >&, unsigned int&, bool, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.9.0~
+ (c++)"FileFd::ReadLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_7.0" 1.5~beta2~
+ (c++)"MaybeAddAuth(FileFd&, URI&)@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::GetDefaultPin() const@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::GetLabel[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::GetOrigin[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::GetReleaseNotes[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::GetVersion[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~
+ (c++)"metaIndex::HasSupportForComponent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_7.0" 1.5~beta2~
+ (c++)"pkgAcquireStatus::ReleaseInfoChanges(metaIndex const*, metaIndex const*, std::vector<pkgAcquireStatus::ReleaseInfoChange, std::allocator<pkgAcquireStatus::ReleaseInfoChange> >&&)@APTPKG_7.0" 1.5~beta2~
+ (c++)"RemoveFileAt(char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 1.5~beta2~
+ (c++)"pkgAcqMethod::FetchItem::Proxy[abi:cxx11]()@APTPKG_7.0" 1.6~alpha1~
+ (c++)"pkgAcqMethod::SendMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&)@APTPKG_7.0" 1.7.0~alpha3~
+ (c++)"APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(pkgCache*, bool)@APTPKG_7.0" 2.1.16
+ (c++)"ExtractTar::Done()@APTPKG_7.0" 1.1~exp12
+ (c++)"ExtractTar::Go(pkgDirStream&)@APTPKG_7.0" 0.8.0
+ (c++)"ExtractTar::StartGzip()@APTPKG_7.0" 0.8.0
+ (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.0.5
+ (c++)"ExtractTar::~ExtractTar()@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::GotoMember(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::CheckMember(char const*)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTPKG_7.0" 0.9.15.4
+ (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTPKG_7.0" 1.0.5
+ (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTPKG_7.0" 1.0.5
+ (c++)"debDebFile::debDebFile(FileFd&)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTPKG_7.0" 0.8.0
+ (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0
+ (c++)"ARArchive::LoadHeaders()@APTPKG_7.0" 0.8.0
+ (c++)"ARArchive::ARArchive(FileFd&)@APTPKG_7.0" 0.8.0
+ (c++)"ARArchive::~ARArchive()@APTPKG_7.0" 0.8.0
+ (c++)"ARArchive::FindMember(char const*) const@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for ExtractTar@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for pkgDirStream@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for ExtractTar@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for pkgDirStream@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"typeinfo name for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"vtable for ExtractTar@APTPKG_7.0" 0.8.0
+ (c++)"vtable for pkgDirStream@APTPKG_7.0" 0.8.0
+ (c++)"vtable for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"vtable for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0
+ (c++)"pkgCache::VerIterator::IsSecurityUpdate() const@APTPKG_7.0" 2.7.11
+ (c++)"pkgDepCache::PhasingApplied(pkgCache::PkgIterator) const@APTPKG_7.0" 2.7.11
+ (c++)"pkgProblemResolver::KeepPhasedUpdates()@APTPKG_7.0" 2.7.11
+ (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 1.9.11~
+ (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_7.0" 1.9.11~
+ (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~
+ (c++)"pkgDepCache::DecreaseActionGroupLevel()@APTPKG_7.0" 2.6.1
+ (c++)"pkgDepCache::IncreaseActionGroupLevel()@APTPKG_7.0" 2.6.1
+ (c++)"pkgCacheFile::InhibitActionGroups(bool)@APTPKG_7.0" 2.6.1
+ (c++)"pkgVersionMatch::FileMatch(pkgCache::RlsFileIterator const&)@APTPKG_7.0" 2.6.1
+ (c++)"APT::CacheSetHelper::setLastVersionMatcher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.6.1
+ (c++)"APT::CacheSetHelper::canNotGetVerFromRelease(pkgCacheFile&, pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.6.1
+ (c++)"APT::CacheSetHelper::canNotGetVerFromVersionNumber(pkgCacheFile&, pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.6.1
+ (c++)"APT::Progress::PackageManagerFancy::SIGWINCH_flag@APTPKG_7.0" 2.6.1
+ (c++)"APT::Progress::PackageManagerFancy::SIGWINCH_orig@APTPKG_7.0" 2.6.1
+ (c++)"APT::Progress::PackageManagerFancy::Pulse()@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::Find(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::Find(pkgTagSection::Key, char const*&, char const*&) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::Find(pkgTagSection::Key, unsigned int&) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindB(pkgTagSection::Key, bool) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindI(pkgTagSection::Key, long) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::Exists(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindRaw(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindULL(pkgTagSection::Key, unsigned long long const&) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindFlag(pkgTagSection::Key, unsigned char&, unsigned char) const@APTPKG_7.0" 2.6.1
+ (c++)"pkgTagSection::FindFlag(pkgTagSection::Key, unsigned long&, unsigned long) const@APTPKG_7.0" 2.6.1
+ (c++)"APT::CacheSetHelper::getLastVersionMatcher[abi:cxx11]() const@APTPKG_7.0" 2.6.1
+ (c++)"pkgAcquire::CleanLists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.7.14
+ (c++)"APT::Configuration::checkUsrMerged()@APTPKG_7.0" 2.7.14
+ (c++)"APT::Configuration::isChroot()@APTPKG_7.0" 2.7.14
+ (c++)"metaIndex::HasFlag(metaIndex::Flag) const@APTPKG_7.0" 2.7.14
+ (c++)"Base64Decode[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >)@APTPKG_7.0" 2.9.17
+ (c++)"IsAssertedPubKeyAlgo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.9.17
+ (c++)"ExecGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)@APTPKG_7.0" 2.9.17
+ (c++)"GlobalError::Audit(char const*, ...)@APTPKG_7.0" 2.9.17
+ (c++)"GlobalError::AuditE(char const*, char const*, ...)@APTPKG_7.0" 2.9.17
+ (c++)"pkgDepCache::BootSize(bool)@APTPKG_7.0" 2.9.17
+ (c++)"pkgAcqMethod::FailWithContext(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&)@APTPKG_7.0" 2.9.17
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string_view<char, std::char_traits<char> >&, std::basic_string_view<char, std::char_traits<char> >&, unsigned int&, bool, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_7.0" 2.9.17
+ (c++)"APT::Configuration::color(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.9.17
+ (c++)"APT::Internal::FindGPGV[abi:cxx11](bool)@APTPKG_7.0" 2.9.17
+ (c++)"pkgTagSection::Write(FileFd&, pkgTagSection::WriteFlags, char const* const*, std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> > const&) const@APTPKG_7.0" 2.9.17
+ (c++)"VerifyDetachedSignatureFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_7.0" 2.9.19
+ (c++)"pkgCache::DepType_NoL10n(unsigned char)@APTPKG_7.0" 2.9.23
+ (c++)"pkgCache::Priority_NoL10n(unsigned char)@APTPKG_7.0" 2.9.23
+ (c++)"metaIndex::Load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_7.0" 2.9.29+exp1
+ (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PkgIterator const&) const@APTPKG_7.0" 2.9.29+exp1
+ (arch=!armel !armhf|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long&)@APTPKG_7.0" 1.9.0
+ (arch=!armel !armhf|c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_7.0" 1.3~rc2
+ (arch=i386|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@APTPKG_7.0" 0.8.11.4
+ (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@APTPKG_7.0" 0.8.11.4
+ (arch=arm64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=amd64 s390x|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=mips64el riscv64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=ppc64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=i386|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@APTPKG_7.0" 0.8.11.4
+ (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@APTPKG_7.0" 0.8.11.4
+ (arch=arm64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=amd64 s390x|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=mips64el riscv64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=ppc64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4
+ (arch=armel armhf|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long&)@APTPKG_7.0" 1.9.0
+ (arch=armel armhf|c++)"TimeRFC1123[abi:cxx11](long long, bool)@APTPKG_7.0" 2.7.14
+# Optional C++ standard library symbols
+# These are inlined libstdc++ symbols and not supposed to be part of our ABI
+# but we cannot stop stuff from linking against it, sigh.
diff --git a/debian/rules b/debian/rules
index 56b4a98..cd23709 100755
--- a/debian/rules
+++ b/debian/rules
@@ -31,7 +31,7 @@ override_dh_install-arch:
 	install -m 644 debian/apt.conf.autoremove debian/apt/etc/apt/apt.conf.d/01autoremove
 
 override_dh_gencontrol:
-	dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)"
+	dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)" -Vopenpgp:Depends=$(shell test -e /usr/bin/sqv && echo sqv || echo gpgv)
 
 override_dh_installcron:
 	dh_installcron --name=apt-compat
diff --git a/debian/tests/control b/debian/tests/control
index d2b2e32..9f094a8 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -4,8 +4,12 @@ Depends: libapt-pkg-dev, pkg-config, g++
 
 Tests: run-tests
 Restrictions: allow-stderr
-Depends: @, @builddeps@, dpkg (>= 1.20.8), fakeroot, wget, stunnel4, lsof, db-util,
-         gnupg (>= 2) | gnupg2, gnupg1 | gnupg (<< 2),
-         gpgv (>= 2) | gpgv2, gpgv1 | gpgv (<< 2),
+Depends: @, @builddeps@, dpkg (>= 1.20.8), expect, fakeroot, wget, stunnel4, lsof, db-util,
+         gpgv,
+         gpgv-sq,
+         sq (>= 0.40),
+         sqv,
+         moreutils,
+         jq,
          libfile-fcntllock-perl, python3-apt, aptitude,
-         valgrind, gdb-minimal | gdb
+         valgrind-if-available [!armhf !ppc64el], gdb
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 72a1fed..2df0ce7 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -22,13 +22,14 @@ set(ENTITIES
     apt-verbatim.ent
     ../vendor/${CURRENT_VENDOR}/apt-vendor.ent
 )
+set(USR_SHARE_DOC "${CMAKE_INSTALL_DATAROOTDIR}/doc")
 
 if(WITH_DOC OR WITH_DOC_GUIDES)
 add_docbook(apt-doc HTML TEXT ALL
     DOCUMENTS
         guide.dbk
         offline.dbk
-    INSTALL ${CMAKE_INSTALL_DOCDIR}/../apt-doc
+    INSTALL ${USR_SHARE_DOC}/apt-doc
     LINGUAS ${LINGUAS}
     TRANSLATED_ENTITIES ${TRANSLATED_ENTITIES}
     DEPENDS ${ENTITIES}
@@ -40,7 +41,7 @@ add_docbook(libapt-pkg-doc HTML TEXT ALL
         dpkg-tech.dbk
         files.dbk
         method.dbk
-    INSTALL ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc
+    INSTALL ${USR_SHARE_DOC}/libapt-pkg-doc
     LINGUAS ${LINGUAS}
     TRANSLATED_ENTITIES ${TRANSLATED_ENTITIES}
     DEPENDS ${ENTITIES}
@@ -65,7 +66,7 @@ add_custom_target(apt-doxygen ALL
 )
 
 install(DIRECTORY  ${PROJECT_BINARY_DIR}/doc/doxygen/html
-        DESTINATION ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc
+        DESTINATION ${USR_SHARE_DOC}/libapt-pkg-doc
         PATTERN "*.map" EXCLUDE
         PATTERN "*.md5" EXCLUDE
 )
@@ -83,7 +84,6 @@ add_docbook(apt-man MANPAGE ALL
         apt-extracttemplates.1.xml
         apt-ftparchive.1.xml
         apt-get.8.xml
-        apt-key.8.xml
         apt-mark.8.xml
         apt_preferences.5.xml
         apt-patterns.7.xml
diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml
index 0958dbc..d42b502 100644
--- a/doc/apt-cache.8.xml
+++ b/doc/apt-cache.8.xml
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2019-04-04T00:00:00Z</date>
+   <date>2024-03-14T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -210,7 +210,7 @@ Reverse Provides:
      <varlistentry><term><option>dotty</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>dotty</literal> takes a list of packages on the command line and
      generates output suitable for use by dotty from the 
-     <ulink url="http://www.research.att.com/sw/tools/graphviz/">GraphViz</ulink>
+     <ulink url="https://graphviz.org/">GraphViz</ulink>
      package. The result will be a set of nodes and edges representing the 
      relationships between the packages. By default the given packages will 
      trace out all dependent packages; this can produce a very large graph. 
@@ -227,7 +227,7 @@ Reverse Provides:
      
      <varlistentry><term><option>xvcg</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
 	 <listitem><para>The same as <literal>dotty</literal>, only for xvcg from the
-	 <ulink url="http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html">VCG tool</ulink>.
+	 <ulink url="https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1.html">VCG tool</ulink>.
 	 </para></listitem></varlistentry>
 
 	 <varlistentry><term><option>policy</option> <optional><replaceable>&synopsis-pkg;</replaceable>…</optional></term>
@@ -378,7 +378,7 @@ Reverse Provides:
  </refsect1>
 
  <refsect1><title>See Also</title>
-   <para>&apt-conf;, &sources-list;, &apt-get;
+   <para>&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;
    </para>
  </refsect1>
 
diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml
index 6d28fe1..93f02a5 100644
--- a/doc/apt-get.8.xml
+++ b/doc/apt-get.8.xml
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2023-01-25T00:00:00Z</date>
+   <date>2024-11-18T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -62,8 +62,10 @@
      retrieved and installed. New versions of currently installed packages that 
      cannot be upgraded without changing the install status of another package 
      will be left at their current version. An <literal>update</literal> must be 
-     performed first so that <command>apt-get</command> knows that new versions of packages are 
-     available.</para></listitem>
+     performed first so that <command>apt-get</command> knows that new versions
+     of packages are available.</para><para>When a package is supplied as an
+     argument, the package will be installed prior to the upgrade
+     action.</para></listitem>
      </varlistentry>
 
      <varlistentry><term><option>dist-upgrade</option></term>
@@ -76,7 +78,9 @@
      The <filename>/etc/apt/sources.list</filename> file contains a list of locations 
      from which to retrieve desired package files.
      See also &apt-preferences; for a mechanism for
-     overriding the general settings for individual packages.</para></listitem>
+     overriding the general settings for individual packages.</para><para>When
+     a package is supplied as an argument, the package will be installed prior
+     to the upgrade action.</para></listitem>
      </varlistentry>
 
      <varlistentry><term><option>dselect-upgrade</option></term>
@@ -250,6 +254,13 @@
      erased if it is set to off.</para></listitem>
      </varlistentry>
 
+     <varlistentry><term><option>distclean</option> (and the <option>dist-clean</option> alias)</term>
+     <listitem><para><literal>distclean</literal> removes all files under
+     <filename>&statedir;/lists</filename> except Release, Release.gpg, and InRelease.
+     It can be used for example, when finalizing images distributed to users.
+     The release files are kept for security reasons, to prevent various types of attacks.</para></listitem>
+     </varlistentry>
+
      <varlistentry><term><option>autoremove</option> (and the <option>auto-remove</option> alias since 1.1)</term>
      <listitem><para><literal>autoremove</literal> is used to remove packages that were automatically
      installed to satisfy dependencies for other packages and are now no longer needed.</para></listitem>
@@ -399,6 +410,17 @@
      Configuration Item: <literal>APT::Get::Show-Versions</literal>.</para></listitem>
      </varlistentry>
 
+     <varlistentry><term><option>--no-list-columns</option></term>
+     <listitem><para>Display package lists without arranging them in columns. By
+     default, package lists are printed in the style of the "ls" command.
+     Configuration Item: <literal>APT::Get::List-Columns</literal>.</para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><option>--comment</option></term>
+         <listitem><para>Add the given value to the <literal>Comment:</literal> field in history.log
+     Configuration Item: <literal>APT::History::Comment</literal>.</para></listitem>
+     </varlistentry>
+
      <varlistentry><term><option>-a</option></term>
                    <term><option>--host-architecture</option></term>
      <listitem><para>This option controls the architecture packages are built for
@@ -528,6 +550,16 @@
      Configuration Item: <literal>APT::Get::List-Cleanup</literal>.</para></listitem>
      </varlistentry>
 
+     <varlistentry><term><option>-S</option></term>
+                   <term><option>--snapshot</option></term>
+     <listitem><para>This option controls the snapshot chosen for archives with <literal>Snapshot: enable</literal>
+             in the source entry. For example, <option>-S 20220102T030405Z</option> selects a snapshot from January 2nd,
+             2022 at 03:04:05 UTC.
+     Configuration Item: <literal>APT::Snapshot</literal>;
+     see also the &sources-list; manual page.
+     </para></listitem>
+     </varlistentry>
+
      <varlistentry><term><option>-t</option></term>
                    <term><option>--target-release</option></term>
                    <term><option>--default-release</option></term>
@@ -657,6 +689,20 @@
      <listitem><para>Fail the update command if any error occured, even a transient one.</para></listitem>
      </varlistentry>
 
+     <varlistentry><term><option>-U</option></term><term><option>--update</option></term>
+         <listitem><para>Run the <option>update</option> command before the specified command. This is supported for commands
+         installing, removing, or upgrading packages such as
+         <option>install</option>, <option>remove</option>, <option>safe-upgrade</option>, <option>full-upgrade</option>.
+         This can be useful to ensure a command always installs the latest versions, or, in combination with the
+         <option>--snapshot</option> option to make sure the snapshot is present when install is being run.
+        </para>
+        <para>Caveat: Due to technical limitations, locks are acquired individually for each phase, hence an install
+        may fail to acquire locks after successfully executing the update. Until this is resolved, this is merely
+        syntactic sugar for <literal>apt update &amp;&amp; apt install</literal></para>
+         </listitem>
+     </varlistentry>
+
+
      &apt-commonoptions;
      
    </variablelist>
@@ -674,7 +720,7 @@
 
  <refsect1><title>See Also</title>
    <para>&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;,
-   &apt-conf;, &apt-config;, &apt-secure;, 
+   &apt-conf;, &apt-patterns;, &apt-config;, &apt-secure;,
    The APT User's guide in &guidesdir;, &apt-preferences;, the APT Howto.</para>
  </refsect1>
 
diff --git a/doc/apt-key.8.xml b/doc/apt-key.8.xml
deleted file mode 100644
index 7cf4da4..0000000
--- a/doc/apt-key.8.xml
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
-<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
-<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
-]>
-
-<refentry>
- <refentryinfo>
-   &apt-author.jgunthorpe;
-   &apt-author.team;
-   &apt-email;
-   &apt-product;
-   <!-- The last update date -->
-   <date>2022-02-22T00:00:00Z</date>
- </refentryinfo>
-
- <refmeta>
-   <refentrytitle>apt-key</refentrytitle>
-   <manvolnum>8</manvolnum>
-   <refmiscinfo class="manual">APT</refmiscinfo>
- </refmeta>
- 
- <!-- Man page title -->
- <refnamediv>
-    <refname>apt-key</refname>
-    <refpurpose>Deprecated APT key management utility</refpurpose>
- </refnamediv>
-
- &synopsis-command-apt-key;
-
- <refsect1><title>Description</title>
-   <para>
-   <command>apt-key</command> is used to manage the list of keys used
-   by apt to authenticate packages.  Packages which have been
-   authenticated using these keys will be considered trusted.
-   </para>
-   <para>
-   Use of <command>apt-key</command> is deprecated, except for the use of
-   <command>apt-key del</command> in maintainer scripts to remove existing
-   keys from the main keyring.
-   If such usage of <command>apt-key</command> is desired the additional
-   installation of the GNU Privacy Guard suite (packaged in
-   <package>gnupg</package>) is required.
-   </para>
-   <para>
-   apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.
-   </para>
-</refsect1>
-
-<refsect1><title>Supported keyring files</title>
-<para>apt-key supports only the binary OpenPGP format (also known as "GPG key
-   public ring") in files with the "<literal>gpg</literal>" extension, not
-   the keybox database format introduced in newer &gpg; versions as default
-   for keyring files. Binary keyring files intended to be used with any apt
-   version should therefore always be created with <command>gpg --export</command>.
-</para>
-<para>Alternatively, if all systems which should be using the created keyring
-   have at least apt version >= 1.4 installed, you can use the ASCII armored
-   format with the "<literal>asc</literal>" extension instead which can be
-   created with <command>gpg --armor --export</command>.
-</para>
-</refsect1>
-
-<refsect1><title>Commands</title>
-   <variablelist>
-     <varlistentry><term><option>add</option> <option>&synopsis-param-filename;</option>  (deprecated)</term>
-     <listitem>
-     <para>
-       Add a new key to the list of trusted keys.
-       The key is read from the filename given with the parameter
-       &synopsis-param-filename; or if the filename is <literal>-</literal>
-       from standard input.
-     </para>
-     <para>
-     It is critical that keys added manually via <command>apt-key</command> are
-     verified to belong to the owner of the repositories they claim to be for
-     otherwise the &apt-secure; infrastructure is completely undermined.
-     </para>
-     <para>
-       <emphasis>Note</emphasis>: Instead of using this command a keyring
-       should be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename>
-       directory with a descriptive name and either "<literal>gpg</literal>" or
-       "<literal>asc</literal>" as file extension.
-     </para>
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>del</option> <option>&synopsis-param-keyid;</option>  (mostly deprecated)</term>
-     <listitem>
-     <para>
-
-       Remove a key from the list of trusted keys.
-
-     </para>
-
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>export</option> <option>&synopsis-param-keyid;</option>  (deprecated)</term>
-     <listitem>
-     <para>
-
-        Output the key &synopsis-param-keyid; to standard output.
-
-     </para>
-
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>exportall</option>  (deprecated)</term>
-     <listitem>
-     <para>
-
-        Output all trusted keys to standard output.
-
-     </para>
-
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>list</option>, <option>finger</option>  (deprecated)</term>
-     <listitem>
-     <para>
-
-       List trusted keys with fingerprints.
-
-     </para>
-
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>adv</option>  (deprecated)</term>
-     <listitem>
-     <para>
-     Pass advanced options to gpg. With <command>adv --recv-key</command> you
-     can e.g. download key from keyservers directly into the trusted set of
-     keys. Note that there are <emphasis>no</emphasis> checks performed, so it is
-     easy to completely undermine the &apt-secure; infrastructure if used without
-     care.
-     </para>
-
-     </listitem>
-     </varlistentry>
-
-     <varlistentry><term><option>update</option> (deprecated)</term>
-     <listitem>
-     <para>
-       Update the local keyring with the archive keyring and remove from
-       the local keyring the archive keys which are no longer valid.
-       The archive keyring is shipped in the <literal>archive-keyring</literal> package of your
-       distribution, e.g. the &keyring-package; package in &keyring-distro;.
-     </para>
-     <para>
-       Note that a distribution does not need to and in fact should not use
-       this command any longer and instead ship keyring files in the
-       <filename>/etc/apt/trusted.gpg.d/</filename> directory directly as this
-       avoids a dependency on <package>gnupg</package> and it is easier to manage
-       keys by simply adding and removing files for maintainers and users alike.
-     </para>
-     </listitem>
-     </varlistentry>
-     
-     <varlistentry><term><option>net-update</option>  (deprecated)</term>
-     <listitem>
-     <para>
-
-       Perform an update working similarly to the <command>update</command> command above,
-       but get the archive keyring from a URI instead and validate it against a master key.
-
-       This requires an installed &wget; and an APT build configured to have
-       a server to fetch from and a master keyring to validate.
-
-       APT in Debian does not support this command, relying on
-       <command>update</command> instead, but Ubuntu's APT does.
-
-     </para>
-
-     </listitem>
-     </varlistentry>
-   </variablelist>
-</refsect1>
-
- <refsect1><title>Options</title>
-<para>Note that options need to be defined before the commands described in the previous section.</para>
-   <variablelist>
-      <varlistentry><term><option>--keyring</option> <option>&synopsis-param-filename;</option>  (deprecated)</term>
-      <listitem><para>With this option it is possible to specify a particular keyring
-      file the command should operate on. The default is that a command is executed
-      on the <filename>trusted.gpg</filename> file as well as on all parts in the
-      <filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</filename>
-      is the primary keyring which means that e.g. new keys are added to this one.
-      </para></listitem>
-      </varlistentry>
-   </variablelist>
- </refsect1>
-
- <refsect1><title>Deprecation</title>
-
-	 <para>Except for using <command>apt-key del</command> in maintainer scripts, the use of <command>apt-key</command> is deprecated. This section shows how to replace existing use of <command>apt-key</command>.</para>
-
-<para>If your existing use of <command>apt-key add</command> looks like this:</para>
-<para><literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</literal></para>
-<para>Then you can directly replace this with (though note the recommendation below):</para>
-<para><literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc</literal></para>
-<para>Make sure to use the "<literal>asc</literal>" extension for ASCII armored
-keys and the "<literal>gpg</literal>" extension for the binary OpenPGP
-format (also known as "GPG key public ring"). The binary OpenPGP format works
-for all apt versions, while the ASCII armored format works for apt version >=
-1.4.</para>
-<para><emphasis>Recommended:</emphasis> Instead of placing keys into the <filename>/etc/apt/trusted.gpg.d</filename>
-directory, you can place them anywhere on your filesystem by using the
-<literal>Signed-By</literal> option in your <literal>sources.list</literal> and
-pointing to the filename of the key. See &sources-list; for details.
-Since APT 2.4, <filename>/etc/apt/keyrings</filename> is provided as the recommended
-location for keys not managed by packages.
-When using a deb822-style sources.list, and with apt version >= 2.4, the
-<literal>Signed-By</literal> option can also be used to include the full ASCII
-armored keyring directly in the <literal>sources.list</literal> without an
-additional file.
-</para>
-
- </refsect1>
-
-
- <refsect1><title>Files</title>
-   <variablelist>
-
-     &file-trustedgpg;
-
-   </variablelist>
-
-</refsect1>
-
-<refsect1><title>See Also</title>
-<para>
-&apt-get;, &apt-secure;
-</para>
-</refsect1>
-
- &manbugs;
- &manauthor;
-
-</refentry>
-
diff --git a/doc/apt-mark.8.xml b/doc/apt-mark.8.xml
index 21a7a7c..b3a11c0 100644
--- a/doc/apt-mark.8.xml
+++ b/doc/apt-mark.8.xml
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2018-12-11T00:00:00Z</date>
+   <date>2024-09-14T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -151,7 +151,8 @@
  </refsect1>
 
  <refsect1><title>See Also</title>
-    <para><phrase>&apt-get;,&aptitude;,&apt-conf;</phrase></para>
+   <para>&apt-get;, &aptitude;, &apt-conf;
+   </para>
  </refsect1>
 
  <refsect1><title>Diagnostics</title>
diff --git a/doc/apt-patterns.7.xml b/doc/apt-patterns.7.xml
index 6b3f91e..40a8dd2 100644
--- a/doc/apt-patterns.7.xml
+++ b/doc/apt-patterns.7.xml
@@ -13,7 +13,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2023-01-13T00:00:00Z</date>
+   <date>2024-10-22T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
@@ -116,6 +116,9 @@
      <varlistentry><term><code>?obsolete</code></term><term><code>~o</code></term>
      <listitem><para>Selects packages that no longer exist in repositories.</para></listitem>
      </varlistentry>
+     <varlistentry><term><code>?phasing</code></term>
+     <listitem><para>Selects packages that will be kept back in upgrades due to phasing.</para></listitem>
+     </varlistentry>
      <varlistentry><term><code>?upgradable</code></term><term><code>~U</code></term>
      <listitem><para>Selects packages that can be upgraded (have a newer candidate).</para></listitem>
      </varlistentry>
@@ -159,6 +162,9 @@
      <varlistentry><term><code>?priority(NAME)</code></term><term><code>~pNAME</code></term>
      <listitem><para>Selects versions where the Priority string equals the given name.</para></listitem>
      </varlistentry>
+     <varlistentry><term><code>?security</code></term>
+     <listitem><para>Selects packages that are a security update or succeed a security update.</para></listitem>
+     </varlistentry>
    </variablelist>
  </refsect1>
 
@@ -169,12 +175,13 @@
      <term><code>?depends(PATTERN)</code></term><term><code>~DPATTERN</code></term>
      <term><code>?pre-depends(PATTERN)</code></term><term><code>~DPre-Depends:PATTERN</code></term>
      <term><code>?suggests(PATTERN)</code></term><term><code>~DSuggests:PATTERN</code></term>
+     <term><code>?recommends(PATTERN)</code></term><term><code>~DRecommends:PATTERN</code></term>
      <term><code>?conflicts(PATTERN)</code></term><term><code>~DConflicts:PATTERN</code></term>
      <term><code>?replaces(PATTERN)</code></term><term><code>~DReplaces:PATTERN</code></term>
      <term><code>?obsoletes(PATTERN)</code></term><term><code>~DObsoletes:PATTERN</code></term>
      <term><code>?breaks(PATTERN)</code></term><term><code>~DBreaks:PATTERN</code></term>
      <term><code>?enhances(PATTERN)</code></term><term><code>~DEnhances:PATTERN</code></term>
-     <listitem><para>Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ packages matching PATTERN.</para></listitem>
+     <listitem><para>Selects versions depending/pre-depending/suggesting/recommending/conflicting/etc on/with/ packages matching PATTERN.</para></listitem>
      </varlistentry>
      <varlistentry>
        <term><code>?reverse-<replaceable>depType</replaceable>(PATTERN)</code></term>
diff --git a/doc/apt-secure.8.xml b/doc/apt-secure.8.xml
index e334df9..2ae9a46 100644
--- a/doc/apt-secure.8.xml
+++ b/doc/apt-secure.8.xml
@@ -13,7 +13,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-08-06T00:00:00Z</date>
+   <date>2024-11-23T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
@@ -60,6 +60,40 @@
    and &synaptic; support this authentication feature, so this manpage uses
    <literal>APT</literal> to refer to them all for simplicity only.
    </para>
+ </refsect1>
+
+<refsect1><title>User Configuration</title>
+  <para>
+    Keys should usually be included inside their corresponding <literal>.sources</literal>
+    by embedding the ASCII-armored key in the <literal>Signed-By</literal> option.
+    To do so, replace the empty line with a dot, and then indent all lines by two spaces.
+    See &sources-list; for more information.
+  </para>
+
+  <para>
+    Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> for local keys,
+    or <filename>/usr/share/keyrings</filename> for keys managed by packages, and then referenced
+    by <literal>Signed-By: /etc/apt/keyrings/example-archive-keyring.asc</literal> option in a <literal>.sources</literal>
+    file or using <literal>deb [signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ...</literal> in the legacy
+    <literal>.list</literal> format. This may be useful for APT versions prior to 2.4, which do not
+    support embedded keys. ASCII-armored keys must use an extension of <literal>.asc</literal>, and
+    unarmored keys an extension of <literal>.gpg</literal>.
+  </para>
+
+  <para>
+    To generate keys suitable for use in APT using GnuPG, you will need to use the 
+    <command>gpg --export-options export-minimal [--armor] --export</command> command.
+    Earlier solutions involving <command>--keyring file --import</command> no longer work
+    with recent GnuPG versions as they use a new internal format ("GPG keybox database").
+  </para>
+
+  <para>
+    Note that a default installation already contains all keys to securely
+    acquire packages from the default repositories, so managing keys
+    is only needed if third-party repositories are added.
+    The <command>extrepo</command> package can be used to manage several
+    external repositories with ease.
+  </para>
 </refsect1>
 
  <refsect1><title>Unsigned Repositories</title>
@@ -180,26 +214,6 @@
    </para>
 </refsect1>
 
-<refsect1><title>User Configuration</title>
-   <para>
-   <command>apt-key</command> is the program that manages the list of keys used
-   by APT to trust repositories. It can be used to add or remove keys as well
-   as list the trusted keys. Limiting which key(s) are able to sign which archive
-   is possible via the <option>Signed-By</option> in &sources-list;.
-   </para><para>
-   Note that a default installation already contains all keys to securely
-   acquire packages from the default repositories, so fiddling with
-   <command>apt-key</command> is only needed if third-party repositories are
-   added.
-   </para><para>
-   In order to add a new key you need to first download it
-   (you should make sure you are using a trusted communication channel
-   when retrieving it), add it with <command>apt-key</command> and
-   then run <command>apt-get update</command> so that apt can download
-   and verify the <filename>InRelease</filename> or <filename>Release.gpg</filename>
-   files from the archives you have configured.
-   </para>
-</refsect1>
 
 <refsect1><title>Repository Configuration</title>
    <para>
@@ -243,13 +257,13 @@
 
 <refsect1><title>See Also</title> 
 <para> 
-&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;,
+&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;,
 &debsign;, &debsig-verify;, &gpg;
 </para>
 
 <para>For more background information you might want to review the
 <ulink
-url="https://www.debian.org/doc/manuals/securing-debian-howto/ch7">Debian
+url="https://www.debian.org/doc/manuals/securing-debian-manual/ch07">Debian
 Security Infrastructure</ulink> chapter of the Securing Debian Manual
 (also available in the harden-doc package) and the
 <ulink url="http://www.cryptnet.net/fdp/crypto/strong_distro.html"
diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent
index abc6de9..e50abd0 100644
--- a/doc/apt-verbatim.ent
+++ b/doc/apt-verbatim.ent
@@ -3,7 +3,7 @@
 <!-- Some common paths.. -->
 <!ENTITY docdir "/usr/share/doc/apt/">
 <!ENTITY guidesdir "/usr/share/doc/apt-doc/">
-<!ENTITY configureindex "<filename>&docdir;examples/configure-index.gz</filename>">
+<!ENTITY configureindex "<filename>&docdir;examples/configure-index</filename>">
 <!ENTITY aptconfdir "<filename>/etc/apt.conf</filename>">
 <!ENTITY statedir "/var/lib/apt">
 <!ENTITY cachedir "/var/cache/apt">
@@ -59,7 +59,7 @@
 
 <!ENTITY apt-patterns "<citerefentry>
     <refentrytitle><abbrev>apt-patterns</abbrev></refentrytitle>
-    <manvolnum>5</manvolnum>
+    <manvolnum>7</manvolnum>
   </citerefentry>"
 >
 
@@ -69,12 +69,6 @@
   </citerefentry>"
 >
 
-<!ENTITY apt-key "<citerefentry>
-    <refentrytitle><command>apt-key</command></refentrytitle>
-    <manvolnum>8</manvolnum>
-  </citerefentry>"
->
-
 <!ENTITY apt-secure "<citerefentry>
     <refentrytitle>apt-secure</refentrytitle>
     <manvolnum>8</manvolnum>
@@ -274,14 +268,14 @@
 ">
 
 <!-- this will be updated by 'prepare-release' -->
-<!ENTITY apt-product-version "2.6.1">
+<!ENTITY apt-product-version "2.9.30">
 
 <!-- (Code)names for various things used all over the place -->
-<!ENTITY debian-oldstable-codename "bullseye">
-<!ENTITY debian-stable-codename "bookworm">
-<!ENTITY debian-testing-codename "trixie">
-<!ENTITY debian-stable-version "12">
-<!ENTITY ubuntu-codename "lunar">
+<!ENTITY debian-oldstable-codename "bookworm">
+<!ENTITY debian-stable-codename "trixie">
+<!ENTITY debian-testing-codename "forky">
+<!ENTITY debian-stable-version "13">
+<!ENTITY ubuntu-codename "plucky">
 
 <!-- good and bad just refers to matching and not matching a pattern…
      It is not a remark about the specific perl version.
@@ -324,7 +318,7 @@
 </cmdsynopsis></refsynopsisdiv>">
 <!ENTITY synopsis-command-apt-get "<refsynopsisdiv><cmdsynopsis>
 	<command>apt-get</command>
-	<arg><option>-asqdyfmubV</option></arg>
+	<arg><option>-sqdyfmubV</option></arg>
 	&synopsis-arg-option;
 	&synopsis-arg-config;
 	&synopsis-arg-target-release;
@@ -424,23 +418,6 @@
 		&synopsis-help;
 	</group>
 </cmdsynopsis></refsynopsisdiv>">
-<!ENTITY synopsis-param-keyid "<replaceable>&synopsis-keyid;</replaceable>">
-<!ENTITY synopsis-command-apt-key "<refsynopsisdiv><cmdsynopsis>
-	<command>apt-key</command>
-	<arg><option>--keyring &synopsis-param-filename;</option></arg>
-	<group choice='req'>
-		<arg choice='plain'>add &synopsis-param-filename;</arg>
-		<arg choice='plain'>del &synopsis-param-keyid;</arg>
-		<arg choice='plain'>export &synopsis-param-keyid;</arg>
-		<arg choice='plain'>exportall</arg>
-		<arg choice='plain'>list</arg>
-		<arg choice='plain'>finger</arg>
-		<arg choice='plain'>adv</arg>
-		<arg choice='plain'>update</arg>
-		<arg choice='plain'>net-update</arg>
-		&synopsis-help;
-	</group>
-</cmdsynopsis></refsynopsisdiv>">
 <!ENTITY synopsis-command-apt-mark "<refsynopsisdiv><cmdsynopsis>
 	<command>apt-mark</command>
 	<group choice='plain'>
diff --git a/doc/apt.8.xml b/doc/apt.8.xml
index e341578..7af915e 100644
--- a/doc/apt.8.xml
+++ b/doc/apt.8.xml
@@ -13,7 +13,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2020-04-05T00:00:00Z</date>
+   <date>2024-03-12T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -59,14 +59,18 @@
 	   packages will never be removed. If an upgrade for a package requires
 	   the removal of an installed package the upgrade for this package
 	   isn't performed.
-     </para></listitem>
+     </para>
+     <para>When a package is supplied as an argument, the package will be
+     installed prior to the upgrade action.</para>
+     </listitem>
      </varlistentry>
 
      <varlistentry><term><option>full-upgrade</option> (&apt-get;)</term>
      <listitem><para><literal>full-upgrade</literal> performs the function of
 	   upgrade but will remove currently installed packages if this is
 	   needed to upgrade the system as a whole.
-     </para></listitem>
+     </para><para>When a package is supplied as an argument, the package will
+     be installed prior to the upgrade action.</para></listitem>
      </varlistentry>
 
      <varlistentry><term><option>install</option>, <option>reinstall</option>, <option>remove</option>, <option>purge</option> (&apt-get;)</term>
@@ -140,10 +144,10 @@
      <varlistentry><term><option>list</option></term>
      <listitem><para><option>list</option> is somewhat similar to <command>dpkg-query --list</command>
 	   in that it can display a list of packages satisfying certain
-	   criteria.  It supports &glob; patterns for matching package names as
-	   well as options to list installed (<option>--installed</option>),
-	   upgradeable (<option>--upgradeable</option>) or all available
-	   (<option>--all-versions</option>) versions.
+	   criteria.  It supports &glob; patterns for matching package names,
+	   &apt-patterns;, as well as options to list installed
+	   (<option>--installed</option>), upgradeable (<option>--upgradeable</option>)
+	   or all available (<option>--all-versions</option>) versions.
      </para></listitem>
      </varlistentry>
 
@@ -154,7 +158,8 @@
      </para></listitem>
      </varlistentry>
 
-
+     <varlistentry><term><option>showsrc, depends, rdepends, policy</option> (summarised in &apt-cache;)</term><listitem><simpara></simpara></listitem></varlistentry>
+     <varlistentry><term><option>source, build-dep, download, changelog, clean, distclean, autoclean</option> (summarised in &apt-get;)</term><listitem><simpara></simpara></listitem></varlistentry>
    </variablelist>
  </refsect1>
 
@@ -175,7 +180,7 @@
 
  <refsect1><title>See Also</title>
    <para>&apt-get;, &apt-cache;, &sources-list;,
-   &apt-conf;, &apt-config;,
+   &apt-conf;, &apt-config;, &apt-patterns;,
    The APT User's guide in &guidesdir;, &apt-preferences;, the APT Howto.</para>
  </refsect1>
 
diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml
index 189fb7d..18379ac 100644
--- a/doc/apt.conf.5.xml
+++ b/doc/apt.conf.5.xml
@@ -19,7 +19,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-01-02T00:00:00Z</date>
+   <date>2025-01-05T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -174,6 +174,45 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      </para></listitem>
      </varlistentry>
 
+     <varlistentry><term><option>Color</option></term>
+         <listitem><para>
+         This scope defines colors and styles. The basic colors supported are
+        <option>red</option>,
+        <option>green</option>,
+        <option>yellow</option>,
+        <option>blue</option>,
+        <option>magenta</option>,
+        <option>cyan</option>, and
+        <option>white</option>.
+        </para>
+        <para>
+        The subscope <option>action</option> defines the colors for package lists
+        in <option>install</option> and similar commands. The following options may be set:
+        <option>APT::Color::Action::Upgrade</option>,
+        <option>APT::Color::Action::Install</option>,
+        <option>APT::Color::Action::Install-Dependencies</option>,
+        <option>APT::Color::Action::Downgrade</option>,
+        <option>APT::Color::Action::Remove</option>; corresponding to their
+        lists in the &apt; output.
+        </para>
+        <para>
+        Each color may reference one or more other color options by name, relative
+        to <option>APT::Color</option>. Their escape sequences will be combined.
+        </para>
+        <informalexample><programlisting>
+APT::Color::Bold "\x1B[1m";
+APT::Color::Action::Install "cyan";
+APT::Color::Action::Upgrade "bold action::install";
+        </programlisting></informalexample>
+        <para>
+        Colors may be turned on or off completely by setting <option>APT::Color</option>
+        to <option>yes</option> or <option>no</option>, by utilizing <envar>NO_COLOR</envar>
+        or <envar>APT_NO_COLOR</envar> environment variables, or using the
+        <option>--color</option>, <option>--no-color</option> command-line options.
+        </para>
+     </listitem>
+     </varlistentry>
+
      <varlistentry><term><option>Compressor</option></term>
      <listitem><para>
      This scope defines which compression formats are supported, how compression
@@ -211,6 +250,10 @@ APT::Compressor::rev {
      version is available. Contains release name, codename or release version. Examples: 'stable', 'testing',
      'unstable', '&debian-stable-codename;', '&debian-testing-codename;', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
      </varlistentry>
+     <varlistentry><term><option>Snapshot</option></term>
+         <listitem><para>Snapshot to use for all repositories configured with <literal>Snapshot: yes</literal>. See also &sources-list;, the <option>--snapshot</option> option that sets this value, and <option>Acquire::Snapshots::URI</option> below.</para></listitem>
+     </varlistentry>
+
 
      <varlistentry><term><option>Ignore-Hold</option></term>
      <listitem><para>Ignore held packages; this global option causes the problem resolver to
@@ -307,6 +350,61 @@ APT::Compressor::rev {
      <listitem><para>The CDROM subsection controls the &apt-cdrom; tool; please see its
      documentation for more information about the options here.</para></listitem>
      </varlistentry>
+
+    <varlistentry>
+        <term>
+            <option>NeverAutoRemove</option>
+        </term>
+        <listitem>
+            <para>
+                Never autoremove packages that match the regular expression(s).
+            </para>
+        </listitem>
+    </varlistentry>
+
+    <varlistentry>
+        <term>
+            <option>Protect-Kernels</option>
+        </term>
+        <listitem>
+            <para>
+                This option tells apt autoremove that kernels are protected and
+                defaults to true. In case kernels are not protected they are
+                treated as any other package.
+            </para>
+        </listitem>
+    </varlistentry>
+
+    <varlistentry>
+        <term>
+            <option>VersionedKernelPackages</option>
+        </term>
+        <listitem>
+            <para>
+                Define the regular expression(s) for versioned kernel packages.
+                Based on these expressions a rule set is injected into apt
+                similar to APT::NeverAutoRemove regular expressions.
+            </para>
+        </listitem>
+    </varlistentry>
+
+    <varlistentry>
+        <term>
+            <option>NeverAutoRemove::KernelCount</option>
+        </term>
+        <listitem>
+            <para>
+                Keep a custom amount of kernels when autoremoving and defaults
+                to 2, meaning two kernels are kept. Apt will always keep the
+                running kernel and the latest one. If the latest kernel is the
+                same as the running kernel, the second latest kernel is kept.
+                Because of this, any value lower than 2 will be ignored. If you
+                want only the latest kernel, you should set
+                APT::Protect-Kernels to false.
+            </para>
+        </listitem>
+    </varlistentry>
+
    </variablelist>
  </refsect1>
 
@@ -437,47 +535,6 @@ APT::Compressor::rev {
      manpages respectively.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term><option>ftp</option></term>
-     <listitem><para>
-     <literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.
-     It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>.
-     Per host proxies can also be specified by using the form
-     <literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword <literal>DIRECT</literal> 
-	 meaning to use no proxies. If no one of the above settings is specified,
-	 <envar>ftp_proxy</envar> environment variable
-	 will be used. To use an FTP
-     proxy you will have to set the <literal>ftp::ProxyLogin</literal> script in the 
-     configuration file. This entry specifies the commands to send to tell 
-     the proxy server what to connect to. Please see 
-     &configureindex; for an example of 
-     how to do this. The substitution variables representing the corresponding
-     URI component are <literal>$(PROXY_USER)</literal>,
-     <literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>,
-     <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> and
-     <literal>$(SITE_PORT)</literal>.</para>
-
-     <para>The option <literal>timeout</literal> sets the timeout timer used by the method;
-     this value applies to the connection as well as the data timeout.</para>
-
-     <para>Several settings are provided to control passive mode. Generally it is 
-     safe to leave passive mode on; it works in nearly every environment. 
-     However, some situations require that passive mode be disabled and port 
-     mode FTP used instead. This can be done globally or for connections that 
-     go through a proxy or for a specific host (see the sample config file 
-     for examples).</para>
-
-     <para>It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</envar>
-     environment variable to an HTTP URL - see the discussion of the http method
-     above for syntax. You cannot set this in the configuration file and it is
-     not recommended to use FTP over HTTP due to its low efficiency.</para>
-
-     <para>The setting <literal>ForceExtended</literal> controls the use of RFC2428 
-     <literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is false, which means
-     these commands are only used if the control connection is IPv6. Setting this
-     to true forces their use even on IPv4 connections. Note that most FTP servers
-     do not support RFC2428.</para></listitem>
-     </varlistentry>
-
      <varlistentry><term><option>cdrom</option></term>
      <listitem><para>
      For URIs using the <literal>cdrom</literal> method, the only configurable
@@ -647,6 +704,26 @@ APT::Compressor::rev {
 	  this source can't be used to acquire changelog files from. Another source will be tried
 	  if available in this case.
 	</para></listitem>
+</varlistentry>
+
+     <varlistentry><term><option>Snapshots::URI</option> scope</term>
+	<listitem><para>
+	  Like changelogs, snapshots can only be acquired if an URI is known from where to get them.
+	  Preferable the Release file indicates this in a 'Snapshots' field. If this isn't
+	  available the Label/Origin field of the Release file is used to check if a
+	  <literal>Acquire::Snapshots::URI::Label::<replaceable>LABEL</replaceable></literal> or
+	  <literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></literal> option
+	  exists and if so this value is taken. The value in the Release file can be overridden
+	  with <literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</replaceable></literal>
+	  or <literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>.
+
+      The value should be a normal URI to a directory, except that the snapshot ID replaced with the
+      placeholder <literal>@SNAPSHOTID@</literal>.
+
+	  The special value '<literal>no</literal>' is available for this option indicating that
+	  this source cannot be used to acquire snapshots from. Another source will be tried
+	  if available in this case.
+	</para></listitem>
     </varlistentry>
 
    </variablelist>
@@ -938,17 +1015,6 @@ APT::Compressor::rev {
        </listitem>
      </varlistentry>
 
-     <varlistentry>
-       <term><option>Debug::Acquire::ftp</option></term>
-
-       <listitem>
-	 <para>
-	   Print information related to downloading packages using
-	   FTP.
-	 </para>
-       </listitem>
-     </varlistentry>
-
      <varlistentry>
        <term><option>Debug::Acquire::http</option></term>
 
@@ -993,16 +1059,6 @@ APT::Compressor::rev {
        </listitem>
      </varlistentry>
 
-     <varlistentry>
-       <term><option>Debug::BuildDeps</option></term>
-       <listitem>
-	 <para>
-	   Describes the process of resolving build-dependencies in
-	   &apt-get;.
-	 </para>
-       </listitem>
-     </varlistentry>
-
      <varlistentry>
        <term><option>Debug::Hashes</option></term>
        <listitem>
diff --git a/doc/apt.ent b/doc/apt.ent
index db4cb6f..9034d2e 100644
--- a/doc/apt.ent
+++ b/doc/apt.ent
@@ -14,7 +14,7 @@
 <!-- Boiler plate Bug reporting section -->
 <!ENTITY manbugs "
  <refsect1><title>Bugs</title>
-   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.
+   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.
    If you wish to report a bug in APT, please see
    <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the
    &reportbug; command.
@@ -48,6 +48,13 @@
      </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>--audit</option></term>
+      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.
+     </para>
+     </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-c</option></term>
       <term><option>--config-file</option></term>
@@ -70,6 +77,16 @@
      </para>
      </listitem>
      </varlistentry>
+
+     <varlistentry>
+      <term><option>--no-color</option></term>
+      <term><option>--color</option></term>
+<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and
+can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,
+or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.
+     </para>
+     </listitem>
+     </varlistentry>
 ">
 
 <!-- Should be used within the option section of the text to
@@ -241,7 +258,3 @@
 
 <!-- TRANSLATOR: used as parameter for apt-ftparchive  e.g. apt-ftparchive generate section -->
 <!ENTITY synopsis-section "section">
-
-<!-- TRANSLATOR: used as in apt-key export keyid  e.g. apt-key export 473041FA -->
-<!ENTITY synopsis-keyid "keyid">
-
diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml
index 1b38ae1..d1047e1 100644
--- a/doc/apt_preferences.5.xml
+++ b/doc/apt_preferences.5.xml
@@ -13,7 +13,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2022-01-03T00:00:00Z</date>
+   <date>2024-08-22T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
@@ -213,6 +213,14 @@ Package: perl
 Pin: version &good-perl;*
 Pin-Priority: 1001
 </programlisting>
+
+<simpara>Since 2.9.9, you can also pin by a source version:</simpara>
+<programlisting>
+Package: perl
+Pin: source-version &good-perl;*
+Pin-Priority: 1001
+</programlisting>
+
 </listitem>
 
 <listitem><simpara>The general form assigns a priority to all of the package versions in a
diff --git a/doc/design.dbk b/doc/design.dbk
index fabc915..2ed3800 100644
--- a/doc/design.dbk
+++ b/doc/design.dbk
@@ -142,9 +142,9 @@ still satisfied.
 <para>
 Handle source lists for updates from multiple sources. APT should also be able
 to handle diverse methods of acquiring new packages; local filesystem,
-mountable CD-ROM drives, FTP accessible repositories are some of the methods
+mountable CD-ROM drives, HTTP accessible repositories are some of the methods
 that come to mind. Also, the source lists can be separated into categories,
-such as main, contrib, non-us, non-local, non-free, my-very-own, etc. APT
+such as main, contrib, non-local, non-free, my-very-own, etc. APT
 should be set up to retrieve the Packages files from these multiple source
 lists, as well as retrieving the packages themselves.
 </para>
@@ -203,7 +203,7 @@ midst of installation, which may cause havoc on the machine)
 <para>
 This process handles setting of user or site options, and configuration of all
 aspects of APT. It allows the user to set the location and order of package
-sources, allowing them to set up source list details, like ftp site locations,
+sources, allowing them to set up source list details, like http site locations,
 passwords, etc. Display options may also be set.
 </para>
 </listitem>
@@ -216,7 +216,7 @@ Build a list of available packages, using source lists or a base location and
 trawling for Packages files (needs to be aware of architecture). This may
 involve finding and retrieving Packages files, storing them locally for
 efficiency, and parsing the data for later use. This would entail contacting
-various underlying access modules (ftp, cdrom mounts, etc) Use a backing store
+various underlying access modules (http, cdrom mounts, etc) Use a backing store
 for speed. This may also require downloading the actual package files locally
 for speed.
 </para>
@@ -308,7 +308,7 @@ set here?
 Distinct versions of the same package are recorded separately, but if multiple
 Packages files contain the same version of a package, then only the first one
 is recorded. For this reason, the least expensive update source should be
-listed first (local file system is better than a remote ftp site)
+listed first (local file system is better than a remote http site)
 </para>
 <para>
 This module should interact with the user interface module to set and change
@@ -318,7 +318,7 @@ information in an on disk data file, to be read on future invocations.
 <orderedlist numeration="arabic">
 <listitem>
 <para>
-FTP methods
+HTTP methods
 </para>
 </listitem>
 <listitem>
@@ -394,9 +394,9 @@ module to interact with dpkg
 
 <chapter id="ch5"><title>Data flow and conversions analysis.</title>
 <screen>
-                                                          ____________
-                                                       __\|ftp modules|
-                                                      /  /|___________|
+                                                          _____________
+                                                       __\|http modules|
+                                                      /  /|____________|
                                     _ ____________   /     ________________
                                     |    update   | /     |mount/local file|
         |==========================&gt;|   module    |/_____\|  traversals    |
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
index 8d9ea06..be638d0 100644
--- a/doc/examples/CMakeLists.txt
+++ b/doc/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
 install(FILES apt.conf configure-index preferences
         DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
 install(FILES apt-ftparchive.conf ftp-archive.conf
-        DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples)
+        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/apt-utils/examples)
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index beafbbc..8476d73 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -47,6 +47,7 @@ quiet "<INT>" {
 // Options for APT in general
 APT
 {
+  Audit "<BOOL>"; // display audit messages
   Architecture "<STRING>"; // debian architecture like amd64, i386, powerpc, armhf, mips, …
   Architectures "<LIST>"; // a list of (foreign) debian architectures, defaults to: dpkg --print-foreign-architectures
   BarbarianArchitectures "<LIST>"; // a list of architectures considered too foreign to satisfy M-A:foreign
@@ -55,10 +56,14 @@ APT
   Build-Profiles "<STRING_OR_LIST>";
 
   NeverAutoRemove "<LIST>";  // list of package name regexes
+  NeverAutoRemove::KernelCount "<INT>"; // Keep the configured amount of kernels
   LastInstalledKernel "<STRING>"; // last installed kernel version
   VersionedKernelPackages "<LIST>"; // regular expressions to be protected from autoremoval (kernel uname will be appended)
   Protect-Kernels "<BOOL>"; // whether to protect installed kernels against autoremoval (default: true)
 
+  // Currently active snapshot
+  Snapshot "<STRING>";
+
   // Options for apt-get
   Get
   {
@@ -100,6 +105,7 @@ APT
 
      Show-Upgraded "<BOOL>";
      Show-Versions "<BOOL>";
+     List-Columns "<BOOL>";
      Upgrade "<BOOL>";
      Only-Upgrade "<BOOL>";
      Upgrade-Allow-New "<BOOL>";
@@ -126,7 +132,7 @@ APT
         SourceListWarnings "<BOOL>"
         {
            APTAuth "<BOOL>";
-           NonFreeFirmware "<BOOL>";
+           SignedBy "<BOOL>";
         };
      };
   };
@@ -170,25 +176,23 @@ APT
      DropTranslation "<BOOL>";
   };
 
-  Update
+  Update "<BOOL>"
   {
      Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };
      Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };
      Error-Mode "<STRING>";
   };
 
-  /* define a new supported compressor on the fly
-  Compressor::rev {
-     Name "rev";
-     Extension ".reversed";
-     Binary "rev";
-     CompressArg {};
-     UncompressArg {};
-     Cost "10";
-  };
-  */
   Compressor "<LIST>";
-  Compressor::** "<UNDEFINED>";
+  // define a new compressor on the fly, like the super-compressor: /usr/bin/rev
+  Compressor::* {
+     Name "<STRING>"; // rev
+     Extension "<STRING>"; // .reversed
+     Binary "<STRING>"; // rev
+     CompressArg "<LIST>"; // {}
+     UncompressArg "<LIST>"; // {}
+     Cost "<INT>"; // 10
+  };
 
   Authentication
   {
@@ -242,6 +246,7 @@ Acquire
       Delay "<BOOL>" {   // whether to backoff between retries using the delay: method
         Maximum "<INT>"; // maximum number of seconds to delay an item per retry
       };
+      HandleRetryAfter "<BOOL>"; // whether to respect the wait time of the Retry-After header
   };
   Source-Symlinks "<BOOL>";
   ForceHash "<STRING>"; // hashmethod used for expected hash: sha256, sha1 or md5sum
@@ -328,31 +333,6 @@ Acquire
 	User-Agent "Debian APT-CURL/1.0";
   };
 
-  ftp
-  {
-    Proxy "ftp://127.0.0.1/";
-    Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
-
-    /* Required script to perform proxy login. This example should work
-       for tisfwtk */
-    ProxyLogin
-    {
-       "USER $(PROXY_USER)";
-       "PASS $(PROXY_PASS)";
-       "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
-       "PASS $(SITE_PASS)";
-    };
-    
-    Timeout "30";
-    ConnectionAttemptDelayMsec "250";
-    
-    /* Passive mode control, proxy, non-proxy and per-host. Pasv mode
-       is preferred if possible */
-    Passive "true";
-    Proxy::Passive "true";
-    Passive::http.us.debian.org "true"; // Specific per-host setting
-  };
-  
   cdrom
   {
     AutoDetect "<BOOL>"; // do auto detection of the cdrom mountpoint
@@ -398,6 +378,15 @@ Acquire
     Override::Origin::* "<STRING>";
     Override::Label::* "<STRING>";
   };
+  Snapshots::URI
+  {
+    Host::* "<STRING>";
+    // Origin::Debian "https://snapshot.debian.org/snapshot/@SNAPSHOTID@/";
+    Origin::* "<STRING>";
+    Label::* "<STRING>";
+    Override::Origin::* "<STRING>";
+    Override::Label::* "<STRING>";
+  };
   Changelogs::AlwaysOnline "<BOOL>"; // even if the changelog file exists get it online (as the file is incomplete)
   Changelogs::AlwaysOnline::Origin::* "<BOOL>";
 };
@@ -472,6 +461,9 @@ Dir "<DIR>"
   {
      MountPath "/media/apt"; // Media AutoDetect mount path
   };
+
+  Boot "<DIR>";
+  Usr "<DIR>";
 };
 
 // Things that effect the APT dselect method
@@ -527,7 +519,7 @@ DPkg
 
    // controls if apt will apport on the first dpkg error or if it 
    // tries to install as many packages as possible
-   StopOnError "true";
+   StopOnError "<BOOL>";
 
    Progress-Fancy {
       progress-fg "<STRING>";
@@ -561,9 +553,11 @@ Debug
   BuildDeps "<BOOL>";
   pkgInitialize "<BOOL>";   // This one will dump the configuration space
   NoLocking "<BOOL>";
-  Acquire::Ftp "<BOOL>";    // Show ftp command traffic
   Acquire::Http "<BOOL>";   // Show http command traffic
   Acquire::Https "<BOOL>";   // Show https debug
+  Acquire::tor "<BOOL>";
+  Acquire::tor+http "<BOOL>";
+  Acquire::tor+https "<BOOL>";
   Acquire::gpgv "<BOOL>";   // Show the gpgv traffic
   Acquire::cdrom "<BOOL>";   // Show cdrom debug output
   Acquire::Transaction "<BOOL>";
@@ -584,6 +578,7 @@ Debug
   SetupAPTPartialDirectory::AssumeGood "<BOOL>";
   Locking "<BOOL>";
   Phasing "<BOOL>";
+  APT::Solver "<INT">;
 };
 
 pkgCacheGen
@@ -674,6 +669,7 @@ acquire::*::by-hash "<STRING>";
 
 // Unsorted options: Some of those are used only internally
 
+pager "<BOOL>"; // true if a pager is to be used
 help "<BOOL>"; // true if the help message was requested via e.g. --help
 version "<BOOL>"; // true if the version number was requested via e.g. --version
 Binary "<STRING>"; // name of the program run like apt-get, apt-cache, …
@@ -701,13 +697,22 @@ apt::hashes::*::untrusted "<BOOL>";
 apt::list-cleanup "<BOOL>";
 apt::authentication::trustcdrom "<BOOL>";
 apt::solver::strict-pinning "<BOOL>";
+apt::solver::enqueue-common-dependencies "<BOOL>";
+apt::solver::defer-version-selection "<BOOL>";
+apt::solver::upgrade "<BOOL>";
+apt::solver::remove "<BOOL>";
+apt::solver::removemanual "<BOOL>";
+apt::solver::install "<BOOL>";
+apt::solver::timeout "<INT>";
 apt::keep-downloaded-packages "<BOOL>";
 apt::solver "<STRING>";
 apt::planner "<STRING>";
 apt::system "<STRING>";
 apt::acquire::translation "<STRING>"; // deprecated in favor of Acquire::Languages
 apt::color::highlight "<STRING>";
+apt::color::bold "<STRING>";
 apt::color::neutral "<STRING>";
+apt::output-version "<INT>";
 
 dpkgpm::reporting-steps "<INT>";
 
@@ -748,6 +753,9 @@ apt::key::gpgcommand "<STRING>";
 apt::key::masterkeyring "<STRING>";
 apt::key::archivekeyringuri "<STRING>";
 apt::key::net-update-enabled "<STRING>";
+apt::key::assert-pubkey-algo "<STRING>";
+apt::key::assert-pubkey-algo::next "<STRING>";
+apt::key::assert-pubkey-algo::future "<STRING>";
 
 apt::ftparchive::release::patterns "<LIST>";
 apt::ftparchive::release::validtime "<INT>";
@@ -788,17 +796,44 @@ acquire::max-pipeline-depth "<INT>";
 acquire::progress::diffpercent "<BOOL>";
 acquire::gzipindexes "<BOOL>";
 acquire::indextargets::randomized "<BOOL>";
-acquire::indextargets::deb::** "<UNDEFINED>";
-acquire::indextargets::deb-src::** "<UNDEFINED>";
+acquire::indextargets::* "<LIST>" {
+	* {
+		MetaKey "<STRING>";
+		ShortDescription "<STRING>";
+		Description "<STRING>";
+		flatMetaKey "<STRING>";
+		flatDescription "<STRING>";
+		Identifier "<STRING>";
+		DefaultEnabled "<BOOL>";
+		Optional "<BOOL>";
+		KeepCompressed "<BOOL>";
+		PDiffs "<BOOL>";
+		By-Hash "<STRING>";
+		Fallback-Of "<STRING>";
+		CompressionTypes "<STRING>";
+		KeepCompressedAs "<STRING>";
+	};
+};
 acquire::progress::ignore::showerrortext "<BOOL>";
 acquire::*::dl-limit "<INT>"; // catches file: and co which do not have these
+acquire::file::dl-limit "<INVALID>";
+acquire::copy::dl-limit "<INVALID>";
+acquire::gpgv::dl-limit "<INVALID>";
+acquire::store::dl-limit "<INVALID>";
+acquire::mirror::dl-limit "<INVALID>";
 methods::mirror::problemreporting "<STRING>";
-acquire::http::proxyautodetect "<STRING>";
-acquire::http::proxy-auto-detect "<STRING>";
-acquire::http::proxy::* "<STRING>";
-acquire::https::proxyautodetect "<STRING>";
-acquire::https::proxy-auto-detect "<STRING>";
-acquire::https::proxy::* "<STRING>";
+acquire::*::proxyautodetect "<STRING>";
+acquire::file::proxyautodetect "<INVALID>";
+acquire::copy::proxyautodetect "<INVALID>";
+acquire::store::proxyautodetect "<INVALID>";
+acquire::*::proxy-auto-detect "<STRING>";
+acquire::file::proxy-auto-detect "<INVALID>";
+acquire::copy::proxy-auto-detect "<INVALID>";
+acquire::store::proxy-auto-detect "<INVALID>";
+acquire::file::proxy::* "<INVALID>";
+acquire::copy::proxy::* "<INVALID>";
+acquire::store::proxy::* "<INVALID>";
+acquire::*::proxy::* "<STRING>";
 
 // Options used by apt-ftparchive
 dir::archivedir "<DIR>";
@@ -865,7 +900,13 @@ Rred::f "<BOOL>";
 Rred::Compress "<STRING>";
 
 APT::Internal::OpProgress::Absolute "<BOOL>";
+APT::Internal::OpProgress::EraseLines "<BOOL>";
 APT::Color "<BOOL>";
+APT::Color::Show::Field "<STRING>";
+APT::Color::Show::Package "<STRING>";
+APT::Color::* "<STRING>";
 
 update-manager::always-include-phased-updates "<BOOL>";
 update-manager::never-include-phased-updates "<BOOL>";
+
+apt::history::comment "<STRING>";
diff --git a/doc/examples/ftp-archive.conf b/doc/examples/ftp-archive.conf
index 31ffb24..0908388 100644
--- a/doc/examples/ftp-archive.conf
+++ b/doc/examples/ftp-archive.conf
@@ -3,9 +3,9 @@
    
 Dir 
 {
-   ArchiveDir "/srv/ftp.debian.org/ftp/";
-   OverrideDir "/srv/ftp.debian.org/scripts/override/";
-   CacheDir "/srv/ftp.debian.org/scripts/cache/";
+   ArchiveDir "/srv/deb.debian.org/ftp/";
+   OverrideDir "/srv/deb.debian.org/scripts/override/";
+   CacheDir "/srv/deb.debian.org/scripts/cache/";
 };
 
 Default
@@ -19,7 +19,7 @@ Default
 
 TreeDefault
 {
-   Contents::Header "/srv/ftp.debian.org/scripts/masterfiles/Contents.top";
+   Contents::Header "/srv/deb.debian.org/scripts/masterfiles/Contents.top";
    BinCacheDB "packages-$(ARCH).db";
    
    // These are all defaults and are provided for completeness
diff --git a/doc/files.dbk b/doc/files.dbk
index 95e6257..ac671fd 100644
--- a/doc/files.dbk
+++ b/doc/files.dbk
@@ -85,15 +85,12 @@ The var directory structure is as follows:
 			 cdrom
 			 copy
 			 file
-			 ftp
 			 gpgv
 			 gzip
 			 http
 			 https
 			 lzma
 			 rred
-			 rsh
-			 ssh
 </screen>
 <para>
 As is specified in the FHS 2.1 /var/lib/apt is used for application data that
diff --git a/doc/guide.dbk b/doc/guide.dbk
index d2f650a..bb314fd 100644
--- a/doc/guide.dbk
+++ b/doc/guide.dbk
@@ -126,7 +126,7 @@ update</literal>. For instance,
 </para>
 <screen>
 # apt-get update
-Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages
+Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages
 Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages
 Reading Package Lists... Done
 Building Dependency Tree... Done
@@ -223,8 +223,7 @@ use packages on your CD-ROM before downloading from the Internet.
 
  For example:
       file:/mnt/debian,
-      ftp://ftp.debian.org/debian,
-      http://ftp.de.debian.org/debian,
+      http://deb.debian.org/debian,
 
 
  URL [http://llug.sep.bnl.gov/debian]:
@@ -237,7 +236,7 @@ to get.
 <screen>
  Please give the distribution tag to get or a path to the
  package file ending in a /. The distribution
- tags are typically something like: stable unstable testing non-US
+ tags are typically something like: stable unstable testing
 
  Distribution [stable]:
 </screen>
@@ -245,10 +244,7 @@ to get.
 The distribution refers to the Debian version in the archive,
 <emphasis>stable</emphasis> refers to the latest released version
 and <emphasis>unstable</emphasis> refers to the developmental
-version. <emphasis>non-US</emphasis> is only available on some mirrors
-and refers to packages that contain encryption technology or other
-things that cannot be exported from the United States. Importing these
-packages into the US is legal however.
+version.
 </para>
 <screen>
  Please give the components to get
@@ -496,10 +492,10 @@ status messages.
 </para>
 <screen>
 # apt-get update
-Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages
+Get:1 http://ftp.de.debian.org/debian/ stable/main Packages
 Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages
 Hit http://llug.sep.bnl.gov/debian/ testing/main Packages
-Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages
+Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages
 Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages
 11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s
 </screen>
diff --git a/doc/json-hooks-protocol.md b/doc/json-hooks-protocol.md
index 2d8410c..4dcbced 100644
--- a/doc/json-hooks-protocol.md
+++ b/doc/json-hooks-protocol.md
@@ -38,13 +38,39 @@ started multiple times. Hooks should thus be stateless.
 
 APT performs a call to the method `org.debian.apt.hooks.hello` with
 the named parameter `versions` containing a list of supported protocol
-versions. The hook picks the version it supports. The current version
-is `"0.1"`, and support for that version is mandatory.
+versions, and an optional `options` array. The hook picks the version it supports. The current version
+is `"0.2"`, and support for "0.1" or "0.2" is mandatory.
+
+The `options` array is an optional list of all options currently set in the apt
+configuration object. Note that not all options are present, and the default can vary,
+you cannot rely on the default being `true` or `false` for example for a boolean option
+-- it depends on the context.
+
+APT options are internally stored as a tree leading to the awkward situation that a list
+item could have a name, e.g. `APT::Architectures "unused" { first "amd64"; "i386"; };`. This will
+be represented as
+
+```json
+[
+    {"name": "APT::Architectures", "value": "unused"},
+    {"name": "APT::Architectures::first", "amd64"},
+    {"name": "APT::Architectures::", ""}
+]
+```
+
+To interpret an option name as a list, with trailing `::`, for example, `APT::Architectures`, you
+will need to write a function similar to:
+
+```python
+def get_list(options, key):
+    """key includes trailing ::"""
+    return [value for name, value in options if name.startswith(key) and "::" not in name[len(key):]]
+```
 
 *Example*:
 
 1. APT:
-   ```{"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1"]}}```
+   ```{"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1", "0.2"], "options": [{"name": "APT::Architecture", "value": "amd64"}]}}```
 
 
 2. Hook:
diff --git a/doc/method.dbk b/doc/method.dbk
index ea49c5b..2ec1f3e 100644
--- a/doc/method.dbk
+++ b/doc/method.dbk
@@ -158,7 +158,7 @@ Some examples:
 </para>
 <screen>
 file:/var/mirrors/debian/
-ftp://ftp.debian.org/debian
+ftp://ftp.example.org/debian
 ftp://jgg:MooCow@localhost:21/debian
 nfs://bigred/var/mirrors/debian
 rsync://debian.midco.net/debian
diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot
index 0bcfb0a..7ba7642 100644
--- a/doc/po/apt-doc.pot
+++ b/doc/po/apt-doc.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: apt-doc 2.6.1\n"
+"Project-Id-Version: apt-doc 2.9.30\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-05-25 14:17+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -46,7 +46,8 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug "
+"page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -97,6 +98,19 @@ msgid ""
 "     </varlistentry>\n"
 msgstr ""
 
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the "
+"quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -134,6 +148,24 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported "
+"terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or "
+"<envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration "
+"option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 
@@ -493,26 +525,18 @@ msgid ""
 "generate section --> <!ENTITY synopsis-section \"section\">"
 msgstr ""
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr ""
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr ""
 
@@ -522,12 +546,11 @@ msgid "command-line interface"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr ""
 
@@ -574,6 +597,13 @@ msgid ""
 "package isn't performed."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -583,7 +613,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ""
 
@@ -683,10 +713,10 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query "
 "--list</command> in that it can display a list of packages satisfying "
-"certain criteria.  It supports &glob; patterns for matching package names as "
-"well as options to list installed (<option>--installed</option>), "
-"upgradeable (<option>--upgradeable</option>) or all available "
-"(<option>--all-versions</option>) versions."
+"certain criteria.  It supports &glob; patterns for matching package names, "
+"&apt-patterns;, as well as options to list installed "
+"(<option>--installed</option>), upgradeable (<option>--upgradeable</option>)  "
+"or all available (<option>--all-versions</option>) versions."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -701,6 +731,16 @@ msgid ""
 "your preferred text editor while also providing basic sanity checks."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-cache;)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-get;)"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -727,19 +767,20 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -1075,6 +1116,21 @@ msgid ""
 "being erased if it is set to off."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under "
+"<filename>&statedir;/lists</filename> except Release, Release.gpg, and "
+"InRelease.  It can be used for example, when finalizing images distributed "
+"to users.  The release files are kept for security reasons, to prevent "
+"various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1246,6 +1302,21 @@ msgid ""
 "<literal>APT::Get::Show-Versions</literal>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1399,6 +1470,16 @@ msgid ""
 "<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1558,8 +1639,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, "
+"<option>safe-upgrade</option>, <option>full-upgrade</option>.  This can be "
+"useful to ensure a command always installs the latest versions, or, in "
+"combination with the <option>--snapshot</option> option to make sure the "
+"snapshot is present when install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr ""
@@ -1567,9 +1669,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, "
+"&apt-patterns;, &apt-config;, &apt-secure;, The APT User's guide in "
+"&guidesdir;, &apt-preferences;, the APT Howto."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -1835,11 +1937,11 @@ msgstr ""
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
 "generates output suitable for use by dotty from the <ulink "
-"url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink> "
-"package. The result will be a set of nodes and edges representing the "
-"relationships between the packages. By default the given packages will trace "
-"out all dependent packages; this can produce a very large graph.  To limit "
-"the output to only the packages listed on the command line, set the "
+"url=\"https://graphviz.org/\">GraphViz</ulink> package. The result will be a "
+"set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph.  To limit the output to only "
+"the packages listed on the command line, set the "
 "<literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 
@@ -1861,7 +1963,7 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG "
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1.html\">VCG "
 "tool</ulink>."
 msgstr ""
 
@@ -2035,7 +2137,7 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -2045,251 +2147,6 @@ msgid ""
 "on error."
 msgstr ""
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-msgid "Deprecated APT key management utility"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of "
-"keys. Note that there are <emphasis>no</emphasis> checks performed, so it is "
-"easy to completely undermine the &apt-secure; infrastructure if used without "
-"care."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the "
-"<filename>/etc/apt/trusted.gpg.d/</filename> directory directly as this "
-"avoids a dependency on <package>gnupg</package> and it is easier to manage "
-"keys by simply adding and removing files for maintainers and users alike."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on "
-"<command>update</command> instead, but Ubuntu's APT does."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though "
-"<filename>trusted.gpg</filename> is the primary keyring which means that "
-"e.g. new keys are added to this one."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Deprecation"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add "
-"-</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee "
-"/etc/apt/trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, "
-"<filename>/etc/apt/keyrings</filename> is provided as the recommended "
-"location for keys not managed by packages.  When using a deb822-style "
-"sources.list, and with apt version >= 2.4, the <literal>Signed-By</literal> "
-"option can also be used to include the full ASCII armored keyring directly "
-"in the <literal>sources.list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr ""
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -2366,6 +2223,12 @@ msgid ""
 "installed packages instead."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -2419,6 +2282,11 @@ msgid ""
 "called dpkg selections can be found in &dpkg;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -2453,6 +2321,56 @@ msgid ""
 "<literal>APT</literal> to refer to them all for simplicity only."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: "
+"/etc/apt/keyrings/example-archive-keyring.asc</literal> option in a "
+"<literal>.sources</literal> file or using <literal>deb "
+"[signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ...</literal> in "
+"the legacy <literal>.list</literal> format. This may be useful for APT "
+"versions prior to 2.4, which do not support embedded keys. ASCII-armored "
+"keys must use an extension of <literal>.asc</literal>, and unarmored keys an "
+"extension of <literal>.gpg</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] "
+"--export</command> command.  Earlier solutions involving <command>--keyring "
+"file --import</command> no longer work with recent GnuPG versions as they "
+"use a new internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The "
+"<command>extrepo</command> package can be used to manage several external "
+"repositories with ease."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -2612,40 +2530,6 @@ msgid ""
 "distribution shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get "
-"update</command> so that apt can download and verify the "
-"<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
-"from the archives you have configured."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Repository Configuration"
@@ -2706,15 +2590,15 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, "
+"&debsig-verify;, &gpg;"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/ch07\">Debian "
 "Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
 "available in the harden-doc package) and the <ulink "
 "url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
@@ -3178,6 +3062,55 @@ msgid ""
 "--add-architecture</command>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting "
+"<option>APT::Color</option> to <option>yes</option> or <option>no</option>, "
+"by utilizing <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> "
+"environment variables, or using the <option>--color</option>, "
+"<option>--no-color</option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -3223,6 +3156,15 @@ msgid ""
 "'&debian-testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: "
+"yes</literal>. See also &sources-list;, the <option>--snapshot</option> "
+"option that sets this value, and <option>Acquire::Snapshots::URI</option> "
+"below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -3342,6 +3284,38 @@ msgid ""
 "documentation for more information about the options here."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set "
+"APT::Protect-Kernels to false."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -3492,64 +3466,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of "
-"<literal>ftp://[[user][:pass]@]host[:port]/</literal>.  Per host proxies can "
-"also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the "
-"<literal>ftp::ProxyLogin</literal> script in the configuration file. This "
-"entry specifies the commands to send to tell the proxy server what to "
-"connect to. Please see &configureindex; for an example of how to do "
-"this. The substitution variables representing the corresponding URI "
-"component are <literal>$(PROXY_USER)</literal>, "
-"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, "
-"<literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> and "
-"<literal>$(SITE_PORT)</literal>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the "
-"<envar>ftp_proxy</envar> environment variable to an HTTP URL - see the "
-"discussion of the http method above for syntax. You cannot set this in the "
-"configuration file and it is not recommended to use FTP over HTTP due to its "
-"low efficiency."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -3806,6 +3722,28 @@ msgid ""
 "tried if available in this case."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a "
+"<literal>Acquire::Snapshots::URI::Label::<replaceable>LABEL</replaceable></literal> "
+"or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></literal> "
+"option exists and if so this value is taken. The value in the Release file "
+"can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</replaceable></literal> "
+"or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>.  "
+"The value should be a normal URI to a directory, except that the snapshot ID "
+"replaced with the placeholder <literal>@SNAPSHOTID@</literal>.  The special "
+"value '<literal>no</literal>' is available for this option indicating that "
+"this source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "Binary specific configuration"
@@ -4187,11 +4125,6 @@ msgstr ""
 msgid "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -4216,11 +4149,6 @@ msgid ""
 "stored on CD-ROMs."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4703,6 +4631,20 @@ msgid ""
 "Pin-Priority: 1001\n"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -5548,6 +5490,17 @@ msgid ""
 "case it will be silently ignored."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is "
+"<filename>/etc/apt/sources.list.d/<replaceable>vendor</replaceable>.sources</filename>, "
+"where <replaceable>vendor</replaceable> is the result of "
+"<command>dpkg-vendor --query Vendor | tr A-Z a-z</command>, in deb822-style "
+"format.  For example, Ubuntu uses "
+"<filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -5584,6 +5537,13 @@ msgid ""
 "multi-architecture support."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before "
+"2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -5749,10 +5709,10 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"As an example, the sources for your distribution could look like this in "
-"one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
-"like this in deb822 style format: <placeholder type=\"literallayout\" "
-"id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -5907,18 +5867,18 @@ msgid ""
 "and <filename>/etc/apt/keyrings</filename> for keyrings managed by the "
 "system operator.  If no keyring files are specified the default is the "
 "<filename>trusted.gpg</filename> keyring and all keyrings in the "
-"<filename>trusted.gpg.d/</filename> directory (see <command>apt-key "
-"fingerprint</command>). If no fingerprint is specified all keys in the "
-"keyrings are selected. A fingerprint will accept also all signatures by a "
-"subkey of this key, if this isn't desired an exclamation mark "
-"(<literal>!</literal>) can be appended to the fingerprint to disable this "
-"behaviour.  The option defaults to the value of the option with the same "
-"name if set in the previously acquired <filename>Release</filename> file of "
-"this repository (only fingerprints can be specified there through).  "
-"Otherwise all keys in the trusted keyrings are considered valid signers for "
-"this repository.  The option may also be set directly to an embedded GPG "
-"public key block. Special care is needed to encode the empty line with "
-"leading spaces and \".\": <placeholder type=\"literallayout\" id=\"0\"/>"
+"<filename>trusted.gpg.d/</filename> directory.  If no fingerprint is "
+"specified all keys in the keyrings are selected. A fingerprint will accept "
+"also all signatures by a subkey of this key, if this isn't desired an "
+"exclamation mark (<literal>!</literal>) can be appended to the fingerprint "
+"to disable this behaviour.  The option defaults to the value of the option "
+"with the same name if set in the previously acquired "
+"<filename>Release</filename> file of this repository (only fingerprints can "
+"be specified there through).  Otherwise all keys in the trusted keyrings are "
+"considered valid signers for this repository.  The option may also be set "
+"directly to an embedded GPG public key block. Special care is needed to "
+"encode the empty line with leading spaces and \".\": <placeholder "
+"type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -5987,6 +5947,36 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the "
+"<option>--snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as "
+"<literal>20220102T030405Z</literal> which is the January 2nd, 2022 at "
+"03:04:05 UTC, servers may however support additional types of IDs, and APT "
+"does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -6084,27 +6074,6 @@ msgid ""
 "source list."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -6114,15 +6083,6 @@ msgid ""
 "APT."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -6265,14 +6225,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -6280,7 +6240,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
@@ -6288,16 +6248,16 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -6305,7 +6265,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
@@ -8307,6 +8267,16 @@ msgstr ""
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -8484,6 +8454,16 @@ msgstr ""
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -8526,6 +8506,16 @@ msgstr ""
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -8579,7 +8569,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
+"Selects versions "
+"depending/pre-depending/suggesting/recommending/conflicting/etc on/with/ "
 "packages matching PATTERN."
 msgstr ""
 
@@ -8900,7 +8891,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
@@ -9025,8 +9016,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -9046,7 +9036,7 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
@@ -9056,11 +9046,7 @@ msgstr ""
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental "
-"version. <emphasis>non-US</emphasis> is only available on some mirrors and "
-"refers to packages that contain encryption technology or other things that "
-"cannot be exported from the United States. Importing these packages into the "
-"US is legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 
 #. type: Content of: <book><chapter><screen>
@@ -9452,11 +9438,10 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ "
-"Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
diff --git a/doc/po/de.po b/doc/po/de.po
index 5073e25..09e6baa 100644
--- a/doc/po/de.po
+++ b/doc/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 2.0.1\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2020-04-04 08:45+0200\n"
 "Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -57,7 +57,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -68,7 +68,7 @@ msgstr ""
 "<!-- Vorformatierter Textblock Fehlerbericht-Abschnitt -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Fehler</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT-Fehlerseite</ulink>. \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT-Fehlerseite</ulink>. \n"
 "   Wenn Sie einen Fehler in APT berichten möchten, lesen Sie bitte\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> oder den\n"
 "   &reportbug;-Befehl. Verfassen Sie Fehlerberichte bitte auf Englisch.\n"
@@ -140,6 +140,33 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-v</option></term>\n"
+#| "      <term><option>--version</option></term>\n"
+#| "      <listitem><para>Show the program version.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-v</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>die Version des Programms anzeigen\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -171,7 +198,19 @@ msgstr ""
 
 #. type: Plain text
 #: apt.ent
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
 msgid ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -183,6 +222,45 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-o</option></term>\n"
+"      <term><option>--option</option></term>\n"
+"     <listitem><para>eine Konfigurationsoption setzen; hiermit wird eine\n"
+"      beliebige Konfigurationsoption gesetzt. Die Syntax lautet\n"
+"      <option>-o Foo::Bar=bar</option>. <option>-o</option> und\n"
+"      <option>--option</option> kann mehrfach benutzt werden, um verschiedene\n"
+"      Optionen zu setzen.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 "     <varlistentry>\n"
@@ -513,8 +591,9 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr "<!ENTITY synopsis-config-string \"Konfigurationszeichenkette\">"
 
 #. type: Plain text
@@ -527,8 +606,8 @@ msgstr "<!ENTITY synopsis-config-file \"Konfigurationsdatei\">"
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr "<!ENTITY synopsis-target-release \"Ziel-Release\">"
 
@@ -570,8 +649,8 @@ msgstr "<!ENTITY synopsis-regex \"regulärer_Ausdruck\">"
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr "<!ENTITY synopsis-cdrom-mount \"CD-ROM-Einhängepunkt\">"
 
 #. type: Plain text
@@ -619,26 +698,18 @@ msgid ""
 "generate section --> <!ENTITY synopsis-section \"section\">"
 msgstr "<!ENTITY synopsis-section \"Abschnitt\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr "<!ENTITY synopsis-keyid \"Schlüsselkennung\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -648,12 +719,11 @@ msgid "command-line interface"
 msgstr "Befehlszeilenschnittstelle"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Beschreibung"
 
@@ -720,6 +790,13 @@ msgstr ""
 "jedoch nie entfernt. Falls das Upgrade für ein Paket verlangt, dass ein "
 "installiertes Paket entfernt wird, wird dieses Upgrade nicht durchgeführt."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -732,7 +809,7 @@ msgstr ""
 "Upgrade des Systems als Ganzes durchzuführen."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -879,13 +956,21 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+#| "command> in that it can display a list of packages satisfying certain "
+#| "criteria.  It supports &glob; patterns for matching package names as well "
+#| "as options to list installed (<option>--installed</option>), upgradeable "
+#| "(<option>--upgradeable</option>) or all available (<option>--all-"
+#| "versions</option>) versions."
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 "<literal>list</literal> ist <command>dpkg-query --list</command> insofern "
 "ziemlich ähnlich, als dass es eine Liste von Paketen anzeigen kann, die "
@@ -910,6 +995,20 @@ msgstr ""
 "list;-Dateien in Ihrem bevorzugten Texteditor und stellt außerdem "
 "grundlegende Plausibilitätsprüfungen bereit."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-cache;)"
+msgid "(summarised in &apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-get;)"
+msgid "(summarised in &apt-get;)"
+msgstr "(&apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -946,22 +1045,24 @@ msgstr ""
 "da sie die Abwärtskompatibilität so weit wie möglich aufrechterhalten."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Siehe auch"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, die APT-"
-"Benutzeranleitung in &guidesdir;, &apt-preferences;, das APT-Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, die APT-Benutzeranleitung in &guidesdir;, &apt-preferences;, das "
+"APT-Howto."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1077,11 +1178,11 @@ msgstr ""
 "get</command> hat ein »intelligentes« Konfliktauflösungssystem und es wird "
 "versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger "
 "wichtigen, durchzuführen. Aufgrunddessen könnte der <literal>dist-upgrade</"
-"literal>-Befehl einige Pakete entfernen. Die <filename>/etc/apt/sources."
-"list</filename>-Datei enthält eine Liste von Orten, von denen gewünschte "
-"Paketdateien abgerufen werden. Siehe auch &apt-preferences; für einen "
-"Mechanismus zum Außerkraftsetzen der allgemeinen Einstellungen für einzelne "
-"Pakete."
+"literal>-Befehl einige Pakete entfernen. Die <filename>/etc/apt/"
+"sources.list</filename>-Datei enthält eine Liste von Orten, von denen "
+"gewünschte Paketdateien abgerufen werden. Siehe auch &apt-preferences; für "
+"einen Mechanismus zum Außerkraftsetzen der allgemeinen Einstellungen für "
+"einzelne Pakete."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1392,8 +1493,8 @@ msgid ""
 "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (&gt;&gt; "
 "1.0) | bar (= 2.0), moo\"</literal>"
 msgstr ""
-"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (&gt;"
-"&gt; 1.0) | bar (= 2.0), moo\"</literal>"
+"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz "
+"(&gt;&gt; 1.0) | bar (= 2.0), moo\"</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1468,6 +1569,20 @@ msgstr ""
 "Installed</literal> wird installierte Pakete vor der Löschung bewahren, wenn "
 "sie auf »off« gesetzt ist."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1572,8 +1687,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Fehler beheben; versucht ein System von vorhandenen, beschädigten "
 "Abhängigkeiten zu befreien. Diese Option kann, wenn sie mit "
@@ -1607,8 +1722,8 @@ msgstr ""
 "kann in einigen Situationen zu Fehlern führen. Wenn ein Paket zur "
 "Installation ausgewählt ist (besonders, wenn es auf der Befehlszeile "
 "angegeben wurde) und nicht heruntergeladen werden kann, wird es "
-"stillschweigend zurückgehalten. Konfigurationselement: <literal>APT::Get::"
-"Fix-Missing</literal>."
+"stillschweigend zurückgehalten. Konfigurationselement: "
+"<literal>APT::Get::Fix-Missing</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1701,11 +1816,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
-"automatisches »Nein« auf alle Anfragen. Konfigurationselement: <literal>APT::"
-"Get::Assume-No</literal>."
+"automatisches »Nein« auf alle Anfragen. Konfigurationselement: "
+"<literal>APT::Get::Assume-No</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1726,15 +1841,44 @@ msgstr ""
 "oder die installiert wurden. Konfigurationselement: <literal>APT::Get::Show-"
 "Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Re-install packages that are already installed and at the newest "
+#| "version.  Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"installiert Pakete erneut, die bereits mit der neusten Version installiert "
+"sind. Konfigurationselement: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Select the source override file to use with the <literal>sources</"
+#| "literal> command.  Configuration Item: "
+#| "<literal>APT::FTPArchive::SourceOverride</literal>."
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"wählt die Quelldatei zum außer Kraft setzen, die mit dem <literal>sources</"
+"literal>-Befehl benutzt wird. Konfigurationselement: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Diese Option steuert, wie die Architektur der durch <command>apt-get source "
 "--compile</command> gebauten Pakete und wie Cross-Bauabhängigkeiten erfüllt "
@@ -1841,8 +1985,8 @@ msgstr ""
 "Dies ist eine gefährliche Option, die APT veranlasst, ohne Nachfrage "
 "fortzufahren, wenn es Downgrades durchführt. Sie sollte nicht benutzt "
 "werden, außer in ganz besonderen Situationen. Ihre Verwendung kann "
-"möglicherweise Ihr System zerstören. Konfigurationselement: <literal>APT::"
-"Get::allow-downgrades</literal>. Eingeführt mit APT 1.1."
+"möglicherweise Ihr System zerstören. Konfigurationselement: "
+"<literal>APT::Get::allow-downgrades</literal>. Eingeführt mit APT 1.1."
 
 # Tatsächlich fragt APT »J/n«
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1907,8 +2051,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "Anstatt die Dateien herunterzuladen, werden ihre URIs ausgegeben. Jeder URI "
 "wird den Pfad, den Zieldateinamen, die Größe und den erwarteten MD5-Hash "
@@ -1917,8 +2061,8 @@ msgstr ""
 "auch mit den Befehlen <literal>source</literal> und <literal>update</"
 "literal>. Wenn es mit dem Befehl <literal>update</literal> benutzt wird, "
 "sind MD5 und Größe nicht enthalten und es ist Aufgabe des Benutzers, "
-"komprimierte Dateien zu dekomprimieren. Konfigurationselement: <literal>APT::"
-"Get::Print-URIs</literal>."
+"komprimierte Dateien zu dekomprimieren. Konfigurationselement: "
+"<literal>APT::Get::Print-URIs</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1949,16 +2093,26 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Diese Option ist standardmäßig eingeschaltet. Um sie auszuschalten, benutzen "
 "Sie <literal>--no-list-cleanup</literal>. Wenn eingeschaltet, wird "
 "<command>apt-get</command> den Inhalt von <filename>&statedir;/lists</"
 "filename> automatisch verwalten, um sicherzustellen, dass veraltete Dateien "
 "gelöscht werden. Nur das häufige Ändern der Quelllisten stellt den einzigen "
-"Grund zum Ausschalten der Option dar. Konfigurationselement: <literal>APT::"
-"Get::List-Cleanup</literal>."
+"Grund zum Ausschalten der Option dar. Konfigurationselement: "
+"<literal>APT::Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2028,8 +2182,8 @@ msgstr ""
 "Wenn der Befehl entweder <literal>install</literal> oder <literal>remove</"
 "literal> lautet, dann bewirkt diese Option wie das Ausführen des "
 "<literal>autoremove</literal>-Befehls das Entfernen der nicht mehr "
-"benötigten abhängigen Pakete. Konfigurationselement: <literal>APT::Get::"
-"AutomaticRemove</literal>."
+"benötigten abhängigen Pakete. Konfigurationselement: "
+"<literal>APT::Get::AutomaticRemove</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2105,8 +2259,8 @@ msgstr ""
 #| "Forbid the update command to acquire unverifiable data from configured "
 #| "sources. APT will fail at the update command for repositories without "
 #| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
+#| "the concept and the implications.  Configuration Item: "
+#| "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2153,8 +2307,8 @@ msgstr ""
 "Felder wie <literal>origin</literal>, <literal>label</literal>, "
 "<literal>codename</literal>, <literal>suite</literal>, <literal>version</"
 "literal> und <literal>defaultpin</literal> zu erlauben. Siehe auch &apt-"
-"preferences;. Konfigurationselement: <literal>Acquire::"
-"AllowReleaseInfoChange</literal>."
+"preferences;. Konfigurationselement: "
+"<literal>Acquire::AllowReleaseInfoChange</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2169,8 +2323,9 @@ msgstr ""
 "Pakete installiert beziehungsweise entfernt werden oder ein Upgrade "
 "durchgeführt wird. Informationen über eine maschinell auswertbare Version "
 "dieser Daten finden Sie in README.progress-reporting im "
-"Dokumentationsverzeichnis apt/doc. Konfigurationselemente: <literal>Dpkg::"
-"Progress</literal> und <literal>Dpkg::Progress-Fancy</literal>."
+"Dokumentationsverzeichnis apt/doc. Konfigurationselemente: "
+"<literal>Dpkg::Progress</literal> und <literal>Dpkg::Progress-Fancy</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2193,8 +2348,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Dateien"
@@ -2202,13 +2378,13 @@ msgstr "Dateien"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, die APT-Benutzeranleitung in &guidesdir;, &apt-preferences;, "
-"das APT-Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, die APT-Benutzeranleitung in "
+"&guidesdir;, &apt-preferences;, das APT-Howto."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2584,23 +2760,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> nimmt eine Paketliste auf der Befehlszeile entgegen "
 "und generiert eine Ausgabe, die für die Benutzung durch dotty aus dem Paket "
-"<ulink url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</"
-"ulink> geeignet ist. Das Ergebnis ist eine Zusammenstellung von Knoten und "
-"Kanten, die die Beziehung zwischen Paketen darstellen. Standardmäßig werden "
-"alle abhängigen Pakete ausfindig gemacht. Dies kann zu einem sehr großen "
-"Schaubild führen. Um die Ausgabe auf die Pakete zu beschränken, die auf der "
-"Befehlszeile eingegeben wurden, setzen Sie die Option <literal>APT::Cache::"
-"GivenOnly</literal>."
+"<ulink url=\"https://graphviz.org/\">GraphViz</ulink> geeignet ist. Das "
+"Ergebnis ist eine Zusammenstellung von Knoten und Kanten, die die Beziehung "
+"zwischen Paketen darstellen. Standardmäßig werden alle abhängigen Pakete "
+"ausfindig gemacht. Dies kann zu einem sehr großen Schaubild führen. Um die "
+"Ausgabe auf die Pakete zu beschränken, die auf der Befehlszeile eingegeben "
+"wurden, setzen Sie die Option <literal>APT::Cache::GivenOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2627,12 +2801,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Das gleiche wie <literal>dotty</literal>, nur für xvcg vom <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG-Werkzeug</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG-Werkzeug</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2660,8 +2834,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "<literal>apt-cache</literal>s <literal>madison</literal>-Befehl versucht, "
 "das Ausgabeformat und eine Untermenge der Funktionalität des Debian-"
@@ -2675,8 +2849,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "wählt die Datei zum Speichern des Paketzwischenspeichers. Der "
 "Paketzwischenspeicher ist der primäre Zwischenspeicher, der von allen "
@@ -2697,8 +2871,8 @@ msgstr ""
 "ausgewertete Version der Paketinformationen von entfernt liegenden Quellen. "
 "Wenn der Paketzwischenspeicher gebildet wird, wird der "
 "Quellenzwischenspeicher benutzt, um ein erneutes Auswerten aller "
-"Paketdateien zu vermeiden. Konfigurationselement: <literal>Dir::Cache::"
-"srcpkgcache</literal>."
+"Paketdateien zu vermeiden. Konfigurationselement: "
+"<literal>Dir::Cache::srcpkgcache</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2731,16 +2905,16 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Standardmäßig geben <command>depends</command> und <command>rdepends</"
 "command> alle Abhängigkeiten aus. Dies kann mit diesen Schaltern optimiert "
 "werden, die den angegebenen Abhängigkeitstyp weglassen. "
-"Konfigurationselement: <literal>APT::Cache::"
-"Show<replaceable>Abhängigkeitstyp</replaceable></literal> z.B. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"Konfigurationselement: "
+"<literal>APT::Cache::Show<replaceable>Abhängigkeitstyp</replaceable></"
+"literal> z.B. <literal>APT::Cache::ShowRecommends</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2812,8 +2986,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "lässt <literal>pkgnames</literal> alle Namen, einschließlich virtueller "
 "Pakete und fehlender Abhängigkeiten, ausgeben. Konfigurationselement: "
@@ -2852,10 +3026,11 @@ msgid ""
 msgstr ""
 "fügt die angegebene Datei als Quelle für Metadaten hinzu. Dies kann "
 "wiederholt werden, um mehrere Dateien hinzuzufügen. Unterstützt werden "
-"derzeit <literal>*.deb</literal>-, <literal>*.dsc</literal>-, <literal>*."
-"changes</literal>-, <literal>Sources</literal>- und <literal>Packages</"
-"literal>-Dateien sowie Quellpaketverzeichnisse. Dateien werden nur basierend "
-"auf ihren Dateinamen abgeglichen, nicht auf ihrem Inhalt!"
+"derzeit <literal>*.deb</literal>-, <literal>*.dsc</literal>-, "
+"<literal>*.changes</literal>-, <literal>Sources</literal>- und "
+"<literal>Packages</literal>-Dateien sowie Quellpaketverzeichnisse. Dateien "
+"werden nur basierend auf ihren Dateinamen abgeglichen, nicht auf ihrem "
+"Inhalt!"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2885,8 +3060,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2897,315 +3072,6 @@ msgstr ""
 "<command>apt-cache</command> gibt bei normalen Aktionen 0 zurück, dezimal "
 "100 bei Fehlern."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "APT-Schlüsselverwaltungsdienstprogramm"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> wird benutzt, um eine Liste von Schlüsseln zu "
-"verwalten, die APT benutzt, um Pakete zu authentifizieren. Pakete, die durch "
-"Benutzung dieser Schlüssel authentifiziert wurden, werden als "
-"vertrauenswürdig betrachtet."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "Unterstützte Schlüsselbunddateien"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"Apt-key unterstützt als Voreinstellung für Schlüsselbunddateien nur das "
-"binäre OpenPGP-Format (auch als öffentlicher GPG-Schlüsselbund bekannt) in "
-"den Dateien mit der Erweiterung »<literal>gpg</literal>«, nicht das "
-"Schlüsselkastendatenbankformat, das in neueren &gpg;-Versionen eingeführt "
-"wurde. Daher sollten binäre Schlüsselbunddateien, die mit allen APT-"
-"Versionen benutzt werden sollen, immer mit <command>gpg --export</command> "
-"erstellt werden."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"Falls auf allen Systeme, die den erzeugten Schlüsselbund verwenden sollen, "
-"mindestens eine APT-Version >= 1.4 installiert ist, können Sie alternativ "
-"das ASCII-geschützte Format mit der Erweiterung »<literal>asc</literal>« "
-"verwenden, das mit <command>gpg --armor --export</command> erstellt wird."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Befehle"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(missbilligt)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"fügt einen neuen Schlüssel zur Liste der vertrauenswürdigen Schlüssel hinzu. "
-"Der Schlüssel wird aus &synopsis-param-filename; gelesen oder, wenn der "
-"Dateiname <literal>-</literal> ist, von der Standardeingabe."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"Es ist kritisch, dass überprüft wird, ob diese manuell per <command>apt-key</"
-"command> hinzugefügten Schlüssel wirklich dem Eigentümer des Depots gehören, "
-"andernfalls wird die &apt-secure;-Infrastruktur komplett ausgehöhlt."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>Hinweis</emphasis>: Anstatt diesen Befehl zu benutzen, sollte ein "
-"Schlüsselbund mit einem aussagekräftigen Namen und entweder »<literal>gpg</"
-"literal>« oder »<literal>asc</literal>« als Dateinamenserweiterung direkt im "
-"Verzeichnis <filename>/etc/apt/trusted.gpg.d/</filename> abgelegt werden."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "(deprecated)"
-msgid "(mostly deprecated)"
-msgstr "(missbilligt)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr ""
-"entfernt einen Schlüssel aus der Liste der vertrauenswürdigen Schlüssel."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "gibt den Schlüssel &synopsis-param-keyid; auf der Standardausgabe aus."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "gibt alle vertrauenswürdigen Schlüssel auf der Standardausgabe aus."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "listet vertrauenswürdige Schlüssel mit Fingerabdrücken auf."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"reicht erweiterte Optionen an GPG weiter. Mit <command>adv --recv-key</"
-"command> können Sie z.B. Schlüssel direkt vom Schlüsselserver in Ihre "
-"vertrauenswürdige Schlüsselsammlung herunterladen. Beachten Sie, dass dabei "
-"<emphasis>keine</emphasis> Prüfungen durchgeführt werden. Es ist daher "
-"einfach, die &apt-secure;-Infrastruktur komplett auszuhöhlen, falls dies "
-"ohne Sorgfalt benutzt wird."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"aktualisiert den lokalen Schlüsselbund mit dem Archivschlüsselbund und "
-"entfernt die Archivschlüssel, die nicht länger gültig sind, aus dem lokalen "
-"Schlüsselbund. Der Archivschlüsselbund wird im Paket <literal>archive-"
-"keyring</literal> Ihrer Distribution mitgeliefert, z.B. dem Paket &keyring-"
-"package; in &keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"Beachten Sie, dass eine Distribution diesen Befehl nicht benötigt und "
-"tatsächlich nicht länger nutzen sollte. Sie sollte stattdessen "
-"Schlüsselbunddateien im Verzeichnis <filename>/etc/apt/trusted.gpg.d/</"
-"filename> direkt mitliefern, da dies eine Abhängigkeit von <package>gnupg</"
-"package> vermeidet und die Verwaltung von Schlüsseln durch einfaches "
-"Hinzufügen und Entfernen von Dateien für Paketbetreuer und Benutzer "
-"gleichermaßen erleichtert."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"funktioniert ähnlich dem vorhergehenden Befehl <command>update</command>, "
-"bezieht aber den Archivschlüsselbund stattdessen von einem URI und bestätigt "
-"ihn anhand eines Master-Schlüssels. Dies erfordert ein installiertes &wget; "
-"und eine derart gebautes APT, bei dem ein Server konfiguriert ist, um den "
-"Master-Schlüsselbund zur Bestätigung abzuholen. APT unterstützt in Debian "
-"diesen Befehl nicht und beruht stattdessen auf <command>update</command>, in "
-"Ubuntu funktioniert dies aber."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Optionen"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Beachten Sie, dass Optionen vor den im vorherigen Abschnitt beschriebenen "
-"Befehlen definiert sein müssen."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Mit dieser Option ist es möglich, eine spezielle Schlüsselbunddatei "
-"anzugeben, mit der der Befehl arbeitet. Vorgabe ist, dass ein Befehl mit der "
-"Datei <filename>trusted.gpg</filename> ausgeführt wird, ebenso wie alle "
-"Teile im Verzeichnis <filename>trusted.gpg.d</filename>, wobei "
-"<filename>trusted.gpg</filename> der primäre Schlüsselbund wird, d.h. neue "
-"Schlüssel werden zu diesem hinzugefügt."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Operation"
-msgid "Deprecation"
-msgstr "Betrieb"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3217,8 +3083,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "<command>apt-mark</command> kann als einheitliche Oberfläche zum Setzen "
@@ -3316,6 +3182,12 @@ msgstr ""
 "<literal>showauto</literal> benutzt werden, mit der Änderung, dass es "
 "stattdessen eine Liste manuell installierter Pakete ausgibt."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Optionen"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3390,6 +3262,13 @@ msgstr ""
 "option> angezeigt werden. Weitere Informationen über diese sogenannten Dpkg-"
 "Auswahlen finden Sie in &dpkg;."
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3439,6 +3318,66 @@ msgstr ""
 "Authentifizierungsfunktionalität, daher verwendet diese Handbuchseite der "
 "Einfachheit halber exemplarisch für alle <literal>APT</literal>."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Benutzerkonfiguration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Note that a default installation already contains all keys to securely "
+#| "acquire packages from the default repositories, so fiddling with "
+#| "<command>apt-key</command> is only needed if third-party repositories are "
+#| "added."
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"Beachten Sie, dass eine Standardinstallation bereits alle Schlüssel zum "
+"sicheren Beschaffen von Paketen aus den Standarddepots enthält, daher ist "
+"das Frickeln mit <command>apt-key</command> nur nötig, wenn "
+"Drittanbieterdepots hinzugefügt werden."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -3678,57 +3617,6 @@ msgstr ""
 "Distribution, das im Depot ausgeliefert wird (z.B. durch den Codenamen "
 "angegeben)."
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Benutzerkonfiguration"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"<command>apt-key</command> ist das Programm, das die Liste der von APT "
-"verwendeten Schlüssel verwaltet, aufgrund derer es Depots vertraut. Es kann "
-"benutzt werden, um Schlüssel hinzuzufügen oder zu entfernen, sowie um "
-"vertrauenswürdige Schlüssel aufzulisten. Welche(r) Schlüssel welches Archiv "
-"signieren kann/können, kann per <option>Signed-By</option> in &sources-list; "
-"eingeschränkt werden."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"Beachten Sie, dass eine Standardinstallation bereits alle Schlüssel zum "
-"sicheren Beschaffen von Paketen aus den Standarddepots enthält, daher ist "
-"das Frickeln mit <command>apt-key</command> nur nötig, wenn "
-"Drittanbieterdepots hinzugefügt werden."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-"Um einen neuen Schlüssel hinzuzufügen, müssen Sie ihn zuerst herunterladen "
-"(Sie sollten sicherstellen, dass Sie einen vertrauenswürdigen "
-"Kommunikationskanal benutzen, wenn Sie ihn herunterladen), ihn mit "
-"<command>apt-key</command> hinzufügen und dann <command>apt-get update</"
-"command> ausführen, so dass APT die Dateien <filename>InRelease</filename> "
-"oder <filename>Release.gpg</filename> der von Ihnen konfigurierten Archive "
-"herunterladen und prüfen kann."
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Repository Configuration"
@@ -3758,12 +3646,12 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Sie signieren</emphasis>. Sie können dies tun, indem Sie "
-"<command>gpg --clearsign -o InRelease Release</command> und <command>gpg -"
-"abs -o Release.gpg Release</command> ausführen."
+"<command>gpg --clearsign -o InRelease Release</command> und <command>gpg "
+"-abs -o Release.gpg Release</command> ausführen."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-secure.8.xml
@@ -3813,9 +3701,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3824,15 +3716,15 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Um weitere Hintergrundinformationen zu erhalten, können Sie das Kapitel "
-"<ulink url=\"https://www.debian.org/doc/manuals/securing-debian-howto/"
-"ch7\">Die Infrastruktur für Sicherheit in Debian</ulink> des Handbuchs "
+"<ulink url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\"> Die Infrastruktur für Sicherheit in Debian</ulink> des Handbuchs "
 "»Anleitung zum Absichern von Debian« (auch im Paket harden-doc verfügbar) "
 "und das <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" "
 ">Strong Distribution HOWTO</ulink> von V. Alex Brennen lesen."
@@ -3920,8 +3812,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "versucht nicht, den CD-ROM-Pfad automatisch zu bestimmen. Dies wird "
 "üblicherweise mit der Option <option>--cdrom</option> kombiniert. "
@@ -3936,8 +3828,8 @@ msgid ""
 msgstr ""
 "Einhängepunkt; gibt den Ort an, an dem die CD-ROM eingehängt wird. Dieser "
 "Einhängepunkt muss in <filename>/etc/fstab</filename> eingetragen und "
-"angemessen konfiguriert sein. Konfigurationselement: <literal>Acquire::"
-"cdrom::mount</literal>."
+"angemessen konfiguriert sein. Konfigurationselement: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3955,8 +3847,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "kein Einhängen; hindert <command>apt-cdrom</command> am Ein- und Aushängen "
 "des Einhängepunkts. Konfigurationselement: <literal>APT::CDROM::NoMount</"
@@ -4061,8 +3953,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "Dies wird die Shell-Umgebungsvariable $OPT auf den Wert von MyApp::options "
 "mit einer Vorgabe von <option>-f</option> setzen."
@@ -4191,9 +4083,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "alle Dateien in <literal>Dir::Etc::Parts</literal> in aufsteigender "
 "alphanumerischer Reihenfolge, die entweder keine oder »<literal>conf</"
@@ -4246,9 +4138,10 @@ msgid ""
 msgstr ""
 "Die Konfigurationsdatei ist in einem Baum mit Optionen organisiert, die in "
 "funktionellen Gruppen organisiert sind. Optionsspezifikation wird mit einer "
-"doppelten Doppelpunktschreibweise angegeben, zum Beispiel ist <literal>APT::"
-"Get::Assume-Yes</literal> eine Option innerhalb der APT-Werkzeuggruppe für "
-"das Werkzeug Get. Optionen werden nicht von ihren Elterngruppe geerbt."
+"doppelten Doppelpunktschreibweise angegeben, zum Beispiel ist "
+"<literal>APT::Get::Assume-Yes</literal> eine Option innerhalb der APT-"
+"Werkzeuggruppe für das Werkzeug Get. Optionen werden nicht von ihren "
+"Elterngruppe geerbt."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4502,6 +4395,55 @@ msgstr ""
 "hinzugefügt, wenn sie per <command>dpkg --print-architectures</command> "
 "registriert werden."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4574,6 +4516,14 @@ msgstr ""
 "Beispiele: »stable«, »testing, »unstable«, »&debian-stable-codename;«, "
 "»&debian-testing-codename;«, »4.0«, »5.0*«. Siehe auch &apt-preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4735,39 +4685,75 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
-msgid "Defines which packages are considered essential build dependencies."
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"definiert, welche Pakete als essenzielle Bauabhängigkeiten betrachtet werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"Der Get-Unterabschnitt steuert das &apt-get;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"Der Cache-Unterabschnitt steuert das &apt-cache;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"Der CDROM-Unterabschnitt steuert das &apt-cdrom;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Selects packages where the name matches the given regular expression."
+msgid "Never autoremove packages that match the regular expression(s)."
 msgstr ""
-"definiert, welche Pakete als essenzielle Bauabhängigkeiten betrachtet werden."
+"wählt Pakete aus, deren Name auf den angegebenen regulären Ausdruck passt."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The Get subsection controls the &apt-get; tool; please see its documentation "
-"for more information about the options here."
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
 msgstr ""
-"Der Get-Unterabschnitt steuert das &apt-get;-Werkzeug. Lesen Sie bitte "
-"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
-"erhalten."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The Cache subsection controls the &apt-cache; tool; please see its "
-"documentation for more information about the options here."
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
 msgstr ""
-"Der Cache-Unterabschnitt steuert das &apt-cache;-Werkzeug. Lesen Sie bitte "
-"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
-"erhalten."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The CDROM subsection controls the &apt-cdrom; tool; please see its "
-"documentation for more information about the options here."
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
 msgstr ""
-"Der CDROM-Unterabschnitt steuert das &apt-cdrom;-Werkzeug. Lesen Sie bitte "
-"dessen Dokumentation, um weitere Informationen über die dortigen Optionen zu "
-"erhalten."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5002,98 +4988,6 @@ msgstr ""
 "Protokolle HTTP und HTTPS abwickelt. Sie sind in den Handbuchseiten &apt-"
 "transport-http; beziehungsweise &apt-transport-https; dokumentiert."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> setzt den Standard-Proxy, der für FTP-URIs "
-"benutzt werden soll. Er wird in der Standardform <literal>ftp://[[Benutzer][:"
-"Passwort]@]Rechner[:Port]/</literal> angegeben. Proxys pro Rechner können "
-"außerdem in der Form <literal>ftp::Proxy::&lt;Rechner&gt;</literal> "
-"angegeben werden. Hierbei bedeutet das spezielle Schlüsselwort "
-"<literal>DIRECT</literal>, dass keine Proxys benutzt werden. Falls keine der "
-"obigen Einstellungen angegeben wurde, wird die Umgebungsvariable "
-"<envar>ftp_proxy</envar> benutzt. Um einen FTP-Proxy zu benutzen, müssen Sie "
-"in der Konfigurationsdatei das Skript <literal>ftp::ProxyLogin</literal> "
-"setzen. Dieser Eintrag gibt die Befehle an, die gesendet werden müssen, um "
-"dem Proxy-Server mitzuteilen, womit er sich verbinden soll. Ein Beispiel, "
-"wie das funktioniert, finden Sie unter &configureindex;. Die "
-"Platzhaltervariablen, die für den zugehörigen URI-Bestandteil stehen, sind "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> und <literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"Die Option <literal>timeout</literal> stellt den Zeitnehmer, der von der "
-"Methode benutzt wird. Dieser Wert wird auf die Verbindungs- sowie die "
-"Datenzeitüberschreitungen angewendet."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"Mehrere Einstellungen werden zum Steuern des passiven Modus bereitgestellt. "
-"Generell ist es sicher, den passiven Modus eingeschaltet zu lassen, er "
-"funktioniert in nahezu jeder Umgebung. Jedoch erfordern einige Situationen, "
-"dass der passive Modus ausgeschaltet und stattdessen Port-Modus-FTP benutzt "
-"wird. Dies kann global eingestellt werden oder für Verbindungen, die durch "
-"einen Proxy oder zu einem bestimmten Rechner gehen (Beispiele finden Sie in "
-"der Musterkonfigurationsdatei)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"Es ist möglich, FTP über HTTP zu leiten, indem die Umgebungsvariable "
-"<envar>ftp_proxy</envar> auf eine HTTP-URL gesetzt wird – lesen Sie die "
-"Besprechung der HTTP-Methode oberhalb bezüglich der Syntax. Sie können dies "
-"nicht in der Konfigurationsdatei setzen und es wird wegen der geringen "
-"Effizienz nicht empfohlen, FTP über HTTP zu benutzen."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"Die Einstellung <literal>ForceExtended</literal> steuert die Benutzung der "
-"RFC-2428-Befehle <literal>EPSV</literal> und <literal>EPRT</literal>. Die "
-"Vorgabe ist »false«, was bedeutet, dass diese Befehle nur benutzt werden, "
-"wenn die Steuerverbindung IPv6 ist. Durch Stellen auf »true« wird die "
-"Benutzung selbst auf IPv4-Verbindungen erzwungen. Beachten Sie, dass die "
-"wenigsten FTP-Server RFC 2428 unterstützen."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5297,9 +5191,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5433,21 +5327,97 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
+msgstr ""
+"Changelogs können nur beschafft werden, falls ein URI bekannt ist, von dem "
+"sie geholt werden können. Vorzugsweise gibt die Release-Datei ihn in einem "
+"»Changelogs«-Feld an. Falls dies nicht verfügbar ist, werden die Felder "
+"»Label« und »Origin« der Release-Datei benutzt, um zu prüfen, ob eine "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>BESCHRIFTUNG</"
+"replaceable></literal>- oder <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>URSPRUNG</replaceable></literal>-Option existiert und, falls "
+"dies der Fall ist, wird dieser Wert genommen. Der Wert in der Release-Datei "
+"kann mit <literal>Acquire::Changelogs::URI::Override::Label::"
+"<replaceable>BESCHRIFTUNG</replaceable></literal> oder "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>URSPRUNG</"
+"replaceable></literal> außer Kraft gesetzt werden. Der Wert sollte ein "
+"normaler URI auf eine Textdatei sein, außer dass paketspezifische Daten "
+"durch den Platzhalter <literal>@CHANGEPATH@</literal> ersetzt werden. Der "
+"Wert dafür ist: 1. Falls das Paket von einem Bestandteil stammt (z.B. "
+"<literal>main</literal>), ist dies der erste Teil, ansonsten wird er "
+"weggelassen. 2. der erste Buchstabe des Quellpaketnamens, es sei denn, der "
+"Paketname beginnt mit »<literal>lib</literal>«. In diesem Fall werden es die "
+"vier ersten Buchstaben sein. 3. der komplette Quellpaketname. 4. wieder der "
+"vollständige Name und 5. die Quellversion. Der erste (falls vorhanden), "
+"zweite, dritte und vierte Teil werden durch einen Schrägstrich (»<literal>/</"
+"literal>«) voneinander getrennt und zwischen dem vierten und fünften ist ein "
+"Unterstrich (»<literal>_</literal>«). Der Spezialwert »<literal>no</"
+"literal>«, der für diese Option verfügbar ist, gibt an, dass diese Quelle "
+"nicht benutzt werden kann, um von dort Changelog-Dateien zu beschaffen. In "
+"diesem Fall wird, falls verfügbar, eine andere Quelle ausprobiert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Acquiring changelogs can only be done if an URI is known from where to "
+#| "get them.  Preferable the Release file indicates this in a 'Changelogs' "
+#| "field. If this isn't available the Label/Origin field of the Release file "
+#| "is used to check if a <literal>Acquire::Changelogs::URI::Label::"
+#| "<replaceable>LABEL</replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal> option exists and if so this value is taken. The "
+#| "value in the Release file can be overridden with "
+#| "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+#| "replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal>.  The value should be a normal URI to a text file, "
+#| "except that package specific data is replaced with the placeholder "
+#| "<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package "
+#| "is from a component (e.g. <literal>main</literal>)  this is the first "
+#| "part otherwise it is omitted, 2. the first letter of source package name, "
+#| "except if the source package name starts with '<literal>lib</literal>' in "
+#| "which case it will be the first four letters. 3. The complete source "
+#| "package name. 4. the complete name again and 5. the source version.  The "
+#| "first (if present), second, third and fourth part are separated by a "
+#| "slash ('<literal>/</literal>')  and between the fourth and fifth part is "
+#| "an underscore ('<literal>_</literal>').  The special value '<literal>no</"
+#| "literal>' is available for this option indicating that this source can't "
+#| "be used to acquire changelog files from. Another source will be tried if "
+#| "available in this case."
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
 msgstr ""
 "Changelogs können nur beschafft werden, falls ein URI bekannt ist, von dem "
 "sie geholt werden können. Vorzugsweise gibt die Release-Datei ihn in einem "
@@ -5458,23 +5428,23 @@ msgstr ""
 "<replaceable>URSPRUNG</replaceable></literal>-Option existiert und, falls "
 "dies der Fall ist, wird dieser Wert genommen. Der Wert in der Release-Datei "
 "kann mit <literal>Acquire::Changelogs::URI::Override::Label::"
-"<replaceable>BESCHRIFTUNG</replaceable></literal> oder <literal>Acquire::"
-"Changelogs::URI::Override::Origin::<replaceable>URSPRUNG</replaceable></"
-"literal> außer Kraft gesetzt werden. Der Wert sollte ein normaler URI auf "
-"eine Textdatei sein, außer dass paketspezifische Daten durch den Platzhalter "
-"<literal>@CHANGEPATH@</literal> ersetzt werden. Der Wert dafür ist: 1. Falls "
-"das Paket von einem Bestandteil stammt (z.B. <literal>main</literal>), ist "
-"dies der erste Teil, ansonsten wird er weggelassen. 2. der erste Buchstabe "
-"des Quellpaketnamens, es sei denn, der Paketname beginnt mit »<literal>lib</"
-"literal>«. In diesem Fall werden es die vier ersten Buchstaben sein. 3. der "
-"komplette Quellpaketname. 4. wieder der vollständige Name und 5. die "
-"Quellversion. Der erste (falls vorhanden), zweite, dritte und vierte Teil "
-"werden durch einen Schrägstrich (»<literal>/</literal>«) voneinander "
-"getrennt und zwischen dem vierten und fünften ist ein Unterstrich "
-"(»<literal>_</literal>«). Der Spezialwert »<literal>no</literal>«, der für "
-"diese Option verfügbar ist, gibt an, dass diese Quelle nicht benutzt werden "
-"kann, um von dort Changelog-Dateien zu beschaffen. In diesem Fall wird, "
-"falls verfügbar, eine andere Quelle ausprobiert."
+"<replaceable>BESCHRIFTUNG</replaceable></literal> oder "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>URSPRUNG</"
+"replaceable></literal> außer Kraft gesetzt werden. Der Wert sollte ein "
+"normaler URI auf eine Textdatei sein, außer dass paketspezifische Daten "
+"durch den Platzhalter <literal>@CHANGEPATH@</literal> ersetzt werden. Der "
+"Wert dafür ist: 1. Falls das Paket von einem Bestandteil stammt (z.B. "
+"<literal>main</literal>), ist dies der erste Teil, ansonsten wird er "
+"weggelassen. 2. der erste Buchstabe des Quellpaketnamens, es sei denn, der "
+"Paketname beginnt mit »<literal>lib</literal>«. In diesem Fall werden es die "
+"vier ersten Buchstaben sein. 3. der komplette Quellpaketname. 4. wieder der "
+"vollständige Name und 5. die Quellversion. Der erste (falls vorhanden), "
+"zweite, dritte und vierte Teil werden durch einen Schrägstrich (»<literal>/</"
+"literal>«) voneinander getrennt und zwischen dem vierten und fünften ist ein "
+"Unterstrich (»<literal>_</literal>«). Der Spezialwert »<literal>no</"
+"literal>«, der für diese Option verfügbar ist, gibt an, dass diese Quelle "
+"nicht benutzt werden kann, um von dort Changelog-Dateien zu beschaffen. In "
+"diesem Fall wird, falls verfügbar, eine andere Quelle ausprobiert."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5486,9 +5456,9 @@ msgstr "Programmspezifische Konfiguration"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "Insbesondere kann es mit der Einführung des <command>apt</command>-Programms "
 "nützlich sein, bestimmte Optionen nur für ein bestimmtes Programm zu setzen, "
@@ -5603,19 +5573,20 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
-"Auf Programme wird von <literal>Dir::Bin</literal> verwiesen. <literal>Dir::"
-"Bin::Methods</literal> gibt den Ort des Methodensteuerungsprogramms an und "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal>, <literal>dpkg-source</"
-"literal>, <literal>dpkg-buildpackage</literal> und <literal>apt-cache</"
-"literal> geben den Ort des jeweiligen Programms an."
+"Auf Programme wird von <literal>Dir::Bin</literal> verwiesen. "
+"<literal>Dir::Bin::Methods</literal> gibt den Ort des "
+"Methodensteuerungsprogramms an und <literal>gzip</literal>, <literal>bzip2</"
+"literal>, <literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-"
+"get</literal>, <literal>dpkg-source</literal>, <literal>dpkg-buildpackage</"
+"literal> und <literal>apt-cache</literal> geben den Ort des jeweiligen "
+"Programms an."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5813,9 +5784,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "Jede Zeile der Konfigurationsrichtlinien hat die Form "
 "<literal>Schlüssel=Wert</literal>. Sonderzeichen (Gleichheitszeichen, "
@@ -5877,11 +5848,11 @@ msgid ""
 msgstr ""
 "Die Protokollversion, die für den Befehl <literal><replaceable>Befehl</"
 "replaceable></literal> benutzt werden soll, kann durch entsprechendes Setzen "
-"von <literal>DPkg::Tools::options::<replaceable>Befehl</replaceable>::"
-"Version</literal> ausgewählt werden, Voreinstellung ist Version 1. Falls APT "
-"die angefragte Version nicht unterstützt, wird es stattdessen die "
-"Informationen in der höchsten Version senden, für die es Unterstützung "
-"bietet."
+"von <literal>DPkg::Tools::options::<replaceable>Befehl</"
+"replaceable>::Version</literal> ausgewählt werden, Voreinstellung ist "
+"Version 1. Falls APT die angefragte Version nicht unterstützt, wird es "
+"stattdessen die Informationen in der höchsten Version senden, für die es "
+"Unterstützung bietet."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6035,13 +6006,6 @@ msgstr ""
 "gibt Informationen aus, die sich auf Zugriffe von <literal>cdrom://</"
 "literal>-Quellen beziehen."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"gibt Informationen aus, die sich auf das Herunterladen von Paketen per FTP "
-"beziehen."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -6074,12 +6038,6 @@ msgstr ""
 "gibt Informationen über den Zugriffsprozess auf Paketsammlungen aus, die auf "
 "CD-ROMs gespeichert sind."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -6169,8 +6127,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "generiert Fehlersuchmeldungen, die beschreiben, welche Pakete automatisch "
 "installiert werden, um Abhängigkeiten aufzulösen. Dies entspricht dem "
@@ -6187,14 +6145,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "generiert Fehlersuchmeldungen, die beschreiben, welches Paket als "
 "»keep«/»install«/»remove« markiert ist, während der ProblemResolver seine "
@@ -6279,8 +6237,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 "gibt die Informationen über die aus <filename>/etc/apt/vendors.list</"
 "filename> gelesenen Anbieter aus."
@@ -6288,8 +6246,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 "zeigt die externen Befehle, die durch APT-Hooks aufgerufen werden. Dies "
@@ -6410,15 +6368,15 @@ msgid ""
 "<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
 "case it will be silently ignored."
 msgstr ""
-"Beachten Sie, dass die Dateien im Verzeichnis <filename>/etc/apt/preferences."
-"d</filename> in alphanumerisch aufsteigender Reihenfolge ausgewertet werden "
-"und der folgenden Namenskonvention unterliegen: Die Dateien haben entweder "
-"keine oder <literal>»pref«</literal> als Dateierweiterung und sie enthalten "
-"nur alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) oder Punkte "
-"(.). Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei "
-"ignoriert hat, falls die Datei nicht auf ein Muster in der "
-"Konfigurationsliste <literal>Dir::Ignore-Files-Silently</literal> passt – in "
-"diesem Fall wird sie stillschweigend ignoriert."
+"Beachten Sie, dass die Dateien im Verzeichnis <filename>/etc/apt/"
+"preferences.d</filename> in alphanumerisch aufsteigender Reihenfolge "
+"ausgewertet werden und der folgenden Namenskonvention unterliegen: Die "
+"Dateien haben entweder keine oder <literal>»pref«</literal> als "
+"Dateierweiterung und sie enthalten nur alphanumerische Zeichen, Bindestriche "
+"(-), Unterstriche (_) oder Punkte (.). Andernfalls wird APT einen Hinweis "
+"ausgeben, dass es eine Datei ignoriert hat, falls die Datei nicht auf ein "
+"Muster in der Konfigurationsliste <literal>Dir::Ignore-Files-Silently</"
+"literal> passt – in diesem Fall wird sie stillschweigend ignoriert."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -6752,6 +6710,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6801,8 +6780,8 @@ msgstr ""
 "Eine Mahnung zur Vorsicht: Das hier benutzte Schlüsselwort ist "
 "»<literal>origin</literal>«, was zum Abgleich mit einem Rechnernamen benutzt "
 "werden kann. Der folgende Eintrag wird allen Versionen eine hohe Priorität "
-"zuweisen, die auf dem Server verfügbar sind, der durch den Rechnernamen »ftp."
-"de.debian.org« identifiziert wird."
+"zuweisen, die auf dem Server verfügbar sind, der durch den Rechnernamen "
+"»ftp.de.debian.org« identifiziert wird."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -7077,9 +7056,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7252,9 +7231,9 @@ msgstr "Dann:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "Es wird die aktuellste verfügbare Version des Pakets <literal>perl</literal> "
 "installiert, so lange die Versionsnummer mit »<literal>&good-perl;</"
@@ -7533,12 +7512,12 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Alle <filename>Packages</filename>- und <filename>Release</filename>-"
 "Dateien, die von Orten heruntergeladen werden, die in der Datei &sources-"
@@ -7918,6 +7897,16 @@ msgstr ""
 "Files-Silently</literal> passt – in diesem Fall wird sie stillschweigend "
 "ignoriert."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7976,6 +7965,12 @@ msgstr ""
 "erwarten, dass Optionen auftauchen, da diese vor der Einführung der "
 "Unterstützung mehrerer Architekturen nicht üblich waren."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -8164,11 +8159,11 @@ msgstr ""
 "<literal>Suite</literal> darf außerdem eine Variable, <literal>$(ARCH)</"
 "literal>, enthalten, die zur Debian-Architektur (wie <literal>amd64</"
 "literal> oder <literal>armel</literal>) expandiert wird, die auf dem System "
-"benutzt wird. Dies erlaubt es, architekturunabhängige <filename>sources."
-"list</filename>-Dateien zu benutzen. Im Allgemeinen ist dies nur von "
-"Interesse, wenn ein genauer Pfad angegeben wird, andernfalls wird "
-"<literal>APT</literal> automatisch einen URI mit der aktuellen Architektur "
-"erstellen."
+"benutzt wird. Dies erlaubt es, architekturunabhängige "
+"<filename>sources.list</filename>-Dateien zu benutzen. Im Allgemeinen ist "
+"dies nur von Interesse, wenn ein genauer Pfad angegeben wird, andernfalls "
+"wird <literal>APT</literal> automatisch einen URI mit der aktuellen "
+"Architektur erstellen."
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
@@ -8224,10 +8219,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "Die Quellen für Ihre Distribution könnten zum Beispiel im Format mit "
 "einzeiligem Stil so aussehen: <placeholder type=\"literallayout\" id=\"0\"/> "
@@ -8275,8 +8277,8 @@ msgstr ""
 "<option>Architectures</option> (<option>arch</option>) ist eine Option mit "
 "mehreren Werten, die definiert, für welche Architekturen Informationen "
 "heruntergeladen werden sollen. Falls diese Option nicht gesetzt ist, ist die "
-"Voreinstellung alle durch die Konfigurationsoption <option>APT::"
-"Architectures</option> definierten Architekturen."
+"Voreinstellung alle durch die Konfigurationsoption "
+"<option>APT::Architectures</option> definierten Architekturen."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8298,21 +8300,22 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) ist eine Option mit "
 "mehreren Werten, die definiert, welche Herunterladeziele APT aus dieser "
 "Quelle versucht zu beschaffen. Ist sie nicht angegeben, wird die "
-"Voreinstellung durch den Konfigurationsbereich <option>Acquire::"
-"IndexTargets</option> spezifiziert (Ziele werden im Feld <literal>Created-"
-"By</literal> durch ihren Namen angegeben). Außerdem können Ziele mittels des "
-"Felds <literal>Identifier</literal> als Option mit einem Wahrheitswert "
-"aktiviert oder deaktiviert werden, anstatt diese Option mit mehreren Werten "
-"zu benutzen."
+"Voreinstellung durch den Konfigurationsbereich "
+"<option>Acquire::IndexTargets</option> spezifiziert (Ziele werden im Feld "
+"<literal>Created-By</literal> durch ihren Namen angegeben). Außerdem können "
+"Ziele mittels des Felds <literal>Identifier</literal> als Option mit einem "
+"Wahrheitswert aktiviert oder deaktiviert werden, anstatt diese Option mit "
+"mehreren Werten zu benutzen."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8483,18 +8486,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>) ist eine Option, die "
 "erfordert, dass ein Depot die &apt-secure;-Prüfung mit einem bestimmten Satz "
@@ -8531,8 +8533,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>) ist "
 "ein yes-/no- (Ja-/Nein-)Wert, der steuert, ob APT versuchen soll, "
@@ -8630,6 +8633,35 @@ msgstr ""
 "InRelease-Datei probiert und der Rückgriff auf <filename>Release</filename>-"
 "Dateien wird deaktiviert."
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8768,39 +8800,6 @@ msgstr ""
 "mit Medienwechsel zu benutzen. Benutzen Sie das Programm &apt-cdrom;, um "
 "»cdrom«-Einträge in der Quellenliste zu erstellen."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-"Das Schema »ftp« gibt einen FTP-Server für ein Archiv an. Die Verwendung von "
-"FTP geht zu Gunsten von <literal>http</literal> und <literal>https</literal> "
-"zurück und viele Archive haben entweder nie FTP-Zugriff geboten oder ziehen "
-"diesen zurück. Falls Sie diese Methode immer noch benötigen, sind dafür "
-"viele Konfigurationsoptionen im Bereich <literal>Acquire::ftp</literal> "
-"verfügbar und ausführlich in &apt-conf; erklärt."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Bitte beachten Sie, dass ein FTP-Proxy durch Benutzung der <envar>ftp_proxy</"
-"envar>-Umgebungsvariablen angegeben werden kann. Es ist mittels dieser "
-"Umgebungsvariable und <emphasis>nur</emphasis> dieser Umgebungsvariable "
-"möglich, einen HTTP-Proxy anzugeben (HTTP-Proxy-Server verstehen oft auch "
-"FTP-URLs). Proxys, die HTTP benutzen und in der Konfigurationsdatei "
-"festgelegt sind, werden ignoriert."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8814,20 +8813,6 @@ msgstr ""
 "Herkunftsort benutzt zu werden. Dies ist für Leute nützlich, die "
 "Wechseldatenträger benutzen, um Dateien mit APT umherzukopieren."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"Die Methode »rsh/ssh« ruft RSH/SSH auf, um sich mit einem Rechner in der "
-"Ferne zu verbinden und als angegebener Benutzer auf die Dateien zuzugreifen. "
-"Es wird empfohlen, vorher Rhosts oder RSA-Schlüssel zu konfigurieren. Für "
-"die Übertragung von Dateien aus der Ferne werden die Standardbefehle "
-"<command>find</command> und <command>dd</command> verwandt."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -9009,64 +8994,64 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"benutzt FTP, um auf das Archiv auf archive.debian.org unter dem debian-"
+"benutzt HTTPS, um auf das Archiv auf deb.debian.org unter dem debian-"
 "Verzeichnis zuzugreifen und nur den &debian-stable-codename;/contrib-Bereich "
 "zu benutzen."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"benutzt FTP, um auf das Archiv auf ftp.debian.org unter dem debian-"
+"benutzt HTTPS, um auf das Archiv auf deb.debian.org unter dem debian-"
 "Verzeichnis zuzugreifen und nur den unstable/contrib-Bereich zu benutzen. "
 "Falls diese Zeile zusammen mit der aus dem vorherigen Beispiel in der Datei "
-"<filename>sources.list</filename> auftaucht, wird eine einzelne FTP-Sitzung "
-"für beide Quellzeilen benutzt."
+"<filename>sources.list</filename> auftaucht, wird eine einzelne HTTPS-"
+"Sitzung für beide Quellzeilen benutzt."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -9212,8 +9197,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "temporäres Verzeichnis, in das die extrahierten <command>debconf</command>-"
 "Schablonendateien und Konfigurationsskripte geschrieben werden. "
@@ -9256,11 +9241,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
-"Quellindexfeldanordnung benutzen. Konfigurationselement: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Quellindexfeldanordnung benutzen. Konfigurationselement: "
+"<literal>APT::SortPkgs::Source</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-sortpkgs.1.xml
@@ -9394,10 +9379,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "Der Befehl <literal>release</literal> erzeugt eine Release-Datei aus einem "
 "Verzeichnisbaum. Standardmäßig durchsucht er rekursiv das angegebene "
@@ -9405,13 +9390,13 @@ msgstr ""
 "filename>-, <filename>Sources</filename>-, <filename>Contents</filename>-, "
 "<filename>Components</filename>- und <filename>icons</filename>-Dateien, "
 "ebenso wie standardmäßig <filename>Release</filename>-, <filename>Index</"
-"filename> und <filename>md5sum.txt</filename>-Dateien (<literal>APT::"
-"FTPArchive::Release::Default-Patterns</literal>). Zusätzliche Muster für "
-"Dateinamen können hinzugefügt werden, indem sie in <literal>APT::FTPArchive::"
-"Release::Patterns</literal> aufgeführt werden. Dann schreibt er eine "
-"<filename>Release</filename>-Datei auf die Standardausgabe, die "
-"(standardmäßig) für jede Datei eine MD5-, SHA1-, SHA256- und SHA512-"
-"Prüfsumme enthält."
+"filename> und <filename>md5sum.txt</filename>-Dateien "
+"(<literal>APT::FTPArchive::Release::Default-Patterns</literal>). Zusätzliche "
+"Muster für Dateinamen können hinzugefügt werden, indem sie in "
+"<literal>APT::FTPArchive::Release::Patterns</literal> aufgeführt werden. "
+"Dann schreibt er eine <filename>Release</filename>-Datei auf die "
+"Standardausgabe, die (standardmäßig) für jede Datei eine MD5-, SHA1-, "
+"SHA256- und SHA512-Prüfsumme enthält."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9659,12 +9644,12 @@ msgstr "<literal>TreeDefault</literal>-Abschnitt"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "setzt Vorgaben speziell für <literal>Tree</literal>-Abschnitte. All diese "
-"Variablen sind Platzhaltervariablen und haben die Zeichenketten $(DIST), "
-"$(SECTION) und $(ARCH) durch ihre jeweiligen Werte ersetzt."
+"Variablen sind Platzhaltervariablen und haben die Zeichenketten $(DIST), $"
+"(SECTION) und $(ARCH) durch ihre jeweiligen Werte ersetzt."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9698,20 +9683,20 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
-"setzt den Beginn des .deb-Verzeichnisbaums. Vorgabe ist <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"setzt den Beginn des .deb-Verzeichnisbaums. Vorgabe ist <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
-"setzt den Beginn des Quellpaketverzeichnisbaums. Vorgabe ist "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"setzt den Beginn des Quellpaketverzeichnisbaums. Vorgabe ist <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9735,8 +9720,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "setzt die Ausgabe der Translation-en-Hauptdatei mit den langen "
 "Beschreibungen falls sie nicht in der Packages-Datei enthalten sein sollen. "
@@ -10141,8 +10126,8 @@ msgstr ""
 "entfernt Verweise. Wenn die <literal>External-Links</literal>-Einstellung "
 "benutzt wird, schaltet diese Option tatsächlich das Entfernen von Verweisen "
 "zu Dateien ein. Standardmäßig ist es an und kann mit <option>--no-delink</"
-"option> ausgeschaltet werden. Konfigurationselement: <literal>APT::"
-"FTPArchive::DeLinkAct</literal>."
+"option> ausgeschaltet werden. Konfigurationselement: "
+"<literal>APT::FTPArchive::DeLinkAct</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10168,14 +10153,14 @@ msgid ""
 "literal>."
 msgstr ""
 "wählt die Quelldatei zum außer Kraft setzen, die mit dem <literal>sources</"
-"literal>-Befehl benutzt wird. Konfigurationselement: <literal>APT::"
-"FTPArchive::SourceOverride</literal>."
+"literal>-Befehl benutzt wird. Konfigurationselement: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "macht die Zwischenspeicherdatenbank nur lesbar. Konfigurationselement: "
 "<literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -10191,8 +10176,8 @@ msgstr ""
 "akzeptiert in den Befehlen <literal>packages</literal> und "
 "<literal>contents</literal> nur Paketdateien, die auf <literal>*_arch.deb</"
 "literal> oder <literal>*_all.deb</literal> passen, anstatt aller "
-"Paketdateien im angegebenen Pfad. Konfigurationselement: <literal>APT::"
-"FTPArchive::Architecture</literal>."
+"Paketdateien im angegebenen Pfad. Konfigurationselement: "
+"<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10311,11 +10296,11 @@ msgstr ""
 "Das hier definierte Format ist dem Format der von "
 "<citerefentry><refentrytitle><command>ftp</command></"
 "refentrytitle><manvolnum>1</manvolnum></citerefentry> und ähnlichen "
-"Programmen, die mit Servern interagieren, benutzten Datei <filename>~/."
-"netrc</filename> ähnlich. Es ist eine einfaches kürzelbasiertes Format, bei "
-"dem die folgenden Kürzel erkannt werden; unbekannte Kürzel werden ignoriert. "
-"Kürzel können durch Leerzeichen, Tabulatoren oder Zeilenumbrüche voneinander "
-"getrennt werden."
+"Programmen, die mit Servern interagieren, benutzten Datei "
+"<filename>~/.netrc</filename> ähnlich. Es ist eine einfaches kürzelbasiertes "
+"Format, bei dem die folgenden Kürzel erkannt werden; unbekannte Kürzel "
+"werden ignoriert. Kürzel können durch Leerzeichen, Tabulatoren oder "
+"Zeilenumbrüche voneinander getrennt werden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt_auth.conf.5.xml
@@ -10609,31 +10594,33 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 "Die Umgebungsvariable <envar>http_proxy</envar> wird zur systemweiten "
 "Konfiguration unterstützt. APT-spezifische Proxys können mittels der Option "
 "<literal>Acquire::http::Proxy</literal> konfiguriert werden. Proxys, die nur "
-"für bestimmte Rechner benutzt werden, können über <literal>Acquire::http::"
-"Proxy::<replaceable>Rechner</replaceable></literal> angegeben werden. Eine "
-"granularere Steuerung kann über die nachfolgend genauer beschriebene Proxy-"
-"Autoerkennung erreicht werden. Alle diese Optionen verwenden das URI-Format "
-"<literal><replaceable>Schema</replaceable>://[[<replaceable>Benutzer</"
-"replaceable>][:<replaceable>Passwort</replaceable>]@]<replaceable>Rechner</"
-"replaceable>[:<replaceable>Port</replaceable>]/</literal>. Untersützte URI-"
-"Schemen sind <literal>socks5h</literal> (SOCKS5 mit ferner DNS-Auflösung), "
-"<literal>http</literal> und <literal>https</literal>. "
-"Authentifizierungseinzelheiten können über &apt-authconf; bereitgestellt "
-"werden, statt sie direkt in den URI einzufügen."
+"für bestimmte Rechner benutzt werden, können über "
+"<literal>Acquire::http::Proxy::<replaceable>Rechner</replaceable></literal> "
+"angegeben werden. Eine granularere Steuerung kann über die nachfolgend "
+"genauer beschriebene Proxy-Autoerkennung erreicht werden. Alle diese "
+"Optionen verwenden das URI-Format <literal><replaceable>Schema</"
+"replaceable>://[[<replaceable>Benutzer</replaceable>][:"
+"<replaceable>Passwort</replaceable>]@]<replaceable>Rechner</replaceable>[:"
+"<replaceable>Port</replaceable>]/</literal>. Untersützte URI-Schemen sind "
+"<literal>socks5h</literal> (SOCKS5 mit ferner DNS-Auflösung), <literal>http</"
+"literal> und <literal>https</literal>. Authentifizierungseinzelheiten können "
+"über &apt-authconf; bereitgestellt werden, statt sie direkt in den URI "
+"einzufügen."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
@@ -10651,14 +10638,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "Desweiteren werden drei Einstellungen zur Steuerung des Zwischenspeichers "
 "mit HTTP/1.1-konformen Proxy-Zwischenspeichern bereitgestellt: "
@@ -10721,11 +10708,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
-"Diese Option hat Vorrang vor dem veralteten Optionsnamen <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"Diese Option hat Vorrang vor dem veralteten Optionsnamen "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-http.1.xml
@@ -10764,12 +10751,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "Die Einstellung <literal>Acquire::http::Pipeline-Depth</literal> kann "
 "verwandt werden, um HTTP-Pipelining zu aktivieren (RFC 2616 Abschnitt "
@@ -10903,9 +10890,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 "Das HTTPS-Protokoll basiert auf dem HTTP-Protokoll, daher sind alle von &apt-"
 "transport-http; unterstützten Optionen auch mittels <literal>Acquire::https</"
@@ -10953,15 +10940,16 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 "Eine benutzerdefinierte Zertifikatwiderrufsliste (CRL) kann mit den Optionen "
-"<literal>Acquire::https::CRLFile</literal> beziehungsweise <literal>Acquire::"
-"https::CRLFile::<replaceable>Rechner</replaceable></literal> konfiguriert "
-"werden. Wie bei der vorherigen Option muss eine Datei im PEM-Format "
-"angegeben werden."
+"<literal>Acquire::https::CRLFile</literal> beziehungsweise "
+"<literal>Acquire::https::CRLFile::<replaceable>Rechner</replaceable></"
+"literal> konfiguriert werden. Wie bei der vorherigen Option muss eine Datei "
+"im PEM-Format angegeben werden."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-https.1.xml
@@ -10984,14 +10972,14 @@ msgstr ""
 "Wenn bei der Authentifizierung des Servers die Prüfung des Zertifikats aus "
 "irgendeinem Grund fehlschlägt (abgelaufen, zurückgezogen, Mann in der Mitte, "
 "usw.) scheitert der Verbindungsaufbau. Dies ist offenkundig das, was Sie auf "
-"jeden Fall wollen und der Vorgabewert (»true«) der Option <literal>Acquire::"
-"https::Verify-Peer</literal> und was ihre rechnerspezifische Variante "
-"bereitstellt. Falls Sie <emphasis>genau</emphasis> wissen, was Sie tun, "
-"ermöglicht Ihnen das Setzen dieser Variable auf »<literal>false</literal>«, "
-"die Prüfung des Partnerzertifikats zu überspringen und den Austausch "
-"erfolgreich durchzuführen. Nochmals – diese Option dient nur der Fehlersuche "
-"und zu Testzwecken, da sie alle durch die Verwendung von HTTPS "
-"bereitgestellte Sicherheit entfernt."
+"jeden Fall wollen und der Vorgabewert (»true«) der Option "
+"<literal>Acquire::https::Verify-Peer</literal> und was ihre "
+"rechnerspezifische Variante bereitstellt. Falls Sie <emphasis>genau</"
+"emphasis> wissen, was Sie tun, ermöglicht Ihnen das Setzen dieser Variable "
+"auf »<literal>false</literal>«, die Prüfung des Partnerzertifikats zu "
+"überspringen und den Austausch erfolgreich durchzuführen. Nochmals – diese "
+"Option dient nur der Fehlersuche und zu Testzwecken, da sie alle durch die "
+"Verwendung von HTTPS bereitgestellte Sicherheit entfernt."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-https.1.xml
@@ -11028,11 +11016,11 @@ msgstr "Client-Authentifizierung"
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 "Abseits der unterstützten passwortbasierten Authentifizierung (siehe &apt-"
 "authconf;) unterstützt HTTPS auch die Authentifizierung auf Basis von Client-"
@@ -11342,9 +11330,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 "Angenommen, eine Datei mit diesem Inhalt wäre als <filename>/etc/apt/"
 "mirrorlist.txt</filename> auf Ihrem Rechner gespeichert. Sie kann (seit APT "
@@ -11806,6 +11794,20 @@ msgstr "<code>~o</code>"
 msgid "Selects packages that no longer exist in repositories."
 msgstr "wählt Pakete aus, die in keinen Depots mehr existieren."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>?false</code>"
+msgid "<code>?phasing</code>"
+msgstr "<code>?false</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "Selects packages that no longer exist in repositories."
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr "wählt Pakete aus, die in keinen Depots mehr existieren."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -12021,6 +12023,23 @@ msgstr ""
 "wählt Versionen aus, bei denen die Versionszeichenkette auf den angegebenen "
 "regulären Ausdruck passt."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>?false</code>"
+msgid "<code>?security</code>"
+msgstr "<code>?false</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "Selects packages that can be upgraded (have a newer candidate)."
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+"wählt Pakete aus, bei denen ein Upgrade durchgeführt werden kann (die einen "
+"neueren Kandidaten haben)."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 #, fuzzy
@@ -12067,6 +12086,20 @@ msgstr "<code>?suggests(MUSTER)</code>"
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr "<code>~DSuggests:MUSTER</code>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>?depends(PATTERN)</code>"
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr "<code>?depends(MUSTER)</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>~DReplaces:PATTERN</code>"
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr "<code>~DReplaces:MUSTER</code>"
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -12120,8 +12153,8 @@ msgstr "<code>~DEnhances:MUSTER</code>"
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -12257,10 +12290,10 @@ msgstr "?narrow akzeptiert unendliche Argumente"
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 "<code>foo</code> kann nicht als Kurzschreibweise für <code>?name(foo)</code> "
 "benutzt werden, da dies unbemerkte Tippfehler verursachen kann. Betrachten "
@@ -12535,13 +12568,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"OK   http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"OK   http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "OK   http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Paketlisten werden gelesen … Fertig\n"
 "Abhängigkeitsbaum wird aufgebaut … Fertig\n"
@@ -12720,8 +12753,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12733,8 +12765,7 @@ msgstr ""
 "\n"
 " Zum Beispiel:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12756,26 +12787,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Bitte geben Sie die zu erhaltende Distributionskennzeichnung oder den mit\n"
 " einem / endenden Pfad zum Paket an. Die Distributionskennzeichnungen sind\n"
-" normalerweise etwas wie: stable unstable testing non-US\n"
+" normalerweise etwas wie: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "Die Distribution bezieht sich auf die Debian-Version im Archiv, "
 "<emphasis>stable</emphasis> bezieht sich auf die zuletzt veröffentlichte "
@@ -13348,18 +13384,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Hole:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Hole:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Hole:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Treffer http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Hole:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Hole:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Hole:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free 'Warte auf Datei' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13397,8 +13433,8 @@ msgstr ""
 "wiederholt und zeigt die durchgeführte Aktion, sowie einige nützliche "
 "Informationen darüber an was geschieht. Manchmal wird dieser Abschnitt "
 "einfach nur <emphasis>Forking</emphasis> darstellen, was bedeutet, dass das "
-"Betriebssystem das Download-Modul am Laden ist. Das erste Wort nach dem »[« "
-"ist die Ladenummer, wie sie auf den Verlaufszeilen angezeigt wird. Das "
+"Betriebssystem das Download-Modul am Laden ist. Das erste Wort nach dem "
+"»[« ist die Ladenummer, wie sie auf den Verlaufszeilen angezeigt wird. Das "
 "nächste Wort ist der Name des Objekts in Kurzform, das heruntergeladen wird. "
 "Für Archive wird es den Namen des Paketes enthalten, das heruntergeladen "
 "wird."
@@ -13920,6 +13956,367 @@ msgstr ""
 "fortfahren, wodurch die bereits auf der Platte heruntergeladenen Archive "
 "benutzt werden."
 
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> setzt den Standard-Proxy, der für FTP-URIs "
+#~ "benutzt werden soll. Er wird in der Standardform <literal>ftp://"
+#~ "[[Benutzer][:Passwort]@]Rechner[:Port]/</literal> angegeben. Proxys pro "
+#~ "Rechner können außerdem in der Form <literal>ftp::Proxy::&lt;Rechner&gt;</"
+#~ "literal> angegeben werden. Hierbei bedeutet das spezielle Schlüsselwort "
+#~ "<literal>DIRECT</literal>, dass keine Proxys benutzt werden. Falls keine "
+#~ "der obigen Einstellungen angegeben wurde, wird die Umgebungsvariable "
+#~ "<envar>ftp_proxy</envar> benutzt. Um einen FTP-Proxy zu benutzen, müssen "
+#~ "Sie in der Konfigurationsdatei das Skript <literal>ftp::ProxyLogin</"
+#~ "literal> setzen. Dieser Eintrag gibt die Befehle an, die gesendet werden "
+#~ "müssen, um dem Proxy-Server mitzuteilen, womit er sich verbinden soll. "
+#~ "Ein Beispiel, wie das funktioniert, finden Sie unter &configureindex;. "
+#~ "Die Platzhaltervariablen, die für den zugehörigen URI-Bestandteil stehen, "
+#~ "sind <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
+#~ "<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
+#~ "<literal>$(SITE)</literal> und <literal>$(SITE_PORT)</literal>."
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "Die Option <literal>timeout</literal> stellt den Zeitnehmer, der von der "
+#~ "Methode benutzt wird. Dieser Wert wird auf die Verbindungs- sowie die "
+#~ "Datenzeitüberschreitungen angewendet."
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "Mehrere Einstellungen werden zum Steuern des passiven Modus "
+#~ "bereitgestellt. Generell ist es sicher, den passiven Modus eingeschaltet "
+#~ "zu lassen, er funktioniert in nahezu jeder Umgebung. Jedoch erfordern "
+#~ "einige Situationen, dass der passive Modus ausgeschaltet und stattdessen "
+#~ "Port-Modus-FTP benutzt wird. Dies kann global eingestellt werden oder für "
+#~ "Verbindungen, die durch einen Proxy oder zu einem bestimmten Rechner "
+#~ "gehen (Beispiele finden Sie in der Musterkonfigurationsdatei)."
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "Es ist möglich, FTP über HTTP zu leiten, indem die Umgebungsvariable "
+#~ "<envar>ftp_proxy</envar> auf eine HTTP-URL gesetzt wird – lesen Sie die "
+#~ "Besprechung der HTTP-Methode oberhalb bezüglich der Syntax. Sie können "
+#~ "dies nicht in der Konfigurationsdatei setzen und es wird wegen der "
+#~ "geringen Effizienz nicht empfohlen, FTP über HTTP zu benutzen."
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "Die Einstellung <literal>ForceExtended</literal> steuert die Benutzung "
+#~ "der RFC-2428-Befehle <literal>EPSV</literal> und <literal>EPRT</literal>. "
+#~ "Die Vorgabe ist »false«, was bedeutet, dass diese Befehle nur benutzt "
+#~ "werden, wenn die Steuerverbindung IPv6 ist. Durch Stellen auf »true« wird "
+#~ "die Benutzung selbst auf IPv4-Verbindungen erzwungen. Beachten Sie, dass "
+#~ "die wenigsten FTP-Server RFC 2428 unterstützen."
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr ""
+#~ "gibt Informationen aus, die sich auf das Herunterladen von Paketen per "
+#~ "FTP beziehen."
+
+#~ msgid ""
+#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on "
+#~ "the decline in favour of <literal>http</literal> and <literal>https</"
+#~ "literal> and many archives either never offered or are retiring FTP "
+#~ "access. If you still need this method many configuration options for it "
+#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed "
+#~ "in &apt-conf;."
+#~ msgstr ""
+#~ "Das Schema »ftp« gibt einen FTP-Server für ein Archiv an. Die Verwendung "
+#~ "von FTP geht zu Gunsten von <literal>http</literal> und <literal>https</"
+#~ "literal> zurück und viele Archive haben entweder nie FTP-Zugriff geboten "
+#~ "oder ziehen diesen zurück. Falls Sie diese Methode immer noch benötigen, "
+#~ "sind dafür viele Konfigurationsoptionen im Bereich <literal>Acquire::ftp</"
+#~ "literal> verfügbar und ausführlich in &apt-conf; erklärt."
+
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Bitte beachten Sie, dass ein FTP-Proxy durch Benutzung der "
+#~ "<envar>ftp_proxy</envar>-Umgebungsvariablen angegeben werden kann. Es ist "
+#~ "mittels dieser Umgebungsvariable und <emphasis>nur</emphasis> dieser "
+#~ "Umgebungsvariable möglich, einen HTTP-Proxy anzugeben (HTTP-Proxy-Server "
+#~ "verstehen oft auch FTP-URLs). Proxys, die HTTP benutzen und in der "
+#~ "Konfigurationsdatei festgelegt sind, werden ignoriert."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "Die Methode »rsh/ssh« ruft RSH/SSH auf, um sich mit einem Rechner in der "
+#~ "Ferne zu verbinden und als angegebener Benutzer auf die Dateien "
+#~ "zuzugreifen. Es wird empfohlen, vorher Rhosts oder RSA-Schlüssel zu "
+#~ "konfigurieren. Für die Übertragung von Dateien aus der Ferne werden die "
+#~ "Standardbefehle <command>find</command> und <command>dd</command> "
+#~ "verwandt."
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr "<!ENTITY synopsis-keyid \"Schlüsselkennung\">"
+
+#, fuzzy
+#~| msgid "APT key management utility"
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "APT-Schlüsselverwaltungsdienstprogramm"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> wird benutzt, um eine Liste von Schlüsseln zu "
+#~ "verwalten, die APT benutzt, um Pakete zu authentifizieren. Pakete, die "
+#~ "durch Benutzung dieser Schlüssel authentifiziert wurden, werden als "
+#~ "vertrauenswürdig betrachtet."
+
+#~ msgid "Supported keyring files"
+#~ msgstr "Unterstützte Schlüsselbunddateien"
+
+#~ msgid ""
+#~ "apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+#~ "public ring\") in files with the \"<literal>gpg</literal>\" extension, "
+#~ "not the keybox database format introduced in newer &gpg; versions as "
+#~ "default for keyring files. Binary keyring files intended to be used with "
+#~ "any apt version should therefore always be created with <command>gpg --"
+#~ "export</command>."
+#~ msgstr ""
+#~ "Apt-key unterstützt als Voreinstellung für Schlüsselbunddateien nur das "
+#~ "binäre OpenPGP-Format (auch als öffentlicher GPG-Schlüsselbund bekannt) "
+#~ "in den Dateien mit der Erweiterung »<literal>gpg</literal>«, nicht das "
+#~ "Schlüsselkastendatenbankformat, das in neueren &gpg;-Versionen eingeführt "
+#~ "wurde. Daher sollten binäre Schlüsselbunddateien, die mit allen APT-"
+#~ "Versionen benutzt werden sollen, immer mit <command>gpg --export</"
+#~ "command> erstellt werden."
+
+#~ msgid ""
+#~ "Alternatively, if all systems which should be using the created keyring "
+#~ "have at least apt version >= 1.4 installed, you can use the ASCII armored "
+#~ "format with the \"<literal>asc</literal>\" extension instead which can be "
+#~ "created with <command>gpg --armor --export</command>."
+#~ msgstr ""
+#~ "Falls auf allen Systeme, die den erzeugten Schlüsselbund verwenden "
+#~ "sollen, mindestens eine APT-Version >= 1.4 installiert ist, können Sie "
+#~ "alternativ das ASCII-geschützte Format mit der Erweiterung »<literal>asc</"
+#~ "literal>« verwenden, das mit <command>gpg --armor --export</command> "
+#~ "erstellt wird."
+
+#~ msgid "Commands"
+#~ msgstr "Befehle"
+
+#~ msgid "(deprecated)"
+#~ msgstr "(missbilligt)"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "fügt einen neuen Schlüssel zur Liste der vertrauenswürdigen Schlüssel "
+#~ "hinzu. Der Schlüssel wird aus &synopsis-param-filename; gelesen oder, "
+#~ "wenn der Dateiname <literal>-</literal> ist, von der Standardeingabe."
+
+#~ msgid ""
+#~ "It is critical that keys added manually via <command>apt-key</command> "
+#~ "are verified to belong to the owner of the repositories they claim to be "
+#~ "for otherwise the &apt-secure; infrastructure is completely undermined."
+#~ msgstr ""
+#~ "Es ist kritisch, dass überprüft wird, ob diese manuell per <command>apt-"
+#~ "key</command> hinzugefügten Schlüssel wirklich dem Eigentümer des Depots "
+#~ "gehören, andernfalls wird die &apt-secure;-Infrastruktur komplett "
+#~ "ausgehöhlt."
+
+#~ msgid ""
+#~ "<emphasis>Note</emphasis>: Instead of using this command a keyring should "
+#~ "be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+#~ "directory with a descriptive name and either \"<literal>gpg</literal>\" "
+#~ "or \"<literal>asc</literal>\" as file extension."
+#~ msgstr ""
+#~ "<emphasis>Hinweis</emphasis>: Anstatt diesen Befehl zu benutzen, sollte "
+#~ "ein Schlüsselbund mit einem aussagekräftigen Namen und entweder "
+#~ "»<literal>gpg</literal>« oder »<literal>asc</literal>« als "
+#~ "Dateinamenserweiterung direkt im Verzeichnis <filename>/etc/apt/"
+#~ "trusted.gpg.d/</filename> abgelegt werden."
+
+#, fuzzy
+#~| msgid "(deprecated)"
+#~ msgid "(mostly deprecated)"
+#~ msgstr "(missbilligt)"
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr ""
+#~ "entfernt einen Schlüssel aus der Liste der vertrauenswürdigen Schlüssel."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr ""
+#~ "gibt den Schlüssel &synopsis-param-keyid; auf der Standardausgabe aus."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "gibt alle vertrauenswürdigen Schlüssel auf der Standardausgabe aus."
+
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "listet vertrauenswürdige Schlüssel mit Fingerabdrücken auf."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~ "can e.g. download key from keyservers directly into the trusted set of "
+#~ "keys. Note that there are <emphasis>no</emphasis> checks performed, so it "
+#~ "is easy to completely undermine the &apt-secure; infrastructure if used "
+#~ "without care."
+#~ msgstr ""
+#~ "reicht erweiterte Optionen an GPG weiter. Mit <command>adv --recv-key</"
+#~ "command> können Sie z.B. Schlüssel direkt vom Schlüsselserver in Ihre "
+#~ "vertrauenswürdige Schlüsselsammlung herunterladen. Beachten Sie, dass "
+#~ "dabei <emphasis>keine</emphasis> Prüfungen durchgeführt werden. Es ist "
+#~ "daher einfach, die &apt-secure;-Infrastruktur komplett auszuhöhlen, falls "
+#~ "dies ohne Sorgfalt benutzt wird."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "aktualisiert den lokalen Schlüsselbund mit dem Archivschlüsselbund und "
+#~ "entfernt die Archivschlüssel, die nicht länger gültig sind, aus dem "
+#~ "lokalen Schlüsselbund. Der Archivschlüsselbund wird im Paket "
+#~ "<literal>archive-keyring</literal> Ihrer Distribution mitgeliefert, z.B. "
+#~ "dem Paket &keyring-package; in &keyring-distro;."
+
+#~ msgid ""
+#~ "Note that a distribution does not need to and in fact should not use this "
+#~ "command any longer and instead ship keyring files in the <filename>/etc/"
+#~ "apt/trusted.gpg.d/</filename> directory directly as this avoids a "
+#~ "dependency on <package>gnupg</package> and it is easier to manage keys by "
+#~ "simply adding and removing files for maintainers and users alike."
+#~ msgstr ""
+#~ "Beachten Sie, dass eine Distribution diesen Befehl nicht benötigt und "
+#~ "tatsächlich nicht länger nutzen sollte. Sie sollte stattdessen "
+#~ "Schlüsselbunddateien im Verzeichnis <filename>/etc/apt/trusted.gpg.d/</"
+#~ "filename> direkt mitliefern, da dies eine Abhängigkeit von "
+#~ "<package>gnupg</package> vermeidet und die Verwaltung von Schlüsseln "
+#~ "durch einfaches Hinzufügen und Entfernen von Dateien für Paketbetreuer "
+#~ "und Benutzer gleichermaßen erleichtert."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "funktioniert ähnlich dem vorhergehenden Befehl <command>update</command>, "
+#~ "bezieht aber den Archivschlüsselbund stattdessen von einem URI und "
+#~ "bestätigt ihn anhand eines Master-Schlüssels. Dies erfordert ein "
+#~ "installiertes &wget; und eine derart gebautes APT, bei dem ein Server "
+#~ "konfiguriert ist, um den Master-Schlüsselbund zur Bestätigung abzuholen. "
+#~ "APT unterstützt in Debian diesen Befehl nicht und beruht stattdessen auf "
+#~ "<command>update</command>, in Ubuntu funktioniert dies aber."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Beachten Sie, dass Optionen vor den im vorherigen Abschnitt beschriebenen "
+#~ "Befehlen definiert sein müssen."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Mit dieser Option ist es möglich, eine spezielle Schlüsselbunddatei "
+#~ "anzugeben, mit der der Befehl arbeitet. Vorgabe ist, dass ein Befehl mit "
+#~ "der Datei <filename>trusted.gpg</filename> ausgeführt wird, ebenso wie "
+#~ "alle Teile im Verzeichnis <filename>trusted.gpg.d</filename>, wobei "
+#~ "<filename>trusted.gpg</filename> der primäre Schlüsselbund wird, d.h. "
+#~ "neue Schlüssel werden zu diesem hinzugefügt."
+
+#, fuzzy
+#~| msgid "Operation"
+#~ msgid "Deprecation"
+#~ msgstr "Betrieb"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "<command>apt-key</command> ist das Programm, das die Liste der von APT "
+#~ "verwendeten Schlüssel verwaltet, aufgrund derer es Depots vertraut. Es "
+#~ "kann benutzt werden, um Schlüssel hinzuzufügen oder zu entfernen, sowie "
+#~ "um vertrauenswürdige Schlüssel aufzulisten. Welche(r) Schlüssel welches "
+#~ "Archiv signieren kann/können, kann per <option>Signed-By</option> in "
+#~ "&sources-list; eingeschränkt werden."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "Um einen neuen Schlüssel hinzuzufügen, müssen Sie ihn zuerst "
+#~ "herunterladen (Sie sollten sicherstellen, dass Sie einen "
+#~ "vertrauenswürdigen Kommunikationskanal benutzen, wenn Sie ihn "
+#~ "herunterladen), ihn mit <command>apt-key</command> hinzufügen und dann "
+#~ "<command>apt-get update</command> ausführen, so dass APT die Dateien "
+#~ "<filename>InRelease</filename> oder <filename>Release.gpg</filename> der "
+#~ "von Ihnen konfigurierten Archive herunterladen und prüfen kann."
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr ""
+#~ "beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;."
+
 #~ msgid "Selects packages that are currently installed."
 #~ msgstr "wählt Pakete aus, die derzeit installiert sind."
 
diff --git a/doc/po/es.po b/doc/po/es.po
index e490aa0..9d07464 100644
--- a/doc/po/es.po
+++ b/doc/po/es.po
@@ -38,7 +38,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2014-07-04 01:31+0200\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
@@ -90,7 +90,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -101,7 +101,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>Página de errores de APT</ulink>. \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>Página de errores de APT</ulink>. \n"
 "   Si quiere informar de un error en APT, consulte\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o use la orden\n"
 "   &reportbug;.\n"
@@ -173,6 +173,33 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-v</option></term>\n"
+#| "      <term><option>--version</option></term>\n"
+#| "      <listitem><para>Show the program version.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-v</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>Muestra la versión del programa.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -206,7 +233,19 @@ msgstr ""
 
 #. type: Plain text
 #: apt.ent
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
 msgid ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -218,6 +257,44 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-o</option></term>\n"
+"      <term><option>--option</option></term>\n"
+"     <listitem><para>Define una opción de configuración: Esto definirá una opción\n"
+"      arbitraria de configuración. La sintaxis es <option>-o Algo::Cosa=cosa</option>.\n"
+"      <option>-o</option> y <option>--option</option> se pueden usar varias\n"
+"      veces para definir diferentes opciones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 "     <varlistentry>\n"
@@ -560,11 +637,13 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 
 #. type: Plain text
 #: apt.ent
@@ -578,12 +657,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 
 #. type: Plain text
@@ -634,11 +713,11 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 
 #. type: Plain text
 #: apt.ent
@@ -700,28 +779,18 @@ msgstr ""
 "<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"section\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -731,12 +800,11 @@ msgid "command-line interface"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Descripción"
 
@@ -783,6 +851,13 @@ msgid ""
 "package isn't performed."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -792,7 +867,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ""
 
@@ -915,10 +990,10 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -933,6 +1008,20 @@ msgid ""
 "your preferred text editor while also providing basic sanity checks."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-cache;)"
+msgid "(summarised in &apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-get;)"
+msgid "(summarised in &apt-get;)"
+msgstr "(&apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -959,28 +1048,24 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Véase también"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
-#, fuzzy
-#| msgid ""
-#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
-#| "preferences;, the APT Howto."
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-"&apt-config;, &apt-secure;, la guía de usuario de APT en &guidesdir;, &apt-"
-"preferences;, el Cómo de APT."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, la guía de usuario de APT en &guidesdir;, &apt-preferences;, el "
+"Cómo de APT."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1103,10 +1188,10 @@ msgstr ""
 "command> tiene un sistema «inteligente» de resolución de conflictos, y si es "
 "necesario tratará de actualizar los paquetes más importantes a costa de los "
 "menos importantes. Por ello, puede que la orden <literal>dist-upgrade</"
-"literal> elimine algunos paquetes. El fichero <filename>/etc/apt/sources."
-"list</filename> contiene una lista de sitios desde los que descargar los "
-"ficheros de paquetes. También puede consultar &apt-preferences; si quiere "
-"invalidar este comportamiento para paquetes individuales."
+"literal> elimine algunos paquetes. El fichero <filename>/etc/apt/"
+"sources.list</filename> contiene una lista de sitios desde los que descargar "
+"los ficheros de paquetes. También puede consultar &apt-preferences; si "
+"quiere invalidar este comportamiento para paquetes individuales."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1479,6 +1564,20 @@ msgstr ""
 "opción de configuración <literal>APT::Clean-Installed</literal> está "
 "desactivada impedirá que se borren los paquetes instalados."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1600,8 +1699,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Intenta arreglar un sistema con dependencias actualmente rotas. Si se usa "
 "esta opción junto a «install»/«remove» se puede omitir cualquier paquete "
@@ -1717,11 +1816,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
-"Supone «no» a todas las consultas. Opción de configuración: <literal>APT::"
-"Get::Assume-No</literal>."
+"Supone «no» a todas las consultas. Opción de configuración: "
+"<literal>APT::Get::Assume-No</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1745,6 +1844,36 @@ msgstr ""
 "Muestra las versiones completas para los paquetes actualizados e instalados. "
 "Opción de configuración: <literal>APT::Get::Show-Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Re-install packages that are already installed and at the newest "
+#| "version.  Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Reinstala los paquetes ya instalados, incluso si son la última versión "
+"disponible del paquete. Opción de configuración: "
+"<literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Select the source override file to use with the <literal>sources</"
+#| "literal> command.  Configuration Item: "
+#| "<literal>APT::FTPArchive::SourceOverride</literal>."
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"Selecciona el fichero de fuentes alternativo a usar con la orden "
+"<literal>sources</literal>. Opción de configuración: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 #, fuzzy
@@ -1759,9 +1888,9 @@ msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Esta opción controla la arquitectura para la que se construyen los paquetes "
 "mediante <command>apt-get source --compile</command> y cómo se satisfacen "
@@ -1814,8 +1943,8 @@ msgstr ""
 "Ignora los paquetes retenidos. Esto hace que <command>apt-get</command> "
 "ignore toda retención impuesta a un paquete. Esto puede ser útil junto a "
 "<literal>dist-upgrade</literal> para invalidar un gran número de paquetes "
-"retenidos de manera no deseada. Opción de configuración: <literal>APT::"
-"Ignore-Hold</literal>."
+"retenidos de manera no deseada. Opción de configuración: "
+"<literal>APT::Ignore-Hold</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1959,8 +2088,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "Muestra los URI de los ficheros a instalar en vez de descargarlos. Cada URI "
 "contiene la dirección de dónde se obtendrá el paquete, el fichero de "
@@ -1993,8 +2122,8 @@ msgid ""
 "Configuration Item: <literal>APT::Get::ReInstall</literal>."
 msgstr ""
 "Reinstala los paquetes ya instalados, incluso si son la última versión "
-"disponible del paquete. Opción de configuración: <literal>APT::Get::"
-"ReInstall</literal>."
+"disponible del paquete. Opción de configuración: "
+"<literal>APT::Get::ReInstall</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2003,8 +2132,8 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Esta opción está activada de forma predeterminada, si quiere desactivarla "
 "utilice <literal>--no-list-cleanup</literal>. Cuando está activada "
@@ -2014,6 +2143,16 @@ msgstr ""
 "frecuentemente cambios en la lista de fuentes. Opción de configuración: "
 "<literal>APT::Get::List-Cleanup</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -2081,8 +2220,8 @@ msgid ""
 msgstr ""
 "Si la orden es <literal>install</literal> o <literal>remove</literal>, esta "
 "opción realiza el funcionamiento de <literal>autoremove</literal>, "
-"eliminando dependencias en desuso. Opción de configuración: <literal>APT::"
-"Get::AutomaticRemove</literal>."
+"eliminando dependencias en desuso. Opción de configuración: "
+"<literal>APT::Get::AutomaticRemove</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2112,8 +2251,9 @@ msgid ""
 "literal>, and <literal>APT::Get::Tar-Only</literal>."
 msgstr ""
 "Descarga sólo el fichero diff, dsc o tar del archivo de fuentes. Opciones de "
-"configuración: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
-"Dsc-Only</literal> y <literal>APT::Get::Tar-Only</literal>."
+"configuración: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal> y <literal>APT::Get::Tar-Only</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2208,27 +2348,43 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Ficheros"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
-#| "preferences;, the APT Howto."
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-"&apt-config;, &apt-secure;, la guía de usuario de APT en &guidesdir;, &apt-"
-"preferences;, el Cómo de APT."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, la guía de usuario de APT en "
+"&guidesdir;, &apt-preferences;, el Cómo de APT."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2626,22 +2782,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> toma una lista de paquetes de la línea de ordenes y "
 "genera una salida apropiada para su uso con dotty, del paquete <ulink "
-"url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. El "
-"resultado será un conjunto de nodos y uniones representando las relaciones "
-"entre los paquetes. De forma predeterminada, los paquetes proporcionados "
-"mostrarán todas sus dependencias, lo que puede producir un grafo muy grande. "
-"Para limitar la salida sólo a los paquetes listados en la línea de órdenes, "
-"active la opción <literal>APT::Cache::GivenOnly</literal>."
+"url=\"https://graphviz.org/\">GraphViz</ulink>. El resultado será un "
+"conjunto de nodos y uniones representando las relaciones entre los paquetes. "
+"De forma predeterminada, los paquetes proporcionados mostrarán todas sus "
+"dependencias, lo que puede producir un grafo muy grande. Para limitar la "
+"salida sólo a los paquetes listados en la línea de órdenes, active la opción "
+"<literal>APT::Cache::GivenOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2667,12 +2822,12 @@ msgstr "Tenga cuidado, dotty no puede dibujar grandes conjuntos de paquetes."
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Lo mismo que <literal>dotty</literal>, sólo para xvcg de la <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">herramienta "
-"VCG</ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">herramienta VCG</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2700,8 +2855,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "La orden <literal>madison</literal> de <literal>apt-cache</literal> intenta "
 "imitar el formato de salida y parte de la funcionalidad de la herramienta "
@@ -2715,8 +2870,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "Define el fichero donde guardar la caché de paquetes. La caché de paquetes "
 "es la caché primaria usada para todas las operaciones. Opción de "
@@ -2760,8 +2915,8 @@ msgid ""
 msgstr ""
 "Muestra sólo las dependencias importantes, se usa junto con <literal>unmet</"
 "literal> y <literal>depends</literal>. Hace que sólo se muestren las "
-"dependencias y pre-dependencias. Opción de configuración: <literal>APT::"
-"Cache::Important</literal>."
+"dependencias y pre-dependencias. Opción de configuración: "
+"<literal>APT::Cache::Important</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2775,16 +2930,16 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Por omisión, <literal>depends</literal> y <literal>rdepends</literal> "
 "muestran todas las dependencias. Este comportamiento se puede modificar con "
 "los siguientes parámetros, los cuales omitirán el tipo de dependencia "
-"especificado. Opción de configuración: <literal>APT::Cache::"
-"Show<replaceable>Tipo-de Dependencia</replaceable></literal>. Por ejemplo, "
-"<literal>APT::Cache::ShowRecommends</literal>."
+"especificado. Opción de configuración: "
+"<literal>APT::Cache::Show<replaceable>Tipo-de Dependencia</replaceable></"
+"literal>. Por ejemplo, <literal>APT::Cache::ShowRecommends</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2832,8 +2987,8 @@ msgid ""
 msgstr ""
 "Realiza una regeneración completa de la caché de paquetes, en vez de usarla "
 "tal y como está. Esta es la opción predeterminada, para desactivarla use "
-"<option>--no-generate</option>. Opción de configuración: <literal>APT::"
-"Cache::Generate</literal>."
+"<option>--no-generate</option>. Opción de configuración: "
+"<literal>APT::Cache::Generate</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2852,8 +3007,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "Hace que <literal>pkgnames</literal> muestre todos los nombres, incluyendo "
 "los paquetes virtuales y las dependencias no encontradas. Opción de "
@@ -2878,8 +3033,8 @@ msgid ""
 "<literal>APT::Cache::Installed</literal>."
 msgstr ""
 "Limita la salida de <literal>depends</literal> y <literal>rdepends</literal> "
-"a paquetes actualmente instalados. Opción de configuración: <literal>APT::"
-"Cache::Installed</literal>."
+"a paquetes actualmente instalados. Opción de configuración: "
+"<literal>APT::Cache::Installed</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2905,8 +3060,8 @@ msgstr ""
 #: apt-cache.8.xml
 #, fuzzy
 #| msgid ""
-#| "Use source index field ordering.  Configuration Item: <literal>APT::"
-#| "SortPkgs::Source</literal>."
+#| "Use source index field ordering.  Configuration Item: "
+#| "<literal>APT::SortPkgs::Source</literal>."
 msgid ""
 "Note that these sources are treated as trusted (see &apt-secure;).  "
 "Configuration Item: <literal>APT::Sources::With</literal>."
@@ -2916,8 +3071,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2928,282 +3083,6 @@ msgstr ""
 "<command>apt-cache</command> devuelve cero si no hay ningún error, y el "
 "valor 100 en caso de error."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "Herramienta para gestionar las claves de APT"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> sirve para gestionar la lista de claves que APT "
-"usa para autenticar paquetes. Los paquetes autenticados mediante estas "
-"claves se consideran de confianza."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Órdenes"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Añade una nueva clave a la lista claves de confianza. La clave se lee desde "
-"el fichero dado con el parámetro &synopsis-param-filename; o desde la "
-"entrada estándar si el nombre de fichero se define como <literal>-</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Elimina una clave de la lista de claves de confianza."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "Muestra la clave &synopsis-param-keyid; por la salida estándar."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Devuelve todas las claves de confianza por la salida estándar."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "List trusted keys."
-msgid "List trusted keys with fingerprints."
-msgstr "Lista las claves de confianza."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"Actualiza el registro de claves local con el registro de claves del archivo "
-"y elimina del registro local las claves de archivo que ya no son válidas. El "
-"registro de claves del archivo se encuentra en el paquete <literal>archive-"
-"keyring</literal> de su distribución; esto es, el paquete &keyring-package; "
-"en &keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Realiza una actualización similar a la realizada por la orden "
-"<command>update</command>, pero obtiene el registro de claves de archivo de "
-"una dirección URI, y la valida con la clave maestra. Requiere &wget;, y una "
-"construcción de APT configurada con un servidor de dónde obtener la clave "
-"maestra con la que validar. En Debian, APT no es compatible con esta orden, "
-"y en su lugar depende de la orden <command>update</command>, pero la versión "
-"de APT para Ubuntu sí es compatible."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Opciones"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Tenga en cuenta que las opciones se deben definir antes de las órdenes "
-"descritas en el sección anterior."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Con esta opción es posible definir un fichero de registro de claves "
-"específico sobre el que la orden debe actuar. Por omisión, la orden se "
-"ejecuta con el fichero <filename>trusted.gpg</filename> así como con los "
-"fragmentos en el directorio <filename>trusted.gpg.d</filename>, aunque "
-"<filename>trusted.gpg</filename> es el registro de claves principal, esto "
-"es, por ejemplo, que las claves nuevas se añaden a este fichero."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Operation"
-msgid "Deprecation"
-msgstr "Operación"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3215,8 +3094,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 
@@ -3315,6 +3194,12 @@ msgstr ""
 "<literal>showauto</literal>, a excepción de que muestra una lista de "
 "paquetes manualmente instalados."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Opciones"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3385,6 +3270,13 @@ msgid ""
 "called dpkg selections can be found in &dpkg;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3437,6 +3329,56 @@ msgstr ""
 "Las interfaces de gestión de paquetes &apt-get;, &aptitude; y &synaptic; "
 "pueden usar esta nueva funcionalidad de autenticación."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuración de usuario"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3664,59 +3606,8 @@ msgid ""
 "preferences; can depend and make use of this information. Since version 1.5 "
 "the user must therefore explicitly confirm changes to signal that the user "
 "is sufficiently prepared e.g. for the new major release of the distribution "
-"shipped in the repository (as e.g. indicated by the codename)."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Configuración de usuario"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-#, fuzzy
-#| msgid ""
-#| "<command>apt-key</command> is the program that manages the list of keys "
-#| "used by apt. It can be used to add or remove keys, although an "
-#| "installation of this release will automatically contain the default "
-#| "Debian archive signing keys used in the Debian package repositories."
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"<command>apt-key</command> es el programa que gestiona la lista de claves "
-"usadas por apt. Se puede usar para añadir o eliminar claves, aunque la "
-"instalación de esta versión contiene automáticamente las claves "
-"predeterminadas del archivo de Debian que se usan en los repositorios de "
-"paquetes de Debian."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
+"shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
-"Para poder añadir una clave nueva primero necesita descargarla (debería "
-"asegurarse de que está usando un canal de comunicación seguro cuando la "
-"consiga), añádala con <command>apt-key</command> y ejecute <command>apt-get "
-"update</command> para que apt descargue y compruebe los ficheros "
-"<filename>InRelease</filename> o <filename>Release.gpg</filename> de los "
-"archivos de paquetes configurados."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3749,12 +3640,12 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Firme el fichero</emphasis>. Para ello, puede ejecutar "
-"<command>gpg --clearsign -o InRelease Release</command> y <command>gpg -abs -"
-"o Release.gpg Release</command>."
+"<command>gpg --clearsign -o InRelease Release</command> y <command>gpg -abs "
+"-o Release.gpg Release</command>."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-secure.8.xml
@@ -3798,9 +3689,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3809,16 +3704,16 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Para más información puede que quiera revisar el capítulo de la <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/"
-"ch7\">Infraestructura de Seguridad de Debian</ulink> del Manual de Seguridad "
-"de Debian (también disponible en el paquete harden-doc) y el <ulink "
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/ch07\"> "
+"Infraestructura de Seguridad de Debian</ulink> del Manual de Seguridad de "
+"Debian (también disponible en el paquete harden-doc) y el <ulink "
 "url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >COMO "
 "Fortificar una Distribución</ulink> de V. Alex Brennen."
 
@@ -3910,13 +3805,13 @@ msgstr ""
 #| "configured.  Configuration Item: <literal>Acquire::cdrom::mount</literal>."
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Punto de montaje. Define el lugar donde se debe montar el disco óptico. El "
 "punto de montaje debe aparecer en <filename>/etc/fstab</filename> y estar "
-"correctamente configurado. Opción de configuración: <literal>Acquire::cdrom::"
-"mount</literal>."
+"correctamente configurado. Opción de configuración: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3927,8 +3822,8 @@ msgid ""
 msgstr ""
 "Punto de montaje. Define el lugar donde se debe montar el disco óptico. El "
 "punto de montaje debe aparecer en <filename>/etc/fstab</filename> y estar "
-"correctamente configurado. Opción de configuración: <literal>Acquire::cdrom::"
-"mount</literal>."
+"correctamente configurado. Opción de configuración: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3946,8 +3841,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "No montar. Evita que <command>apt-cdrom</command> monte y desmonte el punto "
 "de montaje. Opción de configuración: <literal>APT::CDROM::NoMount</literal>."
@@ -3985,8 +3880,8 @@ msgid ""
 "<literal>APT::CDROM::NoAct</literal>."
 msgstr ""
 "Sin cambios. No cambia el fichero &sources-list; y no escribe los ficheros "
-"de índice. Aun así, se revisará todo. Opción de configuración: <literal>APT::"
-"CDROM::NoAct</literal>."
+"de índice. Aun así, se revisará todo. Opción de configuración: "
+"<literal>APT::CDROM::NoAct</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cdrom.8.xml
@@ -4052,8 +3947,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "Esto define la variable de entorno del intérprete de órdenes $OPTS con el "
 "valor de MyApp::Opciones, y con <option>-f</option> por omisión."
@@ -4101,12 +3996,12 @@ msgid ""
 "and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
 msgstr ""
 "Define la salida de cada opción de configuración. &percnt;t se sustituye con "
-"el nombre individual, &percnt;f con el nombre jerárquico completo, y &percnt;"
-"v con su valor. Si utiliza letras mayúsculas, los caracteres especiales del "
-"valor se codificaran para garantizar su uso seguro en una cadena delimitada "
-"por comillas, como define RFC822. Además, &percnt;n se sustituye con una "
-"línea nueva, y &percnt;N con una tabulación. Se puede mostrar un &percnt; "
-"utilizando &percnt;&percnt;."
+"el nombre individual, &percnt;f con el nombre jerárquico completo, y "
+"&percnt;v con su valor. Si utiliza letras mayúsculas, los caracteres "
+"especiales del valor se codificaran para garantizar su uso seguro en una "
+"cadena delimitada por comillas, como define RFC822. Además, &percnt;n se "
+"sustituye con una línea nueva, y &percnt;N con una tabulación. Se puede "
+"mostrar un &percnt; utilizando &percnt;&percnt;."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
@@ -4182,9 +4077,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "Todos los ficheros en <literal>Dir::Etc::Parts</literal> en orden "
 "alfanumérico ascendente cuya extensión de fichero no es «<literal>conf</"
@@ -4397,11 +4292,11 @@ msgid ""
 msgstr ""
 "Todas las herramientas de APT aceptan la opción «-o» que permite definir una "
 "directriz arbitraria de configuración que se define en la línea de órdenes. "
-"La sintaxis es un nombre de opción completo (por ejemplo, <literal>APT::Get::"
-"Assume-Yes</literal>) seguido por signos de igualdad y el nuevo valor de la "
-"opción. Para añadir un nuevo elemento a lista, añada <literal>::</literal> "
-"al final del nombre de la lista. (Como puede imaginar, no puede usar la "
-"sintaxis de ámbitos en la línea de órdenes)."
+"La sintaxis es un nombre de opción completo (por ejemplo, "
+"<literal>APT::Get::Assume-Yes</literal>) seguido por signos de igualdad y el "
+"nuevo valor de la opción. Para añadir un nuevo elemento a lista, añada "
+"<literal>::</literal> al final del nombre de la lista. (Como puede imaginar, "
+"no puede usar la sintaxis de ámbitos en la línea de órdenes)."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4480,6 +4375,55 @@ msgstr ""
 "las arquitecturas externas se añaden al registro mediante <command>dpkg --"
 "add-architecture</command>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4530,6 +4474,14 @@ msgstr ""
 "«testing», «unstable», «&debian-stable-codename;», «&debian-testing-"
 "codename;», «4.0», «5.0*». Consulte también &apt-preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4718,6 +4670,38 @@ msgstr ""
 "La subsección CDROM controla la herramienta &apt-cdrom;; consulte la "
 "documentación para más información sobre esta opción."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -4764,9 +4748,9 @@ msgid ""
 "&sources-list; entries by using the <option>Date-Max-Future</option> option "
 "there."
 msgstr ""
-"El periodo (en segundos) a partir de la creación del fichero "
-"«Release» (indicado en la cabecera <literal>Date</literal>) durante el cual "
-"se considerará válida. Si el fichero «Release» incluye una cabecera "
+"El periodo (en segundos) a partir de la creación del fichero «Release» "
+"(indicado en la cabecera <literal>Date</literal>) durante el cual se "
+"considerará válida. Si el fichero «Release» incluye una cabecera "
 "<literal>Valid-Until</literal>, la fecha más temprana se utilizará como la "
 "fecha de vencimiento. El valor predefinido es <literal>0</literal>, esto es, "
 "sin límite de tiempo. Las opciones de configuración específicas al archivo "
@@ -4827,9 +4811,9 @@ msgid ""
 "achieved for specific &sources-list; entries by using the <option>Valid-"
 "Until-Max</option> option there."
 msgstr ""
-"El periodo (en segundos) a partir de la creación del fichero "
-"«Release» (indicado en la cabecera <literal>Date</literal>) durante el cual "
-"se considerará válida. Si el fichero «Release» incluye una cabecera "
+"El periodo (en segundos) a partir de la creación del fichero «Release» "
+"(indicado en la cabecera <literal>Date</literal>) durante el cual se "
+"considerará válida. Si el fichero «Release» incluye una cabecera "
 "<literal>Valid-Until</literal>, la fecha más temprana se utilizará como la "
 "fecha de vencimiento. El valor predefinido es <literal>0</literal>, esto es, "
 "sin límite de tiempo. Las opciones de configuración específicas al archivo "
@@ -4970,96 +4954,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> define el proxy predeterminado que utilizar "
-"para los URI de FTP. Utiliza el formato estándar <literal>ftp://[[usuario][:"
-"contraseña]@]máquina[:puerto]/</literal>. También se puede especificar un "
-"proxy por cada máquina usando la forma <literal>ftp::Proxy::&lt;máquina&gt;</"
-"literal> con la palabra especial <literal>DIRECT</literal>, que significa "
-"que no se use ningún proxy. La variable de entorno <envar>ftp_proxy</envar> "
-"se usará en caso de no definir ninguna de las opciones anteriores. Para usar "
-"un proxy FTP debe configurar el script <literal>ftp::ProxyLogin</literal> en "
-"el fichero de configuración. Esta entrada define las órdenes a enviar para "
-"decirle al servidor del proxy a qué conectarse. Consulte &configureindex; "
-"para un ejemplo de uso. Las variables de sustitución que representan el "
-"componente URI son <literal>$(PROXY_USER)</literal> <literal>$(PROXY_PASS)</"
-"literal> <literal>$(SITE_USER)</literal> <literal>$(SITE_PASS)</literal> "
-"<literal>$(SITE)</literal> y <literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"La opción <literal>timeout</literal> define el tiempo máximo de espera "
-"utilizado por el método; este valor se aplica al establecimiento de conexión "
-"y a la recepción de datos."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"Puede controlar el modo pasivo a través de varias opciones. Habitualmente, "
-"es seguro dejar activado el modo pasivo, y funciona en casi todos los "
-"entornos. Sin embargo algunas situaciones requieren desactivar el modo "
-"pasivo y usar el modo puerto de FTP en su lugar. Esto se puede hacer "
-"globalmente, para conexiones a través de un proxy o para una máquina en "
-"concreto (consulte el ejemplo de fichero de configuración para ver algunos "
-"ejemplos)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"Es posible usar un proxy FTP a través de HTTP definiendo la variable de "
-"entorno <envar>ftp_proxy</envar> con un HTTP URL. Para la sintaxis consulte "
-"la explicación anterior del método http. Esto no puede definir en el fichero "
-"de configuración y no se recomienda el uso de FTP por encima de HTTP debido "
-"a su poca eficiencia."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"La opción <literal>ForceExtended</literal> controla el uso de las órdenes de "
-"RFC 2428 <literal>EPSV</literal> y <literal>EPRT</literal>. De forma "
-"predeterminada es «false», que significa que sólo se usa si el control de "
-"conexión es IPv6. Cambiándolo a «true» fuerza su uso incluso en conexiones "
-"IPv4. Tenga en cuenta que la mayoría de los servidores de FTP no son "
-"compatibles con la RFC 2428."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5094,8 +4988,9 @@ msgid ""
 "For GPGV URIs the only configurable option is <literal>gpgv::Options</"
 "literal>, which passes additional parameters to gpgv."
 msgstr ""
-"Para direcciones GPGV URI, la única opción configurable es <literal>gpgv::"
-"Options</literal>, que introduce parámetros adicionales a gpgv."
+"Para direcciones GPGV URI, la única opción configurable es "
+"<literal>gpgv::Options</literal>, que introduce parámetros adicionales a "
+"gpgv."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
 #: apt.conf.5.xml
@@ -5295,9 +5190,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5408,21 +5303,44 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -5437,9 +5355,9 @@ msgstr "Configuración de usuario"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -5513,12 +5431,13 @@ msgstr ""
 "<literal>Dir::Cache</literal> contiene las ubicaciones que afectan a la "
 "información de la caché local, como los dos cachés de paquetes "
 "<literal>srcpkgcache</literal> y <literal>pkgcache</literal>, así como a la "
-"ubicación dónde se guardan los ficheros descargados, <literal>Dir::Cache::"
-"archives</literal>. La generación de cachés se puede desactivar dejando sus "
-"nombres como una cadena vacía. Ésto hará que el arranque sea más lento, pero "
-"ahorrará espacio. Habitualmente, es preferible deshabilitar pkgcache en "
-"lugar de srcpkgcache. Al igual que con <literal>Dir::State</literal> el "
-"directorio predeterminado está en <literal>Dir::Cache</literal>"
+"ubicación dónde se guardan los ficheros descargados, "
+"<literal>Dir::Cache::archives</literal>. La generación de cachés se puede "
+"desactivar dejando sus nombres como una cadena vacía. Ésto hará que el "
+"arranque sea más lento, pero ahorrará espacio. Habitualmente, es preferible "
+"deshabilitar pkgcache en lugar de srcpkgcache. Al igual que con "
+"<literal>Dir::State</literal> el directorio predeterminado está en "
+"<literal>Dir::Cache</literal>"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5550,19 +5469,20 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
-"<literal>Dir::Bin</literal> apunta a los programas binarios. <literal>Dir::"
-"Bin::Methods</literal> define la ubicación de los gestores de los métodos y "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal>, <literal>dpkg-source</"
-"literal>, <literal>dpkg-buildpackage</literal> y <literal>apt-cache</"
-"literal> especifican la ubicación de sus respectivos programas."
+"<literal>Dir::Bin</literal> apunta a los programas binarios. "
+"<literal>Dir::Bin::Methods</literal> define la ubicación de los gestores de "
+"los métodos y <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</"
+"literal>, <literal>dpkg-source</literal>, <literal>dpkg-buildpackage</"
+"literal> y <literal>apt-cache</literal> especifican la ubicación de sus "
+"respectivos programas."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5572,10 +5492,10 @@ msgstr ""
 #| "If set, all paths in <literal>Dir::</literal> will be relative to "
 #| "<literal>RootDir</literal>, <emphasis>even paths that are specified "
 #| "absolutely</emphasis>.  So, for instance, if <literal>RootDir</literal> "
-#| "is set to <filename>/tmp/staging</filename> and <literal>Dir::State::"
-#| "status</literal> is set to <filename>/var/lib/dpkg/status</filename>, "
-#| "then the status file will be looked up in <filename>/tmp/staging/var/lib/"
-#| "dpkg/status</filename>."
+#| "is set to <filename>/tmp/staging</filename> and "
+#| "<literal>Dir::State::status</literal> is set to <filename>/var/lib/dpkg/"
+#| "status</filename>, then the status file will be looked up in <filename>/"
+#| "tmp/staging/var/lib/dpkg/status</filename>."
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths will be relative to <literal>RootDir</literal>, "
@@ -5765,9 +5685,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -5873,11 +5793,11 @@ msgid ""
 "<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
 "this script for the brief documentation of these options."
 msgstr ""
-"Los grupos de opciones <literal>APT::Periodic</literal> y <literal>APT::"
-"Archives</literal> configuran el comportamiento de las actualizaciones "
-"periódicas de apt, que se hacen mediante el script <literal>/etc/cron.daily/"
-"apt</literal>. Consulte la cabecera de este script para una breve "
-"documentación de estas opciones."
+"Los grupos de opciones <literal>APT::Periodic</literal> y "
+"<literal>APT::Archives</literal> configuran el comportamiento de las "
+"actualizaciones periódicas de apt, que se hacen mediante el script <literal>/"
+"etc/cron.daily/apt</literal>. Consulte la cabecera de este script para una "
+"breve documentación de estas opciones."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5959,12 +5879,6 @@ msgstr ""
 "Muestra la información relacionada al acceso de las fuentes de "
 "<literal>cdrom://</literal>"
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"Muestra la información relacionada con la descarga de paquetes mediante FTP."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -5996,13 +5910,6 @@ msgstr ""
 "Muestra la información sobre el proceso de acceso a las colecciones de "
 "paquetes almacenadas en CD-ROM."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"Describe el proceso de resolución de dependencias de compilación en &apt-"
-"get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -6092,8 +5999,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "Genera los mensajes de depuración que describen qué paquetes se están "
 "instalando automáticamente para resolver las dependencias. Esto corresponde "
@@ -6110,14 +6017,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "Genera los mensajes de depuración que describen qué paquete se marcará como "
 "mantener/instalar/borrar mientras el solucionador de problemas "
@@ -6126,12 +6033,12 @@ msgstr ""
 "entrada original. El formato de cada línea es <literal>MarkKeep</literal>, "
 "<literal>MarkDelete</literal> o <literal>MarkInstall</literal> seguido de "
 "<literal>package-name &lt;a.b.c -&gt; d.e.f | x.y.z&gt; (sección)</literal> "
-"siendo <literal>a.b.c</literal> la versión actual del paquete, <literal>d.e."
-"f</literal> la versión considerada para instalar y <literal>x.y.z</literal> "
-"una versión nueva, pero no considerada para la instalación (por una "
-"puntuación baja). Las dos últimas se pueden omitir si no hay o si es la "
-"misma versión que la instalada. <literal>sección</literal> es el nombre de "
-"la sección en la que aparece el paquete."
+"siendo <literal>a.b.c</literal> la versión actual del paquete, "
+"<literal>d.e.f</literal> la versión considerada para instalar y "
+"<literal>x.y.z</literal> una versión nueva, pero no considerada para la "
+"instalación (por una puntuación baja). Las dos últimas se pueden omitir si "
+"no hay o si es la misma versión que la instalada. <literal>sección</literal> "
+"es el nombre de la sección en la que aparece el paquete."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6196,8 +6103,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 "Muestra la información de los proveedores extraída de <filename>/etc/apt/"
 "vendors.list</filename>."
@@ -6205,8 +6112,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 
@@ -6546,10 +6453,10 @@ msgid ""
 "replaceable></command> or <command>apt-get upgrade</command> is executed."
 msgstr ""
 "Generalmente, la versión instalada del paquete (prioridad 100) no es tan "
-"reciente como la disponible a través de las fuentes en «&sources-"
-"list;» (prioridad 500 o 990). En este caso, el paquete se actualizará al "
-"ejecutar <command>apt-get install <replaceable>paquete</replaceable></"
-"command> o <command>apt-get upgrade</command>."
+"reciente como la disponible a través de las fuentes en «&sources-list;» "
+"(prioridad 500 o 990). En este caso, el paquete se actualizará al ejecutar "
+"<command>apt-get install <replaceable>paquete</replaceable></command> o "
+"<command>apt-get upgrade</command>."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6665,6 +6572,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6714,8 +6642,8 @@ msgstr ""
 "Una nota de aviso: la palabra clave usada aquí es «<literal>origin</"
 "literal>», el cual se puede usar para coincidir con un nombre de sistema. El "
 "siguiente registro asignará una prioridad alta a todas las versiones "
-"disponibles desde el servidor identificado con el nombre de sistema «ftp.de."
-"debian.org»."
+"disponibles desde el servidor identificado con el nombre de sistema "
+"«ftp.de.debian.org»."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -6981,9 +6909,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7160,9 +7088,9 @@ msgstr "Por ello:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "La versión más reciente disponible del paquete <literal>perl</literal> se "
 "instalará siempre que el número de versión empiece con «<literal>&good-perl;"
@@ -7444,12 +7372,12 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Todos los ficheros <filename>Packages</filename> y <filename>Release</"
 "filename> obtenidos de los recursos en «&sources-list;» se guardan en el "
@@ -7838,6 +7766,16 @@ msgstr ""
 "<literal>Dir::Ignore-Files-Silently</literal>. Si coincide, se omite "
 "silenciosamente."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7873,6 +7811,12 @@ msgid ""
 "multi-architecture support."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -8036,13 +7980,13 @@ msgstr ""
 #: sources.list.5.xml
 #, fuzzy
 #| msgid ""
-#| "<literal>distribution</literal> may also contain a variable, "
-#| "<literal>$(ARCH)</literal> which expands to the Debian architecture (such "
-#| "as <literal>amd64</literal> or <literal>armel</literal>) used on the "
-#| "system. This permits architecture-independent <filename>sources.list</"
-#| "filename> files to be used. In general this is only of interest when "
-#| "specifying an exact path, <literal>APT</literal> will automatically "
-#| "generate a URI with the current architecture otherwise."
+#| "<literal>distribution</literal> may also contain a variable, <literal>$"
+#| "(ARCH)</literal> which expands to the Debian architecture (such as "
+#| "<literal>amd64</literal> or <literal>armel</literal>) used on the system. "
+#| "This permits architecture-independent <filename>sources.list</filename> "
+#| "files to be used. In general this is only of interest when specifying an "
+#| "exact path, <literal>APT</literal> will automatically generate a URI with "
+#| "the current architecture otherwise."
 msgid ""
 "<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
 "literal> which expands to the Debian architecture (such as <literal>amd64</"
@@ -8052,14 +7996,14 @@ msgid ""
 "<literal>APT</literal> will automatically generate a URI with the current "
 "architecture otherwise."
 msgstr ""
-"<literal>distribución</literal> puede contener una variable, "
-"<literal>$(ARCH)</literal>, que se expandirá a la arquitectura de Debian "
-"usada en el sistema (por ejemplo, <literal>amd64</literal> o <literal>armel</"
-"literal>). Esto permite que los ficheros <filename>sources.list</filename> "
-"sean independientes de la arquitectura. En general, esta característica sólo "
-"es de interés si se especifica una ruta completa, de lo contrario "
-"<literal>APT</literal> generará automáticamente una URI con la arquitectura "
-"actual del sistema."
+"<literal>distribución</literal> puede contener una variable, <literal>$"
+"(ARCH)</literal>, que se expandirá a la arquitectura de Debian usada en el "
+"sistema (por ejemplo, <literal>amd64</literal> o <literal>armel</literal>). "
+"Esto permite que los ficheros <filename>sources.list</filename> sean "
+"independientes de la arquitectura. En general, esta característica sólo es "
+"de interés si se especifica una ruta completa, de lo contrario <literal>APT</"
+"literal> generará automáticamente una URI con la arquitectura actual del "
+"sistema."
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
@@ -8128,9 +8072,10 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -8202,11 +8147,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -8309,18 +8255,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -8336,8 +8281,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -8388,6 +8334,35 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8492,47 +8467,8 @@ msgid ""
 "source list."
 msgstr ""
 "El esquema «cdrom» permite a APT utilizar la unidad de CD-ROM local. Utilice "
-"el programa &apt-cdrom; para añadir entradas de un disco óptico a «sources."
-"list»."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-#, fuzzy
-#| msgid ""
-#| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
-#| "behavior is highly configurable; for more information see the &apt-conf; "
-#| "manual page. Please note that an FTP proxy can be specified by using the "
-#| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
-#| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-#| "environment variable and <emphasis>only</emphasis> this environment "
-#| "variable. Proxies using HTTP specified in the configuration file will be "
-#| "ignored."
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"El esquema «ftp» definea un servidor FTP como el archivo de paquetes. El "
-"comportamiento de APT con FTP es muy configurable, para más información "
-"consulte la página de manual de &apt-conf;. Tenga en cuenta que puede "
-"especificar un proxy FTP mediante la variable de entorno <envar>ftp_proxy</"
-"envar>. Es posible especificar un servidor proxy HTTP (los servidores proxy "
-"HTTP normalmente comprenden los URL de tipo FTP) mediante este método y SÓLO "
-"este método. Se ignoran los proxies que utilizan HTTP definidos en el "
-"fichero de configuración."
+"el programa &apt-cdrom; para añadir entradas de un disco óptico a "
+"«sources.list»."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
@@ -8547,20 +8483,6 @@ msgstr ""
 "Es de utilidad para personas que utilizan dispositivos extraíbles, ya que "
 "permite realizar la copia de ficheros con APT."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"El método «rsh/ssh» invoca RSH/SSH para establecer una conexión con una "
-"máquina remota y acceder a los ficheros como un usuario dado. Se recomienda "
-"configurar previamente rhosts o las claves RSA. Las órdenes estándar "
-"<command>find</command> y <command>dd</command> se utilizan para realizar la "
-"transferencia de ficheros desde la máquina remota."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8754,63 +8676,63 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"Utiliza FTP para acceder al archivo de Debian en «ftp.debian.org», debajo "
+"Utiliza HTTPS para acceder al archivo de Debian en «deb.debian.org», debajo "
 "del directorio «debian», y usa sólo la sección «&debian-stable-codename;/"
 "contrib»."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"Utiliza FTP para acceder al archivo de Debian en «ftp.debian.org», debajo "
+"Utiliza HTTPS para acceder al archivo de Debian en «deb.debian.org», debajo "
 "del directorio «debian», y usa sólo la sección unstable/contrib. Si tanto "
 "esta línea como la del ejemplo anterior aparecen en <filename>sources.list</"
-"filename>, se usará sólo una sesión FTP para ambas."
+"filename>, se usará sólo una sesión HTTPS para ambas."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -8942,15 +8864,16 @@ msgstr ""
 "El fichero de plantilla y el script de configuración se escriben en el "
 "directorio temporal definido mediante la opción <option>-t</option> o "
 "<option>--tempdir</option> (<literal>APT::ExtractTemplates::TempDir</"
-"literal>), con un formato de nombre de fichero <filename>paquete.template."
-"XXXXXX</filename> y <filename>paquete.config.XXXXXX</filename>"
+"literal>), con un formato de nombre de fichero "
+"<filename>paquete.template.XXXXXX</filename> y "
+"<filename>paquete.config.XXXXXX</filename>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "El directorio temporal en el que se escribirán los ficheros de plantillas "
 "<command>debconf</command> y los scripts de configuración extraídos. Opción "
@@ -8994,8 +8917,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "Utililza el orden por el campo de índice de fuentes. Opción de "
 "configuración: <literal>APT::SortPkgs::Source</literal>."
@@ -9144,10 +9067,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "La orden <literal>release</literal> genera un fichero «Release» a partir de "
 "un árbol de directorios. Analiza el directorio dado de forma recursiva en "
@@ -9176,15 +9099,16 @@ msgid ""
 "<literal>Description</literal>."
 msgstr ""
 "Los valores para los campos de metadatos adicionales en el fichero «Release» "
-"se toman de las variables correspondientes en <literal>APT::FTPArchive::"
-"Release</literal>, por ejemplo <literal>APT::FTPArchive::Release::Origin</"
-"literal>. Los campos permitidos son: <literal>Origin</literal>, "
-"<literal>Label</literal>, <literal>Suite</literal>, <literal>Version</"
-"literal>, <literal>Codename</literal>, <literal>Date</literal>, "
-"<literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</literal>, "
-"<literal>Acquire-By-Hash</literal>, <literal>Valid-Until</literal>, "
-"<literal>Signed-By</literal>, <literal>Architectures</literal>, "
-"<literal>Components</literal> y <literal>Description</literal>."
+"se toman de las variables correspondientes en "
+"<literal>APT::FTPArchive::Release</literal>, por ejemplo "
+"<literal>APT::FTPArchive::Release::Origin</literal>. Los campos permitidos "
+"son: <literal>Origin</literal>, <literal>Label</literal>, <literal>Suite</"
+"literal>, <literal>Version</literal>, <literal>Codename</literal>, "
+"<literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> y "
+"<literal>Description</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9413,12 +9337,12 @@ msgstr "Sección <literal>TreeDefault</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "Define los valores predeterminados de las secciones <literal>Tree</literal>. "
-"Todas estas variables son variables de sustitución y reemplazan las cadenas "
-"$(DIST), $(SECTION) y $(ARCH) con sus valores respectivos."
+"Todas estas variables son variables de sustitución y reemplazan las cadenas $"
+"(DIST), $(SECTION) y $(ARCH) con sus valores respectivos."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9453,17 +9377,17 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
-"Define la raíz del directorio «.deb». El valor predeterminado es "
-"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
+"Define la raíz del directorio «.deb». El valor predeterminado es <filename>$"
+"(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "Define la raíz del directorio de los paquetes de fuentes. El valor "
 "predeterminado es <filename>$(DIST)/$(SECTION)/source/</filename>"
@@ -9483,15 +9407,15 @@ msgid ""
 "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "source/Sources</filename>"
 msgstr ""
-"Define el fichero «Sources» de salida. El valor predeterminado es "
-"<filename>$(DIST)/$(SECTION)/source/Sources</filename>"
+"Define el fichero «Sources» de salida. El valor predeterminado es <filename>$"
+"(DIST)/$(SECTION)/source/Sources</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "Define el fichero maestro «Translation-en» que contiene las descripciones "
 "largas en el caso de que no se incluyan en el fichero «Packages». El valor "
@@ -9905,8 +9829,8 @@ msgstr ""
 "listado de los ficheros se extraerá también y se almacenará en la base de "
 "datos para su uso posterior. Cuando se usa la orden «generate» esta opción "
 "también permite la creación de cualquier fichero «Contents». Esta activa de "
-"forma predeterminada. Opción de configuración: <literal>APT::FTPArchive::"
-"Contents</literal>."
+"forma predeterminada. Opción de configuración: "
+"<literal>APT::FTPArchive::Contents</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9916,14 +9840,14 @@ msgid ""
 "literal>."
 msgstr ""
 "Selecciona el fichero de fuentes alternativo a usar con la orden "
-"<literal>sources</literal>. Opción de configuración: <literal>APT::"
-"FTPArchive::SourceOverride</literal>."
+"<literal>sources</literal>. Opción de configuración: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "Define los permisos de las bases de datos de la caché como sólo lectura. "
 "Opción de configuración: <literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -9937,10 +9861,10 @@ msgid ""
 "path.  Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
 msgstr ""
 "Hace que las órdenes <literal>packages</literal> y <literal>contents</"
-"literal> sólo acepten aquellos paquetes que coinciden con <literal>*_arch."
-"deb</literal> o <literal>*_all.deb</literal>, en lugar de todos los ficheros "
-"de paquete en la ruta dada. Elemento de configuración: <literal>APT::"
-"FTPArchive::Architecture</literal>."
+"literal> sólo acepten aquellos paquetes que coinciden con "
+"<literal>*_arch.deb</literal> o <literal>*_all.deb</literal>, en lugar de "
+"todos los ficheros de paquete en la ruta dada. Elemento de configuración: "
+"<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10121,16 +10045,16 @@ msgstr "Ejemplos"
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
@@ -10303,16 +10227,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -10336,14 +10261,14 @@ msgstr ""
 #| "store the requested archive files in its cache, which can be used to "
 #| "prevent the proxy from polluting its cache with (big) .deb files."
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "Se proporcionan tres opciones de configuración para el control de la caché "
 "con proxy cachés conformes an HTTP/1.1. <literal>No-Cache</literal> indica "
@@ -10390,8 +10315,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10451,12 +10376,12 @@ msgstr ""
 #| "choose to not conform to the HTTP/1.1 specification."
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "La opción <literal>Acquire::http::Pipeline-Depth</literal> se puede utilizar "
 "para activar HTTP pipelining (RFC 2616 sección 8.1.2.2), que puede "
@@ -10555,9 +10480,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10586,9 +10511,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10634,11 +10560,11 @@ msgstr ""
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -10840,9 +10766,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
@@ -10862,9 +10788,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
 #: apt-transport-mirror.1.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
@@ -11244,6 +11170,16 @@ msgstr ""
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -11422,6 +11358,17 @@ msgstr ""
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -11464,6 +11411,16 @@ msgstr ""
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -11517,8 +11474,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -11640,10 +11597,10 @@ msgstr ""
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -11875,8 +11832,8 @@ msgstr ""
 "<command>apt-get</command> ofrece una forma sencilla de instalar paquetes "
 "desde la línea de órdenes. A diferencia de <command>dpkg</command>, "
 "<command>apt-get</command> no intenta comprender los ficheros «.deb», sino "
-"que funciona con el nombre real del paquete y sólo puede instalar ficheros «."
-"deb» desde una <emphasis>fuente</emphasis>."
+"que funciona con el nombre real del paquete y sólo puede instalar ficheros "
+"«.deb» desde una <emphasis>fuente</emphasis>."
 
 #. type: Content of: <book><chapter><para><footnote><para>
 #: guide.dbk
@@ -11906,13 +11863,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"Des http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Des http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Des http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Leyendo lista de paquetes... Hecho\n"
 "Creando árbol de dependencias... Hecho\n"
@@ -12083,8 +12040,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12096,8 +12052,7 @@ msgstr ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12119,26 +12074,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "La distribución se refiere a la versión de Debian en el archivo, "
 "<emphasis>stable</emphasis> (estable) se refiere a la última versión "
@@ -12696,18 +12656,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Des:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Des:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Des:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Obj http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Des:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Des:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "es:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free Esperando las cabeceras 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13256,17 +13216,284 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> define el proxy predeterminado que utilizar "
+#~ "para los URI de FTP. Utiliza el formato estándar <literal>ftp://[[usuario]"
+#~ "[:contraseña]@]máquina[:puerto]/</literal>. También se puede especificar "
+#~ "un proxy por cada máquina usando la forma "
+#~ "<literal>ftp::Proxy::&lt;máquina&gt;</literal> con la palabra especial "
+#~ "<literal>DIRECT</literal>, que significa que no se use ningún proxy. La "
+#~ "variable de entorno <envar>ftp_proxy</envar> se usará en caso de no "
+#~ "definir ninguna de las opciones anteriores. Para usar un proxy FTP debe "
+#~ "configurar el script <literal>ftp::ProxyLogin</literal> en el fichero de "
+#~ "configuración. Esta entrada define las órdenes a enviar para decirle al "
+#~ "servidor del proxy a qué conectarse. Consulte &configureindex; para un "
+#~ "ejemplo de uso. Las variables de sustitución que representan el "
+#~ "componente URI son <literal>$(PROXY_USER)</literal> <literal>$"
+#~ "(PROXY_PASS)</literal> <literal>$(SITE_USER)</literal> <literal>$"
+#~ "(SITE_PASS)</literal> <literal>$(SITE)</literal> y <literal>$(SITE_PORT)</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "La opción <literal>timeout</literal> define el tiempo máximo de espera "
+#~ "utilizado por el método; este valor se aplica al establecimiento de "
+#~ "conexión y a la recepción de datos."
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "Puede controlar el modo pasivo a través de varias opciones. "
+#~ "Habitualmente, es seguro dejar activado el modo pasivo, y funciona en "
+#~ "casi todos los entornos. Sin embargo algunas situaciones requieren "
+#~ "desactivar el modo pasivo y usar el modo puerto de FTP en su lugar. Esto "
+#~ "se puede hacer globalmente, para conexiones a través de un proxy o para "
+#~ "una máquina en concreto (consulte el ejemplo de fichero de configuración "
+#~ "para ver algunos ejemplos)."
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "Es posible usar un proxy FTP a través de HTTP definiendo la variable de "
+#~ "entorno <envar>ftp_proxy</envar> con un HTTP URL. Para la sintaxis "
+#~ "consulte la explicación anterior del método http. Esto no puede definir "
+#~ "en el fichero de configuración y no se recomienda el uso de FTP por "
+#~ "encima de HTTP debido a su poca eficiencia."
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "La opción <literal>ForceExtended</literal> controla el uso de las órdenes "
+#~ "de RFC 2428 <literal>EPSV</literal> y <literal>EPRT</literal>. De forma "
+#~ "predeterminada es «false», que significa que sólo se usa si el control de "
+#~ "conexión es IPv6. Cambiándolo a «true» fuerza su uso incluso en "
+#~ "conexiones IPv4. Tenga en cuenta que la mayoría de los servidores de FTP "
+#~ "no son compatibles con la RFC 2428."
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr ""
+#~ "Muestra la información relacionada con la descarga de paquetes mediante "
+#~ "FTP."
+
+#, fuzzy
+#~| msgid ""
+#~| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
+#~| "behavior is highly configurable; for more information see the &apt-conf; "
+#~| "manual page. Please note that an FTP proxy can be specified by using the "
+#~| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~| "environment variable and <emphasis>only</emphasis> this environment "
+#~| "variable. Proxies using HTTP specified in the configuration file will be "
+#~| "ignored."
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "El esquema «ftp» definea un servidor FTP como el archivo de paquetes. El "
+#~ "comportamiento de APT con FTP es muy configurable, para más información "
+#~ "consulte la página de manual de &apt-conf;. Tenga en cuenta que puede "
+#~ "especificar un proxy FTP mediante la variable de entorno "
+#~ "<envar>ftp_proxy</envar>. Es posible especificar un servidor proxy HTTP "
+#~ "(los servidores proxy HTTP normalmente comprenden los URL de tipo FTP) "
+#~ "mediante este método y SÓLO este método. Se ignoran los proxies que "
+#~ "utilizan HTTP definidos en el fichero de configuración."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "El método «rsh/ssh» invoca RSH/SSH para establecer una conexión con una "
+#~ "máquina remota y acceder a los ficheros como un usuario dado. Se "
+#~ "recomienda configurar previamente rhosts o las claves RSA. Las órdenes "
+#~ "estándar <command>find</command> y <command>dd</command> se utilizan para "
+#~ "realizar la transferencia de ficheros desde la máquina remota."
+
+#, fuzzy
+#~| msgid "APT key management utility"
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "Herramienta para gestionar las claves de APT"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> sirve para gestionar la lista de claves que "
+#~ "APT usa para autenticar paquetes. Los paquetes autenticados mediante "
+#~ "estas claves se consideran de confianza."
+
+#~ msgid "Commands"
+#~ msgstr "Órdenes"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "Añade una nueva clave a la lista claves de confianza. La clave se lee "
+#~ "desde el fichero dado con el parámetro &synopsis-param-filename; o desde "
+#~ "la entrada estándar si el nombre de fichero se define como <literal>-</"
+#~ "literal>."
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "Elimina una clave de la lista de claves de confianza."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr "Muestra la clave &synopsis-param-keyid; por la salida estándar."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "Devuelve todas las claves de confianza por la salida estándar."
+
+#, fuzzy
+#~| msgid "List trusted keys."
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "Lista las claves de confianza."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "Actualiza el registro de claves local con el registro de claves del "
+#~ "archivo y elimina del registro local las claves de archivo que ya no son "
+#~ "válidas. El registro de claves del archivo se encuentra en el paquete "
+#~ "<literal>archive-keyring</literal> de su distribución; esto es, el "
+#~ "paquete &keyring-package; en &keyring-distro;."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "Realiza una actualización similar a la realizada por la orden "
+#~ "<command>update</command>, pero obtiene el registro de claves de archivo "
+#~ "de una dirección URI, y la valida con la clave maestra. Requiere &wget;, "
+#~ "y una construcción de APT configurada con un servidor de dónde obtener la "
+#~ "clave maestra con la que validar. En Debian, APT no es compatible con "
+#~ "esta orden, y en su lugar depende de la orden <command>update</command>, "
+#~ "pero la versión de APT para Ubuntu sí es compatible."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Tenga en cuenta que las opciones se deben definir antes de las órdenes "
+#~ "descritas en el sección anterior."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Con esta opción es posible definir un fichero de registro de claves "
+#~ "específico sobre el que la orden debe actuar. Por omisión, la orden se "
+#~ "ejecuta con el fichero <filename>trusted.gpg</filename> así como con los "
+#~ "fragmentos en el directorio <filename>trusted.gpg.d</filename>, aunque "
+#~ "<filename>trusted.gpg</filename> es el registro de claves principal, esto "
+#~ "es, por ejemplo, que las claves nuevas se añaden a este fichero."
+
+#, fuzzy
+#~| msgid "Operation"
+#~ msgid "Deprecation"
+#~ msgstr "Operación"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#, fuzzy
+#~| msgid ""
+#~| "<command>apt-key</command> is the program that manages the list of keys "
+#~| "used by apt. It can be used to add or remove keys, although an "
+#~| "installation of this release will automatically contain the default "
+#~| "Debian archive signing keys used in the Debian package repositories."
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "<command>apt-key</command> es el programa que gestiona la lista de claves "
+#~ "usadas por apt. Se puede usar para añadir o eliminar claves, aunque la "
+#~ "instalación de esta versión contiene automáticamente las claves "
+#~ "predeterminadas del archivo de Debian que se usan en los repositorios de "
+#~ "paquetes de Debian."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "Para poder añadir una clave nueva primero necesita descargarla (debería "
+#~ "asegurarse de que está usando un canal de comunicación seguro cuando la "
+#~ "consiga), añádala con <command>apt-key</command> y ejecute <command>apt-"
+#~ "get update</command> para que apt descargue y compruebe los ficheros "
+#~ "<filename>InRelease</filename> o <filename>Release.gpg</filename> de los "
+#~ "archivos de paquetes configurados."
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr ""
+#~ "Describe el proceso de resolución de dependencias de compilación en &apt-"
+#~ "get;."
+
 #~ msgid "Regular expressions and &glob; syntax"
 #~ msgstr "Expresiones regulares y sintaxis &glob;"
 
 #~ msgid ""
 #~ "<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
-#~ "URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:"
-#~ "port]/</literal>.  Per host proxies can also be specified by using the "
-#~ "form <literal>http::Proxy::&lt;host&gt;</literal> with the special "
-#~ "keyword <literal>DIRECT</literal> meaning to use no proxies. If no one of "
-#~ "the above settings is specified, <envar>http_proxy</envar> environment "
-#~ "variable will be used."
+#~ "URIs. It is in the standard form of <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>http::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>http_proxy</envar> "
+#~ "environment variable will be used."
 #~ msgstr ""
 #~ "<literal>http::Proxy</literal> define el proxy predeterminado que "
 #~ "utilizar para direcciones HTTP URI. Utiliza el formato estándar "
@@ -13297,39 +13524,40 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 #~ "info about trusted certificates.  <literal>&lt;host&gt;::CaInfo</literal> "
 #~ "is the corresponding per-host option.  <literal>Verify-Peer</literal> "
 #~ "boolean suboption determines whether or not the server's host certificate "
-#~ "should be verified against trusted certificates.  <literal>&lt;host&gt;::"
-#~ "Verify-Peer</literal> is the corresponding per-host option.  "
-#~ "<literal>Verify-Host</literal> boolean suboption determines whether or "
-#~ "not the server's hostname should be verified.  <literal>&lt;host&gt;::"
-#~ "Verify-Host</literal> is the corresponding per-host option.  "
-#~ "<literal>SslCert</literal> determines what certificate to use for client "
-#~ "authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
-#~ "corresponding per-host option.  <literal>SslKey</literal> determines what "
-#~ "private key to use for client authentication. <literal>&lt;host&gt;::"
-#~ "SslKey</literal> is the corresponding per-host option.  "
-#~ "<literal>SslForceVersion</literal> overrides default SSL version to use.  "
-#~ "It can contain either of the strings '<literal>TLSv1</literal>' or "
-#~ "'<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
+#~ "should be verified against trusted certificates.  "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-"
+#~ "host option.  <literal>Verify-Host</literal> boolean suboption determines "
+#~ "whether or not the server's hostname should be verified.  "
+#~ "<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-"
+#~ "host option.  <literal>SslCert</literal> determines what certificate to "
+#~ "use for client authentication. <literal>&lt;host&gt;::SslCert</literal> "
+#~ "is the corresponding per-host option.  <literal>SslKey</literal> "
+#~ "determines what private key to use for client authentication. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+#~ "option.  <literal>SslForceVersion</literal> overrides default SSL version "
+#~ "to use.  It can contain either of the strings '<literal>TLSv1</literal>' "
+#~ "or '<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
 #~ "literal> is the corresponding per-host option."
 #~ msgstr ""
 #~ "La subopción <literal>CaInfo</literal> define la ubicación del fichero "
-#~ "que guarda la información sobre certificados de confianza. <literal>&lt;"
-#~ "host&gt;::CaInfo</literal> es la opción correspondiente para cada "
-#~ "servidor. La subopción booleana <literal>Verify-Peer</literal> define si "
-#~ "se debe comprobar el certificado del servidor con certificados de "
-#~ "confianza. <literal>&lt;host&gt;::Verify-Peer</literal> es la opción "
+#~ "que guarda la información sobre certificados de confianza. "
+#~ "<literal>&lt;host&gt;::CaInfo</literal> es la opción correspondiente para "
+#~ "cada servidor. La subopción booleana <literal>Verify-Peer</literal> "
+#~ "define si se debe comprobar el certificado del servidor con certificados "
+#~ "de confianza. <literal>&lt;host&gt;::Verify-Peer</literal> es la opción "
 #~ "correspondiente para cada servidor. La subopción booleana <literal>Verify-"
 #~ "Host</literal> define si se debe comprobar el «hostname» del servidor. "
 #~ "<literal>&lt;host&gt;::Verify-Host</literal> es la opción correspondiente "
 #~ "para cada servidor. <literal>SslCert</literal> define el certificado que "
-#~ "utilizar para la autenticación del cliente. <literal>&lt;host&gt;::"
-#~ "SslCert</literal> es la opción correspondiente para cada servidor. "
-#~ "<literal>SslKey</literal> define la clave privada que utilizar para la "
-#~ "autenticación del cliente. <literal>&lt;host&gt;::SslKey</literal> es la "
-#~ "opción correspondiente para cada servidor. <literal>SslForceVersion</"
-#~ "literal> sustituye la versión predeterminada de SSL que utilizar. Se "
-#~ "admiten las cadenas «<literal>TLSv1</literal>» o «<literal>SSLv3</"
-#~ "literal>». <literal>&lt;host&gt;::SslForceVersion</literal> es la opción "
+#~ "utilizar para la autenticación del cliente. "
+#~ "<literal>&lt;host&gt;::SslCert</literal> es la opción correspondiente "
+#~ "para cada servidor. <literal>SslKey</literal> define la clave privada que "
+#~ "utilizar para la autenticación del cliente. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> es la opción correspondiente para "
+#~ "cada servidor. <literal>SslForceVersion</literal> sustituye la versión "
+#~ "predeterminada de SSL que utilizar. Se admiten las cadenas "
+#~ "«<literal>TLSv1</literal>» o «<literal>SSLv3</literal>». "
+#~ "<literal>&lt;host&gt;::SslForceVersion</literal> es la opción "
 #~ "correspondiente para cada servidor."
 
 #~ msgid ""
@@ -13511,14 +13739,15 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 #~ "Los paquetes esenciales (y sus dependencias) se deberían configurar "
 #~ "inmediatamente después de desempaquetarlos. Se recomienda realizarlo lo "
 #~ "más pronto posible en el proceso de actualización ya que actualmente "
-#~ "estas invocaciones de configuración también necesitan <literal>DPkg::"
-#~ "TriggersPending</literal>, que ejecuta varios disparadores (que puede que "
-#~ "no sean necesarios). Los esenciales tienen, de forma predeterminada, una "
-#~ "puntuación alta pero la opción inmediata es relativamente baja (un "
-#~ "paquete que tenga pre-dependencias tiene una puntuación más alta). Puede "
-#~ "cambiar la puntuación mediante esta opción y las otras del mismo grupo. "
-#~ "El siguiente ejemplo muestra la configuración con los valores "
-#~ "predeterminados. <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ "estas invocaciones de configuración también necesitan "
+#~ "<literal>DPkg::TriggersPending</literal>, que ejecuta varios disparadores "
+#~ "(que puede que no sean necesarios). Los esenciales tienen, de forma "
+#~ "predeterminada, una puntuación alta pero la opción inmediata es "
+#~ "relativamente baja (un paquete que tenga pre-dependencias tiene una "
+#~ "puntuación más alta). Puede cambiar la puntuación mediante esta opción y "
+#~ "las otras del mismo grupo. El siguiente ejemplo muestra la configuración "
+#~ "con los valores predeterminados. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
 
 #~ msgid "List fingerprints of trusted keys."
 #~ msgstr "Lista las huellas digitales de las claves de confianza."
@@ -13636,21 +13865,21 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 
 #~ msgid ""
 #~ "No action; perform a simulation of events that would occur but do not "
-#~ "actually change the system.  Configuration Item: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "actually change the system.  Configuration Item: "
+#~ "<literal>APT::Get::Simulate</literal>."
 #~ msgstr ""
 #~ "No realiza ninguna acción, simula lo que hubiese ocurrido pero sin hacer "
-#~ "cambios reales en el sistema. Opción de configuración: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "cambios reales en el sistema. Opción de configuración: "
+#~ "<literal>APT::Get::Simulate</literal>."
 
 #~ msgid ""
 #~ "Simulated runs performed as a user will automatically deactivate locking "
-#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
-#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
-#~ "notice will also be displayed indicating that this is only a simulation. "
-#~ "Runs performed as root do not trigger either NoLocking or the notice - "
-#~ "superusers should know what they are doing without further warnings from "
-#~ "<literal>apt-get</literal>."
+#~ "(<literal>Debug::NoLocking</literal>), and if the option "
+#~ "<literal>APT::Get::Show-User-Simulation-Note</literal> is set (as it is "
+#~ "by default) a notice will also be displayed indicating that this is only "
+#~ "a simulation. Runs performed as root do not trigger either NoLocking or "
+#~ "the notice - superusers should know what they are doing without further "
+#~ "warnings from <literal>apt-get</literal>."
 #~ msgstr ""
 #~ "Las simulaciones de ejecución realizadas por un usuario desactivan el "
 #~ "bloqueo de forma automática (<literal>Debug::NoLocking</literal>), y si "
@@ -13820,8 +14049,8 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 #~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~| "B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgid ""
-#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
-#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), "
+#~ "B<sources.list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgstr ""
 #~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~ "B<apt_preferences>(5), B<apt-secure>(8)"
@@ -13840,12 +14069,12 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos."
 #~ msgstr "Esta página de manual ni siquiera está iniciada."
 
 #~ msgid ""
-#~ "See E<lt>http://bugs.debian.org/aptE<gt>.  If you wish to report a bug in "
-#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "See E<lt>https://bugs.debian.org/aptE<gt>.  If you wish to report a bug "
+#~ "in B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
 #~ "B<reportbug>(1)  command."
 #~ msgstr ""
-#~ "Consulte E<lt>http://bugs.debian.org/aptE<gt>. Si desea enviar un informe "
-#~ "de error sobre B<apt>, por favor lea I</usr/share/doc/debian/bug-"
+#~ "Consulte E<lt>https://bugs.debian.org/aptE<gt>. Si desea enviar un "
+#~ "informe de error sobre B<apt>, por favor lea I</usr/share/doc/debian/bug-"
 #~ "reporting.txt> o use la orden B<reportbug>(1)."
 
 #~ msgid "AUTHOR"
diff --git a/doc/po/fr.po b/doc/po/fr.po
index ee33fb1..e8b7643 100644
--- a/doc/po/fr.po
+++ b/doc/po/fr.po
@@ -1,5 +1,5 @@
 # Translation of apt package man pages
-# Copyright (C) 2000-2018 Debian French l10n team <debian-l10n-french@lists.debian.org>
+# Copyright (C) 2000-2024 Debian French l10n team <debian-l10n-french@lists.debian.org>
 # This file is distributed under the same license as the apt package.
 #
 # Translators:
@@ -7,21 +7,22 @@
 # Jérôme Marant, 2000.
 # Philippe Batailler, 2005.
 # Christian Perrier <bubulle@debian.org>, 2009, 2010, 2011, 2012, 2013.
-# Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, 2014, 2017-2019.
+# bubu <bubub@no-log.org>, 2023.
+# Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, 2014, 2017-2024.
 msgid ""
 msgstr ""
-"Project-Id-Version: apt-doc 1.8.0\n"
+"Project-Id-Version: apt-doc 2.9.14\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
-"PO-Revision-Date: 2019-05-01 17:00+0100\n"
+"POT-Creation-Date: 2025-02-07 20:17+0000\n"
+"PO-Revision-Date: 2024-11-26 11:35+0100\n"
 "Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 22.12.3\n"
 
 #. type: Plain text
 #: apt.ent
@@ -64,7 +65,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -75,7 +76,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bogues</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>Page des bogues d'APT</ulink>. \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>Page des bogues d'APT</ulink>. \n"
 "   Si vous souhaitez signaler un bogue à propos d'APT, veuillez lire\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ou utiliser\n"
 "   la commande &reportbug;.\n"
@@ -147,6 +148,27 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>Afficher les messages d'audit (et d'avertissement). Cela annule\n"
+"      l'option mode silencieux, mais seulement pour les messages d'avertissement, pas\n"
+"      pour ceux de progression.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -166,10 +188,12 @@ msgstr ""
 "     <varlistentry>\n"
 "      <term><option>-c</option></term>\n"
 "      <term><option>--config-file</option></term>\n"
-"     <listitem><para>Fichier de configuration ; indique le fichier de configuration à utiliser. \n"
-"     Le programme lira le fichier de configuration par défaut puis le fichier indiqué ici. \n"
-"     Si les réglages de configuration doivent être établis avant l'analyse des fichiers\n"
-"     de configuration par défaut, un fichier peut être indiqué avec la variable d'environnement <envar>APT_CONFIG</envar>.     Veuillez consulter &apt-conf; pour des informations sur la syntaxe d'utilisation.\n"
+"     <listitem><para>Fichier de configuration ; indique le fichier de configuration à\n"
+"      utiliser. Le programme lira le fichier de configuration par défaut puis le fichier\n"
+"      indiqué ici. Si les réglages de configuration doivent être établis avant l'analyse\n"
+"      des fichiers de configuration par défaut, un fichier peut être indiqué avec la\n"
+"      variable d'environnement<envar>APT_CONFIG</envar>. Veuillez consulter &apt-conf;\n"
+"      pour des informations sur la syntaxe d'utilisation.\n"
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
@@ -188,7 +212,6 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
-"\">\n"
 msgstr ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -200,6 +223,33 @@ msgstr ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"     <listitem><para>Active ou désactive les couleurs. Elles sont activées par défaut sur\n"
+"      les terminaux pris en charge pour &apt; et peuvent aussi être désactivées avec les\n"
+"      variables d'environnement <envar>NO_COLOR</envar> ou <envar>APT_NO_COLOR</envar>, ou\n"
+"      configurées plus tard par l'option et le champ d'action de configuration\n"
+"      <option>APT::Color</option>. Consulter &apt-conf; pour plus d’informations.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 
 #. type: Plain text
@@ -220,11 +270,12 @@ msgstr ""
 "<!-- Should be used within the option section of the text to\n"
 "     put in the blurb about -h, -v, -c and -o -->\n"
 "<!ENTITY apt-cmdblurb \"\n"
-"   <para>Toutes les options de la ligne de commande peuvent être définies dans le fichier de configuration, \n"
-"   les descriptions indiquant l'option de configuration concernée. Pour les options\n"
-"   booléennes, vous pouvez inverser les réglages du fichiers de configuration avec \n"
+"   <para>Toutes les options de la ligne de commande peuvent être définies dans\n"
+"   le fichier de configuration, les descriptions indiquant l'option de\n"
+"   configuration concernée. Pour les options booléennes, vous pouvez\n"
+"   outrepasser les réglages du fichier de configuration avec\n"
 "   <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
-"   et d'autres variantes analogues.\n"
+"   ou d'autres variations.\n"
 "   </para>\n"
 "\">\n"
 
@@ -256,7 +307,7 @@ msgid ""
 msgstr ""
 "     <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
 "     <listitem><para>Fragments du fichier de configuration d'APT.\n"
-"     Élément de configuration : <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+"     Élément de configuration : <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
 "     </varlistentry>\n"
 "\">\n"
 
@@ -309,7 +360,9 @@ msgstr ""
 "<!ENTITY file-preferences \"\n"
 "     <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
 "     <listitem><para>Fichier des préférences.\n"
-"     C'est dans ce fichier qu'on peut faire de l'épinglage (pinning) c'est-à-dire, choisir d'obtenir des paquets d'une source distincte ou d'une distribution différente.\n"
+"     C'est dans ce fichier qu'on peut faire de l'épinglage (pinning) \n"
+"     c'est-à-dire, choisir d'obtenir des paquets d'une source distincte ou \n"
+"     d'une distribution différente.\n"
 "     Élément de configuration : <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
 "     </varlistentry>\n"
 
@@ -374,7 +427,8 @@ msgid ""
 msgstr ""
 "<!ENTITY file-statelists \"\n"
 "     <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
-"     <listitem><para>Zone de stockage pour les informations qui concernent chaque ressource de paquet spécifiée dans &sources-list;\n"
+"     <listitem><para>Zone de stockage pour les informations qui concernent chaque ressource\n"
+"     de paquet spécifiée dans &sources-list;\n"
 "     Élément de configuration : <literal>Dir::State::Lists</literal>.</para></listitem>\n"
 "     </varlistentry>\n"
 
@@ -406,20 +460,13 @@ msgid ""
 msgstr ""
 "<!ENTITY file-trustedgpg \"\n"
 "     <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
-"     <listitem><para>Porte-clés des clés de confiance locales. Les nouvelles clés y seront ajoutées.\n"
+"     <listitem><para>Trousseau des clés de confiance locales. Les nouvelles clés y seront ajoutées.\n"
 "     Élément de configuration : <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
 "     </varlistentry>\n"
 
 #. type: Plain text
 #: apt.ent
-#, fuzzy, no-wrap
-#| msgid ""
-#| "     <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
-#| "     <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
-#| "     be stored here (by other packages or the administrator).\n"
-#| "     Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
-#| "     </varlistentry>\n"
-#| "\">\n"
+#, no-wrap
 msgid ""
 "     <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
 "     <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
@@ -433,10 +480,16 @@ msgid ""
 "\">\n"
 msgstr ""
 "     <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
-"     <listitem><para>Fragments de fichiers pour les clés de signatures sûres. Des fichiers\n"
-"     supplémentaires peuvent être placés à cet endroit (par des paquets ou par l'administrateur).\n"
+"     <listitem><para>Fragments de fichier pour les clés de signatures de confiance.\n"
+"     Des trousseaux supplémentaires peuvent être placés à cet endroit (par d'autres\n"
+"     paquets ou par l'administrateur).\n"
 "     Élément de configuration : <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
 "     </varlistentry>\n"
+"     <varlistentry><term><filename>/etc/apt/keyrings/</filename></term>\n"
+"     <listitem><para>Emplacement où stocker des trousseaux supplémentaires à utiliser avec\n"
+"     <literal>Signed-By</literal>.\n"
+"     </para></listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 
 #. type: Plain text
@@ -482,7 +535,8 @@ msgid ""
 msgstr ""
 "<!ENTITY translation-holder \"\n"
 "     Jérôme Marant, Philippe Batailler, Christian Perrier <email>bubulle@debian.org</email> (2000, 2005, 2009, 2010),\n"
-"     Équipe de traduction francophone de Debian <email>debian-l10n-french@lists.debian.org</email>\n"
+"     bubu et Jean-Pierre Giraud <email>jean-pierregiraud@neuf.fr</email> (2004, 2017-2024) et \n"
+"     l'équipe de traduction francophone de Debian <email>debian-l10n-french@lists.debian.org</email>\n"
 "\">\n"
 
 #. type: Plain text
@@ -509,8 +563,9 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr "<!ENTITY synopsis-config-string \"chaîne_de_configuration\">"
 
 #. type: Plain text
@@ -523,8 +578,8 @@ msgstr "<!ENTITY synopsis-config-file \"fichier_de_configuration\">"
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr "<!ENTITY synopsis-target-release \"publication_cible\">"
 
@@ -561,13 +616,13 @@ msgstr "<!ENTITY synopsis-prefix \"préfixe\">"
 msgid ""
 "<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
 "awesome --> <!ENTITY synopsis-regex \"regex\">"
-msgstr "<!ENTITY synopsis-regex \"expression_régulière\">"
+msgstr "<!ENTITY synopsis-regex \"expression_rationnelle\">"
 
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr "<!ENTITY synopsis-cdrom-mount \"point_de_montage_CD-ROM\">"
 
 #. type: Plain text
@@ -615,26 +670,18 @@ msgid ""
 "generate section --> <!ENTITY synopsis-section \"section\">"
 msgstr "<!ENTITY synopsis-section \"section\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr "<!ENTITY synopsis-keyid \"id_de_clé\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -644,12 +691,11 @@ msgid "command-line interface"
 msgstr "interface en ligne de commande"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Description"
 
@@ -718,6 +764,15 @@ msgstr ""
 "nécessite la suppression d'un paquet installé, la mise à jour n'est pas "
 "réalisée."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+"Quand un paquet est fourni comme argument, le paquet sera installé avant "
+"l'action de mise à niveau."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -726,11 +781,11 @@ msgid ""
 "as a whole."
 msgstr ""
 "La commande <literal>full-upgrade</literal> remplit la même fonction que "
-"upgrade mais supprimera des paquets actuellement installés si cela est "
+"upgrade, mais supprimera des paquets actuellement installés si cela est "
 "nécessaire pour mettre à jour le système dans son ensemble."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -745,7 +800,7 @@ msgstr ""
 "La commande réalise l'action requise sur un ou plusieurs paquets spécifiés "
 "avec &regex;, &glob; ou avec la correspondance exacte. Les actions requises "
 "peuvent être remplacées pour certains paquets en ajoutant un plus (+) au nom "
-"du paquet pour l'installer et ou un moins (-) pour le supprimer."
+"du paquet pour l'installer ou un moins (-) pour le supprimer."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
@@ -795,7 +850,7 @@ msgid ""
 "now no longer needed as dependencies changed or the package(s)  needing them "
 "were removed in the meantime."
 msgstr ""
-"La commande <literal>autoremove</literal>, supprime les paquets installés "
+"La commande <literal>autoremove</literal> supprime les paquets installés "
 "automatiquement dans le but de satisfaire les dépendances d'autres paquets "
 "et qui ne sont plus nécessaires parce que les dépendances ont changé ou "
 "parce que le ou les paquets ont été supprimés entre-temps."
@@ -823,6 +878,9 @@ msgid ""
 "Depends. It also handles conflicts, by prefixing an argument with "
 "<literal>\"Conflicts: \"</literal>."
 msgstr ""
+"L'option <option>satisfy</option> satisfait les chaînes de dépendances comme "
+"utilisées par Build-Depends. Elle gère également les conflits en préfixant "
+"un argument par <literal>\"Conflicts: \"</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
@@ -830,6 +888,8 @@ msgid ""
 "Example: <literal>apt satisfy \"foo, bar (>= 1.0)\" \"Conflicts: baz, "
 "fuzz\"</literal>"
 msgstr ""
+"Example: <literal>apt satisfy \"toto, truc (>= 1.0)\" \"Conflicts: machin, "
+"bidule\"</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt.8.xml
@@ -871,18 +931,19 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
-"La commande <literal>list</literal> est à peu près semblable à la commande "
+"La commande <option>list</option> est à peu près semblable à la commande "
 "<command>dpkg-query --list</command> dans la mesure où elle peut afficher "
 "une liste de paquets qui satisfont à certains critères. Elle gère les motifs "
-"&glob; pour la correspondance des noms de paquets ainsi que des options pour "
-"afficher les versions installées <option>--installed</option>, pouvant être "
-"mises à jour <option>--upgradeable</option>, ou toutes les versions "
-"disponibles <option>--all-versions</option>."
+"&glob; pour la correspondance des noms de paquets, les motifs &apt-"
+"patterns;, ainsi que des options pour afficher les versions installées "
+"<option>--installed</option>, pouvant être mises à jour <option>--"
+"upgradeable</option>, ou toutes les versions disponibles <option>--all-"
+"versions</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt.8.xml
@@ -899,6 +960,16 @@ msgstr ""
 "&sources-list; avec votre éditeur de texte préféré et fournit des "
 "vérifications de sécurité de base."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-cache;)"
+msgstr "(résumé dans &apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-get;)"
+msgstr "(résumé dans &apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -929,7 +1000,7 @@ msgid ""
 "possible."
 msgstr ""
 "Toutes les fonctionnalités d'&apt; sont aussi proposées dans les outils "
-"dédiés d'APT tels que &apt-get; ou &apt-cache; &apt; modifie seulement la "
+"dédiés d'APT tels que &apt-get; ou &apt-cache;. &apt; modifie seulement la "
 "valeur par défaut de certaines options (voir &apt-conf; et en particulier le "
 "champ d'action Binary). Aussi vous devriez préférer l'utilisation de ces "
 "commandes (éventuellement avec certaines options complémentaires activées) "
@@ -937,22 +1008,24 @@ msgstr ""
 "compatibilité ascendante."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Voir aussi"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, le guide "
-"d'APT dans &guidesdir;, &apt-preferences;, le « HOWTO » d'APT."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, le guide d'APT dans &guidesdir;, &apt-preferences;, le « HOWTO » "
+"d'APT."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -974,7 +1047,7 @@ msgstr ""
 #: apt-get.8.xml
 msgid "APT package handling utility -- command-line interface"
 msgstr ""
-"Utilitaire APT pour la gestion des paquets -- interface en ligne de commande."
+"Utilitaire APT pour la gestion des paquets – interface en ligne de commande"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -1013,16 +1086,16 @@ msgid ""
 "as the size of the package files cannot be known in advance."
 msgstr ""
 "La commande <literal>update</literal> permet de resynchroniser un fichier "
-"d'index répertoriant les paquets disponibles et sa source. Ces fichiers sont "
-"récupérés aux endroits spécifiés dans <filename>/etc/apt/sources.list</"
-"filename>. Ainsi, lorsqu'on utilise une archive Debian, cette commande "
-"récupère les fichiers <filename>Packages.gz</filename> et les analyse de "
-"manière à rendre disponibles les informations concernant les nouveaux "
-"paquets et les paquets mis à jour. On devrait toujours exécuter une commande "
-"<literal>update</literal> avant les commandes <literal>upgrade</literal> ou "
-"<literal>dist-upgrade</literal>. Veuillez noter que l'indicateur de "
-"progression d'ensemble peut être imprécis puisque la taille de ces fichiers "
-"ne peut être connue à l'avance."
+"d'index répertoriant les paquets disponibles à partir de leurs sources. Ces "
+"fichiers sont récupérés aux endroits spécifiés dans <filename>/etc/apt/"
+"sources.list</filename>. Ainsi, lorsqu'on utilise une archive Debian, cette "
+"commande récupère les fichiers <filename>Packages.gz</filename> et les "
+"analyse de manière à rendre disponibles les informations concernant les "
+"nouveaux paquets et les paquets mis à jour. On devrait toujours exécuter une "
+"commande <literal>update</literal> avant les commandes <literal>upgrade</"
+"literal> ou <literal>dist-upgrade</literal>. Veuillez noter que l'indicateur "
+"de progression d'ensemble peut être imprécis puisque la taille des fichiers "
+"de paquet ne peut être connue à l'avance."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1071,7 +1144,7 @@ msgstr ""
 "des conflits et il essaye, quand c'est nécessaire, de mettre à niveau les "
 "paquets les plus importants avant les paquets les moins importants. Le "
 "fichier <filename>/etc/apt/sources.list</filename> contient une liste de "
-"sources où récupérer les paquets désirés. Voyez aussi &apt-preferences; pour "
+"sources où récupérer les paquets désirés. Voir aussi &apt-preferences; pour "
 "un mécanisme de remplacement des paramètres généraux pour certains paquets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1205,6 +1278,9 @@ msgid ""
 "in &apt;, except for anchored expressions, and will be removed from &apt-"
 "get; in a future version. Use &apt-patterns; instead."
 msgstr ""
+"Le repli vers les expressions rationnelles est obsolète dans APT 2.0 et a "
+"été supprimé de &apt;, sauf pour les expressions ancrées, et sera supprimé "
+"d'&apt-get; dans une version future. Utiliser &apt-patterns; à la place."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1257,9 +1333,10 @@ msgstr ""
 "récupère des paquets source. APT examine les paquets disponibles pour "
 "choisir le paquet source à récupérer. Il télécharge ensuite dans le "
 "répertoire courant la version la plus récente du paquet, définie par rapport "
-"à la distribution par défaut établie soit avec l'option <literal>APT::"
-"Default-Release</literal>, soit avec l'option <option>-t</option> ou soit "
-"par paquet avec la syntaxe <literal>paquet/version</literal> si possible."
+"à la distribution par défaut établie soit avec l'option "
+"<literal>APT::Default-Release</literal>, soit avec l'option <option>-t</"
+"option> ou soit par paquet avec la syntaxe <literal>paquet/version</literal> "
+"si possible."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1363,6 +1440,12 @@ msgid ""
 "with <literal>\"Conflicts: \"</literal> to unsatisfy the dependency string. "
 "Multiple strings of the same type can be specified."
 msgstr ""
+"<literal>satisfy</literal> fait qu'apt-get satisfait les chaînes de "
+"dépendance données. Les chaînes de dépendance peuvent avoir des profils de "
+"construction et une liste de restrictions d'architecture comme dans les "
+"dépendances de construction. Elles peuvent de façon optionnelle être "
+"préfixées par <literal>\"Conflicts: \"</literal> pour ne pas satisfaire la "
+"chaîne de dépendance. Plusieurs chaînes du même type peuvent être indiquées."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1370,12 +1453,16 @@ msgid ""
 "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (&gt;&gt; "
 "1.0) | bar (= 2.0), moo\"</literal>"
 msgstr ""
+"Exemple : <literal>apt-get satisfy \"toto\" \"Conflicts: truc\" \"machin "
+"(&gt;&gt; 1.0) | bruc (= 2.0), moo\"</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "The legacy operator '&lt;/&gt;' is not supported, use '&lt;=/&gt;=' instead."
 msgstr ""
+"L'ancien opérateur « &lt;/&gt; » n'est plus pris en charge, utilisez à la "
+"place « &lt;=/&gt;= »."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1388,16 +1475,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "<literal>download</literal> will download the given binary package into "
-#| "the current directory."
 msgid ""
 "<literal>download</literal> will download the given binary package into the "
 "current directory. The authenticity of the package data is ensured as usual."
 msgstr ""
-"<literal>download</literal> télécharge le fichier binaire indiqué dans le "
-"répertoire courant."
+"<literal>download</literal> télécharge le paquet binaire indiqué dans le "
+"répertoire courant. L'authenticité des données du paquet est assurée de la "
+"manière habituelle."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1415,12 +1499,12 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-get.8.xml
 msgid "(and the"
-msgstr "(et"
+msgstr "(et l'alias "
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-get.8.xml
 msgid "alias since 1.1)"
-msgstr "l'alias depuis la version 1.1)"
+msgstr "depuis la version 1.1)"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1436,11 +1520,31 @@ msgstr ""
 "Tout comme <literal>clean</literal>, <literal>autoclean</literal> nettoie le "
 "dépôt local des paquets récupérés. La différence est qu'il supprime "
 "uniquement les paquets qui ne peuvent plus être téléchargés et qui sont "
-"inutiles.  On peut ainsi contrôler la taille de ce cache sur une longue "
-"période.  Tant qu'elle n'est pas activée, l'option de configuration "
+"inutiles. On peut ainsi contrôler la taille de ce cache sur une longue "
+"période. Tant qu'elle n'est pas activée, l'option de configuration "
 "<literal>APT::Clean-Installed</literal> empêche la suppression de paquets "
 "installés."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr "l'alias)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+"<literal>distclean</literal> supprime tous les fichiers dans "
+"<filename>&statedir;/lists</filename> sauf <filename>Release</filename> "
+"<filename>InRelease</filename> et <filename>Release.gpg</filename>. Cela "
+"peut être utilisé par exemple lors de la finalisation des images distribuées "
+"aux utilisateurs. Les fichiers Release sont conservés pour des raisons de "
+"sécurité pour éviter divers types d'attaque."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1459,6 +1563,9 @@ msgid ""
 "removes configuration files. This is a shortcut for <literal>autoremove --"
 "purge</literal>."
 msgstr ""
+"Identique à <literal>autoremove</literal>, mais <literal>autopurge</literal> "
+"supprime aussi les fichiers de configuration. C'est un raccourci pour "
+"<literal>autoremove --purge</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1545,16 +1652,16 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Correction ; cette option demande de réparer un système où existent des "
-"dépendances défectueuses. Utilisée avec install ou remove, elle peut exclure "
-"un paquet pour permettre de déduire une solution viable. Tout paquet "
+"dépendances cassées. Utilisée avec « install » ou « remove », elle peut "
+"exclure un paquet pour permettre de déduire une solution viable. Tout paquet "
 "spécifié doit complètement corriger le problème. Cette option est "
 "quelquefois nécessaire lorsque l'on exécute APT pour la première fois ; APT "
-"interdit les dépendances défectueuses dans un système. Il est possible que "
-"la structure de dépendances d'un système soit tellement corrompue qu'elle "
+"interdit les dépendances cassées dans un système. Il est possible que la "
+"structure de dépendances d'un système soit tellement corrompue qu'elle "
 "requiert une intervention manuelle (ce qui veut dire la plupart du temps "
 "utiliser <command>dpkg --remove</command> pour éliminer les paquets en "
 "cause). L'utilisation de cette option conjointement avec <option>-m</option> "
@@ -1673,8 +1780,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
 "Répondre automatiquement négativement aux questions. Élément de "
 "configuration : <literal>APT::Get::Assume-No</literal>."
@@ -1697,15 +1804,36 @@ msgstr ""
 "Afficher les versions complètes des paquets installés ou mis à niveau. "
 "Élément de configuration : <literal>APT::Get::Show-Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Afficher les listes de paquets sans les ranger en colonnes. Par défaut, les "
+"listes de paquets sont produites dans le style de la commande « ls ». "
+"Élément de configuration : <literal>APT::Get::List-Columns</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"Ajouter la valeur donnée au champ <literal>Comment:</literal> dans "
+"<filename>history.log</filename>. Élément de configuration : "
+"<literal>APT::History::Comment</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Cette option contrôle comment les paquets d'architectures sont construits "
 "par <command>apt-get source --compile</command> et comment les dépendances "
@@ -1728,8 +1856,8 @@ msgstr ""
 "paquet source est construit par <command>apt-get source --compile</command> "
 "et comment les dépendances sont respectées. Par défaut, aucun profil de "
 "construction n'est actif. Plus d'un profil peut être activé en même temps en "
-"les concaténant par une virgule. Élément de configuration : <literal>APT::"
-"Build-Profiles</literal>."
+"les concaténant par une virgule. Élément de configuration : "
+"<literal>APT::Build-Profiles</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1784,8 +1912,8 @@ msgid ""
 msgstr ""
 "Aucune mise à niveau ; quand elle est utilisée avec <literal>install</"
 "literal>, cette commande empêche les paquets mentionnés sur la ligne de "
-"commande d'être mis à niveau. Élément de configuration : <literal>APT::Get::"
-"Upgrade</literal>."
+"commande d'être mis à niveau. Élément de configuration : "
+"<literal>APT::Get::Upgrade</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1795,8 +1923,8 @@ msgid ""
 "installed packages only and ignore requests to install new packages.  "
 "Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
 msgstr ""
-"N'installe aucun nouveau paquet ; quand elle est utilisée avec "
-"<literal>install</literal>, <literal>only-upgrade</literal> ne met à jour "
+"N'installer aucun nouveau paquet ; quand elle est utilisée avec "
+"<literal>install</literal>, <literal>only-upgrade</literal> ne met à niveau "
 "que les paquets installés sans en installer de nouveaux. Élément de "
 "configuration : <literal>APT::Get::Only-Upgrade</literal>."
 
@@ -1877,10 +2005,10 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
-"Au lieu de récupérer les paquets à installer, leurs URI sont affichées. "
+"Au lieu de récupérer les paquets à installer, leurs URI sont affichés. "
 "Chaque URI a un chemin, un nom de fichier destination, une taille et une clé "
 "MD5 attendue. Veuillez noter que le nom de fichier à afficher ne correspond "
 "pas toujours au nom de fichier sur le site distant. Cette option fonctionne "
@@ -1910,7 +2038,7 @@ msgid ""
 "Re-install packages that are already installed and at the newest version.  "
 "Configuration Item: <literal>APT::Get::ReInstall</literal>."
 msgstr ""
-"Réinstaller les paquets déjà installés avec leur version la plus récente.  "
+"Réinstaller les paquets déjà installés avec leur version la plus récente. "
 "Élément de configuration : <literal>APT::Get::ReInstall</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1920,17 +2048,33 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Cette option est activée par défaut ; utilisez <literal>--no-list-cleanup</"
 "literal> pour la désactiver. Quand elle est activée, <command>apt-get</"
 "command> gère automatiquement le contenu de <filename>&statedir;/lists</"
-"filename> afin d'assurer que les fichiers obsolètes soient effacés. La seule "
+"filename> afin d'assurer que les fichiers obsolètes sont effacés. La seule "
 "raison de la désactiver est une modification fréquente de la liste de "
 "sources. Élément de configuration : <literal>APT::Get::List-Cleanup</"
 "literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+"Cette option contrôle le choix de l'instantané retenu pour les archives avec "
+"<literal>Snapshot: enable</literal> dans l'entrée de la source. Par exemple, "
+"<option>-S 20220102T030405Z</option> sélectionne un instantané du "
+"2 janvier 2022 à 03:04:05 UTC. Élément de configuration : "
+"<literal>APT::Snapshot</literal>. Voir aussi la page de manuel de &sources-"
+"list;."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1946,12 +2090,12 @@ msgid ""
 msgstr ""
 "Cette option contrôle l'entrée par défaut pour les questions de "
 "distribution ; un épinglage (pin) par défaut dont la priorité vaut 990 est "
-"créée en utilisant la chaîne spécifiée. Le fichier des préférences peut "
+"créé en utilisant la chaîne spécifiée. Le fichier des préférences peut "
 "annuler cette décision. En clair, cette option permet de contrôler "
 "simplement dans quelle distribution seront récupérés les paquets. Par "
 "exemple : <option>-t '2.1*'</option>, <option>-t unstable</option> ou "
 "<option>-t sid</option>. Élément de configuration : <literal>APT::Default-"
-"Release</literal>. Voyez aussi la page de manuel d'&apt-preferences;."
+"Release</literal>. Voir aussi la page de manuel d'&apt-preferences;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1961,11 +2105,11 @@ msgid ""
 "option> will answer yes to any prompt, <option>--trivial-only</option> will "
 "answer no.  Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
 msgstr ""
-"Ne réalise que les opérations « triviales ». Logiquement ceci peut être "
+"Ne réaliser que les opérations « triviales ». Logiquement cela peut être "
 "considéré comme relatif à <option>--assume-yes</option>. Alors que <option>--"
 "assume-yes</option> répond oui à n'importe quelle question, <option>--"
-"trivial-only</option> répond non. Élément de configuration : <literal>APT::"
-"Get::Trivial-Only</literal>."
+"trivial-only</option> répond non. Élément de configuration : "
+"<literal>APT::Get::Trivial-Only</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1976,6 +2120,12 @@ msgid ""
 "equally to running <command>apt-mark auto</command> for all installed "
 "packages.  Configuration Item: <literal>APT::Get::Mark-Auto</literal>."
 msgstr ""
+"Après une installation réussie, marquer tous les paquets nouvellement "
+"installés comme installés automatiquement, ce qui permettra que chacun des "
+"paquets soit supprimé quand plus aucun des paquets installés manuellement ne "
+"dépend d'eux. C'est équivalent à l'exécution de <command>apt-mark auto</"
+"command> pour tous les paquets installés. Élément de configuration : "
+"<literal>APT::Get::Mark-Auto</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1984,8 +2134,8 @@ msgid ""
 "prompting.  Configuration Item: <literal>APT::Get::Remove</literal>."
 msgstr ""
 "Arrêter immédiatement apt-get, sans poser de questions, si des paquets "
-"doivent être supprimés. Élément de configuration : <literal>APT::Get::"
-"Remove</literal>."
+"doivent être supprimés. Élément de configuration : "
+"<literal>APT::Get::Remove</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2018,7 +2168,7 @@ msgstr ""
 "acceptera seulement des noms de paquets source comme argument ; elle "
 "n'acceptera pas de les rechercher à partir des noms de paquets binaires "
 "correspondants. Élément de configuration : <literal>APT::Get::Only-Source</"
-"literal>"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2030,7 +2180,7 @@ msgstr ""
 "Ne télécharger que le fichier .diff, .dsc ou .tar d'une archive source. "
 "Élément de configuration : <literal>APT::Get::Diff-Only</literal>, "
 "<literal>APT::Get::Dsc-Only</literal> et <literal>APT::Get::Tar-Only</"
-"literal>, "
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2068,18 +2218,11 @@ msgstr ""
 "l'authenticité des données n'est pas assurée d'une autre manière par "
 "l'utilisateur lui-même. L'utilisation de l'option <option>Trusted</option> "
 "pour les entrées de &sources-list; devrait être habituellement préférée à ce "
-"remplacement global. Élément de configuration : <literal>APT::Get::"
-"AllowUnauthenticated</literal>."
+"remplacement global. Élément de configuration : "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "Forbid the update command to acquire unverifiable data from configured "
-#| "sources. APT will fail at the update command for repositories without "
-#| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2087,11 +2230,11 @@ msgid ""
 "details on the concept and the implications.  Configuration Item: "
 "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgstr ""
-"Interdire la commande update pour obtenir des données non vérifiables des "
-"sources configurées. APT échouera si la commande update vise des dépôts sans "
-"signatures cryptographiques valables. Voir aussi &apt-secure; pour plus de "
-"détails sur le concept et ses implications. Élément de configuration : "
-"<literal>Acquire::AllowInsecureRepositories</literal>."
+"Permettre à la commande update d'obtenir des données non vérifiables des "
+"sources configurées. Autrement, APT échouera si la commande update vise des "
+"dépôts sans signatures cryptographiques valables. Voir aussi &apt-secure; "
+"pour plus de détails sur le concept et ses implications. Élément de "
+"configuration : <literal>Acquire::AllowInsecureRepositories</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2126,8 +2269,8 @@ msgstr ""
 "uniquement pour certains champs tels que <literal>origin</literal>, "
 "<literal>label</literal>, <literal>codename</literal>, <literal>suite</"
 "literal>, <literal>version</literal> et <literal>defaultpin</literal>. Voir "
-"aussi &apt-preferences;. Élément de configuration : <literal>Acquire::"
-"AllowReleaseInfoChange</literal>."
+"aussi &apt-preferences;. Élément de configuration : "
+"<literal>Acquire::AllowReleaseInfoChange</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2141,7 +2284,7 @@ msgstr ""
 "Cette commande montre les informations de progression conviviales dans la "
 "fenêtre du terminal quand des paquets sont installés, mis à jour ou "
 "supprimés. Pour une version exploitable par une machine de ces données, voir "
-"README.progress-reporting dans le répertoire doc de apt. Élément de "
+"README.progress-reporting dans le répertoire doc d'APT. Élément de "
 "configuration : <literal>Dpkg::Progress</literal> et <literal>Dpkg::Progress-"
 "Fancy</literal>."
 
@@ -2152,22 +2295,58 @@ msgid ""
 "multiple files.  See <option>--with-source</option> description in &apt-"
 "cache; for further details."
 msgstr ""
-"Ajoute le fichier donné comme source de méta-données. La commande peut être "
+"Ajouter le fichier donné comme source de métadonnées. La commande peut être "
 "répétée pour ajouter de multiples fichiers. Voir la description de l'option "
 "<option>--with-source</option> dans &apt-cache; pour plus de détails."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
 #: apt-get.8.xml
 msgid "any"
-msgstr ""
+msgstr "any"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
+"Faire échouer la commande <option>update</option> si une erreur, même "
+"transitoire, se produit."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+"Exécuter la commande <option>update</option> avant la commande spécifiée. "
+"Cette option vaut pour les commandes d'installation, de suppression ou de "
+"mise à niveau de paquets telles que <option>install</option>, "
+"<option>remove</option>, <option>safe-upgrade</option> et <option>full-"
+"upgrade</option>. Cela peut être utile pour s'assurer qu'une commande "
+"installe toujours la dernière version, ou, en combinaison avec l'option "
+"<option>--snapshot</option>, pour s'assurer que l'instantané est présent "
+"quand <option>install</option> est exécutée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+"Attention, en raison de limitations techniques, les verrous sont acquis "
+"individuellement pour chaque phase, donc une installation peut ne pas "
+"réussir à acquérir un verrou après avoir réussi la mise à jour. Jusqu'à ce "
+"que cela soit résolu, c'est simplement du sucre syntaxique pour <literal>apt "
+"update &amp;&amp; apt install</literal>."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Fichiers"
@@ -2175,13 +2354,13 @@ msgstr "Fichiers"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, le guide d'APT dans &guidesdir;, &apt-preferences;, le "
-"« HOWTO » d'APT."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, le guide d'APT dans &guidesdir;, &apt-"
+"preferences;, le « HOWTO » d'APT."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2190,7 +2369,7 @@ msgid ""
 "error."
 msgstr ""
 "<command>apt-get</command> renvoie zéro après une opération normale, le "
-"décimal 100 en cas d'erreur."
+"décimal 100 en cas d'erreur."
 
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-cache.8.xml
@@ -2299,9 +2478,9 @@ msgstr ""
 "ncurses3.0 ; ces paquets doivent être installés au préalable pour que "
 "libreadline2 fonctionne. À leur tour, libreadlineg2 et libreadline2-altdev "
 "dépendent de libreadline2. Si libreadline2 est installé, libc5 et ncurses3.0 "
-"doivent être installés ; libreadlineg2 et libreadline2-altdev n'ont pas à "
-"l'être. Pour connaître le sens de la fin de chaîne, il est préférable de "
-"consulter le code source d'APT."
+"(et ldso) doivent aussi être installés ; libreadlineg2 et libreadline2-"
+"altdev n'ont pas à l'être. Pour connaître le sens particulier de la fin de "
+"la sortie, il est préférable de consulter le code source d'APT."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2488,7 +2667,7 @@ msgstr ""
 "La commande <literal>search</literal> recherche l'expression rationnelle "
 "POSIX donnée en paramètre sur tous les paquets disponibles, voir &regex;. "
 "Elle cherche une occurrence de la chaîne dans les noms de paquets et dans "
-"les descriptions puis elle affiche le nom du paquet et sa description "
+"les descriptions, puis elle affiche le nom du paquet et sa description "
 "courte. Quand l'option <option>--full</option> est fournie, la sortie est "
 "identique à <literal>show</literal> pour chaque paquet ; quand l'option "
 "<option>--names-only</option> est fournie, la recherche ne porte pas sur les "
@@ -2558,23 +2737,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "La commande <literal>dotty</literal> prend une liste de paquets sur la ligne "
 "de commande et affiche une sortie appropriée à une utilisation par la "
-"commande dotty du paquet <ulink url=\"http://www.research.att.com/sw/tools/"
-"graphviz/\">GraphViz</ulink>. Il en résulte un ensemble de nœuds et d'arcs "
-"représentant les relations entre les paquets. Par défaut les paquets donnés "
-"en argument suivent toutes leurs dépendances, ce qui peut produire un graphe "
-"très volumineux. Pour limiter la sortie aux seuls paquets listés sur la "
-"ligne de commande, positionnez l'option <literal>APT::Cache::GivenOnly</"
-"literal>."
+"commande dotty du paquet <ulink url=\"https://graphviz.org/\">GraphViz</"
+"ulink>. Il en résulte un ensemble de nœuds et d'arcs représentant les "
+"relations entre les paquets. Par défaut les paquets donnés en argument "
+"suivent toutes leurs dépendances, ce qui peut produire un graphe très "
+"volumineux. Pour limiter la sortie aux seuls paquets listés sur la ligne de "
+"commande, positionnez l'option <literal>APT::Cache::GivenOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2584,7 +2761,7 @@ msgid ""
 "missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
 "packages), blue lines are pre-depends, green lines are conflicts."
 msgstr ""
-"Les noeuds résultants ont plusieurs formes ; les paquets normaux sont des "
+"Les nœuds résultants ont plusieurs formes ; les paquets normaux sont des "
 "boîtes, les « provides » purs sont des triangles, les « provides » mixtes "
 "sont des diamants et les paquets manquants sont des hexagones. Les boîtes "
 "oranges expriment un arrêt de la récursivité [paquet feuille], les lignes "
@@ -2602,12 +2779,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Identique à <literal>dotty</literal>, mais réservé à xvcg fourni avec <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2635,11 +2812,11 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "La commande <literal>madison</literal> d'<literal>apt-cache</literal> "
-"cherche à mimer le format de sortie propre à l'outil debian de gestion "
+"cherche à mimer le format de sortie propre à l'outil Debian de gestion "
 "d'archives, <literal>madison</literal>, ainsi qu'une partie de ses "
 "fonctionnalités. Elle affiche les versions disponibles d'un paquet dans un "
 "tableau. Contrairement au programme original <literal>madison</literal>, "
@@ -2651,12 +2828,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
-msgstr ""
-"Indique le fichier servant de cache des paquets. Le cache des paquets est le "
-"cache primaire utilisé par toutes les opérations. Élément de configuration : "
+"cache used by all operations.  Configuration Item: "
 "<literal>Dir::Cache::pkgcache</literal>."
+msgstr ""
+"Indiquer le fichier servant de cache des paquets. Le cache des paquets est "
+"le cache primaire utilisé par toutes les opérations. Élément de "
+"configuration : <literal>Dir::Cache::pkgcache</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2667,7 +2844,7 @@ msgid ""
 "cache is used to avoid reparsing all of the package files.  Configuration "
 "Item: <literal>Dir::Cache::srcpkgcache</literal>."
 msgstr ""
-"Indique le fichier servant de cache des sources. Ce cache n'est utilisé que "
+"Indiquer le fichier servant de cache des sources. Ce cache n'est utilisé que "
 "par <literal>gencaches</literal> ; une version des informations sur les "
 "paquets, issue d'une analyse de sources distantes, est conservée. Quand le "
 "cache des paquets est créé, le cache des sources est utilisé afin d'éviter "
@@ -2684,7 +2861,7 @@ msgid ""
 msgstr ""
 "Mode silencieux ; produit une sortie pertinente pour l'enregistrement dans "
 "un fichier-journal, sans afficher d'indicateur de progression. Un plus grand "
-"nombre de q produira un plus grand silence, avec un maximum de 2. Vous "
+"nombre de « q » produira un plus grand silence, avec un maximum de 2. Vous "
 "pouvez aussi utiliser <option>-q=#</option> pour positionner le niveau de "
 "silence, annulant le fichier de configuration. Élément de configuration : "
 "<literal>quiet</literal>."
@@ -2696,7 +2873,7 @@ msgid ""
 "<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
 "be printed.  Configuration Item: <literal>APT::Cache::Important</literal>."
 msgstr ""
-"N'affiche que les dépendances importantes ; à utiliser avec les commandes "
+"N'afficher que les dépendances importantes ; à utiliser avec les commandes "
 "<literal>unmet</literal> et <literal>depends</literal> pour n'afficher que "
 "les relations Depends et Pre-Depends. Élément de configuration : "
 "<literal>APT::Cache::Important</literal>."
@@ -2706,15 +2883,16 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Par défaut, <command>depends</command> et <command>rdepends</command> "
 "affichent toutes les dépendances. Ce comportement peut être modifié avec ces "
 "réglages qui omettront le type de dépendance indiqué. Élément de "
 "configuration : <literal>APT::Cache::Show<replaceable>TypeDépendance</"
-"replaceable></literal>, p. ex. <literal>APT::Cache::ShowRecommends</literal>."
+"replaceable></literal>, par exemple <literal>APT::Cache::ShowRecommends</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2741,7 +2919,7 @@ msgid ""
 "Print full package records when searching.  Configuration Item: "
 "<literal>APT::Cache::ShowFull</literal>."
 msgstr ""
-"Affiche la totalité des champs d'information sur le paquet lors d'une "
+"Afficher la totalité des champs d'information sur le paquet lors d'une "
 "recherche. Élément de configuration : <literal>APT::Cache::ShowFull</"
 "literal>."
 
@@ -2755,7 +2933,7 @@ msgid ""
 "applicable to the <literal>show</literal> command.  Configuration Item: "
 "<literal>APT::Cache::AllVersions</literal>."
 msgstr ""
-"Affiche la totalité des champs d'information pour toutes les versions "
+"Afficher la totalité des champs d'information pour toutes les versions "
 "disponibles : c'est la valeur par défaut. Pour la désactiver, utilisez "
 "l'option <option>--no-all-versions</option>. Quand l'option <option>--no-all-"
 "versions</option> est choisie, seuls les éléments de la version choisie "
@@ -2770,7 +2948,7 @@ msgid ""
 "it is. This is the default; to turn it off, use <option>--no-generate</"
 "option>.  Configuration Item: <literal>APT::Cache::Generate</literal>."
 msgstr ""
-"Réalise une mise à jour automatique du cache des paquets plutôt que de se "
+"Réaliser une mise à jour automatique du cache des paquets plutôt que de se "
 "servir du cache tel qu'il est. Pour désactiver cette option (option par "
 "défaut), utilisez l'option <option>--no-generate</option>. Élément de "
 "configuration : <literal>APT::Cache::Generate</literal>."
@@ -2781,16 +2959,16 @@ msgid ""
 "Only search on the package and provided package names, not the long "
 "descriptions.  Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
 msgstr ""
-"N'effectue une recherche que sur les noms de paquets et de paquets fournis, "
-"pas sur les descriptions longues. Élément de configuration : <literal>APT::"
-"Cache::NamesOnly</literal>."
+"N'effectuer une recherche que sur les noms de paquets et de paquets fournis, "
+"pas sur les descriptions longues. Élément de configuration : "
+"<literal>APT::Cache::NamesOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "Avec cette option, <literal>pkgnames</literal> affiche tous les noms, les "
 "noms des paquets virtuels et les dépendances manquantes. Élément de "
@@ -2828,13 +3006,13 @@ msgid ""
 "literal> and <literal>Packages</literal> files as well as source package "
 "directories.  Files are matched based on their name only, not their content!"
 msgstr ""
-"Ajoute le fichier donné comme source de métadonnées. La commande peut être "
+"Ajouter le fichier donné comme source de métadonnées. La commande peut être "
 "répétée pour ajouter de multiples fichiers. Actuellement, les "
-"fichiers<literal>*.deb</literal>, <literal>*.dsc</literal>, <literal>*."
-"changes</literal>, <literal>Sources</literal> et <literal>Packages</"
-"literal>, aussi bien que les répertoires de paquets source sont pris en "
-"charge. Les correspondances de fichier sont basées sur leur nom seulement et "
-"non sur leur contenu !"
+"fichiers<literal>*.deb</literal>, <literal>*.dsc</literal>, "
+"<literal>*.changes</literal>, <literal>Sources</literal> et "
+"<literal>Packages</literal>, aussi bien que les répertoires de paquets "
+"source sont pris en charge. Les correspondances de fichier sont basées sur "
+"leur nom seulement et non sur leur contenu !"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2863,8 +3041,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;."
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2875,314 +3053,6 @@ msgstr ""
 "<command>apt-cache</command> retourne zéro après un déroulement normal et le "
 "nombre décimal 100 en cas d'erreur."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "Utilitaire de gestion des clés d'APT"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> gère les clés dont se sert apt pour authentifier "
-"les paquets. Les paquets authentifiés par ces clés seront réputés fiables."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "Trousseaux de clés pris en charge"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"apt-key ne prend en charge que le format binaire OpenPGP (connu aussi sous "
-"le nom de « trousseau de clés public GPG ») dans les fichiers avec "
-"l'extension « <literal>gpg</literal> », et pas le format de base de données "
-"Keybox, introduit comme format par défaut pour les fichiers de trousseau de "
-"clés dans les versions les plus récentes de &gpg;. Les fichiers binaires de "
-"trousseau de clés destinés à être utilisés dans toutes les versions d'apt "
-"devraient donc toujours être créés avec la commande <command>gpg --export</"
-"command>."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"Autrement, si tous les systèmes susceptibles d'utiliser le trousseau de clés "
-"créé disposent d'une version d'apt >= 1.4, il est possible d'utiliser plutôt "
-"le format ASCII-Armored, avec l'extension « <literal>asc</literal> », qui "
-"peut être créé par la commande <command>gpg --armor --export</command>."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Commandes"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(obsolète)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Ajouter une clé à la liste des clés fiables. La clé est lue dans le fichier "
-"indiqué avec le paramètre &synopsis-param-filename; ou sur l'entrée standard "
-"si le nom de fichier est <literal>-</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"Il est primordial de vérifier que les clés ajoutées manuellement avec "
-"<command>apt-key</command> appartiennent bien au propriétaire des dépôts "
-"comme elles le prétendent, sinon l'infrastructure de &apt-secure; est "
-"complètement compromise."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>Attention</emphasis> : plutôt que d'utiliser cette commande, un "
-"trousseau de clés peut être placé directement dans le répertoire  <filename>/"
-"etc/apt/trusted.gpg.d/</filename> avec un nom descriptif et soit "
-"« <literal>gpg</literal> » soit « <literal>asc</literal> » comme extension "
-"de fichier."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "(deprecated)"
-msgid "(mostly deprecated)"
-msgstr "(obsolète)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Supprimer une clé de la liste des clés fiables."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "Afficher la clé &synopsis-param-keyid; sur la sortie standard."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Afficher toutes les clés fiables sur la sortie standard."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "Afficher la liste des clés fiables avec leurs empreintes."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"Passer des options avancées à gpg. Avec <command>adv --recv-key</command>, "
-"il est possible par exemple de télécharger une clé directement d'un serveur "
-"de clé dans l'ensemble de clés fiables. Veuillez noter qu'il n'y a  "
-"<emphasis>aucune</emphasis> vérification réalisée, aussi, il peut être "
-"facile de compromettre complètement l'infrastructure &apt-secure;, si la "
-"commande est utilisée sans précaution."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"Mettre à jour le trousseau de clés local avec le trousseau de clés de "
-"l'archive et y supprimer les clés qui ne sont plus valables. Le trousseau de "
-"clés de l'archive est fourni dans le paquet <literal>archive-keyring</"
-"literal> de la distribution, par exemple le paquet &keyring-package; dans "
-"&keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"Veuillez noter qu'une distribution n'a pas besoin et, en fait, ne devrait "
-"plus utiliser cette commande et plutôt charger directement les fichiers de "
-"trousseau de clés dans le répertoire <filename>/etc/apt/trusted.gpg.d/</"
-"filename> parce que cela évite une dépendance à <package>gnupg</package> et "
-"qu'il est plus facile pour les responsables et les utilisateurs de gérer les "
-"clés en ajoutant ou en retirant simplement des fichiers."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Effectuer une mise à jour analogue à celle de la commande <command>update</"
-"command> mais avec récupération du trousseau de clés de l'archive depuis une "
-"URI et la valide avec une clé maître. Cette commande nécessite que &wget; "
-"soit installé, qu'APT soit construit pour le récupérer sur un serveur et "
-"enfin une clé maître pour effectuer la validation. Cette commande n'est pas "
-"gérée par APT dans Debian où <command>update</command> est utilisé à la "
-"place. Par contre, la version d'Ubuntu permet de l'utiliser."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Options"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Veuillez noter que les options doivent être utilisées avant les commandes "
-"décrites dans la section suivante."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Cette option permet d'indiquer le fichier porte-clés sur lequel la commande "
-"doit agir. Par défaut, une commande sera exécutée sur le fichier "
-"<filename>trusted.gpg</filename> ainsi que sur tous les fichiers du "
-"répertoire <filename>trusted.gpg.d</filename>. Le fichier <filename>trusted."
-"gpg</filename> reste le fichier principal pour les clés donc, par exemple, "
-"les nouvelles clés y seront ajoutées."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Operation"
-msgid "Deprecation"
-msgstr "Fonctionnement"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3194,8 +3064,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "La commande <command>apt-mark</command> peut être utilisée comme interface "
@@ -3293,6 +3163,12 @@ msgstr ""
 "<literal>showauto</literal> pour afficher la liste des paquets installés "
 "manuellement."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Options"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3326,8 +3202,8 @@ msgid ""
 "<literal>unhold</literal> is used to cancel a previously set hold on a "
 "package to allow all actions again."
 msgstr ""
-"<literal>unhold</literal> est utilisé pour supprimer l'état "
-"« hold » (retenu) d'un paquet afin de permettre toute action qui y est liée."
+"<literal>unhold</literal> est utilisé pour supprimer l'état « hold » "
+"(retenu) d'un paquet afin de permettre toute action qui y est liée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
@@ -3366,6 +3242,11 @@ msgstr ""
 "<option>showpurge</option>. Vous trouverez plus d'information sur ce que "
 "l'on appelle les sélections de dpkg dans &dpkg;."
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get;, &aptitude;, &apt-conf;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3415,6 +3296,66 @@ msgstr ""
 "cette page de manuel utilise <literal>APT</literal> pour se référer à "
 "l'ensemble d'entre elles, pour des raisons de simplicité."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuration utilisateur"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Note that a default installation already contains all keys to securely "
+#| "acquire packages from the default repositories, so fiddling with "
+#| "<command>apt-key</command> is only needed if third-party repositories are "
+#| "added."
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"Veuillez noter qu'une installation par défaut possède toutes les clés pour "
+"obtenir en toute sécurité des paquets des dépôts par défaut, aussi, bricoler "
+"avec <command>apt-key</command> n'est nécessaire que si vous souhaitez "
+"ajouter des dépôts tiers."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -3475,10 +3416,10 @@ msgstr ""
 "d'une opération <command>update</command> envoie un message d'erreur à tous "
 "les clients d'APT quelle que soit l'option d'autoriser ou d'interdire "
 "l'utilisation de dépôts non sécurisés. L'erreur peut être contournée par le "
-"réglage supplémentaire de <option>Acquire::"
-"AllowDowngradeToInsecureRepositories</option> à <literal>true</literal>, ou, "
-"pour des dépôts individuels avec l'option <literal>allow-downgrade-to-"
-"insecure=yes</literal> de &sources-list;."
+"réglage supplémentaire de "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> à "
+"<literal>true</literal>, ou, pour des dépôts individuels avec l'option "
+"<literal>allow-downgrade-to-insecure=yes</literal> de &sources-list;."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3590,7 +3531,7 @@ msgstr ""
 "<literal>Attaque réseau de type « homme au milieu »</literal>. Sans "
 "vérification de signature, quelqu'un de malveillant peut s'introduire au "
 "milieu du processus de téléchargement et insérer du code soit en contrôlant "
-"un élément du réseau, routeur, commutateur, etc. soit en détournant le "
+"un élément du réseau, routeur, commutateur, etc., soit en détournant le "
 "trafic vers un serveur fourbe (par usurpation d'adresses)."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -3631,78 +3572,28 @@ msgid ""
 "also general information about the repository like the origin, codename or "
 "version number of the release."
 msgstr ""
-"Le fichier Release renferme, en plus des sommes de contrôle pour les "
-"fichiers du dépôt, des informations générales sur le dépôt comme l'origine, "
-"le nom de code ou le numéro de la version."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"This information is shown in various places so a repository owner should "
-"always ensure correctness. Further more user configuration like &apt-"
-"preferences; can depend and make use of this information. Since version 1.5 "
-"the user must therefore explicitly confirm changes to signal that the user "
-"is sufficiently prepared e.g. for the new major release of the distribution "
-"shipped in the repository (as e.g. indicated by the codename)."
-msgstr ""
-"Ces informations apparaissent à plusieurs endroits, aussi, le propriétaire "
-"d'un dépôt devrait toujours s'assurer de leur exactitude. Par ailleurs, les "
-"configurations de l'utilisateur, comme &apt-preferences;, peuvent dépendre "
-"de ces informations et les utiliser. Depuis la version 1.5, l'utilisateur "
-"doit par conséquent confirmer de façon explicite les modifications pour "
-"signaler qu'il est suffisamment préparé, par exemple, pour la nouvelle "
-"version majeure de la distribution fournie dans le dépôt (comme indiqué par "
-"exemple par le nom de code)."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Configuration utilisateur"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"Le programme qui gère la liste des clés utilisées par APT pour faire "
-"confiance aux dépôts s'appelle <command>apt-key</command>. Il peut ajouter "
-"ou supprimer des clés aussi bien que lister les clés de confiance. Il est "
-"possible de limiter la capacité pour une ou plusieurs clés de signer telle "
-"ou telle archive avec l'option <option>Signed-By</option> dans &sources-"
-"list;."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"Veuillez noter qu'une installation par défaut possède toutes les clés pour "
-"obtenir en toute sécurité des paquets des dépôts par défaut, aussi, bricoler "
-"avec <command>apt-key</command> n'est nécessaire que si vous souhaitez "
-"ajouter des dépôts tiers."
+"Le fichier Release renferme, en plus des sommes de contrôle pour les "
+"fichiers du dépôt, des informations générales sur le dépôt comme l'origine, "
+"le nom de code ou le numéro de la version."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
+"This information is shown in various places so a repository owner should "
+"always ensure correctness. Further more user configuration like &apt-"
+"preferences; can depend and make use of this information. Since version 1.5 "
+"the user must therefore explicitly confirm changes to signal that the user "
+"is sufficiently prepared e.g. for the new major release of the distribution "
+"shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
-"Pour ajouter une clé, vous devez d'abord la télécharger. Il vaut mieux "
-"utiliser un canal fiable pour ce téléchargement. Ensuite vous l'ajoutez avec "
-"la commande <command>apt-key</command> et vous lancez la commande "
-"<command>apt-get update</command> pour télécharger et vérifier le fichier "
-"<filename>InRelease</filename> ou <filename>Release.gpg</filename> de "
-"l'archive que vous avez configurée."
+"Ces informations apparaissent à plusieurs endroits, aussi, le propriétaire "
+"d'un dépôt devrait toujours s'assurer de leur exactitude. Par ailleurs, les "
+"configurations de l'utilisateur, comme &apt-preferences;, peuvent dépendre "
+"de ces informations et les utiliser. Depuis la version 1.5, l'utilisateur "
+"doit par conséquent confirmer de façon explicite les modifications pour "
+"signaler qu'il est suffisamment préparé, par exemple, pour la nouvelle "
+"version majeure de la distribution fournie dans le dépôt (comme indiqué par "
+"exemple par le nom de code)."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3733,11 +3624,11 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
-"<emphasis>le signer</emphasis>, avec les commandes <command>gpg --clearsign -"
-"o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</"
+"<emphasis>le signer</emphasis>, avec les commandes <command>gpg --clearsign "
+"-o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</"
 "command>."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -3786,9 +3677,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3797,18 +3692,18 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Pour des informations plus complètes, vous pouvez consulter <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\"> "
-"l'infrastructure debian pour la sécurité</ulink> un chapitre du manuel "
-"Debian sur la sécurité (disponible dans le paquet harden-doc) et le <ulink "
-"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\">Strong "
-"Distribution HOWTO</ulink> par V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">l'infrastructure Debian pour la sécurité</ulink> un chapitre du "
+"manuel Debian sur la sécurité (aussi disponible dans le paquet harden-doc) "
+"et le <ulink url=\"http://www.cryptnet.net/fdp/crypto/"
+"strong_distro.html\">Strong Distribution HOWTO</ulink> par V. Alex Brennen."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3850,7 +3745,7 @@ msgid ""
 "must be inserted and scanned separately to account for possible mis-burns."
 msgstr ""
 "Il est nécessaire d'utiliser <command>apt-cdrom</command> pour ajouter des "
-"CD au système APT car cela ne peut être réalisé manuellement. Par ailleurs, "
+"CD au système APT, car cela ne peut être réalisé manuellement. Par ailleurs, "
 "chaque disque d'un ensemble de CD doit être séparément inséré et parcouru "
 "pour prendre en compte de possibles erreurs de gravure."
 
@@ -3877,7 +3772,7 @@ msgid ""
 "filename>"
 msgstr ""
 "APT utilise un identifiant de CD pour reconnaître le disque qui se trouve "
-"actuellement dans le lecteur et maintient une base de données de ces "
+"actuellement dans le lecteur et entretient une base de données de ces "
 "identifiants dans <filename>&statedir;/cdroms.list</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -3893,8 +3788,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Ne pas essayer de détecter automatiquement le chemin du CD-ROM. "
 "Habituellement combiné avec l'option <option>--cdrom</option>. Élément de "
@@ -3909,8 +3804,8 @@ msgid ""
 msgstr ""
 "Point de montage ; spécifie l'emplacement de montage du CD. Ce point de "
 "montage doit être spécifié dans <filename>/etc/fstab</filename> et "
-"correctement configuré. Élément de configuration : <literal>Acquire::cdrom::"
-"mount</literal>."
+"correctement configuré. Élément de configuration : "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3919,21 +3814,21 @@ msgid ""
 "label. This option will cause <command>apt-cdrom</command> to prompt for a "
 "new label.  Configuration Item: <literal>APT::CDROM::Rename</literal>."
 msgstr ""
-"Change le nom d'un disque ; change le nom d'un disque ou remplace un disque "
-"pour un nom donné. Cette option oblige <command>apt-cdrom</command> à "
-"demander un nouveau nom à l'utilisateur. Élément de configuration : "
+"Renommer un disque ; modifie l'étiquette d'un disque ou remplace l'étiquette "
+"donnée à un disque. Cette option oblige <command>apt-cdrom</command> à "
+"demander une nouvelle étiquette à l'utilisateur. Élément de configuration : "
 "<literal>APT::CDROM::Rename</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "Pas de montage ; empêche <command>apt-cdrom</command> de monter ou démonter "
-"le point de montage. Élément de configuration : <literal >APT::CDROM::"
-"NoMount</literal>."
+"le point de montage. Élément de configuration : <literal "
+">APT::CDROM::NoMount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3984,7 +3879,7 @@ msgid ""
 "on error."
 msgstr ""
 "<command>apt-cdrom</command> renvoie zéro après un déroulement normal, et le "
-"nombre décimal 100 en cas d'erreur."
+"nombre décimal 100 en cas d'erreur."
 
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-config.8.xml
@@ -4036,11 +3931,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "La variable d'environnement du shell $OPTS sera définie par la valeur de "
-"MyApp::Options ou, par défaut, la valeur -f."
+"MyApp::Options avec, par défaut, la valeur <option>-f</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
@@ -4052,12 +3947,12 @@ msgstr ""
 "L'élément de configuration peut être suivi par /[fdbi]. « f » renvoie un nom "
 "de fichier, « d » un nom de répertoire, « b » renvoie « true » ou « false » "
 "et « i » renvoie un entier. Chacune de ses valeurs est normalisée et "
-"vérifiée."
+"vérifiée en interne."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid "Just show the contents of the configuration space."
-msgstr "Affiche seulement le contenu de l'espace de configuration."
+msgstr "Afficher seulement le contenu de l'espace de configuration."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
@@ -4066,7 +3961,7 @@ msgid ""
 "empty to remove them from the output."
 msgstr ""
 "Inclure les options qui ont une valeur vide. Ce comportement est celui par "
-"défaut ; il est donc conseillé d'utiliser --no-empty pour les supprimer de "
+"défaut ; il est donc conseillé d'utiliser --no-empty pour les supprimer de "
 "ce qui est retourné."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
@@ -4084,7 +3979,7 @@ msgid ""
 "as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
 "and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
 msgstr ""
-"Définit ce que retourne chaque option de configuration. &percnt;t sera "
+"Définir ce que retourne chaque option de configuration. &percnt;t sera "
 "remplacé par son nom individuel, &percnt;f par le nom hiérarchique complet "
 "et &percnt;v par la valeur. Les majuscules et les caractères spéciaux dans "
 "la valeur seront encodés afin de pouvoir être utilisés sans problèmes, par "
@@ -4136,7 +4031,7 @@ msgid ""
 "parser to provide a uniform environment."
 msgstr ""
 "Le fichier <filename>apt.conf</filename> est le fichier de configuration "
-"principal du l'ensemble de programmes APT, mais n'est de loin pas le seul "
+"principal de l'ensemble de programmes APT, mais n'est de loin pas le seul "
 "endroit où des choix d'options peuvent être effectués. L'ensemble des outils "
 "partagent leur analyse de la ligne de commande, ce qui permet de garantir un "
 "environnement d'utilisation uniforme."
@@ -4156,8 +4051,8 @@ msgid ""
 "the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
 "any)"
 msgstr ""
-"fichier indiqué par la variable d'environnement <envar>APT_CONFIG</envar> si "
-"elle existe"
+"le fichier indiqué par la variable d'environnement <envar>APT_CONFIG</envar> "
+"si elle existe."
 
 #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
 #: apt.conf.5.xml
@@ -4166,19 +4061,19 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "tous les fichiers de <literal>Dir::Etc::Parts</literal> dans l'ordre "
-"alphanumérique ascendant qui ont soit l'extension \"<literal>conf</"
-"literal>\", soit aucune extension et qui ne contiennent que des caractères "
+"alphanumérique ascendant qui ont soit l'extension « <literal>conf</"
+"literal> », soit aucune extension et qui ne contiennent que des caractères "
 "alphanumériques, des tirets (-), des caractères de soulignement (_) et des "
 "points (.), les autres fichiers étant ignorés. Dans le cas contraire, APT "
-"affichera un avertissement indiquant qu'il a ignoré un fichier si celui-ci "
-"ne correspond par à un motif défini dans <literal>Dir::Ignore-Files-"
-"Silently</literal> (les fichiers correspondant à cette variable de "
-"configuration étant, eux, ignorés silencieusemennt)."
+"affichera un avertissement indiquant qu'il a ignoré un fichier sauf si celui-"
+"ci correspond à un motif défini dans la liste de configuration "
+"<literal>Dir::Ignore-Files-Silently</literal> (les fichiers correspondant à "
+"ce motif sont ignorés silencieusement)."
 
 #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
 #: apt.conf.5.xml
@@ -4193,7 +4088,7 @@ msgid ""
 "all options set in the binary specific configuration subtree are moved into "
 "the root of the tree."
 msgstr ""
-"toutes les options définie dans le sous-arbre binaire de configuration "
+"toutes les options définies dans le sous-arbre binaire de configuration "
 "spécifique sont déplacées à la racine de l'arbre."
 
 #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
@@ -4228,19 +4123,6 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
-#, fuzzy
-#| msgid ""
-#| "Syntactically the configuration language is modeled after what the ISC "
-#| "tools such as bind and dhcp use. Lines starting with <literal>//</"
-#| "literal> are treated as comments (ignored), as well as all text between "
-#| "<literal>/*</literal> and <literal>*/</literal>, just like C/C++ "
-#| "comments.  Each line is of the form <literal>APT::Get::Assume-Yes "
-#| "\"true\";</literal>.  The quotation marks and trailing semicolon are "
-#| "required.  The value must be on one line, and there is no kind of string "
-#| "concatenation.  Values must not include backslashes or extra quotation "
-#| "marks.  Option names are made up of alphanumeric characters and the "
-#| "characters \"/-:._+\".  A new scope can be opened with curly braces, like "
-#| "this:"
 msgid ""
 "Syntactically the configuration language is modeled after what the ISC tools "
 "such as bind and dhcp use. Lines starting with <literal>//</literal> are "
@@ -4258,14 +4140,15 @@ msgstr ""
 "les langages utilisés par des outils ISC tels que bind et dhcp. Une ligne "
 "qui commence par <literal>//</literal> est traitée comme un commentaire et "
 "ignorée, de même que les sections de texte placées entre <literal>/*</"
-"literal> et <literal>*/</literal>, tout comme les commentaires C/C++.  "
-"Chaque ligne est de la forme : <literal>APT::Get::Assume-Yes \"true\";</"
-"literal>. Les guillemets et le point-virgule final sont obligatoires. La "
-"valeur doit tenir sur une seule ligne et il n'existe pas de fusion de "
-"chaînes. Elle ne doit pas comporter de guillemets et de barre oblique "
-"inversée. Le nom d'une option peut contenir des caractères alphanumériques "
-"et « /-:._+ ». On peut déclarer un nouveau champ d'action avec des "
-"accolades, comme suit :"
+"literal> et <literal>*/</literal>, tout comme les commentaires C/C++. Les "
+"lignes débutant par <literal>#</literal> sont aussi traitées comme des "
+"commentaires. Chaque ligne est de la forme : <literal>APT::Get::Assume-Yes "
+"\"true\";</literal>. Les guillemets et le point-virgule final sont "
+"obligatoires. La valeur doit tenir sur une seule ligne et il n'existe pas de "
+"concaténation de chaînes. La valeur ne doit pas comporter de guillemets ni "
+"de barre oblique inversée. Le nom d'une option contient des caractères "
+"alphanumériques et « /-:._+ ». On peut déclarer un nouveau champ d'action "
+"avec des accolades, comme suit :"
 
 #. type: Content of: <refentry><refsect1><informalexample><programlisting>
 #: apt.conf.5.xml
@@ -4354,9 +4237,9 @@ msgstr ""
 "<literal>#clear</literal>. <literal>#include</literal> inclut le fichier "
 "donné en paramètre, à moins que le nom ne se termine par une barre oblique "
 "auquel cas le répertoire entier est inclus. <literal>#clear</literal> sert à "
-"effacer une partie de l'arbre de configuration. L'élément désigné et tout "
+"effacer une partie de l'arbre de configuration. L'élément désigné et tous "
 "ses descendants sont supprimés. Veuillez noter que ces lignes doivent "
-"également se terminer avec un point-virgule."
+"également se terminer par un point-virgule."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4387,11 +4270,12 @@ msgid ""
 msgstr ""
 "Tous les outils d'APT possèdent une option <option>-o</option> qui permet de "
 "spécifier une configuration quelconque depuis la ligne de commande. La "
-"syntaxe consiste en un nom complet d'option (par exemple <literal>APT::Get::"
-"Assume-Yes</literal>) suivi par un signe égal, puis par la nouvelle valeur "
-"de l'option. On peut compléter une liste en ajoutant un <literal>::</"
-"literal> final au nom de la liste. Comme on peut s'en douter, la syntaxe de "
-"champ d'action (« scope ») ne peut pas être indiquée à la ligne de commande."
+"syntaxe consiste en un nom complet d'option (par exemple "
+"<literal>APT::Get::Assume-Yes</literal>) suivi par un signe égal, puis par "
+"la nouvelle valeur de l'option. On peut compléter une liste en ajoutant un "
+"<literal>::</literal> final au nom de la liste. Comme on peut s'en douter, "
+"la syntaxe de champ d'action (« scope ») ne peut pas être indiquée à la "
+"ligne de commande."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4466,12 +4350,86 @@ msgstr ""
 "qui mettent en œuvre le jeu d'instructions <literal>amd64</literal> (aussi "
 "appelé <literal>x86-64</literal>) peuvent exécuter des binaires compilés "
 "pour le jeu d'instructions<literal>i386</literal> (<literal>x86</literal>). "
-"Cette liste est utilisé pour récupérer des fichiers et analyser les listes "
+"Cette liste est utilisée pour récupérer des fichiers et analyser les listes "
 "de paquets. La valeur par défaut initiale est toujours celle de "
 "l'architecture native du système (<literal>APT::Architecture</literal>) et "
 "les autres architectures sont ajoutées à la liste par défaut lorsqu'elles "
 "sont enregistrées avec <command>dpkg --add-architecture</command>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+"Ce champ d'action définit les couleurs et les styles. Les couleurs de base "
+"prises en charge sont <option>red</option>, <option>green</option>, "
+"<option>yellow</option>, <option>blue</option>, <option>magenta</option>, "
+"<option>cyan</option> et <option>white</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+"Le sous-champ d'action <option>action</option> définit les couleurs des "
+"listes de paquets dans <option>install</option> et des commandes analogues. "
+"Les options suivantes peuvent être définies : "
+"<option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>;, correspondant à leurs listes "
+"dans la sortie d'&apt;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+"Chaque couleur peut faire référence à une ou plusieurs autres options de "
+"couleur par leur nom, relatif à <option>APT::Color</option>. Leurs séquences "
+"d'échappement seront combinées."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+"Les couleurs peuvent être complètement activées ou désactivées en réglant "
+"<option>APT::Color</option> à <option>yes</option> ou <option>no</option>, "
+"en utilisant les variables d'environnement <envar>NO_COLOR</envar> ou "
+"<envar>APT_NO_COLOR</envar>, ou en utilisant les options en ligne de "
+"commande <option>--color</option> et <option>--no-color</option>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4538,21 +4496,33 @@ msgid ""
 "'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
 "testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
 msgstr ""
-"Indique la distribution à utiliser par défaut lors de l'installation d'un "
+"Indiquer la distribution à utiliser par défaut lors de l'installation d'un "
 "paquet si plusieurs versions sont disponibles. La valeur peut être un nom de "
 "distribution ou un numéro de version. Exemples : « stable », « testing », "
 "« &debian-stable-codename; », « &debian-testing-codename; », « 4.0 », "
 "« 5.0* ». Voir aussi &apt-preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+"Instantané à utiliser pour tous les dépôts configurés avec "
+"<literal>Snapshot: yes</literal>. Voir aussi &sources-list;, l'option "
+"<option>--snapshot</option> qui définit cette valeur et "
+"<option>Acquire::Snapshots::URI</option> ci-dessous."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
 "Ignore held packages; this global option causes the problem resolver to "
 "ignore held packages in its decision making."
 msgstr ""
-"Ignore les paquets « gelés » ; cette option globale indique au système de "
-"résolution de ne pas tenir compte des paquets « gelés » dans sa prise de "
-"décision."
+"Ignorer les paquets « gelés » ; cette option globale indique au système de "
+"résolution de problème de ne pas tenir compte des paquets « gelés » dans sa "
+"prise de décision."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -4565,7 +4535,7 @@ msgstr ""
 "Avec cette option qui est activée par défaut, la fonctionnalité "
 "« autoclean » supprime du cache tout paquet qui ne peut plus être récupéré. "
 "Quand cette option est désactivée, les paquets qui sont installés localement "
-"sont aussi exclus du nettoyage - mais notez que APT ne fournit aucun moyen "
+"sont aussi exclus du nettoyage, mais notez que APT ne fournit aucun moyen "
 "direct pour les réinstaller."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4586,12 +4556,12 @@ msgstr ""
 "les paquets essentiels et importants dès que possible pendant les opérations "
 "d'installation ou de mise à jour, afin de limiter les conséquences d'un "
 "échec de &dpkg;. Si cette option est désactivée, APT traitera les paquets "
-"importants comme les paquets de priorité « extra » : entre la décompaction "
-"du paquet A et sa configuration, de nombreuses opérations de décompaction ou "
-"de configuration peuvent prendre place pour des paquets B ou C qui n'ont "
+"importants comme les paquets de priorité « extra » : entre la décompression "
+"du paquet A et sa configuration, de nombreuses opérations de décompression "
+"ou de configuration peuvent prendre place pour des paquets B ou C qui n'ont "
 "rien à voir. Si ces opérations provoquent un échec de &dpkg; (par exemple si "
 "les scripts du responsable du paquet B provoquent une erreur), le résultat "
-"est que le paquet A est décompacté mais non configuré. En conséquence, les "
+"est que le paquet A est décompressé mais non configuré. En conséquence, les "
 "paquets qui en dépendent pourraient ne plus fonctionner puisque leurs "
 "dépendances ne sont pas satisfaites."
 
@@ -4621,8 +4591,8 @@ msgstr ""
 "problème est rarement rencontré, dans des versions non stables de "
 "distributions, et était causé par des dépendances incorrectes ou par un "
 "système déjà dans un état instable. Vous ne devriez donc pas désactiver "
-"cette option sans savoir ce que vous faites car le scénario ci-dessus n'est "
-"le seul qu'elle permet d'éviter."
+"cette option sans savoir ce que vous faites, car le scénario ci-dessus n'est "
+"pas le seul qu'elle permet d'éviter."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -4657,12 +4627,12 @@ msgstr ""
 "Ne jamais activer cette option à moins que vous ne sachiez "
 "<emphasis>réellement</emphasis> ce que vous faites. Elle autorise APT à "
 "supprimer temporairement un paquet essentiel pour mettre fin à une boucle "
-"Conflicts / Conflicts ou Conflicts / Pre-Depends entre deux paquets "
-"essentiels. <emphasis>Une telle boucle ne devrait jamais se produire : c'est "
-"un bogue très important</emphasis>. Cette option fonctionne si les paquets "
-"essentiels ne sont pas <command>tar</command>, <command>gzip</command>, "
-"<command>libc</command>, <command>dpkg</command>, <command>dash</command> ou "
-"tous les paquets dont ces paquets dépendent."
+"Conflicts/Conflicts ou Conflicts/Pre-Depends entre deux paquets essentiels. "
+"<emphasis>Une telle boucle ne devrait jamais se produire : c'est un bogue "
+"très important</emphasis>. Cette option fonctionne si les paquets essentiels "
+"ne sont pas <command>tar</command>, <command>gzip</command>, <command>libc</"
+"command>, <command>dpkg</command>, <command>dash</command> ou tous les "
+"paquets dont ces paquets dépendent."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -4741,6 +4711,52 @@ msgstr ""
 "veuillez consulter sa documentation pour avoir plus d'informations sur les "
 "options en question."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+"Ne jamais supprimer automatiquement les fichiers qui correspondent à la ou "
+"aux expressions rationnelles."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+"Cette option indique à apt autoremove que les noyaux sont protégés et est "
+"réglée par défaut à vrai. Dans le cas où les noyaux ne sont pas protégés, "
+"ils sont traités comme n'importe quel paquet."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+"Définir la ou les expressions rationnelles pour les paquets versionnés du "
+"noyau. Un ensemble de règles basé sur ces expressions est injecté dans APT "
+"de manière analogue aux expressions rationnelles d'APT::NeverAutoRemove"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+"Conserver un nombre personnalisé de noyaux lors des suppressions "
+"automatiques, 2 par défaut, signifiant que deux noyaux sont conservés. APT "
+"garde toujours le noyau en exécution et le plus récent. Si le noyau le plus "
+"récent est aussi le noyau en exécution, l'avant-dernier est aussi conservé. "
+"Pour cette raison, toute valeur inférieure à 2 est ignorée. Si vous voulez "
+"ne garder que le dernier noyau, réglez APT::Protect-Kernels à « false »."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -4766,12 +4782,12 @@ msgid ""
 "option> and verifying that the Date field of a release file is not in the "
 "future."
 msgstr ""
-"Les options relatives à la sécurité sont positionnées par défaut à « true »,"
-"permettant des vérifications relatives à l'heure. Leur désactivation "
-"signifie qu'on ne peut pas faire confiance à l'heure de la machine, et APT "
-"de ce fait désactivera toutes les vérifications de ce type, telles que "
-"<option>Check-Valid-Until</option> et la vérification que le champ Date d'un "
-"fichier Release n'est pas dans le futur."
+"Les options relatives à la sécurité sont positionnées par défaut à "
+"« true »,permettant des vérifications relatives à l'heure. Leur "
+"désactivation signifie qu'on ne peut pas faire confiance à l'heure de la "
+"machine, et APT de ce fait désactivera toutes les vérifications de ce type, "
+"telles que <option>Check-Valid-Until</option> et la vérification que le "
+"champ Date d'un fichier Release n'est pas dans le futur."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -4981,100 +4997,6 @@ msgstr ""
 "dans les pages de manuel &apt-transport-http; et &apt-transport-https; "
 "respectivement."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> est le mandataire (proxy) FTP à utiliser par "
-"défaut pour les URI FTP.  Il se présente sous la forme standard : "
-"<literal>ftp://[[user][:pass]@]host[:port]/</literal>. On peut spécifier un "
-"mandataire particulier par hôte distant en utilisant la syntaxe : "
-"<literal>ftp::Proxy::&lt;hôte&gt;</literal>. Le mot-clé spécial "
-"<literal>DIRECT</literal> indique alors de n'utiliser aucun mandataire pour "
-"l'hôte. Si aucun des paramètres précédents n'est définis, la variable "
-"d'environnement <envar>ftp_proxy</envar> annule et replace toutes les "
-"options de mandataire FTP. Pour utiliser un mandataire FTP, vous devrez "
-"renseigner l'entrée <literal>ftp::ProxyLogin</literal> dans le fichier de "
-"configuration. Cette entrée spécifie les commandes à envoyer au mandataire "
-"pour lui préciser à quoi il doit se connecter. Voyez &configureindex; pour "
-"savoir comment faire. Les variables de substitution qui représentent le "
-"composant d'URI correspondant sont : <literal>$(PROXY_USER)</literal>, "
-"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, "
-"<literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> et "
-"<literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"L'option <literal>timeout</literal> positionne le compteur d'expiration du "
-"délai (timeout) utilisé par la méthode. Cela s'applique aussi bien à la "
-"connexion qu'aux données."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"Plusieurs options de configuration sont fournies pour contrôler le mode "
-"passif. Il est généralement plus sûr d'activer le mode passif et cela marche "
-"dans presque tous les environnements. Cependant, certaines situations "
-"nécessitent que le mode passif soit désactivé et que le mode « port » de ftp "
-"soit utilisé à la place. On peut le faire globalement, pour des connexions "
-"qui passent par un mandataire ou pour une machine spécifique (examinez le "
-"modèle de fichier de configuration)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"Il est possible de faire transiter le trafic FTP par un mandataire HTTP en "
-"positionnant la variable d'environnement <envar>ftp_proxy</envar> à une URL "
-"HTTP -- consultez la méthode http ci-dessus pour la syntaxe. On ne peut pas "
-"le faire dans le fichier de configuration et il n'est de toute façon pas "
-"recommandé d'utiliser FTP au travers de HTTP en raison de la faible "
-"efficacité de cette méthode."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"L'option <literal>ForceExtended</literal> contrôle l'utilisation des "
-"commandes liées à la RFC 2428, <literal>EPSV</literal> et <literal>EPRT</"
-"literal>. Par défaut, elle vaut « false » ce qui signifie que ces commandes "
-"ne sont utilisées que pour une connexion de type IPv6. Quand elle vaut "
-"« true », on les utilise même si la connexion est de type IPv4. La plupart "
-"des serveurs FTP ne suivent pas la RFC 2428."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5110,8 +5032,8 @@ msgid ""
 "For GPGV URIs the only configurable option is <literal>gpgv::Options</"
 "literal>, which passes additional parameters to gpgv."
 msgstr ""
-"La seule option pour les URI GPGV est <literal>gpgv::Options</literal>, qui "
-"permet de passer des paramètres à gpgv"
+"La seule option pour les URI GPGV est <literal>gpgv::Options</literal> qui "
+"passe des paramètres supplémentaires à gpgv."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
 #: apt.conf.5.xml
@@ -5181,8 +5103,8 @@ msgstr ""
 "compression. Si l'objectif est d'utiliser <command>xz</command> en priorité "
 "par rapport à <command>gzip</command> et <command>bzip2</command>, ce "
 "réglage doit ressembler à <placeholder type=\"synopsis\" id=\"1\"/>. Il est "
-"inutile d'ajouter explicitement <literal>bz2</literal> à liste car il sera "
-"ajouté automatiquement."
+"inutile d'ajouter explicitement <literal>bz2</literal> à la liste, car il "
+"sera ajouté automatiquement."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
@@ -5243,8 +5165,8 @@ msgstr ""
 "fichiers Packages, Sources, Translations), ceux-ci seront compressés avec "
 "gzip au lieu d'être laissés décompressés. Cela peut permettre de gagner "
 "beaucoup d'espace disque au prix d'une utilisation plus importante du "
-"processeur lorsque les caches locaux sont créés. Valeur par défaut : Faux "
-"(« False »)."
+"processeur lorsque les caches locaux sont créés. Valeur par défaut : "
+"« false »."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5282,9 +5204,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5321,7 +5243,7 @@ msgid ""
 "added to the end of the list (after an implicit \"<literal>none</literal>\")."
 msgstr ""
 "Note : afin d'éviter des problèmes lorsqu'APT est exécuté dans différents "
-"environnements (p. ex. par différents utilisateurs ou différents "
+"environnements (par exemple par différents utilisateurs ou différents "
 "programmes), tous les fichiers « Translation »qui sont trouvés dans "
 "<filename>/var/lib/apt/lists/</filename> seront ajoutés à la fin de la liste "
 "(après un « <literal>none</literal> » implicite)."
@@ -5381,7 +5303,7 @@ msgstr ""
 "partir de dépôts qui fournissent des informations de sécurité, mais qui ne "
 "sont plus considérés comme suffisamment robustes sur le plan de la "
 "cryptographie. La valeur par défaut est « <literal>false</literal> ». Le "
-"concept, les implications ainsi que les alternatives sont détaillés dans "
+"concept, les implications ainsi que les alternatives sont détaillées dans "
 "&apt-secure;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -5400,7 +5322,7 @@ msgstr ""
 "Cette option peut être utilisée pour contourner cette protection. Vous ne "
 "souhaiterez presque certainement jamais activer cette option. La valeur pas "
 "défaut est « <literal>false</literal> ». Le concept, les implications ainsi "
-"que les alternatives sont détaillés dans &apt-secure;."
+"que les alternatives sont détaillées dans &apt-secure;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt.conf.5.xml
@@ -5418,47 +5340,89 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
 msgstr ""
 "La récupération des journaux des modifications n'est possible que si l'URI "
 "où les télécharger est connu. De préférence, le fichier Release l'indique "
 "dans un champ « Changelogs ». S'il n'est pas disponible, les champs Label ou "
 "Origine du fichier Release sont utilisés pour vérifier si les options "
-"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></"
-"literal> ou <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGINE</"
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>ÉTIQUETTE</"
+"replaceable></literal> ou <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGINE</replaceable></literal> existent, et si c'est le cas, "
+"cette valeur est prise. La valeur dans le fichier Release peut être "
+"outrepassée par <literal>Acquire::Changelogs::URI::Override::Label::"
+"<replaceable>ÉTIQUETTE</replaceable></literal> ou "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. La valeur devrait être un URI normal vers un fichier "
+"texte, à l'exception que les données spécifiques du paquet sont remplacées "
+"par le paramètre <literal>@CHANGEPATH@</literal>. Sa valeur est la "
+"suivante : 1. si le paquet provient d'un composant (par exemple "
+"<literal>main</literal>) il constitue la première partie, sinon il est "
+"omis ; 2. est la première lettre du nom du paquet source, sauf si le nom du "
+"paquet source commence par <literal>lib</literal> auquel cas les quatre "
+"premières lettres seront utilisées ; 3. le nom complet du paquet source ; 4. "
+"le nom complet une fois de plus et 5. la version de la source. Les quatre "
+"premières parties (ou trois si le composant est absent) sont séparées par "
+"des barres obliques (« <literal>/</literal> ») et les deux dernières sont "
+"séparées par un caractère de soulignement (« <literal>_</literal> »). La "
+"valeur spéciale « <literal>no</literal> » est disponible pour indiquer que "
+"cette source ne peut être utilisée pour récupérer les fichiers changelog. "
+"Dans ce cas, une autre source sera essayée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
+msgstr ""
+"Comme pour les journaux des modifications, la récupération des instantanés "
+"n'est possible que si l'URI où les télécharger est connu. De préférence, le "
+"fichier Release l'indique dans un champ « Snapshots ». S'il n'est pas "
+"disponible, les champs Label ou Origine du fichier Release sont utilisés "
+"pour vérifier si les options <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>ÉTIQUETTE</replaceable></literal> ou "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGINE</"
 "replaceable></literal> existent, et si c'est le cas, cette valeur est prise. "
-"La valeur dans le fichier Release peut être contournée par <literal>Acquire::"
-"Changelogs::URI::Override::Label::<replaceable>LABEL</replaceable></literal> "
-"ou <literal>Acquire::Changelogs::URI::Override::Origin::"
-"<replaceable>ORIGINE</replaceable></literal>. La valeur devrait être un URI "
-"normal vers un fichier texte, à l'exception que les données spécifiques du "
-"paquet sont remplacées par le paramètre <literal>@CHANGEPATH@</literal>. Sa "
-"valeur est la suivante : 1. si le paquet provient d'un composant (par "
-"exemple <literal>main</literal>) il constitue la première partie, sinon elle "
-"est omise ; 2. est la première lettre du nom du paquet source, sauf si le "
-"nom du paquet source commence par <literal>lib</literal> auquel cas les "
-"quatre premières lettres seront utilisées ; 3. le nom complet du paquet "
-"source ; 4. le nom complet une fois de plus ; 5. la version de la source. "
-"Les quatres premières parties (ou trois si le composant est absent) sont "
-"séparées par des barres obliques (« <literal>/</literal> »), et les deux "
-"dernières sont séparées par un caractère de soulignement (« <literal>_</"
-"literal> »). La valeur spéciale « <literal>no</literal> » est disponible "
-"pour indiquer que cette source ne peut être utilisée pour récupérer les "
-"fichiers changelog. Dans ce cas, une autre source sera essayée."
+"La valeur dans le fichier Release peut être contournée par "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>ÉTIQUETTE</"
+"replaceable></literal> ou "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. La valeur devrait être un URI normal vers un "
+"répertoire, à l'exception que l'identifiant de l'instantané est remplacé par "
+"le paramètre <literal>@SNAPSHOTID@</literal>. La valeur spéciale "
+"« <literal>no</literal> » est disponible pour indiquer que cette source ne "
+"peut être utilisée pour récupérer les instantanés. Dans ce cas, une autre "
+"source sera essayée."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5470,9 +5434,9 @@ msgstr "Configuration spécifique d'exécutable"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "Particulièrement avec l'introduction de l'exécutable <command>apt</command> "
 "il peut être utile de configurer certaines options seulement pour un "
@@ -5494,8 +5458,8 @@ msgstr ""
 "réalisée en réglant l'option dans le champ d'action <option>Binary::"
 "<replaceable>exécutable-spécifique</replaceable></option>. Affecter l'option "
 "<option>APT::Get::Show-Versions</option> à <command>apt</command> seulement "
-"peut être fait, par exemple en configurant plutôt <option>Binary::apt::APT::"
-"Get::Show-Versions</option>."
+"peut être fait, par exemple en configurant plutôt "
+"<option>Binary::apt::APT::Get::Show-Versions</option>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5529,10 +5493,10 @@ msgstr ""
 "système local. <literal>lists</literal> est le répertoire où placer les "
 "listes de paquets téléchargés et <literal>status</literal> est le nom du "
 "fichier d'état de &dpkg;. <literal>preferences</literal> concerne APT : "
-"c'est le nom du fichier <filename>preferences</filename>. <literal>Dir::"
-"State</literal> contient le répertoire par défaut préfixé à tous les sous-"
-"éléments, quand ceux-ci ne commencent pas par <filename>/</filename> ou "
-"<filename>./</filename>."
+"c'est le nom du fichier <filename>preferences</filename>. "
+"<literal>Dir::State</literal> contient le répertoire par défaut préfixé à "
+"tous les sous-éléments, quand ceux-ci ne commencent pas par <filename>/</"
+"filename> ou <filename>./</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5550,14 +5514,14 @@ msgstr ""
 "<literal>Dir::Cache</literal> contient les emplacements qui renseignent sur "
 "le cache local : par exemple, les deux caches de paquets "
 "<literal>srcpkgcache</literal> et <literal>pkgcache</literal>, ainsi que "
-"l'endroit où sont placées les archives téléchargées, <literal>Dir::Cache::"
-"archives</literal>. On peut empêcher la création des caches en positionnant "
-"<literal>pkgcache</literal> ou <literal>srcpkgcache</literal> à la valeur "
-"<literal>\"\"</literal>. Cela ralentit le démarrage mais économise de "
-"l'espace disque. Il vaut mieux se passer du cache <literal>pkgcache</"
-"literal> plutôt que se passer du cache <literal>srcpkgcache</literal>. Comme "
-"pour <literal>Dir::State</literal>, le répertoire par défaut est contenu "
-"dans <literal>Dir::Cache</literal>."
+"l'endroit où sont placées les archives téléchargées, "
+"<literal>Dir::Cache::archives</literal>. On peut empêcher la création des "
+"caches en positionnant <literal>pkgcache</literal> ou <literal>srcpkgcache</"
+"literal> à la valeur <literal>\"\"</literal>. Cela ralentit le démarrage "
+"mais économise de l'espace disque. Il vaut mieux se passer du cache "
+"<literal>pkgcache</literal> plutôt que se passer du cache "
+"<literal>srcpkgcache</literal>. Comme pour <literal>Dir::State</literal>, le "
+"répertoire par défaut est contenu dans <literal>Dir::Cache</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5588,20 +5552,20 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
 "Les programmes binaires sont pointés par <literal>Dir::Bin</literal>. "
-"L'emplacement des gestionnaires de méthodes est indiqué par <literal>Dir::"
-"Bin::Methods</literal> ; <literal>gzip</literal>, <literal>bzip2</literal>, "
-"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</"
-"literal>, <literal>dpkg-source</literal>, <literal>dpkg-buildpackage</"
-"literal> et <literal>apt-cache</literal> indiquent l'emplacement des "
-"programmes correspondants."
+"L'emplacement des gestionnaires de méthodes est indiqué par "
+"<literal>Dir::Bin::Methods</literal> ; <literal>gzip</literal>, "
+"<literal>bzip2</literal>, <literal>lzma</literal>, <literal>dpkg</literal>, "
+"<literal>apt-get</literal>, <literal>dpkg-source</literal>, <literal>dpkg-"
+"buildpackage</literal> et <literal>apt-cache</literal> indiquent "
+"l'emplacement des programmes correspondants."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5618,13 +5582,13 @@ msgstr ""
 "L'option de configuration <literal>RootDir</literal> a une signification "
 "particulière. Lorsqu'elle est définie, tous les chemins sont considérés "
 "relativement à <literal>RootDir</literal>, <emphasis>même les chemins "
-"spécifiés de manière absolue</emphasis>. Ainsi par exemple si "
-"<literal>RootDir</literal> est défini comme <filename>/tmp/staging</"
-"filename>, et que chemin du fichier d'état <literal>Dir::State::status</"
-"literal> est déclaré comme <filename>/var/lib/dpkg/status</filename> alors "
-"ce fichier sera cherché dans <filename>/tmp/staging/var/lib/dpkg/status</"
-"filename>. Si vous souhaitez seulement préfixer des chemins relatifs, "
-"définissez plutôt <literal>Dir</literal>."
+"spécifiés de manière absolue</emphasis>. Par exemple, si <literal>RootDir</"
+"literal> est défini comme <filename>/tmp/staging</filename>, et que chemin "
+"du fichier d'état <literal>Dir::State::status</literal> est déclaré comme "
+"<filename>/var/lib/dpkg/status</filename>, alors ce fichier sera cherché "
+"dans <filename>/tmp/staging/var/lib/dpkg/status</filename>. Si vous "
+"souhaitez seulement préfixer des chemins relatifs, définissez plutôt "
+"<literal>Dir</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5799,9 +5763,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "Chaque ligne de directive de configuration a la forme <literal>clé=valeur</"
 "literal>. Les caractères spéciaux (signes égal, fin de ligne, caractères non "
@@ -5865,10 +5829,10 @@ msgid ""
 msgstr ""
 "La version du protocole qu'il faut utiliser pour la commande "
 "<literal><replaceable>cmd</replaceable></literal> peut être choisie en "
-"réglant <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::"
-"Version</literal> en conséquence, la version par défaut étant la première. "
-"Si APT ne gère pas la version demandée, il enverra les informations dans la "
-"version la plus haute qu'il gère."
+"réglant <literal>DPkg::Tools::options::<replaceable>cmd</"
+"replaceable>::Version</literal> en conséquence, la version par défaut étant "
+"la première. Si APT ne gère pas la version demandée, il enverra les "
+"informations dans la version la plus haute qu'il gère."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5937,10 +5901,10 @@ msgid ""
 "<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
 "this script for the brief documentation of these options."
 msgstr ""
-"Les groupes d'options <literal>APT::Periodic</literal> et <literal>APT::"
-"Archive</literal> configurent les comportements périodiques réalisés par le "
-"script <literal>/usr/lib/apt/apt.systemd.daily</literal>, lancé "
-"quotidiennement."
+"Les groupes d'options <literal>APT::Periodic</literal> et "
+"<literal>APT::Archive</literal> configurent les comportements périodiques "
+"réalisés par le script <literal>/usr/lib/apt/apt.systemd.daily</literal>, "
+"lancé quotidiennement."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -6012,32 +5976,27 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid "A full list of debugging options to apt follows."
-msgstr "Liste complète des options de débogage de APT :"
+msgstr "Liste complète des options de débogage d'APT :"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
-"Affiche les informations concernant les sources de type <literal>cdrom://</"
+"Afficher les informations concernant les sources de type <literal>cdrom://</"
 "literal>"
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"Affiche les informations concernant le téléchargement de paquets par FTP."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
-"Affiche les informations concernant le téléchargement de paquets par HTTP."
+"Afficher les informations concernant le téléchargement de paquets par HTTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTPS."
-msgstr "Print information related to downloading packages using HTTPS."
+msgstr ""
+"Afficher les informations concernant le téléchargement de paquets par HTTPS."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6045,8 +6004,8 @@ msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
 msgstr ""
-"Affiche les informations relatives à la vérification de signatures "
-"cryptographiques avec <literal>gpg</literal>."
+"Afficher les informations relatives à la vérification de signatures "
+"chiffrées avec <literal>gpg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6054,24 +6013,17 @@ msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
 msgstr ""
-"Affiche des informations concernant l'accès aux collections de paquets "
+"Afficher des informations concernant l'accès aux collections de paquets "
 "stockées sur CD."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"Décrit le processus de résolution des dépendances pour la construction de "
-"paquets source ( « build-dependencies » ) par &apt-get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
 msgstr ""
-"Affiche toutes les clés de hachage cryptographiques créées par les "
-"librairies d'<literal>apt</literal>."
+"Afficher tous les hachages de chiffrement créés par les bibliothèques "
+"d'<literal>apt</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6080,9 +6032,9 @@ msgid ""
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
 "a CD-ROM."
 msgstr ""
-"Désactive l'inclusion des données de type <literal>statfs</literal> pour la "
+"Ne pas inclure les informations de <literal>statfs</literal> pour la "
 "génération des identifiants de CD, c'est-à-dire le nombre de blocs libres et "
-"utilisés sur le système de fichier du CD."
+"utilisés sur le système de fichiers du CD."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6090,7 +6042,7 @@ msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
 msgstr ""
-"Désactive le verrouillage de fichiers. Cela permet par exemple de lancer "
+"Désactiver le verrouillage de fichiers. Cela permet par exemple de lancer "
 "deux instances de <quote><literal>apt-get update</literal></quote> en même "
 "temps."
 
@@ -6098,7 +6050,7 @@ msgstr ""
 #: apt.conf.5.xml
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
-"Trace les ajouts et suppressions d'éléments de la queue globale de "
+"Tracer les ajouts et suppressions d'éléments de la queue globale de "
 "téléchargement."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6107,8 +6059,8 @@ msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
 msgstr ""
-"Affiche les détails de la vérification des sommes de contrôle et des "
-"signatures cryptographiques des fichiers téléchargés, ainsi que les erreurs "
+"Afficher les messages d’état de la vérification des sommes de contrôle et "
+"des signatures chiffrées des fichiers téléchargés, ainsi que les erreurs "
 "éventuelles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6117,8 +6069,8 @@ msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
 msgstr ""
-"Affiche les informations de téléchargement et de prise en compte des "
-"fichiers différentiels des indexes de paquets, ainsi que les erreurs "
+"Afficher les informations de téléchargement et de prise en compte des "
+"fichiers différentiels des listes d'index de paquets, ainsi que les erreurs "
 "éventuelles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6127,7 +6079,7 @@ msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
 msgstr ""
-"Affiche les détails de l'application des fichiers de différences aux listes "
+"Afficher les détails de l'application des fichiers de différences aux listes "
 "de paquets d'APT quand ces fichiers de différences sont téléchargés à la "
 "place des fichiers complets."
 
@@ -6136,7 +6088,7 @@ msgstr ""
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
-"Affiche toutes les interactions avec les processus enfants qui se chargent "
+"Afficher toutes les interactions avec les processus enfants qui se chargent "
 "effectivement des téléchargements."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6145,8 +6097,8 @@ msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
 msgstr ""
-"Affiche les changements concernant le marquage des paquets comme installés "
-"automatiquement, et la suppression des paquets inutiles."
+"Afficher les changements concernant le marquage des paquets comme installés "
+"automatiquement et la suppression des paquets inutiles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6154,14 +6106,14 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
-"Crée les informations de débogage décrivant quels paquets sont installés "
+"Créer les informations de débogage décrivant quels paquets sont installés "
 "automatiquement pour satisfaire les dépendances. Cela concerne la passe "
 "initiale d'installation automatique effectuée par exemple par <literal>apt-"
 "get install</literal> et pas le système de résolution de dépendances complet "
-"de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
+"d'APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6171,33 +6123,29 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
-msgstr ""
-"Crée les informations de débogage décrivant quels paquets sont gardés/"
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
+msgstr ""
+"Créer les informations de débogage décrivant quels paquets sont gardés/"
 "installés/supprimés pendant le travail de l'outil de résolution de "
 "problèmes. Chaque ajout ou suppression peut impliquer des actions "
-"supplémentaires ; elles sont alors indiquées avec une indentation de deux "
-"espaces de plus que l'action qui les a déclenchées. Le format de chaque "
+"supplémentaires ; elles sont alors indiquées avec une indentation de deux "
+"espaces de plus sous l'action qui les a déclenchées. Le format de chaque "
 "ligne est <literal>MarkKeep</literal>, <literal>MarkDelete</literal> ou "
 "<literal>MarkInstall</literal> suivi de <literal>nom-paquet &lt;a.b.c -&gt; "
 "d.e.f | x.y.z&gt; (section)</literal> où <literal>a.b.c</literal> est la "
 "version actuelle du paquet, <literal>d.e.f</literal> la version devant être "
 "installée et <literal>x.y.z</literal> une version plus récente qui n'est pas "
-"prévue pour être installée (à cause d'un score plus faible). Ces deux "
-"derniers éléments peuvent ne pas être mentionnés s'ils ne sont pas "
-"pertinents où lorsque ils sont identiques à la version installée. "
+"prévue pour être installée (à cause d'un score d'épinglage plus faible). Ces "
+"deux derniers éléments peuvent ne pas être mentionnés s'ils ne sont pas "
+"pertinents ou lorsqu'ils sont identiques à la version installée. "
 "<literal>section</literal> est le nom de la section où figure le paquet."
-"automatiquement pour satisfaire les dépendances. Cela concerne la passe "
-"initiale d'installation automatique effectuée par exemple par <literal>apt-"
-"get install</literal> et pas le système de résolution de dépendances complet "
-"de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6205,8 +6153,8 @@ msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
 msgstr ""
-"Affiche la commande exacte d'invocation de &dpkg; à chaque appel ; les "
-"paramètres sont séparés par des espaces."
+"Afficher la commande exacte d'invocation de &dpkg; à chaque appel ; les "
+"paramètres sont séparés par une unique espace."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6214,7 +6162,7 @@ msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
 msgstr ""
-"Affiche l'ensemble des informations reçues de &dpkg; par l'intermédiaire du "
+"Afficher l'ensemble des informations reçues de &dpkg; par l'intermédiaire du "
 "descripteur de fichier d'état, et les éventuelles erreurs d'analyse de ce "
 "fichier."
 
@@ -6224,19 +6172,21 @@ msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
 msgstr ""
-"Affiche les étapes de l'algorithme utilisé pour choisir l'ordre dans lequel "
+"Afficher les étapes de l'algorithme utilisé pour choisir l'ordre dans lequel "
 "<literal>apt</literal> passe les paquets à &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
-msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;."
+msgstr ""
+"Afficher les messages d'état traçant les étapes réalisées lors de "
+"l'invocation de &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Output the priority of each package list on startup."
-msgstr "Affiche, au lancement, la priorité de chaque liste de paquets."
+msgstr "Afficher, au lancement, la priorité de chaque liste de paquets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6244,7 +6194,7 @@ msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
 msgstr ""
-"Affiche la trace d'exécution du système de résolution de dépendances (ne "
+"Afficher la trace d'exécution du système de résolution de dépendances (ne "
 "concerne que les cas où un problème de dépendances complexe se présente)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6254,29 +6204,30 @@ msgid ""
 "the pkgProblemResolver. The description of the package is the same as "
 "described in <literal>Debug::pkgDepCache::Marker</literal>"
 msgstr ""
-"Affiche la liste de tous les paquets installés avec leur score calculé par "
+"Afficher la liste de tous les paquets installés avec leur score calculé par "
 "l'outil de résolution de problèmes. La description du paquet est celle qui "
 "est décrite dans <literal>Debug::pkgDepCache::Marker</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
-"Affiche les fournisseurs déclarés dans le fichier <filename>/etc/apt/vendors."
-"list</filename>."
+"Afficher les fournisseurs déclarés dans le fichier <filename>/etc/apt/"
+"vendors.list</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
-"Affiche les commandes externes qui sont appelés par le point d'entrée apt. "
-"Cela inclut par exemple les options de configuration <literal>DPkg::{Pre,"
-"Post}-Invoke</literal> ou <literal>APT::Update::{Pre,Post}-Invoke</literal>."
+"Afficher les commandes externes qui sont appelées par les points d'entrée "
+"d'apt. Cela inclut par exemple les options de configuration <literal>DPkg::"
+"{Pre,Post}-Invoke</literal> ou <literal>APT::Update::{Pre,Post}-Invoke</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
@@ -6335,10 +6286,10 @@ msgstr ""
 "literal>), plusieurs versions d'un paquet peuvent être installées. APT "
 "affecte une priorité à chaque version disponible. La commande <command>apt-"
 "get</command>, tenant compte des contraintes de dépendance, installe la "
-"version qui possède la priorité la plus haute.  Le fichier "
-"<filename>preferences</filename> annule les priorités assignées par défaut "
-"aux versions des paquets : ainsi l'utilisateur peut choisir la version qu'il "
-"veut installer."
+"version qui possède la priorité la plus haute. Le fichier "
+"<filename>preferences</filename> outrepasse les priorités assignées par "
+"défaut aux versions des paquets : ainsi l'utilisateur peut choisir la "
+"version qu'il veut installer."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt_preferences.5.xml
@@ -6389,15 +6340,15 @@ msgid ""
 "<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
 "case it will be silently ignored."
 msgstr ""
-"Veuillez noter que les fichiers du répertoire <filename>/etc/apt/preferences."
-"d</filename> sont analysés par ordre alphanumérique ascendant, doivent avoir "
-"l'extension \"<literal>pref</literal>\" ou aucune extension et ne peuvent "
-"contenir que des caractères alphanumériques, des tirets (-), des caractères "
-"de soulignement (_) et des points (.). Dans le cas contraire, APT affichera "
-"un avertissement indiquant qu'il a ignoré un fichier si celui-ci ne "
-"correspond par à un motif défini dans <literal>Dir::Ignore-Files-Silently</"
-"literal> (les fichiers correspondant à cette variable de configuration "
-"étant, eux, ignorés silencieusemennt)."
+"Veuillez noter que les fichiers du répertoire <filename>/etc/apt/"
+"preferences.d</filename> sont analysés par ordre alphanumérique ascendant, "
+"doivent avoir l'extension \"<literal>pref</literal>\" ou aucune extension et "
+"ne peuvent contenir que des caractères alphanumériques, des tirets (-), des "
+"caractères de soulignement (_) et des points (.). Dans le cas contraire, APT "
+"affichera un avertissement indiquant qu'il a ignoré un fichier si celui-ci "
+"ne correspond par à un motif défini dans <literal>Dir::Ignore-Files-"
+"Silently</literal> (les fichiers correspondant à cette variable de "
+"configuration étant, eux, ignorés silencieusement)."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -6434,12 +6385,15 @@ msgid ""
 msgstr ""
 "Quand le fichier des préférences n'existe pas, ou quand aucune entrée de ce "
 "fichier ne s'applique à une version précise, la priorité affectée à cette "
-"version est la priorité de la distribution à laquelle elle appartient.  On "
-"peut distinguer une distribution et lui donner une priorité plus haute que "
-"celle des autres distributions : on l'appelle la distribution par défaut ou "
-"« target release » et elle peut être définie sur la ligne de commande de "
-"<command>apt-get</command> ou dans le fichier de configuration d'APT, "
-"<filename>/etc/apt/apt.conf</filename>.  Par exemple : <placeholder "
+"version est la priorité de la distribution à laquelle elle appartient. Il "
+"est possible de distinguer une distribution, la « target release » "
+"(distribution par défaut) qui reçoit une priorité plus haute que celle des "
+"autres distributions. Cette distribution par défaut peut être définie sur la "
+"ligne de commande de <command>apt-get</command> ou dans le fichier de "
+"configuration d'APT, <filename>/etc/apt/apt.conf</filename>. Notez que cette "
+"priorité est plus forte que toute priorité générale définie dans le fichier "
+"<filename>/etc/apt/preferences</filename> décrit plus loin, mais pas sur des "
+"paquets spécialement épinglés. Par exemple : <placeholder "
 "type=\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" "
 "id=\"1\"/>"
 
@@ -6459,12 +6413,6 @@ msgstr "priorité 1"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
 #: apt_preferences.5.xml
-#, fuzzy
-#| msgid ""
-#| "to the versions coming from archives which in their <filename>Release</"
-#| "filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
-#| "emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
-#| "<literal>experimental</literal> archive."
 msgid ""
 "to the versions coming from archives which in their <filename>Release</"
 "filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
@@ -6473,9 +6421,10 @@ msgid ""
 "phased on this systems."
 msgstr ""
 "pour les versions issues d'archives dont le fichier <filename>Release</"
-"filename> comporte la mention « NotAutomatic: yes » mais <emphasis>pas</"
+"filename> comporte la mention « NotAutomatic: yes », mais <emphasis>pas</"
 "emphasis> « ButAutomaticUpgrades: yes » comme l'archive "
-"<literal>experimental</literal> de Debian."
+"<literal>experimental</literal> de Debian, ainsi que comme les versions qui "
+"ne sont pas par étapes sur ces systèmes."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
 #: apt_preferences.5.xml
@@ -6539,7 +6488,7 @@ msgid ""
 msgstr ""
 "Quand aucune distribution par défaut n'a été indiquée, APT affecte "
 "simplement une priorité égale à 100 à toute version installée d'un paquet et "
-"une priorité égale à 500 à tout version non installée. Cela à l'exception "
+"une priorité égale à 500 à toute version non installée. Cela à l'exception "
 "des versions issues des archives qui ont la mention « NotAutomatic: yes » "
 "dans leur fichier <filename>Release</filename>, qui auront alors une "
 "priorité égale à 1 ou à 100 si elles sont également marquées avec "
@@ -6582,7 +6531,8 @@ msgid ""
 "(that is, the one with the higher version number)."
 msgstr ""
 "Quand deux (ou plus) versions ont la même priorité, installer la version la "
-"plus récente (c.-à-d. celle dont le numéro de version est le plus grand)."
+"plus récente (c'est-à-dire celle dont le numéro de version est le plus "
+"grand)."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
@@ -6619,7 +6569,7 @@ msgid ""
 "downgraded when <command>apt-get install <replaceable>some-package</"
 "replaceable></command> or <command>apt-get upgrade</command> is executed."
 msgstr ""
-"La version installée d'un paquet peut être - rarement - <emphasis>plus</"
+"La version installée d'un paquet peut être – rarement – <emphasis>plus</"
 "emphasis> récente que tout autre version disponible. Les commandes "
 "<command>apt-get install <replaceable>paquet</replaceable></command> ou "
 "<command>apt-get upgrade</command> ne provoquent pas de retour en arrière."
@@ -6646,7 +6596,7 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
 msgid "Phased Updates"
-msgstr ""
+msgstr "Mises à jour par étapes"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6655,6 +6605,9 @@ msgid ""
 "which can be used to control the rollout of a new version. It is an integer "
 "between 0 and 100."
 msgstr ""
+"APT interprète un champ intitulé <literal>Phased-Update-Percentage</literal> "
+"qui peut être utilisé pour contrôler la mise en œuvre d'une nouvelle "
+"version. C'est un entier entre 0 et 100."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6666,6 +6619,12 @@ msgid ""
 "version is pinned to 1, and thus held back. Otherwise, normal policy rules "
 "apply."
 msgstr ""
+"L'éligibilité d'un système à une mise à jour par étapes est déterminée par "
+"la génération d'un nombre aléatoire avec le nom du paquet source, le numéro "
+"de version et le /etc/machine-id, puis en calculant un entier dans la plage "
+"[0, 100]. Si cet entier est supérieur au <literal>Phased-Update-Percentage</"
+"literal>, la version est épinglée à 1 et donc retenue. Autrement, les règles "
+"normales de la politique s'appliquent."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6676,11 +6635,18 @@ msgid ""
 "code> or <code>APT::Get::Always-Include-Phased-Updates</code> to true such "
 "that APT will never/always consider phased updates."
 msgstr ""
+"Si vous avez plusieurs systèmes et voulez qu'ils reçoivent le même ensemble "
+"de mises à jour, vous pouvez régler <code>APT::Machine-ID</code> à un UUID "
+"tel que ces systèmes auront les mêmes étapes de mise à jour, ou définir "
+"<code>APT::Get::Never-Include-Phased-Updates</code> ou "
+"<code>APT::Get::Always-Include-Phased-Updates</code> à « true » de sorte "
+"qu'APT ne prenne jamais ou toujours en considération les mises à jour par "
+"étapes (respectivement)."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
 msgid "The Effect of APT Preferences"
-msgstr "Conséquences des préférences"
+msgstr "Conséquences des préférences d'APT"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6723,6 +6689,26 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+"Depuis la version 2.9.9, vous pouvez aussi épingler par une version de la "
+"source :"
+
+# no-wrap
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6888,7 +6874,7 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
 msgid "Matching packages in the Package field"
-msgstr ""
+msgstr "Correspondance de paquets dans le champ Package"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6900,6 +6886,13 @@ msgid ""
 "expressions and regular expressions can be listed separated by whitespace in "
 "which case the record will match any of the matched packages."
 msgstr ""
+"Le champ <literal>Package</literal> définit les paquets auxquels s'applique "
+"un épinglage. Le champ peut contenir un nom de paquet binaire, un nom de "
+"paquet source (préfixé par « src: »), une expression &glob; ou une "
+"expression rationnelle (entouré de barres obliques). Plusieurs noms de "
+"paquet, expressions &glob; ou expressions rationnelles peuvent être listés "
+"séparés par des espaces, auquel cas l'entrée correspondra à tous les paquets "
+"correspondants."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -6910,28 +6903,26 @@ msgid ""
 "by appending the architecture name to the package name, separated by a colon "
 "character."
 msgstr ""
+"Par défaut, seuls les paquets de l'architecture native peuvent correspondre. "
+"Pour que des paquets binaires de toutes les architectures correspondent, "
+"ajoutez le suffixe <literal>:any</literal> au nom de paquet. Il est aussi "
+"possible de limiter la correspondance à une architecture particulière en "
+"ajoutant le nom de l'architecture au nom du paquet, séparé par le caractère "
+"deux-points."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
-#, fuzzy
-#| msgid ""
-#| "APT also supports pinning by &glob; expressions, and regular expressions "
-#| "surrounded by slashes. For example, the following example assigns the "
-#| "priority 500 to all packages from experimental where the name starts with "
-#| "gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
-#| "extended regular expression surrounded by slashes)."
 msgid ""
 "For example, the following example uses a glob expression and a regular "
 "expression to assign the priority 500 to all packages from experimental "
 "where the name starts with gnome (as a &glob;-like expression) or contains "
 "the word kde (as a POSIX extended regular expression surrounded by slashes)."
 msgstr ""
-"APT gére également l'épinglage (« pinning ») avec des expressions &glob; et "
-"des expressions régulières entourées par des barres obliques. Par exemple, "
-"l'exemple qui suit affecte une priorité de 500 à tous les paquets "
+"Dans l'exemple suivant, une expression &glob; et une expression rationnelle "
+"sont utilisées pour affecter une priorité de 500 à tous les paquets "
 "d'experimental dont le nom commence par gnome (en tant qu'expression de type "
-"&glob;) ou contient le mot kde (sous format d'une expression régulière POSIX "
-"étendue, entourée de barres obliques)."
+"&glob;) ou contient le mot kde (sous forme d'une expression rationnelle "
+"POSIX étendue, entourée de barres obliques)."
 
 #. type: Content of: <refentry><refsect1><refsect2><programlisting>
 #: apt_preferences.5.xml
@@ -6979,7 +6970,7 @@ msgid ""
 "specific pins override it.  The pattern \"<literal>*</literal>\" in a "
 "Package field is not considered a &glob; expression in itself."
 msgstr ""
-"Si une expression régulière est rencontrée dans un champ <literal>Package</"
+"Si une expression rationnelle est rencontrée dans un champ <literal>Package</"
 "literal>, le comportement sera celui qui aurait eu lieu si cette expression "
 "était remplacée par la liste de tous les paquets auxquels elle correspond. "
 "Il n'est pas encore décidé si cela sera conservé dans le futur : il est donc "
@@ -6994,22 +6985,20 @@ msgid ""
 "To pin all binaries produced by the apt source package of this APT's version "
 "to 990, you can do:"
 msgstr ""
+"Pour épingler tous les binaires produits par le paquet source apt de cette "
+"version d'APT à une valeur de 990, vous pouvez entrer :"
 
 #. type: Content of: <refentry><refsect1><refsect2><programlisting>
 #: apt_preferences.5.xml
-#, fuzzy, no-wrap
-#| msgid ""
-#| "Package: perl\n"
-#| "Pin: version &good-perl;*\n"
-#| "Pin-Priority: 1001\n"
+#, no-wrap
 msgid ""
 "Package: src:apt\n"
 "Pin: version &apt-product-version;\n"
 "Pin-Priority: 990\n"
 msgstr ""
-"Package: perl\n"
-"Pin: version &good-perl;*\n"
-"Pin-Priority: 1001\n"
+"Package: src:apt\n"
+"Pin: version &apt-product-version;\n"
+"Pin-Priority: 990\n"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -7017,6 +7006,9 @@ msgid ""
 "Source package pinning can be combined with regular expressions and glob "
 "patterns, and can also take a binary architecture."
 msgstr ""
+"L'épinglage de paquet source peut être combiné avec des expressions "
+"rationnelles et des motifs &glob;, et peut aussi porter sur une architecture "
+"binaire."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
@@ -7024,31 +7016,33 @@ msgid ""
 "For example, let's pin all binaries for all architectures produced by any "
 "source package containing apt in its name to 990:"
 msgstr ""
+"Par exemple, nous allons épingler à 990 tous les binaires pour toutes les "
+"architectures produites par un paquet source contenant apt dans son nom :"
 
 #. type: Content of: <refentry><refsect1><refsect2><programlisting>
 #: apt_preferences.5.xml
-#, fuzzy, no-wrap
-#| msgid ""
-#| "Package: *\n"
-#| "Pin: origin \"\"\n"
-#| "Pin-Priority: 999\n"
+#, no-wrap
 msgid ""
 "Package: src:*apt*:any\n"
 "Pin: version *\n"
 "Pin-Priority: 990\n"
 msgstr ""
-"Package: *\n"
-"Pin: origin \"\"\n"
-"Pin-Priority: 999\n"
+"Package: src:*apt*:any\n"
+"Pin: version *\n"
+"Pin-Priority: 990\n"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
+"Le suffixe <literal>:any</literal> assure de sélectionner les paquets "
+"binaires de toutes les architectures. Sans ce suffixe, APT présume "
+"implicitement le suffixe <literal>:native</literal> qui ne sélectionne que "
+"les paquets de l'architecture native."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -7216,9 +7210,9 @@ msgstr "Alors :"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "La version la plus récente du paquet <literal>perl</literal> sera installé "
 "pour autant que son numéro de version commence par <literal>&good-perl;</"
@@ -7279,8 +7273,8 @@ msgid ""
 "relevant for setting APT priorities:"
 msgstr ""
 "Le fichier <filename>Packages</filename> se trouve normalement dans le "
-"répertoire <filename>.../dists/<replaceable>dist-name</replaceable>/"
-"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"répertoire <filename>.../dists/<replaceable>nom-distribution</replaceable>/"
+"<replaceable>composant</replaceable>/<replaceable>arch</replaceable></"
 "filename>, par exemple, <filename>.../dists/stable/main/binary-i386/"
 "Packages</filename>. Il consiste en entrées composées de lignes, une pour "
 "chaque paquet disponible dans le répertoire. Seules deux lignes des entrées "
@@ -7400,7 +7394,7 @@ msgstr ""
 "stable-version;. Il n'y a pas de numéro de version pour les distributions "
 "<literal>testing</literal> et <literal>unstable</literal> car elles n'ont "
 "pas encore été publiées. Indiquer cette valeur dans le fichier des "
-"préférences demanderait ces lignes :"
+"préférences demanderait une de ces lignes :"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -7498,19 +7492,20 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Tous les fichiers <filename>Packages</filename> et <filename>Release</"
 "filename> récupérés dans des sources indiquées dans le fichier &sources-"
 "list; sont conservés dans le répertoire <filename>/var/lib/apt/lists</"
-"filename> ou dans le fichier spécifié par la variable <literal>Dir::State::"
-"Lists</literal> dans le fichier <filename>apt.conf</filename>. Par exemple, "
-"le fichier <filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"filename> ou dans le fichier spécifié par la variable "
+"<literal>Dir::State::Lists</literal> dans le fichier <filename>apt.conf</"
+"filename>. Par exemple, le fichier "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
 "i386_Release</filename> contient le fichier <filename>Release</filename> du "
 "site <literal>debian.lcs.mit.edu</literal>, architecture <literal>binary-"
 "i386</literal> et composant <literal>contrib</literal> de la distribution "
@@ -7529,7 +7524,7 @@ msgid ""
 "provides a place for comments."
 msgstr ""
 "Toute entrée du fichier des préférences peut commencer par une ou plusieurs "
-"lignes contenant le mot <literal>Explanation:</literal>. Cela permet des "
+"lignes débutant par le mot <literal>Explanation:</literal>. Cela permet des "
 "commentaires."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7551,8 +7546,8 @@ msgid ""
 "Pin: release o=Debian\n"
 "Pin-Priority: -10\n"
 msgstr ""
-"Explanation: Ne pas installer des exemplaires d'origine Debian\n"
-"Explanation: sauf ceux de la distribution stable\n"
+"Explanation: Désinstaller ou ne pas installer de versions de paquet\n"
+"Explanation: d'origine Debian sauf ceux de la distribution stable\n"
 "Package: *\n"
 "Pin: release a=stable\n"
 "Pin-Priority: 900\n"
@@ -7865,14 +7860,25 @@ msgstr ""
 "Le répertoire <filename>/etc/apt/sources.list.d</filename> permet de "
 "spécifier des sources de paquets dans des fichiers distincts. Deux formats "
 "de fichiers différents sont permis comme cela est décrit dans les deux "
-"sections suivantes. Les noms de fichier doivent se terminer par <filename>."
-"list</filename> ou par <filename>.sources</filename> selon le format fourni. "
-"Ils ne peuvent contenir que des lettres (a-z et A-Z), des chiffres (0-9), "
-"des caractères de soulignement (_), des tirets (-) et des points (.). Dans "
-"le cas contraire, APT affichera un avertissement indiquant qu'il a ignoré un "
-"fichier si celui-ci ne correspond par à un motif défini dans <literal>Dir::"
-"Ignore-Files-Silently</literal> (les fichiers correspondant à cette variable "
-"de configuration étant, eux, ignorés silencieusement)."
+"sections suivantes. Les noms de fichier doivent se terminer par "
+"<filename>.list</filename> ou par <filename>.sources</filename> selon le "
+"format fourni. Ils ne peuvent contenir que des lettres (a-z et A-Z), des "
+"chiffres (0-9), des caractères de soulignement (_), des tirets (-) et des "
+"points (.). Dans le cas contraire, APT affichera un avertissement indiquant "
+"qu'il a ignoré un fichier si celui-ci ne correspond pas à un motif défini "
+"dans <literal>Dir::Ignore-Files-Silently</literal> (les fichiers "
+"correspondant à cette variable de configuration étant, eux, ignorés "
+"silencieusement)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
@@ -7903,11 +7909,11 @@ msgstr ""
 "literal> n'importe où sur une ligne signale que le reste de la ligne est un "
 "commentaire. Par conséquent, une entrée peut être désactivée en commentant "
 "la totalité de la ligne. Si plusieurs options doivent être fournies, elles "
-"sont séparées par des espaces et sont entourées toutes ensembles par des "
+"sont séparées par des espaces et sont entourées toutes ensemble par des "
 "crochets (<literal>[]</literal>) inclus sur la ligne après le type séparé "
 "par un espace. Si une option permet plusieurs valeurs, elles sont séparées "
 "les unes des autres par une virgule (<literal>,</literal>). Un nom d'option "
-"est séparé de ses options par une signe égal (<literal>=</literal>). Des "
+"est séparé de ses options par un signe égal (<literal>=</literal>). Des "
 "options à plusieurs valeurs disposent aussi des séparateurs <literal>-=</"
 "literal> et <literal>+=</literal>, qui, au lieu de remplacer la valeur par "
 "défaut par la ou les valeurs données, modifient la ou les valeurs par défaut "
@@ -7922,13 +7928,19 @@ msgid ""
 "expect to encounter options as they were uncommon before the introduction of "
 "multi-architecture support."
 msgstr ""
-"Il s'agit du format traditionnel, géré par toute les version de APT. "
+"Il s'agit du format traditionnel, géré par toutes les versions d'APT. "
 "Veuillez noter que toutes les options décrites plus bas ne sont pas prises "
 "en charge par toutes les versions d'APT. Notez aussi que certaine des plus "
 "anciennes applications qui analysent ce format elles-mêmes ne s'attendent "
 "pas à rencontrer des options qui étaient rares avant l'introduction de la "
 "prise en charge multi-architecture."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -7957,13 +7969,13 @@ msgid ""
 msgstr ""
 "Les fichiers dans ce format possèdent l'extension <filename>.sources</"
 "filename>. La syntaxe du format est similaire à celle des autres fichiers "
-"utilisés par Debian et ses dérivés, comme les fichiers de métadonnées qu'APT "
-"télécharge des sources configurées ou le fichier <filename>debian/control</"
-"filename> d'un paquet source de Debian. Les entrées individuelles sont "
-"séparées par une ligne vide ; les lignes vides supplémentaires sont ignorées "
-"et un caractère <literal>#</literal> en début de ligne signale la ligne "
-"comme un commentaire. Une entrée, par conséquent, peut être désactivée en "
-"commentant chaque ligne appartenant au paragraphe, mais il est "
+"utilisés par Debian et ses dérivées, comme les fichiers de métadonnées "
+"qu'APT télécharge des sources configurées ou le fichier <filename>debian/"
+"control</filename> d'un paquet source de Debian. Les entrées individuelles "
+"sont séparées par une ligne vide ; les lignes vides supplémentaires sont "
+"ignorées et un caractère <literal>#</literal> en début de ligne signale la "
+"ligne comme un commentaire. Une entrée, par conséquent, peut être désactivée "
+"en commentant chaque ligne appartenant au paragraphe, mais il est "
 "habituellement plus facile d'ajouter le champ « Enabled: no » au paragraphe "
 "pour désactiver l'entrée. Retirer ce champ ou le définir à « yes » le "
 "réactive. Les options ont la même syntaxe que tous les autres champs : un "
@@ -8051,8 +8063,8 @@ msgid ""
 "deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
 "deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
 msgstr ""
-"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
-"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+"deb [ option1=valeur1 option2=valeur2 ] uri suite [composant1] [composant2] [...]\n"
+"deb-src [ option1=valeur1 option2=valeur2 ] uri suite [composant1] [composant2] [...]"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: sources.list.5.xml
@@ -8069,9 +8081,9 @@ msgstr ""
 "     Types: deb deb-src\n"
 "     URIs: uri\n"
 "     Suites: suite\n"
-"     Components: [component1] [component2] [...]\n"
-"     option1: value1\n"
-"     option2: value2\n"
+"     Components: [composant1] [composant2] [...]\n"
+"     option1: valeur1\n"
+"     option2: valeur2\n"
 "   "
 
 #. type: Content of: <refentry><refsect1><para>
@@ -8141,7 +8153,7 @@ msgstr ""
 "ne peut indiquer qu'une seule distribution par ligne, il peut être "
 "nécessaire de disposer le même URI sur plusieurs lignes quand on veut "
 "accéder à un sous-ensemble des distributions ou composants disponibles à "
-"cette adresse. APT trie les URI après avoir crée pour lui-même la liste "
+"cette adresse. APT trie les URI après avoir créé pour lui-même la liste "
 "complète ; il regroupe les références multiples au même hôte Internet en vue "
 "d'une connexion unique et il évite ainsi, par exemple, d'établir une "
 "connexion FTP, de la fermer, faire autre chose, puis d'établir encore cette "
@@ -8177,10 +8189,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
-msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
+msgid ""
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "À titre d'exemple, les sources de votre distribution au format « One-Line-"
 "Style » pourraient ressembler à ceci : <placeholder type=\"literallayout\" "
@@ -8211,10 +8230,10 @@ msgstr ""
 "format « One-Line-Style » et le format de style deb822, mais les mêmes "
 "options sont disponibles dans les deux formats. Pour simplifier, nous "
 "listons les noms de champ avec deb822 et fournissons le nom « One-Line » "
-"entre parenthèses. Il faut se souvenir que en plus du réglage explicite des "
+"entre parenthèses. Il faut se souvenir qu'en plus du réglage explicite des "
 "options multi-valeurs, il y a aussi l'option de les modifier en se basant "
 "sur les valeurs par défaut, mais nous ne listons pas ces noms explicitement "
-"ici. Les options non prises en charge sont ignorées par toutes les version "
+"ici. Les options non prises en charge sont ignorées par toutes les versions "
 "d'APT."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -8252,20 +8271,22 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) est une option "
 "multivaleur pour définir les cibles qu'apt essaiera d’acquérir à partir de "
 "cette source. Si cette option n'est pas spécifiée, la configuration par "
-"défaut est définie par le champ d'action de configuration <option>Acquire::"
-"IndexTargets</option> (les cibles sont définies par leur nom dans le champ "
-"<literal>Created-By</literal>). De plus, les cibles peuvent être activées ou "
-"désactivées en utilisant le champ <literal>Identifier</literal> comme option "
-"avec une valeur booléenne plutôt que d'utiliser cette option multivaleur."
+"défaut est définie par le champ d'action de configuration "
+"<option>Acquire::IndexTargets</option> (les cibles sont définies par leur "
+"nom dans le champ <literal>Created-By</literal>). De plus, les cibles "
+"peuvent être activées ou désactivées en utilisant le champ "
+"<literal>Identifier</literal> comme option avec une valeur booléenne plutôt "
+"que d'utiliser cette option multivaleur."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8284,10 +8305,10 @@ msgstr ""
 "anciens plutôt que de télécharger les nouveaux index en totalité. La valeur "
 "de cette option est ignorée si le dépôt n'annonce pas la disponibilité de "
 "PDiffs. Elle a, par défaut, la valeur de l'option du même nom pour un "
-"fichier particulier défini dans le champ d'action <option>Acquire::"
-"IndexTargets</option>, qui prend lui-même par défaut la valeur de l'option "
-"de configuration <option>Acquire::PDiffs</option>, dont la valeur par défaut "
-"est <literal>yes</literal>."
+"fichier particulier défini dans le champ d'action "
+"<option>Acquire::IndexTargets</option>, qui prend lui-même par défaut la "
+"valeur de l'option de configuration <option>Acquire::PDiffs</option>, dont "
+"la valeur par défaut est <literal>yes</literal>."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8305,7 +8326,7 @@ msgid ""
 "option> scope, which itself defaults to the value of configuration option "
 "<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
 msgstr ""
-"<option>By-Hash</option> (<option>by-hash</option>)peut avoir la valeur "
+"<option>By-Hash</option> (<option>by-hash</option>) peut avoir la valeur "
 "<literal>yes</literal>, <literal>no</literal> ou <literal>force</literal> et "
 "contrôle si APT doit essayer d’acquérir des index grâce à un URI construit à "
 "partir de la somme de hachage du fichier attendu plutôt que d'utiliser le "
@@ -8399,6 +8420,20 @@ msgid ""
 " =IE0r\n"
 " -----END PGP PUBLIC KEY BLOCK-----"
 msgstr ""
+"Types: deb\n"
+"URIs: https://deb.debian.org\n"
+"Suites: stable\n"
+"Components: main contrib non-free non-free-firmware\n"
+"Signed-By:\n"
+" -----BEGIN PGP PUBLIC KEY BLOCK-----\n"
+" .\n"
+" mDMEYCQjIxYJKwYBBAHaRw8BAQdAD/P5Nvvnvk66SxBBHDbhRml9ORg1WV5CvzKY\n"
+" CuMfoIS0BmFiY2RlZoiQBBMWCgA4FiEErCIG1VhKWMWo2yfAREZd5NfO31cFAmAk\n"
+" IyMCGyMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQREZd5NfO31fbOwD6ArzS\n"
+" dM0Dkd5h2Ujy1b6KcAaVW9FOa5UNfJ9FFBtjLQEBAJ7UyWD3dZzhvlaAwunsk7DG\n"
+" 3bHcln8DMpIJVXht78sL\n"
+" =IE0r\n"
+" -----END PGP PUBLIC KEY BLOCK-----"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8410,7 +8445,10 @@ msgstr ""
 #| "as a list of absolute paths to keyring files (have to be accessible and "
 #| "readable for the <literal>_apt</literal> system user, so ensure everyone "
 #| "has read-permissions on the file) and fingerprints of keys to select from "
-#| "these keyrings. If no keyring files are specified the default is the "
+#| "these keyrings. The recommended locations for keyrings are <filename>/usr/"
+#| "share/keyrings</filename> for keyrings managed by packages, and "
+#| "<filename>/etc/apt/keyrings</filename> for keyrings managed by the system "
+#| "operator.  If no keyring files are specified the default is the "
 #| "<filename>trusted.gpg</filename> keyring and all keyrings in the "
 #| "<filename>trusted.gpg.d/</filename> directory (see <command>apt-key "
 #| "fingerprint</command>). If no fingerprint is specified all keys in the "
@@ -8421,7 +8459,10 @@ msgstr ""
 #| "name if set in the previously acquired <filename>Release</filename> file "
 #| "of this repository (only fingerprints can be specified there through).  "
 #| "Otherwise all keys in the trusted keyrings are considered valid signers "
-#| "for this repository."
+#| "for this repository.  The option may also be set directly to an embedded "
+#| "GPG public key block. Special care is needed to encode the empty line "
+#| "with leading spaces and \".\": <placeholder type=\"literallayout\" "
+#| "id=\"0\"/>"
 msgid ""
 "<option>Signed-By</option> (<option>signed-by</option>)  is an option to "
 "require a repository to pass &apt-secure; verification with a certain set of "
@@ -8434,39 +8475,44 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>) est une option pour "
-"demander la vérification d’un dépot par &apt-secure; avec un certain jeu de "
+"demander la vérification d’un dépôt par &apt-secure; avec un certain jeu de "
 "clés plutôt qu’avec la totalité des clés de confiance configurées par apt. "
 "Elle est définie comme une liste de chemins absolus vers des fichiers de "
 "trousseau de clés (qui doivent être accessibles en lecture pour "
-"l'utilisateur <literal>_apt</literal>, et donc, il faut s'assurer que tout "
-"le monde a le droit de lecture sur le fichier) et des empreintes de clés à "
-"sélectionner dans ces trousseaux. Si aucun fichier de clés n’est défini, le "
-"trousseau <filename>trusted.gpg</filename> et tous les trousseaux du "
-"répertoire <filename>trusted.gpg.d/</filename> sont sélectionnés par défaut "
-"(voir <command>apt-key fingerprint</command>). Si aucune empreinte n’est "
-"définie, toutes les clés des trousseaux sont sélectionnées. Une empreinte "
-"acceptera aussi toutes les signatures de sous clés de cette clé, et si ce "
-"n’est pas désiré, un point d’exclamation (<literal>!</literal>) peut être "
-"ajouté à l’empreinte pour désactiver ce comportement. Elle possède la valeur "
-"par défaut de l'option du même nom si elle a été définie dans le fichier "
-"<filename>Release</filename> de ce dépôt récupéré auparavant (seules des "
-"empreintes peuvent être définies par ce biais). Autrement, toutes les clés "
-"des trousseaux de confiance sont considérées comme des signatures valables "
-"pour ce dépôt."
+"l'utilisateur système <literal>_apt</literal>, et il donc faut s'assurer que "
+"tout le monde a le droit de lecture sur le fichier) et des empreintes de "
+"clés à sélectionner dans ces trousseaux. L'emplacement recommandé pour les "
+"trousseaux est <filename>/usr/share/keyrings</filename> pour les trousseaux "
+"gérés par les paquets, et <filename>/etc/apt/keyrings</filename> pour les "
+"trousseaux gérés par le système d'exploitation. Si aucun fichier de clés "
+"n’est défini, le trousseau <filename>trusted.gpg</filename> et tous les "
+"trousseaux du répertoire <filename>trusted.gpg.d/</filename> sont "
+"sélectionnés par défaut (voir <command>apt-key fingerprint</command>). Si "
+"aucune empreinte n’est définie, toutes les clés des trousseaux sont "
+"sélectionnées. Une empreinte acceptera aussi toutes les signatures de sous-"
+"clés de cette clé, et si ce n’est pas désiré, un point d’exclamation "
+"(<literal>!</literal>) peut être ajouté à l’empreinte pour désactiver ce "
+"comportement. Elle possède la valeur par défaut de l'option du même nom si "
+"elle a été définie dans le fichier <filename>Release</filename> de ce dépôt "
+"récupéré auparavant (seules des empreintes peuvent être définies par ce "
+"biais). Autrement, toutes les clés des trousseaux de confiance sont "
+"considérées comme des signatures valables pour ce dépôt. L'option peut être "
+"aussi définie directement sur un bloc de clé publique GPG incorporée. Un "
+"soin particulier doit être pris pour encoder la ligne vide avec au début des "
+"espaces vides et un « . » : <placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8481,8 +8527,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>) est "
 "une valeur yes/no qui détermine si APT doit tenter de détecter les attaques "
@@ -8541,7 +8588,7 @@ msgstr ""
 "no qui contrôle si APT doit considérer que la date de la machine est "
 "correcte et donc effectuer les vérifications liées au temps, comme vérifier "
 "si le fichier Release n'est pas dans le futur. Sa désactivation désactive "
-"l'option <option>Check-Valid-Until</option> mentionnée ci-dessus."
+"aussi l'option <option>Check-Valid-Until</option> mentionnée ci-dessus."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8552,9 +8599,9 @@ msgid ""
 "seconds by default."
 msgstr ""
 "<option>Date-Max-Future</option> (<option>date-max-future</option>) contrôle "
-"jusqu'où un dépôt peut être dans le futur. Elle possède la valeur del'option "
-"de configuration <option>Acquire::Max-FutureTime</option> qui est par défaut "
-"de 10 secondes."
+"jusqu'où un dépôt peut être dans le futur. Elle possède la valeur de "
+"l'option de configuration <option>Acquire::Max-FutureTime</option> qui est "
+"par défaut de 10 secondes."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8577,6 +8624,45 @@ msgstr ""
 "définie, le chemin spécifié sera essayé à la place du fichier InRelease, et "
 "le repli vers les fichiers <filename>Release</filename> sera désactivé."
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+"<option>Snapshot</option> (<option>snapshot</option>) permet de sélectionner "
+"une version plus ancienne de l'archive à partir du service d'instantanés. "
+"Les valeurs prises en charges sont :"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+"<literal>enable</literal> pour permettre la sélection d'un instantané avec "
+"l'option <option>--snapshot</option>, ou"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr "un identifiant d'instantané pour choisir un instantané particulier."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+"Les identifiants d'instantané sont habituellement un horodatage de forme "
+"<literal>AAAAMMJJTHHMMSSZ</literal>, comme <literal>20220102T030405Z</"
+"literal> qui est le 2 janvier 2022 à 03:04:05 UTC, mais les serveurs peuvent "
+"prendre en charge d'autres formats d'identifiant et, jusqu'à présent, APT ne "
+"fait pas de vérification."
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8606,7 +8692,7 @@ msgid ""
 "authconf;."
 msgstr ""
 "Le procédé http précise un serveur HTTP pour une archive et c'est la méthode "
-"la plus couramment utilisée. L'URI peut inclure directement les information "
+"la plus couramment utilisée. L'URI peut inclure directement les informations "
 "de connexion si l'archive le requiert, mais l'utilisation de &apt-authconf; "
 "devrait être préférée. La méthode prend également en charge SOCKS5 et les "
 "mandataires HTTP(S) configurés soit au moyen d'une configuration spécifique "
@@ -8715,39 +8801,6 @@ msgstr ""
 "programme &apt-cdrom; pour créer des entrées <literal>cdrom</literal> dans "
 "la liste des sources."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-"Le procédé <literal>ftp</literal> indique un serveur FTP comme archive. "
-"L'utilisation de FTP décline en faveur de <literal>http</literal> et "
-"<literal>https</literal> et plusieurs archives soit n'ont jamais offert "
-"d'accès FTP, soit le retirent. Si vous avez encore besoin de cette méthode, "
-"plusieurs options de configuration sont disponibles dans le champ d'action "
-"<literal>Acquire::ftp</literal> et détaillées dans &apt-conf;."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Veuillez noter qu'on peut spécifier un mandataire FTP en utilisant la "
-"variable d'environnement <envar>ftp_proxy</envar>. On peut aussi spécifier "
-"un mandataire HTTP (les serveurs mandataires HTTP comprennent souvent les "
-"URL FTP) en utilisant cette méthode et <emphasis>seulement</emphasis> cette "
-"méthode. Les mandataires qui utilisent HTTP et qui sont spécifiés dans le "
-"fichier de configuration seront ignorés."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8762,20 +8815,6 @@ msgstr ""
 "servir aux utilisateurs qui se servent d'un support amovible pour recopier "
 "des fichiers avec APT."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"Le procédé rsh/ssh utilise rsh/ssh pour se connecter à une machine distante "
-"et pour accéder aux fichiers en tant qu'un certain utilisateur. Il est "
-"recommandé de régler préalablement les hôtes distants (rhosts) ou les clés "
-"RSA. Les commandes standard <command>find</command> et <command>dd</command> "
-"sont utilisées pour l'accès aux fichiers de la machine distante."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8957,8 +8996,12 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses FTP to access the archive at ftp.debian.org, under the debian "
+#| "directory, and uses only the &debian-stable-codename;/contrib area."
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
 "Utiliser FTP pour accéder à l'archive située à ftp.debian.org, dans le "
@@ -8967,16 +9010,22 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
-#, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#, fuzzy, no-wrap
+#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Types: deb\n"
+#| "URIs: ftp://ftp.debian.org/debian\n"
+#| "Suites: &debian-stable-codename;\n"
+#| "Components: contrib"
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
@@ -8987,11 +9036,17 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses FTP to access the archive at ftp.debian.org, under the debian "
+#| "directory, and uses only the unstable/contrib area. If this line appears "
+#| "as well as the one in the previous example in <filename>sources.list</"
+#| "filename> a single FTP session will be used for both resource lines."
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
 "Utiliser FTP pour accéder à l'archive située à ftp.debian.org, dans le "
 "répertoire debian, et n'utiliser que la section unstable/contrib. Si cette "
@@ -9000,16 +9055,22 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
-#, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+#, fuzzy, no-wrap
+#| msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
 msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Types: deb\n"
+#| "URIs: ftp://ftp.debian.org/debian\n"
+#| "Suites: unstable\n"
+#| "Components: contrib"
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
@@ -9159,8 +9220,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "Répertoire temporaire dans lequel écrire les scripts de configuration et "
 "modèles d'écrans pour <command>debconf</command>. Élément de configuration : "
@@ -9204,8 +9265,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "Utiliser un index de sources pour le tri des champs. Élément de "
 "configuration : <literal>APT::SortPkgs::Source</literal>."
@@ -9341,10 +9402,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "La commande <literal>release</literal> crée un fichier Release à partir "
 "d'une arborescence. Elle recherche récursivement dans le répertoire indiqué "
@@ -9352,13 +9413,13 @@ msgstr ""
 "<filename>Contents</filename>, <filename>Components</filename> et "
 "<filename>icons</filename> non compressés et compressés ainsi que des "
 "fichiers <filename>Release</filename>, <filename>Index</filename> et "
-"<filename>md5sum.txt</filename> par défaut (<literal>APT::FTPArchive::"
-"Release::Default-Patterns</literal>). Des motifs supplémentaires pour les "
-"noms de fichiers peuvent être ajoutés en les mentionnant dans <literal>APT::"
-"FTPArchive::Release::Patterns</literal>. Le fichier <filename>Release</"
-"filename> est ensuite affiché sur la sortie standard et comporte (par "
-"défaut) des sommes de contrôle MD5, SHA1 et SHA256 et SHA512 pour chaque "
-"fichier."
+"<filename>md5sum.txt</filename> par défaut "
+"(<literal>APT::FTPArchive::Release::Default-Patterns</literal>). Des motifs "
+"supplémentaires pour les noms de fichiers peuvent être ajoutés en les "
+"mentionnant dans <literal>APT::FTPArchive::Release::Patterns</literal>. Le "
+"fichier <filename>Release</filename> est ensuite affiché sur la sortie "
+"standard et comporte (par défaut) des sommes de contrôle MD5, SHA1 et SHA256 "
+"et SHA512 pour chaque fichier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9426,7 +9487,7 @@ msgid ""
 msgstr ""
 "La commande <literal>generate</literal> utilise un fichier de configuration "
 "pour décrire l'archive qui va être créée. Le format de ce fichier est le "
-"format ISC classique utilisé par des outils ISC comme bind 8 et dhcpd. Le "
+"format ISC classique utilisé par des outils ISC comme bind 8 et dhcpd. Le "
 "fichier &apt-conf; décrit ce format. Il faut noter que l'analyse de ce "
 "fichier se fait par section tandis que celle d'&apt-conf; se fait par "
 "arborescence. Cela n'affecte que l'usage de l'étiquette de visée (scope tag)."
@@ -9465,7 +9526,7 @@ msgid ""
 msgstr ""
 "Indique la racine de l'archive FTP ; Pour une configuration Debian "
 "classique, c'est le répertoire qui contient le fichier <filename>ls-LR</"
-"filename> et les noeuds des distributions."
+"filename> et les nœuds des distributions."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9500,7 +9561,7 @@ msgid ""
 msgstr ""
 "La section <literal>Default</literal> précise les valeurs par défaut et les "
 "paramètres qui contrôlent la marche du générateur. Ces valeurs peuvent être "
-"annulées dans d'autres sections (paramètrage par section)."
+"annulées dans d'autres sections (paramétrage par section)."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9602,8 +9663,8 @@ msgstr "La section <literal>TreeDefault</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "Indique les valeurs par défaut particulières à la section <literal>Tree</"
 "literal>. Toutes ces variables sont des variables de substitution ; les "
@@ -9642,8 +9703,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
 "Indique la racine de l'arborescence des « .deb ». Par défaut, c'est "
 "<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>."
@@ -9651,8 +9712,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "Indique la racine de l'arborescence des paquets source. Par défaut, c'est "
 "<filename>$(DIST)/$(SECTION)/source/</filename>."
@@ -9663,8 +9724,8 @@ msgid ""
 "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "binary-$(ARCH)/Packages</filename>"
 msgstr ""
-"Indique le fichier « Packages » créé. Par défaut, c'est <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/Packages</filename>."
+"Indique le fichier « Packages » créé. Par défaut, c'est <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/Packages</filename>."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9672,15 +9733,15 @@ msgid ""
 "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "source/Sources</filename>"
 msgstr ""
-"Indique le fichier « Sources » créé. Par défaut, c'est <filename>$(DIST)/"
-"$(SECTION)/source/Sources</filename>."
+"Indique le fichier « Sources » créé. Par défaut, c'est <filename>$(DIST)/$"
+"(SECTION)/source/Sources</filename>."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "Définit le fichier maître Translation-en qui comporte les descriptions "
 "longues si elles ne sont pas incluses dans le fichier Packages. Valeur par "
@@ -9707,7 +9768,7 @@ msgid ""
 "automatically."
 msgstr ""
 "Indique le fichier « Contents » créé. Par défaut, c'est <filename>$(DIST)/"
-"Contents-$(ARCH)</filename>. Quand le paramètrage fait que différents "
+"Contents-$(ARCH)</filename>. Quand le paramétrage fait que différents "
 "fichiers « Packages » se réfèrent à un seul fichier « Contents », "
 "<command>apt-ftparchive</command> les intègre automatiquement."
 
@@ -9890,9 +9951,9 @@ msgid ""
 msgstr ""
 "La section <literal>bindirectory</literal> définit une arborescence binaire "
 "sans structure particulière. L'étiquette de visée (scope tag) indique "
-"l'emplacement du répertoire binaire et le paramètrage est identique à celui "
+"l'emplacement du répertoire binaire et le paramétrage est identique à celui "
 "pour la section <literal>Tree</literal> sans substitution de variables ou au "
-"paramètrage de <literal>Section</literal><literal>Architecture</literal>."
+"paramétrage de <literal>Section</literal><literal>Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10035,7 +10096,7 @@ msgid ""
 "<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
 "or <literal>SHA512</literal>."
 msgstr ""
-"Crée la somme de contrôle indiquée. Si ces options sont actives par défaut. "
+"Créer la somme de contrôle indiquée. Ces options sont actives par défaut. "
 "Quand elles sont désactivées, les fichiers d'index créés n'auront pas de "
 "champ de somme de contrôle là où cela était possible. Éléments de "
 "configuration :<literal>APT::FTPArchive::<replaceable>Checksum</"
@@ -10110,15 +10171,15 @@ msgid ""
 "command.  Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
 "literal>."
 msgstr ""
-"Indique le fichier d'« override » à utiliser avec la commande "
-"<literal>sources</literal>. Élément de configuration : <literal>APT::"
-"FTPArchive::SourceOverride</literal>."
+"Indiquer le fichier d'« override » à utiliser avec la commande "
+"<literal>sources</literal>. Élément de configuration : "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "N'autoriser que la lecture pour les bases de données de cache. Élément de "
 "configuration : <literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -10131,10 +10192,10 @@ msgid ""
 "<literal>*_all.deb</literal> instead of all package files in the given "
 "path.  Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
 msgstr ""
-"N'accepte dans les commandes <literal>packages</literal> et "
+"N'accepter dans les commandes <literal>packages</literal> et "
 "<literal>contents</literal> que les fichiers de paquets correspondant à "
 "<literal>*_arch.deb</literal> ou <literal>*_all.deb</literal> au lieu de "
-"tous les fichiers de paquets du chemin indiqué.Élément de configuration : "
+"tous les fichiers de paquets du chemin indiqué. Élément de configuration : "
 "<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -10153,12 +10214,12 @@ msgstr ""
 "&apt-ftparchive; met le plus de métadonnées possible en cache dans une base "
 "de données. Si les paquets sont recompilés ou republiés avec à nouveau la "
 "même version, cela pourra causer des problèmes car, alors, les métadonnées "
-"en cache (p. ex. les tailles et les sommes de contrôle) seront utilisées. Si "
-"cette option est choisie, cela n'arrivera plus car le fichier sera contrôlé "
-"pour vérifier s'il a été modifié. Veuillez noter que cette option n'est pas "
-"activée par défaut car il est déconseillé d'envoyer dans les archives des "
-"versions identiques. En théorie, donc, ces problème ne devraient pas "
-"survenir et l'ensemble de ces contrôles devient inutile."
+"en cache (par exemple, les tailles et les sommes de contrôle) seront "
+"utilisées. Si cette option est choisie, cela n'arrivera plus, car le fichier "
+"sera contrôlé pour vérifier s'il a été modifié. Veuillez noter que cette "
+"option n'est pas activée par défaut, car il est déconseillé d'envoyer dans "
+"les archives des versions identiques. En théorie, donc, ces problèmes ne "
+"devraient pas survenir et l'ensemble de ces contrôles devient inutile."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10263,17 +10324,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt_auth.conf.5.xml
-#, fuzzy
-#| msgid ""
-#| "<literal>machine</literal> <replaceable>hostname</replaceable>[:"
-#| "<replaceable>port</replaceable>][/<replaceable>path</replaceable>]"
 msgid ""
 "<literal>machine</literal> <replaceable>[protocol://]</"
 "replaceable><replaceable>hostname</replaceable>[:<replaceable>port</"
 "replaceable>][/<replaceable>path</replaceable>]"
 msgstr ""
-"<literal>machine</literal> <replaceable>nom d'hôte</replaceable>[:"
-"<replaceable>port</replaceable>][/<replaceable>chemin</replaceable>]"
+"<literal>machine</literal> <replaceable>[protocole://]</"
+"replaceable><replaceable>nom_hôte</replaceable>[:<replaceable>port</"
+"replaceable>][/<replaceable>chemin</replaceable>]"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt_auth.conf.5.xml
@@ -10307,6 +10365,8 @@ msgstr ""
 msgid ""
 "If protocol is not specified, the entry only matches https and tor+https."
 msgstr ""
+"Si le protocole n'est pas indiqué, l'entrée ne correspond qu'à https et "
+"tor+https."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt_auth.conf.5.xml
@@ -10335,17 +10395,15 @@ msgstr "Exemple"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
-#, fuzzy, no-wrap
-#| msgid "deb http://example.org/debian &debian-stable-codename; main"
+#, no-wrap
 msgid "deb https://example.org/debian &debian-stable-codename; main"
-msgstr "deb http://example.org/debian &debian-stable-codename; main"
+msgstr "deb https://example.org/debian &debian-stable-codename; main"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
-#, fuzzy, no-wrap
-#| msgid "deb http://apt:debian@example.org/debian &debian-stable-codename; main"
+#, no-wrap
 msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
-msgstr "deb http://apt:debian@example.org/debian &debian-stable-codename; main"
+msgstr "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
@@ -10379,13 +10437,7 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
-#, fuzzy, no-wrap
-#| msgid ""
-#| "machine example.org:80 login apt password debian\n"
-#| "machine example.org/deb/ login apt password debian\n"
-#| "machine example.org/ubuntu login apt password debian\n"
-#| "machine example.orga login apt password debian\n"
-#| "machine example.net login apt password debian\n"
+#, no-wrap
 msgid ""
 "machine example.org:443 login apt password debian\n"
 "machine example.org/deb/ login apt password debian\n"
@@ -10393,7 +10445,7 @@ msgid ""
 "machine example.orga login apt password debian\n"
 "machine example.net login apt password debian\n"
 msgstr ""
-"machine example.org:80 login apt password debian\n"
+"machine example.org:443 login apt password debian\n"
 "machine example.org/deb/ login apt password debian\n"
 "machine example.org/ubuntu login apt password debian\n"
 "machine example.orga login apt password debian\n"
@@ -10417,8 +10469,8 @@ msgstr ""
 "<literal>apt</literal> avec le mot de passe <literal>debian</literal> pour "
 "l'entrée de &sources-list; <placeholder type=\"literallayout\" id=\"0\"/> "
 "peut se faire directement dans l'entrée : <placeholder "
-"type=\"literallayout\" id=\"1\"/> Autrement, une entrée dans le fichier auth."
-"conf telle que la suivante peut être utilisée : <placeholder "
+"type=\"literallayout\" id=\"1\"/> Autrement, une entrée dans le fichier "
+"auth.conf telle que la suivante peut être utilisée : <placeholder "
 "type=\"literallayout\" id=\"2\"/> Ou enfin, en une seule ligne : "
 "<placeholder type=\"literallayout\" id=\"3\"/>. Si vous avez besoin d'être "
 "plus précis, tout le contenu de ces lignes s'appliquera également à l'entrée "
@@ -10457,6 +10509,11 @@ msgid ""
 "only, or if the sources.list entry redirects elsewhere, login information "
 "for the redirect destination can be supplied."
 msgstr ""
+"Les informations de connexion dans auth.conf sont plus souples que celles "
+"dans sources.list. Par exemple, les informations de connexion peuvent être "
+"spécifiées pour seulement des parties d'un dépôt, ou si l'entrée du "
+"sources.list redirige ailleurs, les informations de connexion pour la "
+"destination de redirection peuvent être fournies."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt_auth.conf.5.xml
@@ -10485,8 +10542,8 @@ msgid ""
 "Configuration Item: <literal>Dir::Etc::netrcparts</literal>."
 msgstr ""
 "Informations de connexion pour les sources et les mandataires d'APT dans un "
-"format de type netrc. Élément de configuration : <literal>Dir::Etc::"
-"netrcparts</literal>."
+"format de type netrc. Élément de configuration : "
+"<literal>Dir::Etc::netrcparts</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt_auth.conf.5.xml
@@ -10559,16 +10616,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 "La variable d'environnement <envar>http_proxy</envar> est prise en charge "
 "pour une configuration au niveau du système. Les mandataires particuliers à "
@@ -10602,14 +10660,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "De plus, il y a trois options de configuration fournies pour le contrôle des "
 "caches mandataire compatibles avec HTTP/1.1 : <literal>Acquire::http::No-"
@@ -10653,8 +10711,8 @@ msgid ""
 "<replaceable>host</replaceable></literal>."
 msgstr ""
 "Notez que l'auto-détection ne sera pas exécutée si une configuration "
-"spécifique de mandataire hôte a déjà été établie par <literal>Acquire::http::"
-"Proxy::<replaceable>hôte</replaceable></literal>."
+"spécifique de mandataire hôte a déjà été établie par "
+"<literal>Acquire::http::Proxy::<replaceable>hôte</replaceable></literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
@@ -10668,11 +10726,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
-"Cette option prend le pas sur l'ancien nom d'option <literal>Acquire::http::"
-"ProxyAutoDetect</literal>."
+"Cette option prend le pas sur l'ancien nom d'option "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-http.1.xml
@@ -10710,12 +10768,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "Le réglage <literal>Acquire::http::Pipeline-Depth</literal> permet "
 "d'utiliser l'enchaînement HTTP (« HTTP pipelining », RFC 2616 "
@@ -10756,7 +10814,7 @@ msgid ""
 "negotiation."
 msgstr ""
 "<literal>Acquire::http::SendAccept</literal> est activé par défaut et envoie "
-"un champ d'en-tête <literal>Accept: text/*</literal> au serveur pourles "
+"un champ d'en-tête <literal>Accept: text/*</literal> au serveur pour les "
 "requêtes sans extension de fichier pour éviter que le serveur ne tente une "
 "négociation de contenu."
 
@@ -10817,10 +10875,10 @@ msgid ""
 msgstr ""
 "Ce transport d'APT permet d'utiliser les dépôts auxquels on accède au moyen "
 "de HTTPS (protocole HTTP Secure), aussi appelé HTTP sur TLS. Il est "
-"disponible par défaut depuis apt 1.5 et était disponible auparavant dans "
-"lepaquet <package>apt-transport-https</package>. Veuillez noter qu'un "
-"transport n'est jamais appelé directement par l'utilisateur, maisutilisé par "
-"les outils d'APT s'appuyant sur la configuration de l'utilisateur."
+"disponible par défaut depuis apt 1.5 et était disponible auparavant dans le "
+"paquet <package>apt-transport-https</package>. Veuillez noter qu'un "
+"transport n'est jamais appelé directement par l'utilisateur, mais utilisé "
+"par les outils d'APT s'appuyant sur la configuration de l'utilisateur."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-transport-https.1.xml
@@ -10847,13 +10905,13 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 "Le protocole HTTPS est basé sur le protocole HTTP, aussi toutes les options "
 "prises en charge par &apt-transport-http; sont aussi disponibles au moyen de "
-"<literal>Acquire::https</literal> et ont par défaut les même valeurs que "
+"<literal>Acquire::https</literal> et ont par défaut les mêmes valeurs que "
 "celles spécifiées pour <literal>Acquire::http</literal>. Cette page de "
 "manuel ne documentera que les options <emphasis>propres à https</emphasis>."
 
@@ -10895,9 +10953,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 "Une liste de révocation de certificats (CRL) personnalisée peut être "
 "configurée avec l'option <literal>Acquire::https::CRLFile</literal> et "
@@ -10969,11 +11028,11 @@ msgstr "Authentification du client"
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 "Outre la gestion de l'authentification basée sur les mots de passe (voir "
 "&apt-authconf;) HTTPS prend aussi en charge l'authentification basée sur les "
@@ -11278,9 +11337,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 "Si un fichier avec ce contenu est stocké sur la machine sous le nom de "
 "<filename>/etc/apt/mirrorlist.txt</filename>, il peut être utilisé comme "
@@ -11300,7 +11359,7 @@ msgid ""
 "literal> the sources.list entry from above could instead be written as:"
 msgstr ""
 "Toutes les versions de la méthode miroir prennent en charge une liste de "
-"miroirs accessible par HTTP, aussi, dans la mesure où elle est disponible à "
+"miroirs accessibles par HTTP, aussi, dans la mesure où elle est disponible à "
 "l'adresse <literal>http://apt.example.org/mirror.lst</literal>, l'entrée de "
 "sources.list ci-dessus peut être écrite plutôt ainsi :"
 
@@ -11393,12 +11452,12 @@ msgstr ""
 #. type: Content of: <refentry><refmeta><manvolnum>
 #: apt-patterns.7.xml
 msgid "7"
-msgstr ""
+msgstr "7"
 
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-patterns.7.xml
 msgid "Syntax and semantics of apt search patterns"
-msgstr ""
+msgstr "Syntaxe et sémantique des motifs de recherche d'APT"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
@@ -11406,11 +11465,14 @@ msgid ""
 "Starting with version 2.0, <command>APT</command> provides support for "
 "patterns, which can be used to query the apt cache for packages."
 msgstr ""
+"À partir de la version 2.0, <command>APT</command> prend en charge les "
+"motifs qui peuvent être utilisés pour la recherche de paquets dans le cache "
+"d'APT."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Logic patterns"
-msgstr ""
+msgstr "Motifs logiques"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
@@ -11419,86 +11481,90 @@ msgid ""
 "complex expressions, as well as <code>?true</code> and <code>?false</code> "
 "patterns."
 msgstr ""
+"Ces motifs fournissent des moyens de base pour combiner d'autres motifs dans "
+"des expressions plus complexes, de même que les motifs <code>?true</code> et "
+"<code>?false</code>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?and(PATTERN, PATTERN, ...)</code>"
-msgstr ""
+msgstr "<code>?and(MOTIF, MOTIF, ...)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>PATTERN PATTERN ...</code>"
-msgstr ""
+msgstr "<code>MOTIF MOTIF ...</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects objects where all specified patterns match."
-msgstr ""
+msgstr "Sélectionner les objets dont tous les motifs spécifiés correspondent."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?false</code>"
-msgstr ""
+msgstr "<code>?false</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~F</code>"
-msgstr ""
+msgstr "<code>~F</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects nothing."
-msgstr ""
+msgstr "Ne rien sélectionner."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?not(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?not(PATTERN)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>!PATTERN</code>"
-msgstr ""
+msgstr "<code>!PATTERN</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects objects where PATTERN does not match."
-msgstr ""
+msgstr "Sélectionner les objets pour lesquels le MOTIF ne correspond pas."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?or(PATTERN, PATTERN, ...)</code>"
-msgstr ""
+msgstr "<code>?or(MOTIF, MOTIF, ...)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>PATTERN | PATTERN | ...</code>"
-msgstr ""
+msgstr "<code>MOTIF | MOTIF | ...</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects objects where at least one of the specified patterns match."
 msgstr ""
+"Sélectionner les objets dont au moins un des motifs spécifiés correspond."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?true</code>"
-msgstr ""
+msgstr "<code>?true</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~T</code>"
-msgstr ""
+msgstr "<code>~T</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects all objects."
-msgstr ""
+msgstr "Sélectionner tous les objets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>(PATTERN)</code>"
-msgstr ""
+msgstr "<code>(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11506,16 +11572,18 @@ msgid ""
 "Selects the same as <code>PATTERN</code>, can be used to work around "
 "precedence, for example, <code>(~ramd64|~ri386)~nfoo</code>"
 msgstr ""
+"Sélectionner la même chose que <code>(MOTIF)</code>, peut être utilisé pour "
+"contourner les priorités, par exemple, <code>(~ramd64|~ri386)~ntruc</code>."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Narrowing patterns"
-msgstr ""
+msgstr "Préciser les motifs"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?all-versions(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?all-versions(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11523,16 +11591,18 @@ msgid ""
 "Selects packages where all versions match PATTERN. When matching versions "
 "instead, same as PATTERN."
 msgstr ""
+"Sélectionner les paquets dont toutes les versions correspondent à MOTIF. Si "
+"la correspondance concerne plutôt les versions, équivaut à MOTIF."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?any-version(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?any-version(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects any version where the pattern matches on the version."
-msgstr ""
+msgstr "Sélectionner toute version où le motif correspond à la version."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11542,11 +11612,15 @@ msgid ""
 "<code>?any-version(?and(?version(1),?version(2)))</code> restricts the "
 "<code>?and</code> to act on the same version."
 msgstr ""
+"Par exemple, tandis que <code>?and(?version(1),?version(2))</code> "
+"correspond à un paquet qui a une version contenant 1 et une version "
+"contenant 2, <code>?any-version(?and(?version(1),?version(2)))</code> "
+"restreint l'action de <code>?and</code> à la même version."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?narrow(PATTERN...)</code>"
-msgstr ""
+msgstr "<code>?narrow(MOTIF...)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11554,26 +11628,28 @@ msgid ""
 "Selects any version matching all PATTERNs, short for <code>?any-version(?"
 "and(PATTERN...))</code>."
 msgstr ""
+"Sélectionner toute version correspondant à tous les MOTIFS, raccourci pour "
+"<code>?any-version(?and(MOTIF...))</code>."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package patterns"
-msgstr ""
+msgstr "Motifs de paquet"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
 msgid "These patterns select specific packages."
-msgstr ""
+msgstr "Ces motifs sélectionnent des paquets particuliers."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?architecture(WILDCARD)</code>"
-msgstr ""
+msgstr "<code>?architecture(JOKER)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~rWILDCARD</code>"
-msgstr ""
+msgstr "<code>~rJOKER</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11581,46 +11657,48 @@ msgid ""
 "Selects packages matching the specified architecture, which may contain "
 "wildcards using any."
 msgstr ""
+"Sélectionner les paquets correspondant à l'architecture spécifiée, qui peut "
+"contenir des caractères génériques avec « any »."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?automatic</code>"
-msgstr ""
+msgstr "<code>?automatic</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~M</code>"
-msgstr ""
+msgstr "<code>~M</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that were installed automatically."
-msgstr ""
+msgstr "Sélectionner les paquets qui ont été installés automatiquement."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?broken</code>"
-msgstr ""
+msgstr "<code>?broken</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~b</code>"
-msgstr ""
+msgstr "<code>~b</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that have broken dependencies."
-msgstr ""
+msgstr "Sélectionner les paquets qui ont des dépendances cassées."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?config-files</code>"
-msgstr ""
+msgstr "<code>?config-files</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~c</code>"
-msgstr ""
+msgstr "<code>~c</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11628,56 +11706,60 @@ msgid ""
 "Selects packages that are not fully installed, but have solely residual "
 "configuration files left."
 msgstr ""
+"Sélectionner les paquets qui ne sont pas entièrement installés, mais dont il "
+"ne reste que des fichiers de configuration résiduels."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?essential</code>"
-msgstr ""
+msgstr "<code>?essential</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~E</code>"
-msgstr ""
+msgstr "<code>~E</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that have Essential: yes set in their control file."
 msgstr ""
+"Sélectionner les paquets dont le fichier de contrôle contient « Essential: "
+"yes »."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?exact-name(NAME)</code>"
-msgstr ""
+msgstr "<code>?exact-name(NOM)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages with the exact specified name."
-msgstr ""
+msgstr "Sélectionner les paquets portant exactement le nom spécifié."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?garbage</code>"
-msgstr ""
+msgstr "<code>?garbage</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~g</code>"
-msgstr ""
+msgstr "<code>~g</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that can be removed automatically."
-msgstr ""
+msgstr "Sélectionner les paquets qui peuvent être retirés automatiquement."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?installed</code>"
-msgstr ""
+msgstr "<code>?installed</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~i</code>"
-msgstr ""
+msgstr "<code>~i</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11686,61 +11768,81 @@ msgid ""
 "narrowing this pattern (see narrowing patterns above) makes it only match "
 "installed versions (see version patterns below)."
 msgstr ""
+"Sélectionner les paquets actuellement installés. Depuis la version 2.5.4, "
+"préciser ce motif (voir plus haut Préciser les motifs) fait que l'option "
+"fait seulement correspondre les versions installées (voir plus loin Motifs "
+"de version)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?name(REGEX)</code>"
-msgstr ""
+msgstr "<code>?name(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~nREGEX</code>"
-msgstr ""
+msgstr "<code>~nEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages where the name matches the given regular expression."
 msgstr ""
+"Sélectionner les paquets dont le nom correspond à l'expression rationnelle "
+"indiquée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?obsolete</code>"
-msgstr ""
+msgstr "<code>?obsolete</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~o</code>"
-msgstr ""
+msgstr "<code>~o</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that no longer exist in repositories."
+msgstr "Sélectionner les paquets qui n'existent plus dans les dépôts."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr "<code>?phasing</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
 msgstr ""
+"Sélectionner les paquets qui seront conservés durant les mises à niveau en "
+"raison de la mise à niveau par étapes."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
-msgstr ""
+msgstr "<code>?upgradable</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~U</code>"
-msgstr ""
+msgstr "<code>~U</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects packages that can be upgraded (have a newer candidate)."
 msgstr ""
+"Sélectionner les paquets qui peuvent être mis à niveau (qui ont un candidat "
+"plus récent)"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?virtual</code>"
-msgstr ""
+msgstr "<code>?virtual</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~v</code>"
-msgstr ""
+msgstr "<code>~v</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11749,28 +11851,29 @@ msgid ""
 "exist when they are referenced somewhere in the archive, for example because "
 "something depends on that name."
 msgstr ""
+"Sélectionner tous les paquets virtuels ; c'est-à-dire des paquets sans "
+"version. Ils existent s'ils sont référencés quelque part dans l'archive, par "
+"exemple parce que quelque chose dépend de leur nom."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
-#, fuzzy
-#| msgid "Version &apt-product-version;"
 msgid "Version patterns"
-msgstr "Version &apt-product-version;"
+msgstr "Motifs de version"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
 msgid "These patterns select specific versions of a package."
-msgstr ""
+msgstr "Ces motifs sélectionnent des versions particulières d'un paquet."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?archive(REGEX)</code>"
-msgstr ""
+msgstr "<code>?archive(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~AREGEX</code>"
-msgstr ""
+msgstr "<code>~AEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11779,11 +11882,14 @@ msgid ""
 "regular expression. Archive, here, means the values after <code>a=</code> in "
 "<command>apt-cache policy</command>."
 msgstr ""
+"Sélectionner les versions qui proviennent de l'archive qui correspond à "
+"l'expression rationnelle indiquée. Ici, archive signifie les valeurs "
+"spécifiées après <code>a=</code> dans <command>apt-cache policy</command>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?codename(REGEX)</code>"
-msgstr ""
+msgstr "<code>?codename(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11792,6 +11898,9 @@ msgid ""
 "regular expression. Codename, here, means the values after <code>n=</code> "
 "in <command>apt-cache policy</command>."
 msgstr ""
+"Sélectionner les versions qui proviennent du nom de code qui correspond à "
+"l'expression rationnelle indiquée. Ici, nom de code signifie les valeurs "
+"spécifiées après <code>n=</code> dans <command>apt-cache policy</command>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11801,16 +11910,21 @@ msgid ""
 "version(2.0))</code>matched even if 2.0 was not installed, but another "
 "version was."
 msgstr ""
+"Sélectionner les versions qui sont actuellement installées. Les versions "
+"d'APT antérieures à 2.5.4 n'établissaient de correspondance qu'au niveau du "
+"paquet, ainsi <code>?any-version(?installed?version(2.0))</code> "
+"correspondait même si la version  2.0 n'était pas installée mais qu'une "
+"autre l'était."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?origin(REGEX)</code>"
-msgstr ""
+msgstr "<code>?origin(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~OREGEX</code>"
-msgstr ""
+msgstr "<code>~OEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11819,32 +11933,37 @@ msgid ""
 "regular expression. Origin, here, means the values after <code>o=</code> in "
 "<command>apt-cache policy</command>."
 msgstr ""
+"Sélectionner les versions qui proviennent de l'origine qui correspond à "
+"l'expression rationnelle indiquée. Ici, origine signifie les valeurs "
+"spécifiées après <code>o=</code> dans <command>apt-cache policy</command>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?section(REGEX)</code>"
-msgstr ""
+msgstr "<code>?section(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~sREGEX</code>"
-msgstr ""
+msgstr "<code>~sEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
 "Selects versions where the section matches the specified regular expression."
 msgstr ""
+"Sélectionner les versions dont la section correspond à l'expression "
+"rationnelle indiquée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?source-package(REGEX)</code>"
-msgstr ""
+msgstr "<code>?source-package(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~eREGEX</code>"
-msgstr ""
+msgstr "<code>~eEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11852,11 +11971,13 @@ msgid ""
 "Selects versions where the source package name matches the specified regular "
 "expression."
 msgstr ""
+"Sélectionner les versions dont le nom du paquet source correspond à "
+"l'expression rationnelle indiquée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?source-version(REGEX)</code>"
-msgstr ""
+msgstr "<code>?source-version(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11864,16 +11985,18 @@ msgid ""
 "Selects versions where the source package version matches the specified "
 "regular expression."
 msgstr ""
+"Sélectionner les versions dont la version du paquet source correspond à "
+"l'expression rationnelle indiquée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?version(REGEX)</code>"
-msgstr ""
+msgstr "<code>?version(EXPRESSION_RATIONNELLE)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~VREGEX</code>"
-msgstr ""
+msgstr "<code>~VEXPRESSION_RATIONNELLE</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -11881,28 +12004,42 @@ msgid ""
 "Selects versions where the version string matches the specified regular "
 "expression."
 msgstr ""
+"Sélectionner les versions dont la chaîne de version correspond à "
+"l'expression rationnelle indiquée."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?priority(NAME)</code>"
-msgstr ""
+msgstr "<code>?priority(NOM)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~pNAME</code>"
-msgstr ""
+msgstr "<code>~pNOM</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
+"Sélectionner les versions dont la chaîne de Priority est égale au nom donné."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr "<code>?security</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+"Sélectionner les paquets qui sont une mise à jour de sécurité ou qui sont "
+"consécutifs à une mise à jour de sécurité."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
-#, fuzzy
-#| msgid "Version &apt-product-version;"
 msgid "Package relationship patterns"
-msgstr "Version &apt-product-version;"
+msgstr "Motifs de relation de paquets"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
@@ -11910,105 +12047,125 @@ msgid ""
 "These patterns match specific package versions that depend/conflict with "
 "some other packages."
 msgstr ""
+"Ces motifs établissent une correspondance avec les versions de paquet "
+"particulières qui dépendent ou sont en conflit avec d'autres paquets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?depends(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?depends(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DPATTERN</code>"
-msgstr ""
+msgstr "<code>~DMOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?pre-depends(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?pre-depends(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DPre-Depends:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DPre-Depends:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?suggests(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?suggests(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DSuggests:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DSuggests:MOTIF</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>?depends(PATTERN)</code>"
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr "<code>?depends(MOTIF)</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<code>~DReplaces:PATTERN</code>"
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr "<code>~DReplaces:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?conflicts(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DConflicts:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DConflicts:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?replaces(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?replaces(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DReplaces:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DReplaces:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?obsoletes(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?obsoletes(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DObsoletes:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DObsoletes:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?breaks(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?breaks(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DBreaks:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DBreaks:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?enhances(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?enhances(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>~DEnhances:PATTERN</code>"
-msgstr ""
+msgstr "<code>~DEnhances:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
+#, fuzzy
+#| msgid ""
+#| "Selects versions depending/pre-depending/suggesting/conflicting/etc on/"
+#| "with/ packages matching PATTERN."
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
+"Sélectionner les versions dépendantes, pré-dépendantes, suggérées des "
+"paquets ou en conflit, etc., avec les paquets correspondant au MOTIF."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?reverse-<replaceable>depType</replaceable>(PATTERN)</code>"
-msgstr ""
+msgstr "<code>?reverse-<replaceable>depType</replaceable>(MOTIF)</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
-#, fuzzy
-#| msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
 msgid "<code>~R<replaceable>DepType</replaceable>:PATTERN</code>"
-msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<code>~R<replaceable>DepType</replaceable>:MOTIF</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -12016,6 +12173,8 @@ msgid ""
 "Opposite of <code>?depends</code> and friends - selects all packages that "
 "have reverse-dependencies (versions) matching PATTERN."
 msgstr ""
+"Contraire de <code>?depends</code> et analogues – sélectionner les paquets "
+"qui ont des (versions) dépendances inverses correspondant au MOTIF."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -12024,11 +12183,14 @@ msgid ""
 "<code>depends</code>, so that we don't have to repeat the entire list from "
 "the first paragraph here."
 msgstr ""
+"<replaceable>depType</replaceable> est un des types de dépendances tel que "
+"<code>depends</code>, aussi il n'y a pas besoin de répéter ici la totalité "
+"de la liste depuis le premier paragraphe."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>apt remove ?garbage</code>"
-msgstr ""
+msgstr "<code>apt remove ?garbage</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -12036,21 +12198,25 @@ msgid ""
 "Remove all packages that are automatically installed and no longer needed - "
 "same as apt autoremove"
 msgstr ""
+"Supprimer tous les paquets qui ont été automatiquement installés et ne sont "
+"plus nécessaires – identique à « apt autoremove »"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>apt purge ?config-files</code>"
-msgstr ""
+msgstr "<code>apt purge ?config-files</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid "Purge all packages that only have configuration files left"
 msgstr ""
+"Supprimer définitivement tous les paquets dont il ne reste que les fichiers "
+"de configuration."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>apt list '~i !~M (~slibs|~sperl|~spython)'</code>"
-msgstr ""
+msgstr "<code>apt list '~i !~M (~slibs|~sperl|~spython)'</code>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
@@ -12058,11 +12224,13 @@ msgid ""
 "List all manually-installed packages in sections matching libs, perl, or "
 "python."
 msgstr ""
+"Lister tous les paquets installés manuellement dans les sections qui "
+"correspondent à libs, perl ou python."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Migrating from aptitude"
-msgstr ""
+msgstr "Migration à partir d'aptitude"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
@@ -12070,6 +12238,8 @@ msgid ""
 "Patterns in apt are heavily inspired by patterns in aptitude, but with some "
 "tweaks:"
 msgstr ""
+"Les motifs d'APT ont été fortement inspirés par les motifs d'aptitude, mais "
+"avec quelques ajustements :"
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
@@ -12077,6 +12247,8 @@ msgid ""
 "Syntax is uniform: If there is an opening parenthesis after a term, it is "
 "always assumed to be the beginning of an argument list."
 msgstr ""
+"La syntaxe est cohérente : s'il y a une parenthèse ouverte après un terme, "
+"il est toujours considéré que c'est le début d'une liste d'arguments."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
@@ -12085,11 +12257,14 @@ msgid ""
 "and(?foo,bar)\"</code> if foo does not take an argument. In APT, this will "
 "cause an error."
 msgstr ""
+"Dans aptitude, une forme syntaxique <code>\"?truc(machin)\"</code> peut "
+"signifier <code>\"?and(?truc,machin)\"</code> si truc ne prend pas "
+"d'argument. Dans APT, cela provoque une erreur."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
 msgid "Not all patterns are supported."
-msgstr ""
+msgstr "Tous les motifs ne sont pas pris en charge."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
@@ -12097,31 +12272,40 @@ msgid ""
 "Some additional patterns are available, for example, for finding gstreamer "
 "codecs."
 msgstr ""
+"Quelques motifs supplémentaires sont disponibles, par exemple, pour trouver "
+"des codecs de gstreamer."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
 msgid "Escaping terms with <code>~</code> is not supported."
 msgstr ""
+"La protection de termes avec un <code>~</code> n'est pas prise en charge."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
 msgid "A trailing comma is allowed in argument lists"
-msgstr ""
+msgstr "Une virgule finale est permise dans les listes d'arguments."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
 msgid "?narrow accepts infinite arguments"
-msgstr ""
+msgstr "?narrow accepte des arguments illimités."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
-msgstr ""
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
+msgstr ""
+"<code>truc</code> ne peut pas être utilisé comme raccourci pour <code>?"
+"name(truc)</code>, parce que cela peut faire que des fautes de frappe "
+"passent inaperçues. Prenez <code>?and(...,~pfacultatif)</code> : cela "
+"nécessite que le paquet ait la propriété <code>required</code>, mais si vous "
+"n'entrez pas le <code>~</code>, il faudrait que le nom du paquet contienne "
+"<code>pfacultatif</code>."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-patterns.7.xml
@@ -12129,13 +12313,13 @@ msgid ""
 "Dependency types for ~D and related operators need to be specified in the "
 "canonical case."
 msgstr ""
+"Les types de dépendances pour ~D et les opérateurs associés doivent être "
+"indiqués dans la casse canonique."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-patterns.7.xml
-#, fuzzy
-#| msgid "&apt-cache; &apt-conf;"
 msgid "&apt-get;, &apt;"
-msgstr "&apt-cache; &apt-conf;"
+msgstr "&apt-get;, &apt;"
 
 #. type: Attribute 'lang' of: <book>
 #: guide.dbk offline.dbk
@@ -12167,7 +12351,7 @@ msgstr "Version &apt-product-version;"
 msgid ""
 "This document provides an overview of how to use the APT package manager."
 msgstr ""
-"Ce document fournit un aperçu des méthode d'utilisation du gestionnaire de "
+"Ce document fournit un aperçu des méthodes d'utilisation du gestionnaire de "
 "paquets APT."
 
 #. type: Content of: <book><bookinfo>
@@ -12201,8 +12385,8 @@ msgid ""
 "For more details, on Debian systems, see the file /usr/share/common-licenses/"
 "GPL for the full license."
 msgstr ""
-"Les détails complets de cette licence sont, sur les systèmes Debian GNU/"
-"Linux, consultables dans le fichier usr/share/common-licenses/GPL."
+"Les détails complets de cette licence sont, sur les systèmes Debian, "
+"consultables dans le fichier usr/share/common-licenses/GPL."
 
 #. type: Content of: <book><chapter><title>
 #: guide.dbk
@@ -12218,10 +12402,10 @@ msgid ""
 "download new packages from the Internet."
 msgstr ""
 "Le paquet APT comporte actuellement deux parties : la méthode APT pour "
-"<command>dselect</command> et l'interface en ligne de commande <command>apt-"
-"get</command>. Les deux fournissent des méthodes d'installation et de "
-"suppression de paquets ainsi que de téléchargement de nouveaux paquets par "
-"Internet."
+"<command>dselect</command> et l'interface utilisateur en ligne de commande "
+"<command>apt-get</command>. Les deux fournissent des méthodes d'installation "
+"et de suppression de paquets ainsi que de téléchargement de nouveaux paquets "
+"par Internet."
 
 #. type: Content of: <book><chapter><section><title>
 #: guide.dbk
@@ -12249,13 +12433,13 @@ msgid ""
 "things the average user is required to install. Also, it allows for choices "
 "in mail transport agents, X servers and so on."
 msgstr ""
-"Le système de gestion des dépendances permet aux programmes de partage des "
-"éléments du système, tels que les bibliothèques de fonctions. Il permet "
-"d'isoler dans des paquets spécifiques certains parties moins utilisées des "
+"Le système de gestion des dépendances permet aux programmes individuels de "
+"partager des éléments du système, tels que les bibliothèques. Il permet "
+"d'isoler dans des paquets spécifiques certaines parties moins utilisées des "
 "programmes afin de limiter le nombre d'éléments que l'utilisateur ordinaire "
 "a besoin d'installer. Ce système de gestion des dépendances permet également "
 "d'effectuer des choix parmi les divers agents de transport de courrier "
-"électronique, les serveurs X et d'autres cxomposants du système."
+"électronique, les serveurs X et d'autres composants du système."
 
 #. type: Content of: <book><chapter><section><para>
 #: guide.dbk
@@ -12278,11 +12462,11 @@ msgid ""
 "simple dependency on GPG. Also, because it is an emacs extension it has a "
 "simple dependency on emacs, without emacs it is completely useless."
 msgstr ""
-"Par example, mailcrypt est une extension à Emacs qui permet de gérer le "
+"Par exemple, mailcrypt est une extension d'Emacs qui permet de gérer le "
 "courrier électronique chiffré avec GPG. Si GPG n'est pas installé, mailcrypt "
 "est inutile. Donc le paquet mailcrypt a une dépendance simple sur GPG. De "
-"plus, étant une extension à Emacs sans lequel il est totalement inutile, il "
-"a une dépendance simple sur emacs."
+"plus, étant une extension d'Emacs, il a une dépendance simple sur emacs sans "
+"lequel il est totalement inutile."
 
 #. type: Content of: <book><chapter><section><para>
 #: guide.dbk
@@ -12388,10 +12572,16 @@ msgstr ""
 
 #. type: Content of: <book><chapter><screen>
 #: guide.dbk
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "# apt-get update\n"
+#| "Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+#| "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+#| "Reading Package Lists... Done\n"
+#| "Building Dependency Tree... Done\n"
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
@@ -12430,13 +12620,13 @@ msgstr ""
 "invasive. Cette commande ne provoquera jamais l'installation de nouveaux "
 "paquets ou la suppression de paquets existants. Elle ne déclenchera pas non "
 "plus la mise à jour d'un paquet si celle-ci casse le fonctionnement d'un "
-"autre paquet. Cette commande peut être utilisé par exemple quotidiennement "
+"autre paquet. Cette commande peut être utilisée par exemple quotidiennement "
 "pour mettre à jour le système de manière relativement sûre. Lorsqu'elle est "
 "utilisée, la liste des paquets qui ne peuvent être mis à jour sera affichée. "
 "Cela est en général du au fait qu'ils dépendent de nouveaux paquets ou "
 "qu'ils entrent en conflit avec d'autres paquets. Le programme "
 "<command>dselect</command> ou la commande <literal>apt-get install</literal> "
-"peuvet être utilisés pour forcer l'installation de tels paquets."
+"peuvent être utilisés pour forcer l'installation de tels paquets."
 
 #. type: Content of: <book><chapter><variablelist><varlistentry><term>
 #: guide.dbk
@@ -12572,7 +12762,20 @@ msgstr ""
 
 #. type: Content of: <book><chapter><screen>
 #: guide.dbk
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "   Set up a list of distribution source locations\n"
+#| "\n"
+#| " Please give the base URL of the debian distribution.\n"
+#| " The access schemes I know about are: http file\n"
+#| "\n"
+#| " For example:\n"
+#| "      file:/mnt/debian,\n"
+#| "      ftp://ftp.debian.org/debian,\n"
+#| "      http://ftp.de.debian.org/debian,\n"
+#| "\n"
+#| "\n"
+#| " URL [http://llug.sep.bnl.gov/debian]:\n"
 msgid ""
 "   Set up a list of distribution source locations\n"
 "\n"
@@ -12581,8 +12784,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12613,11 +12815,17 @@ msgstr ""
 
 #. type: Content of: <book><chapter><screen>
 #: guide.dbk
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| " Please give the distribution tag to get or a path to the\n"
+#| " package file ending in a /. The distribution\n"
+#| " tags are typically something like: stable unstable testing non-US\n"
+#| "\n"
+#| " Distribution [stable]:\n"
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
@@ -12630,20 +12838,25 @@ msgstr ""
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "La distribution fait référence à la version de Debian dans l'archive. "
 "<emphasis>stable</emphasis> est la dernière version publiée et "
 "<emphasis>unstable</emphasis> la version en développement. <emphasis>non-US</"
 "emphasis> n'est disponible que sur certains miroirs et fait référence à des "
-"paquets contenant des technologies de chiffrement et d'autres élements dont "
+"paquets contenant des technologies de chiffrement et d'autres éléments dont "
 "l'exportation est interdite depuis les États-Unis d'Amérique. Il est "
 "toutefois autorisé de les y importer. [Note du traducteur : à la date de "
 "cette traduction, 2010, cette notion est totalement obsolète]."
@@ -12671,10 +12884,10 @@ msgid ""
 "packages while contrib and non-free contain things that have various "
 "restrictions placed on their use and distribution."
 msgstr ""
-"La liste des composants correspond à la liste des sous-ensemble de la "
+"La liste des composants correspond à la liste des sous-ensembles de la "
 "distribution que l'on souhaite utiliser. Les distributions sont en général "
 "divisées ainsi pour des raisons de licences. La sous-distribution « main » "
-"comporte les paquets libre selon les principes du logiciel libre selon "
+"comporte les paquets libres selon les principes du logiciel libre selon "
 "Debian (DFSG) alors que contrib et non-free correspondent à des éléments qui "
 "comprennent des restrictions de distribution ou d'utilisation."
 
@@ -12743,7 +12956,7 @@ msgid ""
 "functionality than is present in <command>apt-get</command> alone."
 msgstr ""
 "La méthode <command>dselect</command> consiste en fait en un jeu de scripts "
-"qui encapsulent <command>apt-get</command>. Cela approte des fonctionnalités "
+"qui encapsulent <command>apt-get</command>. Cela apporte des fonctionnalités "
 "supplémentaires à celles d'<command>apt-get</command> utilisé isolément."
 
 #. type: Content of: <book><chapter><para>
@@ -12778,9 +12991,9 @@ msgid ""
 "check</literal>."
 msgstr ""
 "Avant toute opération autre qu'une mise à jour, APT effectue un certain "
-"nombre d'actions pour préparer ses mécaismes internes de fonctionnement. Il "
+"nombre d'actions pour préparer ses mécanismes internes de fonctionnement. Il "
 "vérifie également l'état du système. Ces opérations peuvent être effectuées "
-"isolément avec la commande  <literal>apt-get check</literal>."
+"isolément avec la commande <literal>apt-get check</literal>."
 
 #. type: Content of: <book><chapter><section><screen>
 #: guide.dbk
@@ -12908,7 +13121,7 @@ msgid ""
 "<literal>-f</literal> option to allow for easy continuation of failed "
 "maintainer scripts."
 msgstr ""
-"La seconde situation est moins grave que la première car APT met certaines "
+"La seconde situation est moins grave que la première, car APT met certaines "
 "contraintes sur l'ordre d'installation des paquets. Dans les deux cas, "
 "l'option <literal>-f</literal> utilisée avec <command>apt-get</command> "
 "conduira APT à rechercher une solution possible puis à continuer. La méthode "
@@ -12930,7 +13143,7 @@ msgstr ""
 "l'opération échoue immédiatement ou au cours des diverses tentatives de "
 "réparation effectuées. Dans tous les cas, il peut être nécessaire de "
 "corriger la situation manuellement avec dpkg (éventuellement en utilisant "
-"des options pour forcer certains opérations) avant de pouvoir utiliser à "
+"des options pour forcer certaines opérations) avant de pouvoir utiliser à "
 "nouveau APT."
 
 #. type: Content of: <book><chapter><section><title>
@@ -13086,10 +13299,10 @@ msgid ""
 "<command>dselect</command> to resolve their problems."
 msgstr ""
 "À chaque fois que le système entier est mis à jour, il est possible que de "
-"nouvelles versions de paquets ne puissent pas être installées car elles ont "
-"besoins ne nouveaux paquets ou qu'elles entrent en conflit avec des paquets "
+"nouvelles versions de paquets ne puissent pas être installées, car elles ont "
+"besoins de nouveaux paquets ou qu'elles entrent en conflit avec des paquets "
 "existants. Ces paquets apparaîtront alors dans la liste des paquets "
-"conservés. Le meilleure méthode pour effectivement installer ces paquets est "
+"conservés. La meilleure méthode pour effectivement installer ces paquets est "
 "souvent de le faire explicitement avec la commande <literal>apt-get install</"
 "literal> ou avec <command>dselect</command>."
 
@@ -13140,9 +13353,10 @@ msgid ""
 "12 packages not fully installed or removed.\n"
 "Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
 msgstr ""
-"206 paquets mis à jour, 8 nouvellement installés, 23 à enlever et 51 non mis à jour.\n"
+"206 mis à jour, 8 nouvellement installés, 23 à enlever et 51 non mis à jour.\n"
 "12 paquets partiellement installés ou enlevés.\n"
-"Il est nécessaire de prendre 65,7 Mo/66,7 Mo dans les archives. Après cette opération, 26,5 Mo d'espace disque supplémentaires seront utilisés.\n"
+"Il est nécessaire de prendre 65,7 Mo/66,7 Mo dans les archives\n"
+".Après cette opération, 26,5 Mo d'espace disque supplémentaires seront utilisés.\n"
 
 #. type: Content of: <book><chapter><section><section><para>
 #: guide.dbk
@@ -13183,7 +13397,7 @@ msgid ""
 "to upgrade, they are similar to the previous examples."
 msgstr ""
 "D'autres rapports peuvent être créés avec l'option -u qui affiche les "
-"paquets à mettre à jour. Il sont analogues aux exemples précédents."
+"paquets à mettre à jour. Ils sont analogues aux exemples précédents."
 
 #. type: Content of: <book><chapter><section><title>
 #: guide.dbk
@@ -13201,13 +13415,21 @@ msgstr ""
 
 #. type: Content of: <book><chapter><section><screen>
 #: guide.dbk
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "# apt-get update\n"
+#| "Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+#| "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+#| "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+#| "Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+#| "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+#| "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
@@ -13283,14 +13505,14 @@ msgstr ""
 "fois le téléchargement commencé, cette indication prend la forme "
 "<literal>102/10,2ko</literal>, ce qui indique que 102 octets ont été "
 "téléchargés et que 10,2 kilo-octets sont attendus. La taille totale est "
-"toujours représentées sur 4 digits pour des raisons de place disponible. "
+"toujours représentées sur 4 chiffres pour des raisons de place disponible. "
 "Après cet affichage de taille, se trouve une barre de progression pour le "
 "téléchargement du fichier lui-même. L'élément suivant est la vitesse "
 "instantanée de téléchargement. Elle est mise à jour toutes les 5 secondes et "
 "représente la vitesse de transfert pour cette période. Enfin, est affiché la "
 "temps de téléchargement restant estimé. Cette information est mise "
-"régulièrement à jour et représete la durée estimée de téléchargement de "
-"toute ce qui est nécessaire, à la vitesse affichée."
+"régulièrement à jour et représente la durée estimée de téléchargement de "
+"tout ce qui est nécessaire, à la vitesse affichée."
 
 #. type: Content of: <book><chapter><section><para>
 #: guide.dbk
@@ -13326,8 +13548,8 @@ msgstr ""
 "APT utilise <command>dpkg</command> pour installer les archives et bascule "
 "vers l'interface de ce programme une fois le téléchargement terminé. "
 "<command>dpkg</command> peut poser un certain nombre de questions pendant le "
-"traitement des paquets, qui peuvent eux-même être amener à poser des "
-"questions. Chacune de ces questions comporte un description de ce qui est "
+"traitement des paquets, qui peuvent eux-mêmes être amenés à poser des "
+"questions. Chacune de ces questions comporte une description de ce qui est "
 "attendu et elles sont trop variables d'un paquet à l'autre pour qu'une "
 "description détaillée soit donnée dans ce document."
 
@@ -13489,7 +13711,7 @@ msgid ""
 "APT use the disc:"
 msgstr ""
 "<emphasis>apt.conf</emphasis> doit avoir les informations nécessaires pour "
-"qu'APT utilise le disque.disc:"
+"qu'APT utilise le disque :"
 
 #. type: Content of: <book><chapter><section><screen>
 #: offline.dbk
@@ -13596,7 +13818,7 @@ msgid ""
 "such as <emphasis>dselect</emphasis>. However this presents a problem in "
 "communicating your selections back to the local computer."
 msgstr ""
-"La commande dist-upgrade peut être remplacée par toute autres commande "
+"La commande dist-upgrade peut être remplacée par toute autre commande "
 "usuelle d'APT, notamment dselect-upgrade. Il est même possible d'utiliser "
 "une interface comme <emphasis>dselect</emphasis>. Cependant, cela complique "
 "la communication des choix vers l'ordinateur local."
@@ -13625,7 +13847,7 @@ msgstr ""
 "  # apt-get check\n"
 "  [ APT crée la copie locale des fichiers de cache ]\n"
 "  # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
-"  [ Ou toute autre commande APT ]\n"
+"  [ ou toute autre commande APT ]\n"
 
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
@@ -13633,7 +13855,7 @@ msgid ""
 "It is necessary for proper function to re-specify the status file to be the "
 "local one. This is very important!"
 msgstr ""
-"Pour un fonctionnement correct, il est indispensable de ré-indiquer que le "
+"Pour un fonctionnement correct, il est indispensable de réindiquer que le "
 "fichier d'état est le fichier local. Cela est très important."
 
 #. type: Content of: <book><chapter><section><para>
@@ -13648,7 +13870,7 @@ msgstr ""
 "Si vous utilisez dselect, vous pouvez effectuer l'opération dangereuse "
 "consistant à copier disc/status en /var/lib/dpkg/status, afin que les choix "
 "effectués sur la machine distante soient mis à jour. Il est recommandé de "
-"n'éffectuer les choix que sur la machine locale, mais ce n'est pas toujours "
+"n'effectuer les choix que sur la machine locale, mais ce n'est pas toujours "
 "possible. NE COPIEZ PAS le fichier d'état si dpkg ou APT ont été exécutés "
 "dans l'intervalle."
 
@@ -13678,9 +13900,9 @@ msgid ""
 "packages."
 msgstr ""
 "L'idée de base est de créer un disque qui ne comporte que les fichiers "
-"archive téléchargés depuis le site distant. Cela peut être effectué avec "
-"l'option --print-uris d'apt-get puis de la préparation d'un script wget "
-"permettant de récupérer les paquets/"
+"d'archive téléchargés depuis le site distant. Cela peut être effectué avec "
+"l'option --print-uris d'apt-get, puis en préparant un script wget pour "
+"récupérer réellement les paquets."
 
 #. type: Content of: <book><chapter><section><title>
 #: offline.dbk
@@ -13695,7 +13917,7 @@ msgid ""
 msgstr ""
 "À la différence de la méthode précédente, aucun fichier de configuration "
 "spécifique n'est nécessaire. Seules les commandes standard d'APT seront "
-"utilisées pour créer la liste de ficheirs."
+"utilisées pour créer la liste de fichiers."
 
 #. type: Content of: <book><chapter><section><screen>
 #: offline.dbk
@@ -13768,7 +13990,459 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
 msgid "Which will use the already fetched archives on the disc."
-msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
+msgstr "Cette commande utilisera les archives déjà récupérées sur le disque."
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr "<!ENTITY synopsis-keyid \"id_de_clé\">"
+
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "Utilitaire obsolète de gestion des clés d'APT"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> est utilisé pour gérer la liste de clés dont "
+#~ "se sert APT pour authentifier les paquets. Les paquets authentifiés par "
+#~ "ces clés sont réputés fiables."
+
+#~ msgid ""
+#~ "Use of <command>apt-key</command> is deprecated, except for the use of "
+#~ "<command>apt-key del</command> in maintainer scripts to remove existing "
+#~ "keys from the main keyring.  If such usage of <command>apt-key</command> "
+#~ "is desired the additional installation of the GNU Privacy Guard suite "
+#~ "(packaged in <package>gnupg</package>) is required."
+#~ msgstr ""
+#~ "L'usage d'<command>apt-key</command> est obsolète sauf pour l'utilisation "
+#~ "d'<command>apt-key del</command> dans les scripts du responsable pour "
+#~ "retirer des clés existantes du trousseau de clés principal. Si vous "
+#~ "souhaitez utiliser <command>apt-key</command>, il est nécessaire "
+#~ "d'installer en plus la suite « GNU Privacy Guard » (du paquet "
+#~ "<package>gnupg</package>)."
+
+#~ msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04."
+#~ msgstr ""
+#~ "apt-key(8) sera disponible pour la dernière fois dans Debian 12 et "
+#~ "Ubuntu 24.04."
+
+#~ msgid "Supported keyring files"
+#~ msgstr "Trousseaux de clés pris en charge"
+
+#~ msgid ""
+#~ "apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+#~ "public ring\") in files with the \"<literal>gpg</literal>\" extension, "
+#~ "not the keybox database format introduced in newer &gpg; versions as "
+#~ "default for keyring files. Binary keyring files intended to be used with "
+#~ "any apt version should therefore always be created with <command>gpg --"
+#~ "export</command>."
+#~ msgstr ""
+#~ "apt-key ne prend en charge que le format binaire OpenPGP (connu aussi "
+#~ "sous le nom de « trousseau de clés public GPG ») dans les fichiers avec "
+#~ "l'extension « <literal>gpg</literal> », et pas le format de base de "
+#~ "données Keybox, introduit comme format par défaut pour les fichiers de "
+#~ "trousseau de clés dans les versions les plus récentes de &gpg;. Les "
+#~ "fichiers binaires de trousseau de clés destinés à être utilisés dans "
+#~ "toutes les versions d'apt devraient donc toujours être créés avec la "
+#~ "commande <command>gpg --export</command>."
+
+#~ msgid ""
+#~ "Alternatively, if all systems which should be using the created keyring "
+#~ "have at least apt version >= 1.4 installed, you can use the ASCII armored "
+#~ "format with the \"<literal>asc</literal>\" extension instead which can be "
+#~ "created with <command>gpg --armor --export</command>."
+#~ msgstr ""
+#~ "Autrement, si tous les systèmes susceptibles d'utiliser le trousseau de "
+#~ "clés créé disposent d'une version d'apt >= 1.4, il est possible "
+#~ "d'utiliser plutôt le format ASCII-Armored, avec l'extension "
+#~ "« <literal>asc</literal> », qui peut être créé par la commande "
+#~ "<command>gpg --armor --export</command>."
+
+#~ msgid "Commands"
+#~ msgstr "Commandes"
+
+#~ msgid "(deprecated)"
+#~ msgstr "(obsolète)"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "Ajouter une clé à la liste des clés fiables. La clé est lue dans le "
+#~ "fichier indiqué avec le paramètre &synopsis-param-filename; ou sur "
+#~ "l'entrée standard si le nom de fichier est <literal>-</literal>."
+
+#~ msgid ""
+#~ "It is critical that keys added manually via <command>apt-key</command> "
+#~ "are verified to belong to the owner of the repositories they claim to be "
+#~ "for otherwise the &apt-secure; infrastructure is completely undermined."
+#~ msgstr ""
+#~ "Il est primordial de vérifier que les clés ajoutées manuellement avec "
+#~ "<command>apt-key</command> appartiennent bien au propriétaire des dépôts "
+#~ "comme elles le prétendent, sinon l'infrastructure de &apt-secure; est "
+#~ "complètement compromise."
+
+#~ msgid ""
+#~ "<emphasis>Note</emphasis>: Instead of using this command a keyring should "
+#~ "be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+#~ "directory with a descriptive name and either \"<literal>gpg</literal>\" "
+#~ "or \"<literal>asc</literal>\" as file extension."
+#~ msgstr ""
+#~ "<emphasis>Attention</emphasis> : plutôt que d'utiliser cette commande, un "
+#~ "trousseau de clés peut être placé directement dans le répertoire "
+#~ "<filename>/etc/apt/trusted.gpg.d/</filename> avec un nom descriptif et "
+#~ "soit « <literal>gpg</literal> » soit « <literal>asc</literal> » comme "
+#~ "extension de fichier."
+
+#~ msgid "(mostly deprecated)"
+#~ msgstr "(obsolète pour l'essentiel)"
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "Supprimer une clé de la liste des clés fiables."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr "Afficher la clé &synopsis-param-keyid; sur la sortie standard."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "Afficher toutes les clés fiables sur la sortie standard."
+
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "Afficher la liste des clés fiables avec leurs empreintes."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~ "can e.g. download key from keyservers directly into the trusted set of "
+#~ "keys. Note that there are <emphasis>no</emphasis> checks performed, so it "
+#~ "is easy to completely undermine the &apt-secure; infrastructure if used "
+#~ "without care."
+#~ msgstr ""
+#~ "Passer des options avancées à gpg. Avec <command>adv --recv-key</"
+#~ "command>, il est possible par exemple de télécharger une clé directement "
+#~ "d'un serveur de clés dans l'ensemble de clés fiables. Veuillez noter "
+#~ "qu'il n'y a <emphasis>aucune</emphasis> vérification réalisée, aussi, il "
+#~ "peut être facile de compromettre complètement l'infrastructure &apt-"
+#~ "secure;, si la commande est utilisée sans précaution."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "Mettre à jour le trousseau de clés local avec le trousseau de clés de "
+#~ "l'archive et y supprimer les clés qui ne sont plus valables. Le trousseau "
+#~ "de clés de l'archive est fourni dans le paquet <literal>archive-keyring</"
+#~ "literal> de la distribution, par exemple le paquet &keyring-package; dans "
+#~ "&keyring-distro;."
+
+#~ msgid ""
+#~ "Note that a distribution does not need to and in fact should not use this "
+#~ "command any longer and instead ship keyring files in the <filename>/etc/"
+#~ "apt/trusted.gpg.d/</filename> directory directly as this avoids a "
+#~ "dependency on <package>gnupg</package> and it is easier to manage keys by "
+#~ "simply adding and removing files for maintainers and users alike."
+#~ msgstr ""
+#~ "Veuillez noter qu'une distribution n'a pas besoin et, en fait, ne devrait "
+#~ "plus utiliser cette commande et plutôt charger directement les fichiers "
+#~ "de trousseau de clés dans le répertoire <filename>/etc/apt/trusted.gpg.d/"
+#~ "</filename> parce que cela évite une dépendance à <package>gnupg</"
+#~ "package> et qu'il est plus facile pour les responsables et les "
+#~ "utilisateurs de gérer les clés en ajoutant ou en retirant simplement des "
+#~ "fichiers."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "Effectuer une mise à jour analogue à celle de la commande "
+#~ "<command>update</command> mais avec récupération du trousseau de clés de "
+#~ "l'archive depuis une URI et la valide avec une clé maître. Cette commande "
+#~ "nécessite que &wget; soit installé, qu'APT soit construit pour le "
+#~ "récupérer sur un serveur et enfin une clé maître pour effectuer la "
+#~ "validation. Cette commande n'est pas gérée par APT dans Debian où "
+#~ "<command>update</command> est utilisé à la place. Par contre, la version "
+#~ "d'Ubuntu permet de l'utiliser."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Veuillez noter que les options doivent être utilisées avant les commandes "
+#~ "décrites dans la section suivante."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Cette option permet d'indiquer le fichier porte-clés sur lequel la "
+#~ "commande doit agir. Par défaut, une commande sera exécutée sur le fichier "
+#~ "<filename>trusted.gpg</filename> ainsi que sur tous les fichiers du "
+#~ "répertoire <filename>trusted.gpg.d</filename>. Le fichier "
+#~ "<filename>trusted.gpg</filename> reste le fichier principal pour les clés "
+#~ "donc, par exemple, les nouvelles clés y seront ajoutées."
+
+#~ msgid "Deprecation"
+#~ msgstr "Obsolescence"
+
+#~ msgid ""
+#~ "Except for using <command>apt-key del</command> in maintainer scripts, "
+#~ "the use of <command>apt-key</command> is deprecated. This section shows "
+#~ "how to replace existing use of <command>apt-key</command>."
+#~ msgstr ""
+#~ "Sauf pour l'utilisation d'<command>apt-key del</command> dans les scripts "
+#~ "du responsable, l'utilisation d'<command>apt-key</command> est obsolète. "
+#~ "Cette section montre comment remplacer l'utilisation actuelle "
+#~ "d'<command>apt-key</command>."
+
+#~ msgid ""
+#~ "If your existing use of <command>apt-key add</command> looks like this:"
+#~ msgstr ""
+#~ "Si votre utilisation actuelle de <command>apt-key add</command> ressemble "
+#~ "à cela :"
+
+#~ msgid ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add "
+#~ "-</literal>"
+#~ msgstr ""
+#~ "<literal>wget -qO- https://mondépot.exemple/mondépot.asc | sudo apt-key "
+#~ "add -</literal>"
+
+#~ msgid ""
+#~ "Then you can directly replace this with (though note the recommendation "
+#~ "below):"
+#~ msgstr ""
+#~ "Alors vous pouvez directement remplacer cela par (mais notez la "
+#~ "recommandation ci-dessous) :"
+
+#~ msgid ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
+#~ "trusted.gpg.d/myrepo.asc</literal>"
+#~ msgstr ""
+#~ "<literal>wget -qO- https://mondépot.example/mondépot.asc | sudo tee /etc/"
+#~ "apt/trusted.gpg.d/mondépot.asc</literal>"
+
+#~ msgid ""
+#~ "Make sure to use the \"<literal>asc</literal>\" extension for ASCII "
+#~ "armored keys and the \"<literal>gpg</literal>\" extension for the binary "
+#~ "OpenPGP format (also known as \"GPG key public ring\"). The binary "
+#~ "OpenPGP format works for all apt versions, while the ASCII armored format "
+#~ "works for apt version >= 1.4."
+#~ msgstr ""
+#~ "Assurez-vous d'utiliser l'extension « <literal>asc</literal> » pour les "
+#~ "clés au format ASCII-Armored et l'extension « <literal>gpg</literal> » "
+#~ "pour le format binaire OpenPGP (aussi connu comme « GPG key public "
+#~ "ring »). Le format binaire OpenPGP fonctionne pour toutes les versions "
+#~ "d'APT, tandis que le format ASCII-Armored ne fonctionne que pour les "
+#~ "versions >= 1.4."
+
+#~ msgid ""
+#~ "<emphasis>Recommended:</emphasis> Instead of placing keys into the "
+#~ "<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
+#~ "anywhere on your filesystem by using the <literal>Signed-By</literal> "
+#~ "option in your <literal>sources.list</literal> and pointing to the "
+#~ "filename of the key. See &sources-list; for details.  Since APT 2.4, "
+#~ "<filename>/etc/apt/keyrings</filename> is provided as the recommended "
+#~ "location for keys not managed by packages.  When using a deb822-style "
+#~ "sources.list, and with apt version >= 2.4, the <literal>Signed-By</"
+#~ "literal> option can also be used to include the full ASCII armored "
+#~ "keyring directly in the <literal>sources.list</literal> without an "
+#~ "additional file."
+#~ msgstr ""
+#~ "<emphasis>Recommandation :</emphasis> au lieu de placer les clés dans le "
+#~ "répertoire <filename>/etc/apt/trusted.gpg.d</filename>, vous pouvez les "
+#~ "placer n'importe où dans votre système de fichiers en utilisant l'option "
+#~ "<literal>Signed-By</literal> dans votre <literal>sources.list</literal> "
+#~ "et en pointant vers le nom de fichier de la clé. Voir &sources-list; pour "
+#~ "des détails. Depuis APT 2.4, <filename>/etc/apt/keyrings</filename> est "
+#~ "donné comme emplacement recommandé pour les clés qui ne sont pas gérées "
+#~ "par les paquets. Lors de l'utilisation de source.list de type deb288 avec "
+#~ "APT version >= 2.4, l'option <literal>Signed-By</literal> peut aussi être "
+#~ "utilisée pour inclure directement le trousseau de clés entier au format "
+#~ "ASCII-Armored dans le fichier <literal>sources.list</literal> sans "
+#~ "fichier supplémentaire."
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "Le programme qui gère la liste des clés utilisées par APT pour faire "
+#~ "confiance aux dépôts s'appelle <command>apt-key</command>. Il peut "
+#~ "ajouter ou supprimer des clés aussi bien que lister les clés de "
+#~ "confiance. Il est possible de limiter la capacité pour une ou plusieurs "
+#~ "clés de signer telle ou telle archive avec l'option <option>Signed-By</"
+#~ "option> dans &sources-list;."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "Pour ajouter une clé, vous devez d'abord la télécharger. Il vaut mieux "
+#~ "utiliser un canal fiable pour ce téléchargement. Ensuite vous l'ajoutez "
+#~ "avec la commande <command>apt-key</command> et vous lancez la commande "
+#~ "<command>apt-get update</command> pour télécharger et vérifier le fichier "
+#~ "<filename>InRelease</filename> ou <filename>Release.gpg</filename> de "
+#~ "l'archive que vous avez configurée."
+
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> est le mandataire (proxy) FTP à utiliser "
+#~ "par défaut pour les URI FTP.  Il se présente sous la forme standard : "
+#~ "<literal>ftp://[[user][:pass]@]host[:port]/</literal>. On peut spécifier "
+#~ "un mandataire particulier par hôte distant en utilisant la syntaxe : "
+#~ "<literal>ftp::Proxy::&lt;hôte&gt;</literal>. Le mot-clé spécial "
+#~ "<literal>DIRECT</literal> indique alors de n'utiliser aucun mandataire "
+#~ "pour l'hôte. Si aucun des paramètres précédents n'est défini, la variable "
+#~ "d'environnement <envar>ftp_proxy</envar> annule et replace toutes les "
+#~ "options de mandataire FTP. Pour utiliser un mandataire FTP, vous devrez "
+#~ "renseigner l'entrée <literal>ftp::ProxyLogin</literal> dans le fichier de "
+#~ "configuration. Cette entrée spécifie les commandes à envoyer au "
+#~ "mandataire pour lui préciser à quoi il doit se connecter. Voir "
+#~ "&configureindex; pour savoir comment faire. Les variables de substitution "
+#~ "qui représentent le composant d'URI correspondant sont : <literal>$"
+#~ "(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>$"
+#~ "(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+#~ "literal> et <literal>$(SITE_PORT)</literal>."
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "L'option <literal>timeout</literal> positionne le compteur d'expiration "
+#~ "du délai (timeout) utilisé par la méthode. Cela s'applique aussi bien à "
+#~ "la connexion qu'aux données."
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "Plusieurs options de configuration sont fournies pour contrôler le mode "
+#~ "passif. Il est généralement plus sûr d'activer le mode passif et cela "
+#~ "marche dans presque tous les environnements. Cependant, certaines "
+#~ "situations nécessitent que le mode passif soit désactivé et que le mode "
+#~ "« port » de ftp soit utilisé à la place. On peut le faire globalement, "
+#~ "pour des connexions qui passent par un mandataire ou pour une machine "
+#~ "spécifique (examinez le modèle de fichier de configuration)."
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "Il est possible de faire transiter le trafic FTP par un mandataire HTTP "
+#~ "en positionnant la variable d'environnement <envar>ftp_proxy</envar> à un "
+#~ "URL HTTP – consultez la méthode http ci-dessus pour la syntaxe. On ne "
+#~ "peut pas le faire dans le fichier de configuration et il n'est de toute "
+#~ "façon pas recommandé d'utiliser FTP au travers de HTTP en raison de la "
+#~ "faible efficacité de cette méthode."
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "L'option <literal>ForceExtended</literal> contrôle l'utilisation des "
+#~ "commandes liées à la RFC 2428, <literal>EPSV</literal> et <literal>EPRT</"
+#~ "literal>. Par défaut, elle vaut « false » ce qui signifie que ces "
+#~ "commandes ne sont utilisées que pour une connexion de type IPv6. Quand "
+#~ "elle vaut « true », on les utilise même si la connexion est de type IPv4. "
+#~ "La plupart des serveurs FTP ne suivent pas la RFC 2428."
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr ""
+#~ "Afficher les informations concernant le téléchargement de paquets par FTP."
+
+#~ msgid ""
+#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on "
+#~ "the decline in favour of <literal>http</literal> and <literal>https</"
+#~ "literal> and many archives either never offered or are retiring FTP "
+#~ "access. If you still need this method many configuration options for it "
+#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed "
+#~ "in &apt-conf;."
+#~ msgstr ""
+#~ "Le procédé <literal>ftp</literal> indique un serveur FTP comme archive. "
+#~ "L'utilisation de FTP décline en faveur de <literal>http</literal> et "
+#~ "<literal>https</literal> et plusieurs archives soit n'ont jamais offert "
+#~ "d'accès FTP, soit le retirent. Si vous avez encore besoin de cette "
+#~ "méthode, plusieurs options de configuration sont disponibles dans le "
+#~ "champ d'action <literal>Acquire::ftp</literal> et détaillées dans &apt-"
+#~ "conf;."
+
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Veuillez noter qu'on peut spécifier un mandataire FTP en utilisant la "
+#~ "variable d'environnement <envar>ftp_proxy</envar>. On peut aussi "
+#~ "spécifier un mandataire HTTP (les serveurs mandataires HTTP comprennent "
+#~ "souvent les URL FTP) en utilisant cette méthode et <emphasis>seulement</"
+#~ "emphasis> cette méthode. Les mandataires qui utilisent HTTP et qui sont "
+#~ "spécifiés dans le fichier de configuration seront ignorés."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "Le procédé rsh/ssh utilise rsh/ssh pour se connecter à une machine "
+#~ "distante et pour accéder aux fichiers en tant qu'un certain utilisateur. "
+#~ "Il est recommandé de régler préalablement les hôtes distants (rhosts) ou "
+#~ "les clés RSA. Les commandes standard <command>find</command> et "
+#~ "<command>dd</command> sont utilisées pour l'accès aux fichiers de la "
+#~ "machine distante."
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr ""
+#~ "Décrit le processus de résolution des dépendances pour la construction de "
+#~ "paquets source ( « build-dependencies » ) par &apt-get;."
 
 #~ msgid "Regular expressions and &glob; syntax"
 #~ msgstr "Expressions régulières et syntaxe &glob;"
@@ -13795,12 +14469,12 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 
 #~ msgid ""
 #~ "<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
-#~ "URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:"
-#~ "port]/</literal>.  Per host proxies can also be specified by using the "
-#~ "form <literal>http::Proxy::&lt;host&gt;</literal> with the special "
-#~ "keyword <literal>DIRECT</literal> meaning to use no proxies. If no one of "
-#~ "the above settings is specified, <envar>http_proxy</envar> environment "
-#~ "variable will be used."
+#~ "URIs. It is in the standard form of <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>http::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>http_proxy</envar> "
+#~ "environment variable will be used."
 #~ msgstr ""
 #~ "<literal>http::Proxy</literal> est le mandataire (proxy) HTTP à utiliser "
 #~ "par défaut pour les URI HTTP. Il se présente sous la forme standard : "
@@ -13832,19 +14506,19 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "info about trusted certificates.  <literal>&lt;host&gt;::CaInfo</literal> "
 #~ "is the corresponding per-host option.  <literal>Verify-Peer</literal> "
 #~ "boolean suboption determines whether or not the server's host certificate "
-#~ "should be verified against trusted certificates.  <literal>&lt;host&gt;::"
-#~ "Verify-Peer</literal> is the corresponding per-host option.  "
-#~ "<literal>Verify-Host</literal> boolean suboption determines whether or "
-#~ "not the server's hostname should be verified.  <literal>&lt;host&gt;::"
-#~ "Verify-Host</literal> is the corresponding per-host option.  "
-#~ "<literal>SslCert</literal> determines what certificate to use for client "
-#~ "authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
-#~ "corresponding per-host option.  <literal>SslKey</literal> determines what "
-#~ "private key to use for client authentication. <literal>&lt;host&gt;::"
-#~ "SslKey</literal> is the corresponding per-host option.  "
-#~ "<literal>SslForceVersion</literal> overrides default SSL version to use.  "
-#~ "It can contain either of the strings '<literal>TLSv1</literal>' or "
-#~ "'<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
+#~ "should be verified against trusted certificates.  "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-"
+#~ "host option.  <literal>Verify-Host</literal> boolean suboption determines "
+#~ "whether or not the server's hostname should be verified.  "
+#~ "<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-"
+#~ "host option.  <literal>SslCert</literal> determines what certificate to "
+#~ "use for client authentication. <literal>&lt;host&gt;::SslCert</literal> "
+#~ "is the corresponding per-host option.  <literal>SslKey</literal> "
+#~ "determines what private key to use for client authentication. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+#~ "option.  <literal>SslForceVersion</literal> overrides default SSL version "
+#~ "to use.  It can contain either of the strings '<literal>TLSv1</literal>' "
+#~ "or '<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
 #~ "literal> is the corresponding per-host option."
 #~ msgstr ""
 #~ "La sous-option <literal>CaInfo</literal> spécifie le fichier contenant "
@@ -13871,8 +14545,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "Le procédé <literal>http</literal> indique un serveur HTTP comme archive. "
 #~ "Si une variable d'environnement <envar>http_proxy</envar> (au format "
 #~ "http://server:port/)  existe, le serveur mandataire indiqué par "
-#~ "<envar>http_proxy</envar> est utilisé.  Quand un serveur mandataire "
-#~ "HTTP/1.1 demande une authentification, on peut utiliser la chaîne http://"
+#~ "<envar>http_proxy</envar> est utilisé.  Quand un serveur mandataire HTTP/"
+#~ "1.1 demande une authentification, on peut utiliser la chaîne http://"
 #~ "user:pass@server:port/. Notez qu'il s'agit d'une méthode "
 #~ "d'authentification peu sûre."
 
@@ -13881,9 +14555,10 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "it encounters unauthenticated archives to give a slightly longer grace "
 #~ "period on this backward compatibility effecting change. This exception "
 #~ "will be removed in future releases and you can opt-out of this grace "
-#~ "period by setting the configuration option <option>Binary::apt-get::"
-#~ "Acquire::AllowInsecureRepositories</option> to <literal>false</literal> "
-#~ "or <option>--no-allow-insecure-repositories</option> on the command line."
+#~ "period by setting the configuration option <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> to <literal>false</"
+#~ "literal> or <option>--no-allow-insecure-repositories</option> on the "
+#~ "command line."
 #~ msgstr ""
 #~ "Comme exception temporaire, &apt-get; (pas &apt; !) émet seulement une "
 #~ "mise en garde s'il rencontre des archives non authentifiées pour accorder "
@@ -14059,15 +14734,16 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "Les paquets essentiels (et leurs dépendances) devraient être configurés "
 #~ "après avoir été décompressés. Il est conseillé que cette opération ait "
 #~ "lieu le plus tôt possible dans le processus de mise à jour car ces "
-#~ "opérations de configuration nécessitent également <literal>DPkg::"
-#~ "TriggersPending</literal>, ce qui peut conduire à l'exécution de certains "
-#~ "actions différées qui ne sont pas nécessairement utiles. Les paquets "
-#~ "essentiels obtiennent par défaut un score élevé mais le marqueur "
-#~ "« immédiat » implique un score assez bas (par exemple un paquet qui "
-#~ "comporte des prédépendances obtient un score plus élevé). Cette option et "
-#~ "les options du même groupe permettent de modifier la façon d'attribuer un "
-#~ "score. L'exemple ci-dessous indique ces réglages avec leurs valeurs par "
-#~ "défaut. <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ "opérations de configuration nécessitent également "
+#~ "<literal>DPkg::TriggersPending</literal>, ce qui peut conduire à "
+#~ "l'exécution de certains actions différées qui ne sont pas nécessairement "
+#~ "utiles. Les paquets essentiels obtiennent par défaut un score élevé mais "
+#~ "le marqueur « immédiat » implique un score assez bas (par exemple un "
+#~ "paquet qui comporte des prédépendances obtient un score plus élevé). "
+#~ "Cette option et les options du même groupe permettent de modifier la "
+#~ "façon d'attribuer un score. L'exemple ci-dessous indique ces réglages "
+#~ "avec leurs valeurs par défaut. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
 
 #~ msgid "List fingerprints of trusted keys."
 #~ msgstr "Afficher les empreintes des clés fiables."
@@ -14211,8 +14887,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 
 #~ msgid ""
 #~ "No action; perform a simulation of events that would occur but do not "
-#~ "actually change the system.  Configuration Item: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "actually change the system.  Configuration Item: "
+#~ "<literal>APT::Get::Simulate</literal>."
 #~ msgstr ""
 #~ "Pas d'action ; simule les événements qui devraient se produire sans "
 #~ "effectuer de changement réel sur le système. Élément de configuration : "
@@ -14220,12 +14896,12 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 
 #~ msgid ""
 #~ "Simulated runs performed as a user will automatically deactivate locking "
-#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
-#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
-#~ "notice will also be displayed indicating that this is only a simulation. "
-#~ "Runs performed as root do not trigger either NoLocking or the notice - "
-#~ "superusers should know what they are doing without further warnings from "
-#~ "<literal>apt-get</literal>."
+#~ "(<literal>Debug::NoLocking</literal>), and if the option "
+#~ "<literal>APT::Get::Show-User-Simulation-Note</literal> is set (as it is "
+#~ "by default) a notice will also be displayed indicating that this is only "
+#~ "a simulation. Runs performed as root do not trigger either NoLocking or "
+#~ "the notice - superusers should know what they are doing without further "
+#~ "warnings from <literal>apt-get</literal>."
 #~ msgstr ""
 #~ "Lorsque la simulation est effectuée par un utilisateur sans privilège, le "
 #~ "verrouillage sera désactivé automatiquement (<literal>Debug::NoLocking</"
@@ -14244,8 +14920,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ msgstr ""
 #~ "Ignorer le fait que les paquets ne peuvent pas être authentifiés ; ne le "
 #~ "signale pas à l'utilisateur. Cette option est très utile pour certains "
-#~ "outils comme pbuilder. Élément de configuration : <literal>APT::Get::"
-#~ "AllowUnauthenticated</literal>."
+#~ "outils comme pbuilder. Élément de configuration : "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
 
 #~ msgid ""
 #~ "Version 2 of this protocol dumps more information, including the protocol "
@@ -14414,8 +15090,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~| "B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgid ""
-#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
-#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), "
+#~ "B<sources.list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgstr ""
 #~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~ "B<apt_preferences>(5), B<apt-secure>(8)"
@@ -14435,21 +15111,21 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ msgstr "Cette page de manuel n'a même pas commencé à être rédigée."
 
 #~ msgid ""
-#~ "See E<lt>http://bugs.debian.org/aptE<gt>.  If you wish to report a bug in "
-#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "See E<lt>https://bugs.debian.org/aptE<gt>.  If you wish to report a bug "
+#~ "in B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
 #~ "B<reportbug>(1)  command."
 #~ msgstr ""
-#~ "Voir E<lt>http://bugs.debian.org/aptE<gt>. Si vous souhaitez signaler un "
-#~ "bogue dans B<apt>, veuillez lire I</usr/share/doc/debian/bug-reporting."
-#~ "txt> ou utiliser la commande B<reportbug>(1)."
+#~ "Voir E<lt>https://bugs.debian.org/aptE<gt>. Si vous souhaitez signaler un "
+#~ "bogue dans B<apt>, veuillez lire I</usr/share/doc/debian/bug-"
+#~ "reporting.txt> ou utiliser la commande B<reportbug>(1)."
 
 #~ msgid "AUTHOR"
 #~ msgstr "AUTEURS"
 
 #~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
 #~ msgstr ""
-#~ "apt a été écrit par l'équipe de développement APT E<lt>apt@packages."
-#~ "debian.orgE<gt>."
+#~ "apt a été écrit par l'équipe de développement APT "
+#~ "E<lt>apt@packages.debian.orgE<gt>."
 
 #~ msgid "Package resource list for APT"
 #~ msgstr "Liste des sources de paquets"
@@ -14555,8 +15231,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "La liste des sources de paquets indique où trouver les archives du "
 #~ "système de distribution de paquets utilisé. Pour l'instant, cette page de "
 #~ "manuel ne documente que le système d'empaquetage utilisé par le système "
-#~ "Debian GNU/Linux. Ce fichier de contrôle est <filename>/etc/apt/sources."
-#~ "list</filename>."
+#~ "Debian GNU/Linux. Ce fichier de contrôle est <filename>/etc/apt/"
+#~ "sources.list</filename>."
 
 #~ msgid ""
 #~ "The source list is designed to support any number of active sources and a "
@@ -14654,8 +15330,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ msgstr ""
 #~ "Créer la somme de contrôle MD5. Cette option est activée par défaut. "
 #~ "Quand elle est désactivée, les fichiers d'index n'ont pas les champs "
-#~ "MD5Sum là où c'est possible. Élément de configuration : <literal>APT::"
-#~ "FTPArchive::MD5</literal>."
+#~ "MD5Sum là où c'est possible. Élément de configuration : "
+#~ "<literal>APT::FTPArchive::MD5</literal>."
 
 #~ msgid "Show a short usage summary."
 #~ msgstr "Affiche un résumé de l'aide"
@@ -14787,10 +15463,10 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
 #~ "uniforme. Quand un outil d'APT démarre, il lit la configuration désignée "
 #~ "par variable d'environnement <envar>APT_CONFIG</envar> (si elle existe), "
 #~ "puis il lit les fichiers situés dans <literal>Dir::Etc::Parts</literal> "
-#~ "ainsi que le principal fichier de configuration indiqué par <literal>Dir::"
-#~ "Etc::main</literal> ; enfin il applique les options de la ligne de "
-#~ "commande qui prévalent sur les directives de configuration, chargeant si "
-#~ "nécessaire d'autres fichiers de configuration."
+#~ "ainsi que le principal fichier de configuration indiqué par "
+#~ "<literal>Dir::Etc::main</literal> ; enfin il applique les options de la "
+#~ "ligne de commande qui prévalent sur les directives de configuration, "
+#~ "chargeant si nécessaire d'autres fichiers de configuration."
 
 #~ msgid ""
 #~ "Disable Immediate Configuration; This dangerous option disables some of "
diff --git a/doc/po/it.po b/doc/po/it.po
index b9193af..aaa37ca 100644
--- a/doc/po/it.po
+++ b/doc/po/it.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2017-03-27 19:05+0200\n"
 "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
 "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
@@ -62,7 +62,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -73,7 +73,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bug</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>Pagina dei bug di APT</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>Pagina dei bug di APT</ulink>.\n"
 "   Se si desidera segnalare un bug in APT, vedere\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o il\n"
 "   comando &reportbug;.\n"
@@ -145,6 +145,33 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-v</option></term>\n"
+#| "      <term><option>--version</option></term>\n"
+#| "      <listitem><para>Show the program version.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-v</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>Mostra la versione del programma.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -176,7 +203,19 @@ msgstr ""
 
 #. type: Plain text
 #: apt.ent
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
 msgid ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -188,7 +227,6 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
-"\">\n"
 msgstr ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -202,6 +240,41 @@ msgstr ""
 "     </varlistentry>\n"
 "\">\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-c</option></term>\n"
+#| "      <term><option>--config-file</option></term>\n"
+#| "     <listitem><para>Configuration File; Specify a configuration file to use. \n"
+#| "     The program will read the default configuration file and then this \n"
+#| "     configuration file. See &apt-conf; for syntax information.     \n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-c</option></term>\n"
+"      <term><option>--config-file</option></term>\n"
+"     <listitem><para>File di configurazione; Specifica un file di configurazione da usare. \n"
+"     Il programma leggerà il file di configurazione predefinito e poi questo \n"
+"     file di configurazione. Vedere &apt-conf; per informazioni sulla sintassi.     \n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -522,11 +595,13 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"stringa_config\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"stringa_config\">"
 
 #. type: Plain text
 #: apt.ent
@@ -540,12 +615,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"rilascio_obiettivo\">"
 
 #. type: Plain text
@@ -596,11 +671,11 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"punto_mount_cdrom\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"punto_mount_cdrom\">"
 
 #. type: Plain text
 #: apt.ent
@@ -663,28 +738,18 @@ msgstr ""
 "<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"sezione\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"IDchiave\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -694,12 +759,11 @@ msgid "command-line interface"
 msgstr "interfaccia a riga di comando"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Descrizione"
 
@@ -768,6 +832,13 @@ msgstr ""
 "richiede la rimozione di un pacchetto installato, l'aggiornamento di tale "
 "pacchetto non viene effettuato."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -780,7 +851,7 @@ msgstr ""
 "aggiornare il sistema nel suo complesso."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -918,13 +989,21 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+#| "command> in that it can display a list of packages satisfying certain "
+#| "criteria.  It supports &glob; patterns for matching package names as well "
+#| "as options to list installed (<option>--installed</option>), upgradeable "
+#| "(<option>--upgradeable</option>) or all available (<option>--all-"
+#| "versions</option>) versions."
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 "<option>list</option> è in qualche modo simile a <command>dpkg-query --list</"
 "command>, nel senso che può visualizzare un elenco di pacchetti che "
@@ -948,6 +1027,20 @@ msgstr ""
 "&sources-list; nell'editor di testo preferito e fornisce controlli di sanità "
 "di base."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-cache;)"
+msgid "(summarised in &apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-get;)"
+msgid "(summarised in &apt-get;)"
+msgstr "(&apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -984,22 +1077,24 @@ msgstr ""
 "che essi mantengono il più possibile la compatibilità all'indietro."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Vedere anche"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, la Guida "
-"dell'utente di APT in &guidesdir;, &apt-preferences;, l'APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, la Guida dell'utente di APT in &guidesdir;, &apt-preferences;, "
+"l'APT Howto."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1061,11 +1156,11 @@ msgid ""
 msgstr ""
 "<literal>update</literal> è usato per sincronizzare nuovamente i file degli "
 "indici dei pacchetti dalle loro fonti. Gli indici dei pacchetti disponibili "
-"sono scaricati dalle posizioni specificate in <filename>/etc/apt/sources."
-"list</filename>. Per esempio, quando si usa un archivio Debian, questo "
-"comando recupera e analizza i file <filename>Packages.gz</filename>, in modo "
-"da rendere disponibili informazioni sui pacchetti nuovi e quelli aggiornati. "
-"Si dovrebbe sempre fare un <literal>update</literal> prima di un "
+"sono scaricati dalle posizioni specificate in <filename>/etc/apt/"
+"sources.list</filename>. Per esempio, quando si usa un archivio Debian, "
+"questo comando recupera e analizza i file <filename>Packages.gz</filename>, "
+"in modo da rendere disponibili informazioni sui pacchetti nuovi e quelli "
+"aggiornati. Si dovrebbe sempre fare un <literal>update</literal> prima di un "
 "<literal>upgrade</literal> o <literal>dist-upgrade</literal>. Notare che "
 "l'indicatore di avanzamento globale non è preciso perché è impossibile "
 "conoscere in anticipo la dimensione dei file degli indici dei pacchetti."
@@ -1485,6 +1580,20 @@ msgstr ""
 "configurazione <literal>APT::Clean-Installed</literal> è disabilitata, "
 "impedisce che vengano eliminati i pacchetti installati."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1575,8 +1684,8 @@ msgid ""
 "Configuration Item: <literal>APT::Get::Download-Only</literal>."
 msgstr ""
 "Scarica solamente; i file di pacchetto sono solo recuperati e non "
-"spacchettati o installati. Voce di configurazione: <literal>APT::Get::"
-"Download-Only</literal>."
+"spacchettati o installati. Voce di configurazione: "
+"<literal>APT::Get::Download-Only</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1590,8 +1699,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Aggiusta; cerca di correggere un sistema che ha dipendenze non soddisfatte. "
 "Questa opzione, quando usata con install o remove, può omettere qualsiasi "
@@ -1672,15 +1781,15 @@ msgid ""
 msgstr ""
 "Nessuna azione; effettua una simulazione degli eventi che avverrebbero sulla "
 "base dello stato attuale del sistema, ma non fa nulla per cambiare "
-"effettivamente il sistema. Il lock viene disabilitato (<option>Debug::"
-"NoLocking</option>) perciò lo stato del sistema può cambiare durante "
-"l'esecuzione di <command>apt-get</command>. Le simulazioni possono anche "
-"essere eseguite da utenti non privilegiati che potrebbero non aver accesso "
-"in lettura a tutta la configurazione di apt, rendendo perciò distorta la "
-"simulazione. Per gli utenti diversi da root viene mostrata in modo "
-"predefinito una notifica che avverte di questo (<option>APT::Get::Show-User-"
-"Simulation-Note</option>). Voce di configurazione: <literal>APT::Get::"
-"Simulate</literal>."
+"effettivamente il sistema. Il lock viene disabilitato "
+"(<option>Debug::NoLocking</option>) perciò lo stato del sistema può cambiare "
+"durante l'esecuzione di <command>apt-get</command>. Le simulazioni possono "
+"anche essere eseguite da utenti non privilegiati che potrebbero non aver "
+"accesso in lettura a tutta la configurazione di apt, rendendo perciò "
+"distorta la simulazione. Per gli utenti diversi da root viene mostrata in "
+"modo predefinito una notifica che avverte di questo (<option>APT::Get::Show-"
+"User-Simulation-Note</option>). Voce di configurazione: "
+"<literal>APT::Get::Simulate</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1718,8 +1827,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
 "Rispondi automaticamente «no» a tutti i prompt. Voce di configurazione: "
 "<literal>APT::Get::Assume-No</literal>."
@@ -1742,15 +1851,44 @@ msgstr ""
 "Mostra la versione completa dei pacchetti aggiornati e installati. Voce di "
 "configurazione: <literal>APT::Get::Show-Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Re-install packages that are already installed and at the newest "
+#| "version.  Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Reinstalla i pacchetti che sono già installati alla nuova versione. Voce di "
+"configurazione: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Select the source override file to use with the <literal>sources</"
+#| "literal> command.  Configuration Item: "
+#| "<literal>APT::FTPArchive::SourceOverride</literal>."
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"Seleziona il file override sorgente da usare con il comando "
+"<literal>sources</literal>. Voce di configurazione "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Questa opzione controlla l'architettura per la quale <command>apt-get source "
 "--compile</command> compila i pacchetti e come le dipendenze di compilazione "
@@ -1927,8 +2065,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "Invece di scaricare i file per l'installazione, stampa i loro URI. Ogni URI "
 "ha il percorso, il nome del file di destinazione, la dimensione e l'hash MD5 "
@@ -1968,8 +2106,8 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Questa opzione è attivata in modo predefinito; usare <literal>--no-list-"
 "cleanup</literal> per disabilitarla. Quando è attivata <command>apt-get</"
@@ -1978,6 +2116,16 @@ msgstr ""
 "ragione per disabilitarla è se si cambia di frequente la propria lista di "
 "fonti. Voce di configurazione: <literal>APT::Get::List-Cleanup</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -2033,8 +2181,8 @@ msgid ""
 "prompting.  Configuration Item: <literal>APT::Get::Remove</literal>."
 msgstr ""
 "Se un qualsiasi pacchetto dovrebbe essere rimosso, apt-get immediatamente "
-"annulla l'operazione senza chiedere. Voce di configurazione: <literal>APT::"
-"Get::Remove</literal>."
+"annulla l'operazione senza chiedere. Voce di configurazione: "
+"<literal>APT::Get::Remove</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2077,8 +2225,9 @@ msgid ""
 "literal>, and <literal>APT::Get::Tar-Only</literal>."
 msgstr ""
 "Scarica solo il file diff, dsc o tar di un archivio sorgente. Voce di "
-"configurazione: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
-"Dsc-Only</literal> e <literal>APT::Get::Tar-Only</literal>."
+"configurazione: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal> e <literal>APT::Get::Tar-Only</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2123,8 +2272,8 @@ msgstr ""
 #| "Forbid the update command to acquire unverifiable data from configured "
 #| "sources. APT will fail at the update command for repositories without "
 #| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
+#| "the concept and the implications.  Configuration Item: "
+#| "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2135,8 +2284,8 @@ msgstr ""
 "Impedisce al comando update di acquisire dati non verificabili dalle fonti "
 "configurate. Il comando update di Apt fallirà per i repository senza firme "
 "crittografiche valide. Vedere anche &apt-secure; per i dettagli sul concetto "
-"e sulle implicazioni. Voce di configurazione: <literal>Acquire::"
-"AllowInsecureRepositories</literal>."
+"e sulle implicazioni. Voce di configurazione: "
+"<literal>Acquire::AllowInsecureRepositories</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2197,8 +2346,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "File"
@@ -2206,13 +2376,13 @@ msgstr "File"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, la guida dell'utente di APT in &guidesdir;, &apt-preferences;, "
-"l'APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, la guida dell'utente di APT in "
+"&guidesdir;, &apt-preferences;, l'APT Howto."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2586,23 +2756,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> accetta un elenco di pacchetti dalla riga di "
 "comando e genera un output adatto all'uso da parte di dotty del pacchetto "
-"<ulink url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</"
-"ulink>. Il risultato sarà un insieme di nodi e linee che rappresentano le "
-"relazioni fra i pacchetti. In modo predefinito dai pacchetti dati si "
-"risalirà a tutti i pacchetti delle dipendenze; ciò può produrre un grafo "
-"molto grande. Per limitare il risultato ai soli pacchetti elencati sulla "
-"riga di comando, impostare l'opzione <literal>APT::Cache::GivenOnly</"
-"literal>."
+"<ulink url=\"https://graphviz.org/\">GraphViz</ulink>. Il risultato sarà un "
+"insieme di nodi e linee che rappresentano le relazioni fra i pacchetti. In "
+"modo predefinito dai pacchetti dati si risalirà a tutti i pacchetti delle "
+"dipendenze; ciò può produrre un grafo molto grande. Per limitare il "
+"risultato ai soli pacchetti elencati sulla riga di comando, impostare "
+"l'opzione <literal>APT::Cache::GivenOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2629,12 +2797,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Stessa cosa di <literal>dotty</literal>, ma per xvcg dello <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">strumento VCG</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">strumento VCG</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2662,8 +2830,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "Il comando <literal>madison</literal> di <literal>apt-cache</literal> cerca "
 "di imitare il formato di uscita e un sottoinsieme delle funzionalità di "
@@ -2677,8 +2845,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "Seleziona il file in cui memorizzare la cache dei pacchetti. Questa è la "
 "cache primaria usata da tutte le operazioni. Voce di configurazione: "
@@ -2723,17 +2891,17 @@ msgid ""
 msgstr ""
 "Stampa solo le dipendenze importanti; da usarsi con <literal>unmet</literal> "
 "e <literal>depends</literal>. Fa sì che vengano stampate solo le relazioni "
-"Depends e Pre-Depends. Voce di configurazione: <literal>APT::Cache::"
-"Important</literal>."
+"Depends e Pre-Depends. Voce di configurazione: "
+"<literal>APT::Cache::Important</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "In modo predefinito <command>depends</command> e <command>rdepends</command> "
 "stampano tutte le dipendenze. Ciò può essere modificato con queste opzioni "
@@ -2756,8 +2924,8 @@ msgstr ""
 "opzione mostrano anche le dipendenze aggiunte implicitamente sulla base dei "
 "dati incontrati. Ad esempio un <literal>Conflicts: pippo</literal> esprime "
 "implicitamente che questo pacchetto va in conflitto anche con il pacchetto "
-"pippo da qualsiasi altra architettura. Voce di configurazione: <literal>APT::"
-"Cache::ShowImplicit</literal>."
+"pippo da qualsiasi altra architettura. Voce di configurazione: "
+"<literal>APT::Cache::ShowImplicit</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2783,8 +2951,8 @@ msgstr ""
 "versions</option>. Se si specifica <option>--no-all-versions</option>, verrà "
 "visualizzata solo la versione candidata (quella che sarebbe scelta per "
 "l'installazione). Questa opzione è applicabile solo al comando "
-"<literal>show</literal>. Voce di configurazione: <literal>APT::Cache::"
-"AllVersions</literal>."
+"<literal>show</literal>. Voce di configurazione: "
+"<literal>APT::Cache::AllVersions</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2812,8 +2980,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "Fai sì che <literal>pkgnames</literal> stampi tutti i nomi, inclusi i "
 "pacchetti virtuali e le dipendenze mancanti. Voce di configurazione: "
@@ -2838,8 +3006,8 @@ msgid ""
 "<literal>APT::Cache::Installed</literal>."
 msgstr ""
 "Limita l'output di <literal>depends</literal> e <literal>rdepends</literal> "
-"ai pacchetti attualmente installati. Voce di configurazione: <literal>APT::"
-"Cache::Installed</literal>."
+"ai pacchetti attualmente installati. Voce di configurazione: "
+"<literal>APT::Cache::Installed</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2883,8 +3051,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2895,312 +3063,6 @@ msgstr ""
 "<command>apt-cache</command> restituisce zero in caso di funzionamento "
 "normale e il valore decimale 100 in caso di errore."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "strumento APT per la gestione delle chiavi"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> viene usato per gestire l'elenco delle chiavi "
-"usate da apt per autenticare i pacchetti. I pacchetti che sono stati "
-"autenticati usando queste chiavi verranno considerati fidati."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "File di portachiavi gestiti"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"apt-key gestisce nei file con l'estensione «<literal>gpg</literal>» "
-"solamente il formato binario OpenPGP (noto anche come «GPG key public "
-"ring»), non il formato di database keybox introdotto come file di "
-"portachiavi predefinito nelle versioni più nuove di &gpg;. I file di "
-"portachiavi binari pensati per essere usati con qualsiasi versione di apt "
-"dovrebbero perciò sempre essere creati con <command>gpg --export</command>."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"In alternativa, se tutti i sistemi che devono usare il portachiavi creato "
-"hanno una installata versione di apt almeno >= 1.4, si può utilizzare invece "
-"il formato armored ASCII con l'estensione «<literal>asc</literal>» che può "
-"essere creato con <command>gpg --armor --export</command>."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Comandi"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(deprecato)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Aggiunge una nuova chiave all'elenco delle chiavi fidate. La chiave viene "
-"letta dal file specificato con il parametro &synopsis-param-filename; o, se "
-"il nome file è <literal>-</literal>, dallo standard input."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"È di importanza critica verificare che le chiavi aggiunte manualmente usando "
-"<command>apt-key</command> appartengano al proprietario del repository per "
-"cui dichiarano di essere, altrimenti l'infrastruttura &apt-secure; viene "
-"completamente minata alla base."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>Nota bene</emphasis>: invece di usare questo comando un "
-"portachiavi dovrebbe essere messo direttamente nella directory <filename>/"
-"etc/apt/trusted.gpg.d/</filename> con un nome descrittivo e con "
-"«<literal>gpg</literal>» o «<literal>asc</literal>» come estensione di file."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "(deprecated)"
-msgid "(mostly deprecated)"
-msgstr "(deprecato)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Rimuove una chiave dall'elenco delle chiavi fidate."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr ""
-"Visualizza sullo standard output l'&synopsis-param-keyid; della chiave."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Visualizza sullo standard output tutte le chiavi fidate."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "Elenca le chiavi fidate con le impronte digitali."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"Passa opzioni avanzate a gpg. Con <command>adv --recv-key</command> si può, "
-"ad esempio, scaricare una chiave da un server di chiavi direttamente "
-"nell'insieme delle chiavi fidate. Notare che <emphasis>non</emphasis> viene "
-"effettuato alcun controllo, perciò è facile minare completamente "
-"l'infrastruttura &apt-secure; se viene usato senza cautela."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"Aggiorna il portachiavi locale con il portachiavi dell'archivio e rimuove "
-"dal portachiavi locale le chiavi di archivio che non sono più valide. Il "
-"portachiavi degli archivi è fornito nel pacchetto <literal>archive-keyring</"
-"literal> delle diverse distribuzioni, ad esempio il pacchetto &keyring-"
-"package; in &keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"Notare che una distribuzione non ha più bisogno di usare questo comando, e "
-"di fatto non dovrebbe farlo, e invece fornisce file portachiavi direttamente "
-"nella directory <filename>/etc/apt/trusted.gpg.d/</filename>, dato che "
-"questo evita una dipendenza da <package>gnupg</package> ed è più facile, sia "
-"per i manutentori sia per gli utenti, gestire chiavi semplicemente "
-"aggiungendo e rimuovendo file."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Effettua un aggiornamento funzionando in modo simile al comando "
-"<command>update</command> descritto prima, ma ottiene invece il portachiavi "
-"degli archivi da un URI e lo convalida usando una chiave master. Ciò "
-"richiede che &wget; sia installato, e una versione di APT configurata per "
-"avere un server da cui scaricare e un portachiavi master per la convalida. "
-"APT in Debian non supporta questo comando, ma fa affidamento sul comando "
-"<command>update</command>; APT in Ubuntu invece lo fa."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Opzioni"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Notare che le opzioni devono essere definite prima dei comandi descritti "
-"nella sezione precedente."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Con questa opzione è possibile specificare un particolare file portachiavi "
-"su cui deve operare il comando. Il comportamento predefinito esegue i "
-"comandi sul file <filename>trusted.gpg</filename>, così come su tutte le "
-"parti nella directory <filename>trusted.gpg.d</filename>; <filename>trusted."
-"gpg</filename> è però il portachiavi primario il che significa, ad esempio, "
-"che le nuove chiavi sono aggiunte ad esso."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Dir Section"
-msgid "Deprecation"
-msgstr "Sezione Dir"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3212,8 +3074,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "<command>apt-mark</command> può essere usato come fronted unificato per "
@@ -3316,6 +3178,12 @@ msgstr ""
 "<literal>showauto</literal>, tranne per il fatto che stampa invece un elenco "
 "dei pacchetti installati manualmente"
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Opzioni"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3389,6 +3257,13 @@ msgstr ""
 "option> e <option>showpurge</option>. Ulteriori informazioni su queste "
 "cosiddette selezioni di dpkg possono essere trovate in &dpkg;."
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3444,6 +3319,66 @@ msgstr ""
 "autenticazione, perciò questa pagina di manuale usa <literal>APT</literal> "
 "per fare riferimento a tutti loro solo per ragioni di semplicità."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configurazione utente"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Note that a default installation already contains all keys to securely "
+#| "acquire packages from the default repositories, so fiddling with "
+#| "<command>apt-key</command> is only needed if third-party repositories are "
+#| "added."
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"Notare che un'installazione predefinita contiene già tutte le chiavi per "
+"acquisire in modo sicuro i pacchetti dai repository predefiniti, perciò le "
+"modifiche fatte a mano con <command>apt-key</command> sono necessarie solo "
+"se vengono aggiunti repository di terze parti."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3677,55 +3612,6 @@ msgid ""
 "shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Configurazione utente"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"<command>apt-key</command> è il programma che gestisce l'elenco delle chiavi "
-"usate da APT per fidarsi dei repository. Può essere usato per aggiungere o "
-"rimuovere chiavi, oltre che per elencare le chiavi fidate. È possibile "
-"limitare quali chiavi possono firmare determinati archivi usando "
-"<option>Signed-By</option> in &sources-list;."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"Notare che un'installazione predefinita contiene già tutte le chiavi per "
-"acquisire in modo sicuro i pacchetti dai repository predefiniti, perciò le "
-"modifiche fatte a mano con <command>apt-key</command> sono necessarie solo "
-"se vengono aggiunti repository di terze parti."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-"Per aggiungere una nuova chiave, è necessario prima scaricarla (ci si "
-"dovrebbe assicurare di usare un canale di comunicazione fidato quando la si "
-"recupera), aggiungerla con <command>apt-key</command> e poi eseguire "
-"<command>apt-get update</command>, in modo che apt possa scaricare e "
-"verificare i file <filename>InRelease</filename> o <filename>Release.gpg</"
-"filename> dagli archivi che sono configurati."
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3757,8 +3643,8 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Firmarlo</emphasis>. Lo si può fare eseguendo <command>gpg --"
 "clearsign -o InRelease Release</command> e <command>gpg -abs -o Release.gpg "
@@ -3812,9 +3698,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3823,15 +3713,15 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Per maggiori informazioni sui concetti alla base di questo sistema, si può "
 "leggere il capitolo <ulink url=\"https://www.debian.org/doc/manuals/securing-"
-"debian-howto/ch7\">Debian Security Infrastructure</ulink> del manuale "
+"debian-manual/ch07\">Debian Security Infrastructure</ulink> del manuale "
 "Securing Debian (disponibile anche nel pacchetto harden-doc) e il <ulink "
 "url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
 "Distribution HOWTO</ulink> di V. Alex Brennen."
@@ -3919,8 +3809,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Non cercare di rilevare automaticamente il percorso del CD-ROM. Solitamente "
 "usato insieme all'opzione <option>--cdrom</option>. Voce di configurazione: "
@@ -3935,8 +3825,8 @@ msgid ""
 msgstr ""
 "Punto di mount; specifica la posizione in cui montare il CD-ROM. Questo "
 "punto di mount deve essere elencato nel file <filename>/etc/fstab</filename> "
-"e configurato correttamente. Voce di configurazione: <literal>Acquire::"
-"cdrom::mount</literal>."
+"e configurato correttamente. Voce di configurazione: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3947,15 +3837,15 @@ msgid ""
 msgstr ""
 "Rinomina un disco; cambia l'etichetta di un disco o soppianta l'etichetta "
 "originale del disco. Questa opzione farà sì che <command>apt-cdrom</command> "
-"chieda una nuova etichetta. Voce di configurazione: <literal>APT::CDROM::"
-"Rename</literal>."
+"chieda una nuova etichetta. Voce di configurazione: "
+"<literal>APT::CDROM::Rename</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "Non montare; impedisce ad <command>apt-cdrom</command> di montare e smontare "
 "il punto di mount. Voce di configurazione: <literal>APT::CDROM::NoMount</"
@@ -4060,8 +3950,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "In questo modo la variabile d'ambiente $OPZIONI della shell verrà impostata "
 "al valore di MiaApp::opzioni con un valore predefinito di <option>-f</"
@@ -4113,8 +4003,8 @@ msgstr ""
 "nel valore verranno codificati per assicurare che possano essere usati senza "
 "problemi in una stringa tra virgolette, come definito nella RFC822. In "
 "aggiunta &percnt;n verrà sostituito da un ritorno a capo e &percnt;N da una "
-"tabulazione. Un carattere &percnt; può essere prodotto usando &percnt;"
-"&percnt;. "
+"tabulazione. Un carattere &percnt; può essere prodotto usando "
+"&percnt;&percnt;. "
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
@@ -4190,9 +4080,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "tutti i file in <literal>Dir::Etc::Parts</literal>, in ordine alfanumerico "
 "crescente, se il loro nome file non ha estensione o ha «<literal>conf</"
@@ -4281,12 +4171,12 @@ msgstr ""
 "quello usato dagli strumenti ISC come bind e dhcp. Le righe che iniziano con "
 "<literal>//</literal> vengono trattate come commenti (ignorate), così come "
 "tutto il testo racchiuso tra <literal>/*</literal> e <literal>*/</literal>, "
-"proprio come i commenti C/C++. Ogni riga ha la forma <literal>APT::Get::"
-"Assume-Yes \"true\";</literal>. Le virgolette e il punto e virgola finale "
-"sono obbligatori. I valori non possono includere barre inverse (\\) o "
-"ulteriori virgolette. I nomi delle opzioni sono costituiti da caratteri "
-"alfanumerici e dai caratteri «/-:._+». Un nuovo ambito può essere aperto con "
-"parentesi graffe come in:"
+"proprio come i commenti C/C++. Ogni riga ha la forma "
+"<literal>APT::Get::Assume-Yes \"true\";</literal>. Le virgolette e il punto "
+"e virgola finale sono obbligatori. I valori non possono includere barre "
+"inverse (\\) o ulteriori virgolette. I nomi delle opzioni sono costituiti da "
+"caratteri alfanumerici e dai caratteri «/-:._+». Un nuovo ambito può essere "
+"aperto con parentesi graffe come in:"
 
 #. type: Content of: <refentry><refsect1><informalexample><programlisting>
 #: apt.conf.5.xml
@@ -4407,12 +4297,12 @@ msgid ""
 msgstr ""
 "Tutti gli strumenti APT accettano un'opzione -o che permette di specificare "
 "una direttiva di configurazione arbitraria nella riga di comando. La "
-"sintassi è un nome completo di opzione (per esempio <literal>APT::Get::"
-"Assume-Yes</literal>) seguito da un segno di uguaglianza e quindi il nuovo "
-"valore dell'opzione. Per aggiungere un nuovo elemento ad un elenco, "
-"aggiungere <literal>::</literal> alla fine del nome dell'elenco. (Come si "
-"può immaginare, la sintassi per gli ambiti non può essere usata nella riga "
-"di comando.)"
+"sintassi è un nome completo di opzione (per esempio "
+"<literal>APT::Get::Assume-Yes</literal>) seguito da un segno di uguaglianza "
+"e quindi il nuovo valore dell'opzione. Per aggiungere un nuovo elemento ad "
+"un elenco, aggiungere <literal>::</literal> alla fine del nome dell'elenco. "
+"(Come si può immaginare, la sintassi per gli ambiti non può essere usata "
+"nella riga di comando.)"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4491,6 +4381,55 @@ msgstr ""
 "literal>), e le altre architetture vengono aggiunte all'elenco predefinito "
 "quando sono registrate con <command>dpkg --add-architecture</command>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4563,6 +4502,14 @@ msgstr ""
 "stable-codename;», «&debian-testing-codename;», «4.0», «5.0*». Vedere anche "
 "&apt-preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4748,11 +4695,43 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The CDROM subsection controls the &apt-cdrom; tool; please see its "
-"documentation for more information about the options here."
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La sottosezione CDROM controlla lo strumento &apt-cdrom;; vedere la sua "
+"documentazione per maggiori informazioni su queste opzioni."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
 msgstr ""
-"La sottosezione CDROM controlla lo strumento &apt-cdrom;; vedere la sua "
-"documentazione per maggiori informazioni su queste opzioni."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -4988,96 +4967,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> imposta il proxy predefinito da usare per gli "
-"URI FTP. È nella forma standard <literal>ftp://[[utente][:password]@]host[:"
-"porta]/</literal>. Si possono anche specificare proxy per ciascun host "
-"usando la forma <literal>ftp::Proxy::&lt;host&gt;</literal> con la speciale "
-"parola chiave <literal>DIRECT</literal> che indica di non usare proxy. Se "
-"nessuna delle opzioni precedenti è impostata, viene usata la variabile "
-"d'ambiente <envar>ftp_proxy</envar>. Per usare un proxy FTP è necessario "
-"impostare lo script <literal>ftp::ProxyLogin</literal> nel file di "
-"configurazione. Questa voce specifica i comandi da inviare per dire al "
-"server proxy a cosa connettersi. Vedere &configureindex; per un esempio di "
-"come utilizzarla. Le variabili di sostituzione che rappresentano i "
-"corrispondenti componenti dell'URI sono <literal>$(PROXY_USER)</literal>, "
-"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, "
-"<literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> e "
-"<literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"L'opzione <literal>timeout</literal> imposta il tempo di timeout usato dal "
-"metodo; questo valore si applica sia al timeout per la connessione sia a "
-"quello per i dati."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"Sono fornite diverse impostazioni per controllare la modalità passiva. "
-"Generalmente è sicuro lasciare attiva la modalità passiva; funziona in quasi "
-"tutti gli ambienti. Tuttavia in alcune situazioni è necessario disabilitare "
-"la modalità passiva e usare invece la modalità per porta FTP. Ciò può essere "
-"fatto globalmente o, per connessioni che passano attraverso un proxy, per "
-"uno specifico host (vedere il file di configurazione d'esempio)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"È possibile usare FTP attraverso un proxy via HTTP impostando la variabile "
-"d'ambiente <envar>ftp_proxy</envar> ad un URL HTTP; per la sintassi vedere "
-"la spiegazione del metodo http più sopra. Non è possibile impostare questa "
-"opzione nel file di configurazione e l'uso di FTP via HTTP non è raccomando "
-"a causa della sua bassa efficienza."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"L'impostazione <literal>ForceExtended</literal> controlla l'uso dei comandi "
-"<literal>EPSV</literal> e <literal>EPRT</literal> della RFC 2428. Il valore "
-"predefinito è falso, il che significa che questi comandi sono usati "
-"solamente se la connessione di controllo è IPv6. Impostare questo valore a "
-"vero forza il loro uso anche su connessioni IPv4. Notare che la maggior "
-"parte dei server FTP non supporta la RFC 2428."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5138,9 +5027,9 @@ msgstr ""
 "possono decomprimere e ricomprimere molti formati comuni come <command>xz</"
 "command> e <command>gzip</command>; con questa impostazione si possono "
 "ottenere informazioni sui formati supportati, si può modificarli oltre ad "
-"aggiungere il supporto per altri formati (vedere anche <option>APT::"
-"Compressor</option>). La sintassi è: <placeholder type=\"synopsis\" id=\"0\"/"
-">"
+"aggiungere il supporto per altri formati (vedere anche "
+"<option>APT::Compressor</option>). La sintassi è: <placeholder "
+"type=\"synopsis\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
 #: apt.conf.5.xml
@@ -5279,9 +5168,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5413,21 +5302,22 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
 msgstr ""
 "L'acquisizione di changelog è possibile solamente se è noto un URI da cui "
 "ottenerli. Il file Release indica questa informazione preferibilmente in un "
@@ -5438,22 +5328,96 @@ msgstr ""
 "<replaceable>ORIGINE</replaceable></literal> e, se è così, viene preso "
 "questo valore. Il valore nel file Release può essere scavalcato con "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>ETICHETTA</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGINE</replaceable></literal>. Il valore deve essere "
-"un URI normale verso un file di testo, tranne per il fatto che dati "
-"specifici di pacchetto sono sostituito con il segnaposto "
-"<literal>@CHANGEPATH@</literal>. Il valore per esso è: 1. se il pacchetto è "
-"da una componente (es. <literal>main</literal>) è la prima parte, altrimenti "
-"viene omesso; 2. la prima lettera del nome del pacchetto sorgente, tranne "
-"per i pacchetti sorgente con nome che inizia con «<literal>lib</literal>», "
-"nel qual caso saranno le prime quattro lettere; 3. il nome completo del "
-"pacchetto sorgente; 4. il nome completo di nuovo e 5. la versione sorgente. "
-"La prima (se presente), la seconda, la terza e la quarta parte sono separate "
-"da una sbarra («<literal>/</literal>») e tra la quarta e la quinta parte c'è "
-"un trattino basso («<literal>_</literal>»). Per questa opzione è disponibile "
-"il valore speciale «<literal>no</literal>» che indica che questa fonte non "
-"può essere usata per acquisire file changelog. In questo caso viene provata "
-"un'altra fonte, se disponibile."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. Il valore deve essere un URI normale verso un file "
+"di testo, tranne per il fatto che dati specifici di pacchetto sono "
+"sostituito con il segnaposto <literal>@CHANGEPATH@</literal>. Il valore per "
+"esso è: 1. se il pacchetto è da una componente (es. <literal>main</literal>) "
+"è la prima parte, altrimenti viene omesso; 2. la prima lettera del nome del "
+"pacchetto sorgente, tranne per i pacchetti sorgente con nome che inizia con "
+"«<literal>lib</literal>», nel qual caso saranno le prime quattro lettere; 3. "
+"il nome completo del pacchetto sorgente; 4. il nome completo di nuovo e 5. "
+"la versione sorgente. La prima (se presente), la seconda, la terza e la "
+"quarta parte sono separate da una sbarra («<literal>/</literal>») e tra la "
+"quarta e la quinta parte c'è un trattino basso («<literal>_</literal>»). Per "
+"questa opzione è disponibile il valore speciale «<literal>no</literal>» che "
+"indica che questa fonte non può essere usata per acquisire file changelog. "
+"In questo caso viene provata un'altra fonte, se disponibile."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Acquiring changelogs can only be done if an URI is known from where to "
+#| "get them.  Preferable the Release file indicates this in a 'Changelogs' "
+#| "field. If this isn't available the Label/Origin field of the Release file "
+#| "is used to check if a <literal>Acquire::Changelogs::URI::Label::"
+#| "<replaceable>LABEL</replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal> option exists and if so this value is taken. The "
+#| "value in the Release file can be overridden with "
+#| "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+#| "replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal>.  The value should be a normal URI to a text file, "
+#| "except that package specific data is replaced with the placeholder "
+#| "<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package "
+#| "is from a component (e.g. <literal>main</literal>)  this is the first "
+#| "part otherwise it is omitted, 2. the first letter of source package name, "
+#| "except if the source package name starts with '<literal>lib</literal>' in "
+#| "which case it will be the first four letters. 3. The complete source "
+#| "package name. 4. the complete name again and 5. the source version.  The "
+#| "first (if present), second, third and fourth part are separated by a "
+#| "slash ('<literal>/</literal>')  and between the fourth and fifth part is "
+#| "an underscore ('<literal>_</literal>').  The special value '<literal>no</"
+#| "literal>' is available for this option indicating that this source can't "
+#| "be used to acquire changelog files from. Another source will be tried if "
+#| "available in this case."
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
+msgstr ""
+"L'acquisizione di changelog è possibile solamente se è noto un URI da cui "
+"ottenerli. Il file Release indica questa informazione preferibilmente in un "
+"campo «Changelogs». Se questo non è disponibile, viene usato il campo Label/"
+"Origin del file Release per controllare se esiste un'opzione "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>ETICHETTA</"
+"replaceable></literal> o <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGINE</replaceable></literal> e, se è così, viene preso "
+"questo valore. Il valore nel file Release può essere scavalcato con "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>ETICHETTA</"
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. Il valore deve essere un URI normale verso un file "
+"di testo, tranne per il fatto che dati specifici di pacchetto sono "
+"sostituito con il segnaposto <literal>@CHANGEPATH@</literal>. Il valore per "
+"esso è: 1. se il pacchetto è da una componente (es. <literal>main</literal>) "
+"è la prima parte, altrimenti viene omesso; 2. la prima lettera del nome del "
+"pacchetto sorgente, tranne per i pacchetti sorgente con nome che inizia con "
+"«<literal>lib</literal>», nel qual caso saranno le prime quattro lettere; 3. "
+"il nome completo del pacchetto sorgente; 4. il nome completo di nuovo e 5. "
+"la versione sorgente. La prima (se presente), la seconda, la terza e la "
+"quarta parte sono separate da una sbarra («<literal>/</literal>») e tra la "
+"quarta e la quinta parte c'è un trattino basso («<literal>_</literal>»). Per "
+"questa opzione è disponibile il valore speciale «<literal>no</literal>» che "
+"indica che questa fonte non può essere usata per acquisire file changelog. "
+"In questo caso viene provata un'altra fonte, se disponibile."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5465,9 +5429,9 @@ msgstr "Configurazione specifica per binari"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "Specialmente con l'introduzione del binario <command>apt</command> può "
 "essere utile impostare determinate opzioni solamente per uno specifico "
@@ -5543,13 +5507,14 @@ msgstr ""
 "<literal>Dir::Cache</literal> contiene le posizioni relative alle "
 "informazioni della cache locale, come le due cache dei pacchetti "
 "<literal>srcpkgcache</literal> e <literal>pkgcache</literal>, così come la "
-"posizione in cui mettere gli archivi scaricati: <literal>Dir::Cache::"
-"archives</literal>. La generazione delle cache può essere disattivata "
-"impostando <literal>pkgcache</literal> o <literal>srcpkgcache</literal> a "
-"<literal>\"\"</literal>. Questo rallenta l'avvio ma fa risparmiare spazio su "
-"disco. È probabilmente preferibile disattivare pkgcache piuttosto che "
-"srcpkgcache. Come per <literal>Dir::State</literal>, la directory "
-"predefinita è contenuta in <literal>Dir::Cache</literal>"
+"posizione in cui mettere gli archivi scaricati: "
+"<literal>Dir::Cache::archives</literal>. La generazione delle cache può "
+"essere disattivata impostando <literal>pkgcache</literal> o "
+"<literal>srcpkgcache</literal> a <literal>\"\"</literal>. Questo rallenta "
+"l'avvio ma fa risparmiare spazio su disco. È probabilmente preferibile "
+"disattivare pkgcache piuttosto che srcpkgcache. Come per "
+"<literal>Dir::State</literal>, la directory predefinita è contenuta in "
+"<literal>Dir::Cache</literal>"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5580,19 +5545,19 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
-"<literal>Dir::Bin</literal> punta ai programmi binari; <literal>Dir::Bin::"
-"Methods</literal> specifica la posizione dei gestori dei metodi e "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> e <literal>apt-cache</literal> "
-"specificano la posizione dei rispettivi programmi."
+"<literal>Dir::Bin</literal> punta ai programmi binari; "
+"<literal>Dir::Bin::Methods</literal> specifica la posizione dei gestori dei "
+"metodi e <literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</"
+"literal>, <literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-"
+"source</literal> <literal>dpkg-buildpackage</literal> e <literal>apt-cache</"
+"literal> specificano la posizione dei rispettivi programmi."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5610,11 +5575,11 @@ msgstr ""
 "speciale. Se impostata, tutti i percorsi saranno relativi a "
 "<literal>RootDir</literal>, <emphasis>anche i percorsi che sono specificati "
 "in modo assoluto</emphasis>. Perciò, ad esempio, se <literal>RootDir</"
-"literal> è impostata a <filename>/tmp/staging</filename> e <literal>Dir::"
-"State::status</literal> è impostata a <filename>/var/lib/dpkg/status</"
-"filename>, allora il file di stato verrà cercato in <filename>/tmp/staging/"
-"var/lib/dpkg/status</filename>. Se si desidera un prefisso solo per i "
-"percorsi relativi, impostare invece <literal>Dir</literal>."
+"literal> è impostata a <filename>/tmp/staging</filename> e "
+"<literal>Dir::State::status</literal> è impostata a <filename>/var/lib/dpkg/"
+"status</filename>, allora il file di stato verrà cercato in <filename>/tmp/"
+"staging/var/lib/dpkg/status</filename>. Se si desidera un prefisso solo per "
+"i percorsi relativi, impostare invece <literal>Dir</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5786,9 +5751,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "Ogni riga con una direttiva di configurazione ha la forma "
 "<literal>chiave=valore</literal>. I caratteri speciali (segno di uguale, a "
@@ -5867,12 +5832,12 @@ msgid ""
 "contains the number of the used file descriptor as a confirmation."
 msgstr ""
 "Il descrittore di file da usare per inviare le informazioni può essere "
-"richiesto con <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::"
-"InfoFD</literal> che è in modo predefinito <literal>0</literal> per lo "
-"standard input ed è disponibile a partire dalla versione 0.9.11. Il supporto "
-"per l'opzione può essere controllato guardando la variabile d'ambiente "
-"<envar>APT_HOOK_INFO_FD</envar> che contiene il numero del descrittore di "
-"file usato per conferma."
+"richiesto con <literal>DPkg::Tools::options::<replaceable>cmd</"
+"replaceable>::InfoFD</literal> che è in modo predefinito <literal>0</"
+"literal> per lo standard input ed è disponibile a partire dalla versione "
+"0.9.11. Il supporto per l'opzione può essere controllato guardando la "
+"variabile d'ambiente <envar>APT_HOOK_INFO_FD</envar> che contiene il numero "
+"del descrittore di file usato per conferma."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5922,11 +5887,11 @@ msgid ""
 "<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
 "this script for the brief documentation of these options."
 msgstr ""
-"I gruppi di opzioni <literal>APT::Periodic</literal> e <literal>APT::"
-"Archives</literal> configurano il comportamento degli aggiornamenti "
-"periodici di apt, ciò viene fatto attraverso lo script <literal>/etc/cron."
-"daily/apt</literal>. Per una breve documentazione di queste opzioni, vedere "
-"all'inizio dello script."
+"I gruppi di opzioni <literal>APT::Periodic</literal> e "
+"<literal>APT::Archives</literal> configurano il comportamento degli "
+"aggiornamenti periodici di apt, ciò viene fatto attraverso lo script "
+"<literal>/etc/cron.daily/apt</literal>. Per una breve documentazione di "
+"queste opzioni, vedere all'inizio dello script."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -6006,12 +5971,6 @@ msgid ""
 msgstr ""
 "Stampa informazioni relative all'accesso a fonti <literal>cdrom://</literal>."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"Stampa informazioni relative allo scaricamento dei pacchetti usando FTP."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -6042,13 +6001,6 @@ msgstr ""
 "Produce in output informazioni sul processo di accesso a raccolte di "
 "pacchetti memorizzati su CD-ROM."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"Descrive il processo di risoluzione delle dipendenze di compilazione in &apt-"
-"get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -6138,15 +6090,15 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "Genera messaggi di debug che descrivono quali pacchetti vengono "
 "automaticamente installati per risolvere delle dipendenze. Corrisponde al "
 "passo iniziale di installazione automatica effettuato, ad esempio, in "
 "<literal>apt-get install</literal> e non all'intero risolutore di dipendenze "
-"di <literal>apt</literal>; per quello vedere <literal>Debug::"
-"pkgProblemResolver</literal>."
+"di <literal>apt</literal>; per quello vedere "
+"<literal>Debug::pkgProblemResolver</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6156,14 +6108,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "Genera messaggi di debug che descrivono quali pacchetto vengono "
 "contrassegnati per essere mantenuti/installati/rimossi mentre il "
@@ -6244,8 +6196,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 "Stampa informazioni sui fornitori lette da <filename>/etc/apt/vendors.list</"
 "filename>."
@@ -6253,8 +6205,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 "Visualizza i comandi esterni che sono richiamati dagli hook di apt. Ciò "
@@ -6715,6 +6667,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -7036,9 +7009,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7211,9 +7184,9 @@ msgstr "Allora:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "Verrà installata la più recente versione disponibile del pacchetto "
 "<literal>perl</literal>, fintanto che il suo numero di versione inizia con "
@@ -7491,23 +7464,23 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Tutti i file <filename>Packages</filename> e <filename>Release</filename> "
 "recuperati dalle posizioni elencate nel file &sources-list; sono memorizzati "
 "nella directory <filename>/var/lib/apt/lists</filename> o nel file indicato "
-"dalla variabile <literal>Dir::State::Lists</literal> nel file <filename>apt."
-"conf</filename>. Per esempio, il file <filename>debian.lcs.mit."
-"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> contiene il "
-"file <filename>Release</filename> recuperato dal sito <literal>debian.lcs."
-"mit.edu</literal> per i file dell'architettura <literal>binary-i386</"
-"literal> nella componente <literal>contrib</literal> della distribuzione "
-"<literal>unstable</literal>."
+"dalla variabile <literal>Dir::State::Lists</literal> nel file "
+"<filename>apt.conf</filename>. Per esempio, il file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contiene il file <filename>Release</filename> "
+"recuperato dal sito <literal>debian.lcs.mit.edu</literal> per i file "
+"dell'architettura <literal>binary-i386</literal> nella componente "
+"<literal>contrib</literal> della distribuzione <literal>unstable</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -7871,6 +7844,16 @@ msgstr ""
 "corrisponda ad un modello nell'elenco di configurazione <literal>Dir::Ignore-"
 "Files-Silently</literal>, nel qual caso viene ignorato in modo silenzioso."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7928,6 +7911,12 @@ msgstr ""
 "incontrare opzioni, dato che erano non comuni prima dell'introduzione del "
 "supporto multiarchitettura."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -8190,10 +8179,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
-msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
+msgid ""
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "Come esempio, le fonti per la propria distribuzione potrebbero essere simili "
 "a queste in formato in stile a singola riga: <placeholder "
@@ -8263,11 +8259,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) è un'opzione multivalore "
 "che definisce quali rilasci obiettivo di scaricamento apt cercherà di "
@@ -8439,18 +8436,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>) è un percorso "
 "assoluto ad un file di portachiavi (deve essere accessibile e leggibile "
@@ -8479,8 +8475,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>)  è "
 "un valore «yes»/«no» che determina se  APT debba cercare di rilevare "
@@ -8523,8 +8520,9 @@ msgstr ""
 "raramente di un archivio aggiornato più frequentemente ma meno raggiungibile "
 "(che è anch'esso nel sources.list) invece di disabilitare completamente il "
 "controllo. I valori assunti in modo predefinito sono quelli delle opzioni di "
-"configurazione <option>Acquire::Min-ValidTime</option> e <option>Acquire::"
-"Max-ValidTime</option> che sono entrambe non impostate in modo predefinito."
+"configurazione <option>Acquire::Min-ValidTime</option> e "
+"<option>Acquire::Max-ValidTime</option> che sono entrambe non impostate in "
+"modo predefinito."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8558,6 +8556,35 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8665,44 +8692,6 @@ msgstr ""
 "supporti. Usare il programma &apt-cdrom; per creare voci cdrom nell'elenco "
 "delle fonti."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-#, fuzzy
-#| msgid ""
-#| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
-#| "behavior is highly configurable; for more information see the &apt-conf; "
-#| "manual page. Please note that an FTP proxy can be specified by using the "
-#| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
-#| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-#| "environment variable and <emphasis>only</emphasis> this environment "
-#| "variable. Proxies using HTTP specified in the configuration file will be "
-#| "ignored."
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Il tipo ftp specifica un server FTP per l'archivio. Il comportamento FTP di "
-"APT è altamente configurabile; per maggiori informazioni vedere la pagina di "
-"manuale &apt-conf;. Notare che è possibile specificare un proxy FTP usando "
-"la variabile d'ambiente <envar>ftp_proxy</envar>. È possibile specificare un "
-"proxy HTTP (i server proxy HTTP spesso gestiscono gli URL FTP) usando questa "
-"e <emphasis>SOLO</emphasis> questa variabile d'ambiente. I proxy che usano "
-"HTTP specificati nel file di configurazione verranno ignorati."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8716,20 +8705,6 @@ msgstr ""
 "direttamente dalla loro posizione. Ciò è utile per coloro che usano supporti "
 "rimovibili, per copiare i file nelle varie posizioni con APT."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"Il metodo rsh/ssh invoca RSH/SSH per connettersi ad un host remoto e "
-"accedere ai file come un determinato utente. È raccomandato configurare "
-"precedentemente le chiavi RSA o rhosts. Per effettuare i trasferimenti di "
-"file dall'host remoto vengono usati i comandi standard <command>find</"
-"command> e <command>dd</command>."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8921,58 +8896,62 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"Usa FTP per accedere all'archivio in ftp.debian.org, nella directory debian "
-"e usa solo l'area &debian-stable-codename;/contrib."
+"Usa HTTPS per accedere all'archivio in deb.debian.org, nella directory "
+"debian e usa solo l'area &debian-stable-codename;/contrib."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"Usa FTP per accedere all'archivio in ftp.debian.org nella directory debian e "
-"usa solo l'area unstable/contrib. Se in <filename>sources.list</filename> "
+"Usa HTTPS per accedere all'archivio in deb.debian.org nella directory debian "
+"e usa solo l'area unstable/contrib. Se in <filename>sources.list</filename> "
 "sono presenti sia questa riga sia quella nell'esempio precedente, verrà "
-"usata una sola sessione FTP per entrambe le righe."
+"usata una sola sessione HTTPS per entrambe le righe."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -9115,8 +9094,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "Directory temporanea dove scrivere gli script di configurazione e i file "
 "template di <command>debconf</command> estratti. Voce di configurazione: "
@@ -9159,8 +9138,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "Usa l'ordinamento dei campi dell'indice dei sorgenti. Voce di "
 "configurazione: <literal>APT::SortPkgs::Source</literal>."
@@ -9294,22 +9273,22 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "Il comando <literal>release</literal> genera un file Release da un albero di "
 "directory. In modo predefinito cerca ricorsivamente nella directory data i "
 "file <filename>Packages</filename>, <filename>Sources</filename>, "
 "<filename>Contents</filename>, <filename>Components</filename> e "
 "<filename>icons</filename> compressi e non compressi, come anche i file "
-"<filename>Release</filename>, <filename>Index</filename> e <filename>md5sum."
-"txt</filename> (<literal>APT::FTPArchive::Release::Default-Patterns</"
-"literal>). Si possono aggiungere ulteriori modelli per i nomi di file "
-"elencandoli in <literal>APT::FTPArchive::Release::Patterns</literal>. Scrive "
-"poi sullo stdout un file <filename>Release</filename> contenente (in modo "
-"predefinito) per ogni file un digest MD5, SHA1, SHA256 e SHA512."
+"<filename>Release</filename>, <filename>Index</filename> e "
+"<filename>md5sum.txt</filename> (<literal>APT::FTPArchive::Release::Default-"
+"Patterns</literal>). Si possono aggiungere ulteriori modelli per i nomi di "
+"file elencandoli in <literal>APT::FTPArchive::Release::Patterns</literal>. "
+"Scrive poi sullo stdout un file <filename>Release</filename> contenente (in "
+"modo predefinito) per ogni file un digest MD5, SHA1, SHA256 e SHA512."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9554,12 +9533,12 @@ msgstr "Sezione <literal>TreeDefault</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "Imposta valori predefiniti specifici per le sezioni <literal>Tree</literal>. "
-"Tutte queste variabili sono variabili di sostituzione in cui le stringhe "
-"$(DIST), $(SECTION) e $(ARCH) verranno sostituite dai loro rispettivi valori."
+"Tutte queste variabili sono variabili di sostituzione in cui le stringhe $"
+"(DIST), $(SECTION) e $(ARCH) verranno sostituite dai loro rispettivi valori."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9594,8 +9573,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
 "Imposta la radice dell'albero della directory dei .deb. Il valore "
 "predefinito è <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>."
@@ -9603,8 +9582,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "Imposta la radice dell'albero della directory dei pacchetti sorgente. Il "
 "valore predefinito è <filename>$(DIST)/$(SECTION)/source/</filename>."
@@ -9615,8 +9594,8 @@ msgid ""
 "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "binary-$(ARCH)/Packages</filename>"
 msgstr ""
-"Imposta il file Packages di uscita. Il valore predefinito è "
-"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>."
+"Imposta il file Packages di uscita. Il valore predefinito è <filename>$"
+"(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9631,8 +9610,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "Imposta il file Translation-en principale di uscita contenente le "
 "descrizioni lunghe se non devono essere incluse nel file Packages. Il valore "
@@ -9658,11 +9637,11 @@ msgid ""
 "ftparchive</command> will integrate those package files together "
 "automatically."
 msgstr ""
-"Imposta il file Contents di uscita. Il valore predefinito è "
-"<filename>$(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. Se questa "
-"impostazione fa sì che più file Packages corrispondano a un solo file "
-"Contents (come avviene con il valore predefinito), allora <command>apt-"
-"ftparchive</command> unirà automaticamente insieme questi file dei pacchetti."
+"Imposta il file Contents di uscita. Il valore predefinito è <filename>$"
+"(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. Se questa impostazione fa sì "
+"che più file Packages corrispondano a un solo file Contents (come avviene "
+"con il valore predefinito), allora <command>apt-ftparchive</command> unirà "
+"automaticamente insieme questi file dei pacchetti."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10035,8 +10014,8 @@ msgstr ""
 "Effettua il de-collegamento. Se viene usata l'impostazione <literal>External-"
 "Links</literal> allora questa opzione abilita di fatto il de-collegamento "
 "dei file. È attiva in modo predefinito e può essere disabilitata con "
-"<option>--no-delink</option>. Voce di configurazione: <literal>APT::"
-"FTPArchive::DeLinkAct</literal>."
+"<option>--no-delink</option>. Voce di configurazione: "
+"<literal>APT::FTPArchive::DeLinkAct</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10062,14 +10041,14 @@ msgid ""
 "literal>."
 msgstr ""
 "Seleziona il file override sorgente da usare con il comando "
-"<literal>sources</literal>. Voce di configurazione <literal>APT::FTPArchive::"
-"SourceOverride</literal>."
+"<literal>sources</literal>. Voce di configurazione "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "Rende i database delle cache in sola lettura. Voce di configurazione: "
 "<literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -10085,8 +10064,8 @@ msgstr ""
 "Accetta per i comandi <literal>packages</literal> e <literal>contents</"
 "literal> solo i file di pacchetto che corrispondono a <literal>*_arch.deb</"
 "literal> o <literal>*_all.deb</literal> invece di tutti i file di pacchetto "
-"nel percorso specificato. Voce di configurazione: <literal>APT::FTPArchive::"
-"Architecture</literal>."
+"nel percorso specificato. Voce di configurazione: "
+"<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10266,16 +10245,16 @@ msgstr "Esempi"
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
@@ -10448,16 +10427,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -10481,14 +10461,14 @@ msgstr ""
 #| "store the requested archive files in its cache, which can be used to "
 #| "prevent the proxy from polluting its cache with (big) .deb files."
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "Sono fornite tre impostazioni per il controllo della cache in proxy con "
 "cache conformi an HTTP/1.1. <literal>No-Cache</literal> indica al proxy di "
@@ -10518,11 +10498,11 @@ msgstr "Configurazione utente"
 #| "</literal> or the word <literal>DIRECT</literal> if no proxy should be "
 #| "used. No output indicates that the generic proxy settings should be "
 #| "used.  Note that auto-detection will not be used for a host if a host-"
-#| "specific proxy configuration is already set via <literal>Acquire::http::"
-#| "Proxy::<replaceable>HOST</replaceable></literal>.  See the &squid-deb-"
-#| "proxy-client; package for an example implementation that uses avahi.  "
-#| "This option takes precedence over the legacy option name "
-#| "<literal>ProxyAutoDetect</literal>."
+#| "specific proxy configuration is already set via "
+#| "<literal>Acquire::http::Proxy::<replaceable>HOST</replaceable></"
+#| "literal>.  See the &squid-deb-proxy-client; package for an example "
+#| "implementation that uses avahi.  This option takes precedence over the "
+#| "legacy option name <literal>ProxyAutoDetect</literal>."
 msgid ""
 "<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
 "an external command to discover the HTTP proxy to use. The first and only "
@@ -10565,8 +10545,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10607,11 +10587,11 @@ msgid ""
 "bandwidth. Note that this option implicitly disables downloading from "
 "multiple servers at the same time."
 msgstr ""
-"La quantità di banda utilizzata può essere limitata con <literal>Acquire::"
-"http::Dl-Limit</literal> che accetta valori interi in kilobyte al secondo. "
-"Il valore predefinito è 0 che disattiva il limite e cerca di usare tutta la "
-"banda disponibile. Notare che questa opzione implicitamente disabilita lo "
-"scaricamento da più server contemporaneamente."
+"La quantità di banda utilizzata può essere limitata con "
+"<literal>Acquire::http::Dl-Limit</literal> che accetta valori interi in "
+"kilobyte al secondo. Il valore predefinito è 0 che disattiva il limite e "
+"cerca di usare tutta la banda disponibile. Notare che questa opzione "
+"implicitamente disabilita lo scaricamento da più server contemporaneamente."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
@@ -10626,12 +10606,12 @@ msgstr ""
 #| "by setting the value to 0. It is enabled by default with the value 10."
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "L'impostazione <literal>Acquire::http::Pipeline-Depth</literal> può essere "
 "usata per abilitare le pipeline HTTP (RFC 2616, sezione 8.1.2.2) che possono "
@@ -10732,9 +10712,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10763,9 +10743,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10811,11 +10792,11 @@ msgstr ""
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -11017,9 +10998,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
@@ -11039,9 +11020,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
 #: apt-transport-mirror.1.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
@@ -11455,6 +11436,18 @@ msgstr "<option>--installed</option>"
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<option>--installed</option>"
+msgid "<code>?phasing</code>"
+msgstr "<option>--installed</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -11663,6 +11656,19 @@ msgstr "<option>--installed</option>"
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<option>--installed</option>"
+msgid "<code>?security</code>"
+msgstr "<option>--installed</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 #, fuzzy
@@ -11719,6 +11725,20 @@ msgstr "<option>--installed</option>"
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr "<option>--installed</option>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<option>--installed</option>"
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr "<option>--installed</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+#, fuzzy
+#| msgid "<option>--installed</option>"
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr "<option>--installed</option>"
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 #, fuzzy
@@ -11792,8 +11812,8 @@ msgstr "<option>--installed</option>"
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -11917,10 +11937,10 @@ msgstr ""
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -12184,13 +12204,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"Scaricamento di: http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Scaricamento di: http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Scaricamento di: http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Lettura elenco dei pacchetti... Fatto\n"
 "Generazione albero delle dipendenze... Fatto\n"
@@ -12364,8 +12384,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12377,8 +12396,7 @@ msgstr ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12400,26 +12418,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "La distribuzione indica la versione Debian dell'archivio: <emphasis>stable</"
 "emphasis> è l'ultima versione rilasciata e <emphasis>unstable</emphasis> è "
@@ -12985,18 +13008,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Scaricamento di:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Scaricamento di:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Scaricamento di:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Trovato http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Scaricamento di:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Scaricamento di:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Scaricamento di:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13547,6 +13570,359 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> imposta il proxy predefinito da usare per "
+#~ "gli URI FTP. È nella forma standard <literal>ftp://[[utente]"
+#~ "[:password]@]host[:porta]/</literal>. Si possono anche specificare proxy "
+#~ "per ciascun host usando la forma <literal>ftp::Proxy::&lt;host&gt;</"
+#~ "literal> con la speciale parola chiave <literal>DIRECT</literal> che "
+#~ "indica di non usare proxy. Se nessuna delle opzioni precedenti è "
+#~ "impostata, viene usata la variabile d'ambiente <envar>ftp_proxy</envar>. "
+#~ "Per usare un proxy FTP è necessario impostare lo script "
+#~ "<literal>ftp::ProxyLogin</literal> nel file di configurazione. Questa "
+#~ "voce specifica i comandi da inviare per dire al server proxy a cosa "
+#~ "connettersi. Vedere &configureindex; per un esempio di come utilizzarla. "
+#~ "Le variabili di sostituzione che rappresentano i corrispondenti "
+#~ "componenti dell'URI sono <literal>$(PROXY_USER)</literal>, <literal>$"
+#~ "(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, <literal>$"
+#~ "(SITE_PASS)</literal>, <literal>$(SITE)</literal> e <literal>$"
+#~ "(SITE_PORT)</literal>."
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "L'opzione <literal>timeout</literal> imposta il tempo di timeout usato "
+#~ "dal metodo; questo valore si applica sia al timeout per la connessione "
+#~ "sia a quello per i dati."
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "Sono fornite diverse impostazioni per controllare la modalità passiva. "
+#~ "Generalmente è sicuro lasciare attiva la modalità passiva; funziona in "
+#~ "quasi tutti gli ambienti. Tuttavia in alcune situazioni è necessario "
+#~ "disabilitare la modalità passiva e usare invece la modalità per porta "
+#~ "FTP. Ciò può essere fatto globalmente o, per connessioni che passano "
+#~ "attraverso un proxy, per uno specifico host (vedere il file di "
+#~ "configurazione d'esempio)."
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "È possibile usare FTP attraverso un proxy via HTTP impostando la "
+#~ "variabile d'ambiente <envar>ftp_proxy</envar> ad un URL HTTP; per la "
+#~ "sintassi vedere la spiegazione del metodo http più sopra. Non è possibile "
+#~ "impostare questa opzione nel file di configurazione e l'uso di FTP via "
+#~ "HTTP non è raccomando a causa della sua bassa efficienza."
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "L'impostazione <literal>ForceExtended</literal> controlla l'uso dei "
+#~ "comandi <literal>EPSV</literal> e <literal>EPRT</literal> della RFC 2428. "
+#~ "Il valore predefinito è falso, il che significa che questi comandi sono "
+#~ "usati solamente se la connessione di controllo è IPv6. Impostare questo "
+#~ "valore a vero forza il loro uso anche su connessioni IPv4. Notare che la "
+#~ "maggior parte dei server FTP non supporta la RFC 2428."
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr ""
+#~ "Stampa informazioni relative allo scaricamento dei pacchetti usando FTP."
+
+#, fuzzy
+#~| msgid ""
+#~| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
+#~| "behavior is highly configurable; for more information see the &apt-conf; "
+#~| "manual page. Please note that an FTP proxy can be specified by using the "
+#~| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~| "environment variable and <emphasis>only</emphasis> this environment "
+#~| "variable. Proxies using HTTP specified in the configuration file will be "
+#~| "ignored."
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Il tipo ftp specifica un server FTP per l'archivio. Il comportamento FTP "
+#~ "di APT è altamente configurabile; per maggiori informazioni vedere la "
+#~ "pagina di manuale &apt-conf;. Notare che è possibile specificare un proxy "
+#~ "FTP usando la variabile d'ambiente <envar>ftp_proxy</envar>. È possibile "
+#~ "specificare un proxy HTTP (i server proxy HTTP spesso gestiscono gli URL "
+#~ "FTP) usando questa e <emphasis>SOLO</emphasis> questa variabile "
+#~ "d'ambiente. I proxy che usano HTTP specificati nel file di configurazione "
+#~ "verranno ignorati."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "Il metodo rsh/ssh invoca RSH/SSH per connettersi ad un host remoto e "
+#~ "accedere ai file come un determinato utente. È raccomandato configurare "
+#~ "precedentemente le chiavi RSA o rhosts. Per effettuare i trasferimenti di "
+#~ "file dall'host remoto vengono usati i comandi standard <command>find</"
+#~ "command> e <command>dd</command>."
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"IDchiave\">"
+
+#, fuzzy
+#~| msgid "APT key management utility"
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "strumento APT per la gestione delle chiavi"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> viene usato per gestire l'elenco delle chiavi "
+#~ "usate da apt per autenticare i pacchetti. I pacchetti che sono stati "
+#~ "autenticati usando queste chiavi verranno considerati fidati."
+
+#~ msgid "Supported keyring files"
+#~ msgstr "File di portachiavi gestiti"
+
+#~ msgid ""
+#~ "apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+#~ "public ring\") in files with the \"<literal>gpg</literal>\" extension, "
+#~ "not the keybox database format introduced in newer &gpg; versions as "
+#~ "default for keyring files. Binary keyring files intended to be used with "
+#~ "any apt version should therefore always be created with <command>gpg --"
+#~ "export</command>."
+#~ msgstr ""
+#~ "apt-key gestisce nei file con l'estensione «<literal>gpg</literal>» "
+#~ "solamente il formato binario OpenPGP (noto anche come «GPG key public "
+#~ "ring»), non il formato di database keybox introdotto come file di "
+#~ "portachiavi predefinito nelle versioni più nuove di &gpg;. I file di "
+#~ "portachiavi binari pensati per essere usati con qualsiasi versione di apt "
+#~ "dovrebbero perciò sempre essere creati con <command>gpg --export</"
+#~ "command>."
+
+#~ msgid ""
+#~ "Alternatively, if all systems which should be using the created keyring "
+#~ "have at least apt version >= 1.4 installed, you can use the ASCII armored "
+#~ "format with the \"<literal>asc</literal>\" extension instead which can be "
+#~ "created with <command>gpg --armor --export</command>."
+#~ msgstr ""
+#~ "In alternativa, se tutti i sistemi che devono usare il portachiavi creato "
+#~ "hanno una installata versione di apt almeno >= 1.4, si può utilizzare "
+#~ "invece il formato armored ASCII con l'estensione «<literal>asc</literal>» "
+#~ "che può essere creato con <command>gpg --armor --export</command>."
+
+#~ msgid "Commands"
+#~ msgstr "Comandi"
+
+#~ msgid "(deprecated)"
+#~ msgstr "(deprecato)"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "Aggiunge una nuova chiave all'elenco delle chiavi fidate. La chiave viene "
+#~ "letta dal file specificato con il parametro &synopsis-param-filename; o, "
+#~ "se il nome file è <literal>-</literal>, dallo standard input."
+
+#~ msgid ""
+#~ "It is critical that keys added manually via <command>apt-key</command> "
+#~ "are verified to belong to the owner of the repositories they claim to be "
+#~ "for otherwise the &apt-secure; infrastructure is completely undermined."
+#~ msgstr ""
+#~ "È di importanza critica verificare che le chiavi aggiunte manualmente "
+#~ "usando <command>apt-key</command> appartengano al proprietario del "
+#~ "repository per cui dichiarano di essere, altrimenti l'infrastruttura &apt-"
+#~ "secure; viene completamente minata alla base."
+
+#~ msgid ""
+#~ "<emphasis>Note</emphasis>: Instead of using this command a keyring should "
+#~ "be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+#~ "directory with a descriptive name and either \"<literal>gpg</literal>\" "
+#~ "or \"<literal>asc</literal>\" as file extension."
+#~ msgstr ""
+#~ "<emphasis>Nota bene</emphasis>: invece di usare questo comando un "
+#~ "portachiavi dovrebbe essere messo direttamente nella directory <filename>/"
+#~ "etc/apt/trusted.gpg.d/</filename> con un nome descrittivo e con "
+#~ "«<literal>gpg</literal>» o «<literal>asc</literal>» come estensione di "
+#~ "file."
+
+#, fuzzy
+#~| msgid "(deprecated)"
+#~ msgid "(mostly deprecated)"
+#~ msgstr "(deprecato)"
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "Rimuove una chiave dall'elenco delle chiavi fidate."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr ""
+#~ "Visualizza sullo standard output l'&synopsis-param-keyid; della chiave."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "Visualizza sullo standard output tutte le chiavi fidate."
+
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "Elenca le chiavi fidate con le impronte digitali."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~ "can e.g. download key from keyservers directly into the trusted set of "
+#~ "keys. Note that there are <emphasis>no</emphasis> checks performed, so it "
+#~ "is easy to completely undermine the &apt-secure; infrastructure if used "
+#~ "without care."
+#~ msgstr ""
+#~ "Passa opzioni avanzate a gpg. Con <command>adv --recv-key</command> si "
+#~ "può, ad esempio, scaricare una chiave da un server di chiavi direttamente "
+#~ "nell'insieme delle chiavi fidate. Notare che <emphasis>non</emphasis> "
+#~ "viene effettuato alcun controllo, perciò è facile minare completamente "
+#~ "l'infrastruttura &apt-secure; se viene usato senza cautela."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "Aggiorna il portachiavi locale con il portachiavi dell'archivio e rimuove "
+#~ "dal portachiavi locale le chiavi di archivio che non sono più valide. Il "
+#~ "portachiavi degli archivi è fornito nel pacchetto <literal>archive-"
+#~ "keyring</literal> delle diverse distribuzioni, ad esempio il pacchetto "
+#~ "&keyring-package; in &keyring-distro;."
+
+#~ msgid ""
+#~ "Note that a distribution does not need to and in fact should not use this "
+#~ "command any longer and instead ship keyring files in the <filename>/etc/"
+#~ "apt/trusted.gpg.d/</filename> directory directly as this avoids a "
+#~ "dependency on <package>gnupg</package> and it is easier to manage keys by "
+#~ "simply adding and removing files for maintainers and users alike."
+#~ msgstr ""
+#~ "Notare che una distribuzione non ha più bisogno di usare questo comando, "
+#~ "e di fatto non dovrebbe farlo, e invece fornisce file portachiavi "
+#~ "direttamente nella directory <filename>/etc/apt/trusted.gpg.d/</"
+#~ "filename>, dato che questo evita una dipendenza da <package>gnupg</"
+#~ "package> ed è più facile, sia per i manutentori sia per gli utenti, "
+#~ "gestire chiavi semplicemente aggiungendo e rimuovendo file."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "Effettua un aggiornamento funzionando in modo simile al comando "
+#~ "<command>update</command> descritto prima, ma ottiene invece il "
+#~ "portachiavi degli archivi da un URI e lo convalida usando una chiave "
+#~ "master. Ciò richiede che &wget; sia installato, e una versione di APT "
+#~ "configurata per avere un server da cui scaricare e un portachiavi master "
+#~ "per la convalida. APT in Debian non supporta questo comando, ma fa "
+#~ "affidamento sul comando <command>update</command>; APT in Ubuntu invece "
+#~ "lo fa."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Notare che le opzioni devono essere definite prima dei comandi descritti "
+#~ "nella sezione precedente."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Con questa opzione è possibile specificare un particolare file "
+#~ "portachiavi su cui deve operare il comando. Il comportamento predefinito "
+#~ "esegue i comandi sul file <filename>trusted.gpg</filename>, così come su "
+#~ "tutte le parti nella directory <filename>trusted.gpg.d</filename>; "
+#~ "<filename>trusted.gpg</filename> è però il portachiavi primario il che "
+#~ "significa, ad esempio, che le nuove chiavi sono aggiunte ad esso."
+
+#, fuzzy
+#~| msgid "Dir Section"
+#~ msgid "Deprecation"
+#~ msgstr "Sezione Dir"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "<command>apt-key</command> è il programma che gestisce l'elenco delle "
+#~ "chiavi usate da APT per fidarsi dei repository. Può essere usato per "
+#~ "aggiungere o rimuovere chiavi, oltre che per elencare le chiavi fidate. È "
+#~ "possibile limitare quali chiavi possono firmare determinati archivi "
+#~ "usando <option>Signed-By</option> in &sources-list;."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "Per aggiungere una nuova chiave, è necessario prima scaricarla (ci si "
+#~ "dovrebbe assicurare di usare un canale di comunicazione fidato quando la "
+#~ "si recupera), aggiungerla con <command>apt-key</command> e poi eseguire "
+#~ "<command>apt-get update</command>, in modo che apt possa scaricare e "
+#~ "verificare i file <filename>InRelease</filename> o <filename>Release.gpg</"
+#~ "filename> dagli archivi che sono configurati."
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr ""
+#~ "Descrive il processo di risoluzione delle dipendenze di compilazione in "
+#~ "&apt-get;."
+
 # &glob; è rimpiazzato da "glob(7)"
 #~ msgid "Regular expressions and &glob; syntax"
 #~ msgstr "Sintassi per le espressioni regolari e &glob;"
@@ -13572,16 +13948,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
 #~ msgid ""
 #~ "<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
-#~ "URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:"
-#~ "port]/</literal>.  Per host proxies can also be specified by using the "
-#~ "form <literal>http::Proxy::&lt;host&gt;</literal> with the special "
-#~ "keyword <literal>DIRECT</literal> meaning to use no proxies. If no one of "
-#~ "the above settings is specified, <envar>http_proxy</envar> environment "
-#~ "variable will be used."
+#~ "URIs. It is in the standard form of <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>http::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>http_proxy</envar> "
+#~ "environment variable will be used."
 #~ msgstr ""
 #~ "<literal>http::Proxy</literal> imposta il proxy predefinito da usare per "
-#~ "gli URI HTTP. È nella forma standard <literal>http://[[utente][:"
-#~ "password]@]host[:porta]/</literal>. Possono anche essere specificati "
+#~ "gli URI HTTP. È nella forma standard <literal>http://[[utente]"
+#~ "[:password]@]host[:porta]/</literal>. Possono anche essere specificati "
 #~ "proxy per ciascun host usando la forma <literal>http::Proxy::&lt;host&gt;"
 #~ "</literal> con la speciale parola chiave <literal>DIRECT</literal> che "
 #~ "significa di non usare un proxy. Se non viene specificata alcuna delle "
@@ -13608,41 +13984,42 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "info about trusted certificates.  <literal>&lt;host&gt;::CaInfo</literal> "
 #~ "is the corresponding per-host option.  <literal>Verify-Peer</literal> "
 #~ "boolean suboption determines whether or not the server's host certificate "
-#~ "should be verified against trusted certificates.  <literal>&lt;host&gt;::"
-#~ "Verify-Peer</literal> is the corresponding per-host option.  "
-#~ "<literal>Verify-Host</literal> boolean suboption determines whether or "
-#~ "not the server's hostname should be verified.  <literal>&lt;host&gt;::"
-#~ "Verify-Host</literal> is the corresponding per-host option.  "
-#~ "<literal>SslCert</literal> determines what certificate to use for client "
-#~ "authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
-#~ "corresponding per-host option.  <literal>SslKey</literal> determines what "
-#~ "private key to use for client authentication. <literal>&lt;host&gt;::"
-#~ "SslKey</literal> is the corresponding per-host option.  "
-#~ "<literal>SslForceVersion</literal> overrides default SSL version to use.  "
-#~ "It can contain either of the strings '<literal>TLSv1</literal>' or "
-#~ "'<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
+#~ "should be verified against trusted certificates.  "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-"
+#~ "host option.  <literal>Verify-Host</literal> boolean suboption determines "
+#~ "whether or not the server's hostname should be verified.  "
+#~ "<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-"
+#~ "host option.  <literal>SslCert</literal> determines what certificate to "
+#~ "use for client authentication. <literal>&lt;host&gt;::SslCert</literal> "
+#~ "is the corresponding per-host option.  <literal>SslKey</literal> "
+#~ "determines what private key to use for client authentication. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+#~ "option.  <literal>SslForceVersion</literal> overrides default SSL version "
+#~ "to use.  It can contain either of the strings '<literal>TLSv1</literal>' "
+#~ "or '<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
 #~ "literal> is the corresponding per-host option."
 #~ msgstr ""
 #~ "La sotto-opzione <literal>CaInfo</literal> specifica la posizione del "
-#~ "file che contiene le informazioni sui certificati fidati; <literal>&lt;"
-#~ "host&gt;::CaInfo</literal> è la corrispondente opzione specifica per "
-#~ "ciascun host. La sotto-opzione booleana <literal>Verify-Peer</literal> "
-#~ "determina se il certificato host del server deve o non deve essere "
-#~ "verificato usando i certificati fidati; <literal>&lt;host&gt;::Verify-"
-#~ "Peer</literal> è la corrispondente opzione specifica per ciascun host. La "
-#~ "sotto-opzione booleana <literal>Verify-Host</literal> determina se il "
-#~ "nome host del server deve o non deve essere verificato; <literal>&lt;"
-#~ "host&gt;::Verify-Host</literal> è la corrispondente opzione specifica per "
-#~ "ciascun host. <literal>SslCert</literal> determina quale certificato "
-#~ "usare per l'autenticazione client; <literal>&lt;host&gt;::SslCert</"
-#~ "literal> è la corrispondente opzione specifica per ciascun host. "
-#~ "<literal>SslKey</literal> determina quale chiave privata usare per "
-#~ "l'autenticazione client; <literal>&lt;host&gt;::SslKey</literal> è la "
-#~ "corrispondente opzione specifica per ciascun host. "
-#~ "<literal>SslForceVersion</literal> scavalca la versione predefinita SSL "
-#~ "da usare e può contenere la stringa «<literal>TLSv1</literal>» o "
-#~ "«<literal>SSLv3</literal>»;  <literal>&lt;host&gt;::SslForceVersion</"
-#~ "literal> è la corrispondente opzione specifica per ciascun host."
+#~ "file che contiene le informazioni sui certificati fidati; "
+#~ "<literal>&lt;host&gt;::CaInfo</literal> è la corrispondente opzione "
+#~ "specifica per ciascun host. La sotto-opzione booleana <literal>Verify-"
+#~ "Peer</literal> determina se il certificato host del server deve o non "
+#~ "deve essere verificato usando i certificati fidati; "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> è la corrispondente opzione "
+#~ "specifica per ciascun host. La sotto-opzione booleana <literal>Verify-"
+#~ "Host</literal> determina se il nome host del server deve o non deve "
+#~ "essere verificato; <literal>&lt;host&gt;::Verify-Host</literal> è la "
+#~ "corrispondente opzione specifica per ciascun host. <literal>SslCert</"
+#~ "literal> determina quale certificato usare per l'autenticazione client; "
+#~ "<literal>&lt;host&gt;::SslCert</literal> è la corrispondente opzione "
+#~ "specifica per ciascun host. <literal>SslKey</literal> determina quale "
+#~ "chiave privata usare per l'autenticazione client; "
+#~ "<literal>&lt;host&gt;::SslKey</literal> è la corrispondente opzione "
+#~ "specifica per ciascun host. <literal>SslForceVersion</literal> scavalca "
+#~ "la versione predefinita SSL da usare e può contenere la stringa "
+#~ "«<literal>TLSv1</literal>» o «<literal>SSLv3</literal>»;  "
+#~ "<literal>&lt;host&gt;::SslForceVersion</literal> è la corrispondente "
+#~ "opzione specifica per ciascun host."
 
 #~ msgid ""
 #~ "The http scheme specifies an HTTP server for the archive. If an "
@@ -13656,27 +14033,29 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "variabile d'ambiente <envar>http_proxy</envar> con il formato http://"
 #~ "server:porta/, verrà usato il server proxy specificato in "
 #~ "<envar>http_proxy</envar>. Gli utenti con proxy HTTP/1.1 con "
-#~ "autenticazione possono usare una stringa nel formato http://utente:"
-#~ "password@server:porta/. Notare che questo è un metodo di autenticazione "
-#~ "non sicuro."
+#~ "autenticazione possono usare una stringa nel formato http://"
+#~ "utente:password@server:porta/. Notare che questo è un metodo di "
+#~ "autenticazione non sicuro."
 
 #~ msgid ""
 #~ "As a temporary exception &apt-get; (not &apt;!) raises warnings only if "
 #~ "it encounters unauthenticated archives to give a slightly longer grace "
 #~ "period on this backward compatibility effecting change. This exception "
 #~ "will be removed in future releases and you can opt-out of this grace "
-#~ "period by setting the configuration option <option>Binary::apt-get::"
-#~ "Acquire::AllowInsecureRepositories</option> to <literal>false</literal> "
-#~ "or <option>--no-allow-insecure-repositories</option> on the command line."
+#~ "period by setting the configuration option <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> to <literal>false</"
+#~ "literal> or <option>--no-allow-insecure-repositories</option> on the "
+#~ "command line."
 #~ msgstr ""
 #~ "Come eccezione temporanea &apt-get; (non &apt;!) dà solo avvertimenti se "
 #~ "incrontra archivi non autenticati, per fornire un periodo di grazia "
 #~ "leggermente più lungo per questa modifica che influenza sulla "
 #~ "compatibilità all'indietro. Questa eccezione sarà rimossa nei rilasci "
 #~ "futuri e si può rinunciare a questo periodo di grazia ipostando l'opzione "
-#~ "di configurazione <option>Binary::apt-get::Acquire::"
-#~ "AllowInsecureRepositories</option> a <literal>false</literal> o <option>--"
-#~ "no-allow-insecure-repositories</option> nella riga di comando."
+#~ "di configurazione <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> a <literal>false</"
+#~ "literal> o <option>--no-allow-insecure-repositories</option> nella riga "
+#~ "di comando."
 
 #~ msgid "Archive Configuration"
 #~ msgstr "Configurazione dell'archivio"
@@ -13880,8 +14259,9 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "In futuro APT si rifiuterà in modo predefinito di lavorare con repository "
 #~ "non autenticati fino a quando il supporto per essi sarà completamente "
 #~ "rimosso. Gli utenti hanno l'opzione di passare di già a questo "
-#~ "comportamento impostando l'opzione di configurazione <option>Acquire::"
-#~ "AllowInsecureRepositories</option> a <literal>false</literal>."
+#~ "comportamento impostando l'opzione di configurazione "
+#~ "<option>Acquire::AllowInsecureRepositories</option> a <literal>false</"
+#~ "literal>."
 
 #~ msgid ""
 #~ "Allow the update operation to load data files from a repository without a "
@@ -14020,8 +14400,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
 #~ msgid ""
 #~ "No action; perform a simulation of events that would occur but do not "
-#~ "actually change the system.  Configuration Item: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "actually change the system.  Configuration Item: "
+#~ "<literal>APT::Get::Simulate</literal>."
 #~ msgstr ""
 #~ "Nessuna azione; effettua una simulazione degli eventi che si "
 #~ "verificherebbero, ma non cambia realmente il sistema. Voce di "
@@ -14029,12 +14409,12 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
 #~ msgid ""
 #~ "Simulated runs performed as a user will automatically deactivate locking "
-#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
-#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
-#~ "notice will also be displayed indicating that this is only a simulation. "
-#~ "Runs performed as root do not trigger either NoLocking or the notice - "
-#~ "superusers should know what they are doing without further warnings from "
-#~ "<literal>apt-get</literal>."
+#~ "(<literal>Debug::NoLocking</literal>), and if the option "
+#~ "<literal>APT::Get::Show-User-Simulation-Note</literal> is set (as it is "
+#~ "by default) a notice will also be displayed indicating that this is only "
+#~ "a simulation. Runs performed as root do not trigger either NoLocking or "
+#~ "the notice - superusers should know what they are doing without further "
+#~ "warnings from <literal>apt-get</literal>."
 #~ msgstr ""
 #~ "Le esecuzioni simulate effettuate da un utente disattivano "
 #~ "automaticamente il lock (<literal>Debug::NoLocking</literal>) e se è "
@@ -14223,8 +14603,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~| "B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgid ""
-#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
-#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), "
+#~ "B<sources.list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgstr ""
 #~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~ "B<apt_preferences>(5), B<apt-secure>(8)"
@@ -14244,11 +14624,11 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ msgstr "Questa pagina di manuale non è neanche stata iniziata."
 
 #~ msgid ""
-#~ "See E<lt>http://bugs.debian.org/aptE<gt>.  If you wish to report a bug in "
-#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "See E<lt>https://bugs.debian.org/aptE<gt>.  If you wish to report a bug "
+#~ "in B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
 #~ "B<reportbug>(1)  command."
 #~ msgstr ""
-#~ "Vedere E<lt>http://bugs.debian.org/aptE<gt>. Per segnalare un bug in "
+#~ "Vedere E<lt>https://bugs.debian.org/aptE<gt>. Per segnalare un bug in "
 #~ "B<apt>, vedere I</usr/share/doc/debian/bug-reporting.txt> o il comando "
 #~ "B<reportbug>(1)."
 
@@ -14706,7 +15086,7 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "<!-- Boiler plate Bug reporting section -->\n"
 #~ "<!ENTITY manbugs \"\n"
 #~ " <refsect1><title>Bugs</title>\n"
-#~ "   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</"
+#~ "   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</"
 #~ "ulink>. \n"
 #~ "   If you wish to report a bug in APT, please see\n"
 #~ "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
@@ -14718,7 +15098,7 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "<!-- Sezione standard segnalazione bachi -->\n"
 #~ "<!ENTITY manbugs \"\n"
 #~ " <refsect1><title>Bachi</title>\n"
-#~ "   <para><ulink url='http://bugs.debian.org/src:apt'>Pagina dei bachi di "
+#~ "   <para><ulink url='https://bugs.debian.org/src:apt'>Pagina dei bachi di "
 #~ "APT</ulink>. \n"
 #~ "   Per segnalare un baco in APT, vedere\n"
 #~ "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o il\n"
@@ -14727,31 +15107,6 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ " </refsect1>\n"
 #~ "\">\n"
 
-#~ msgid ""
-#~ "     <varlistentry>\n"
-#~ "      <term><option>-c</option></term>\n"
-#~ "      <term><option>--config-file</option></term>\n"
-#~ "     <listitem><para>Configuration File; Specify a configuration file to "
-#~ "use. \n"
-#~ "     The program will read the default configuration file and then this \n"
-#~ "     configuration file. See &apt-conf; for syntax information.     \n"
-#~ "     </para>\n"
-#~ "     </listitem>\n"
-#~ "     </varlistentry>\n"
-#~ msgstr ""
-#~ "     <varlistentry>\n"
-#~ "      <term><option>-c</option></term>\n"
-#~ "      <term><option>--config-file</option></term>\n"
-#~ "     <listitem><para>File di configurazione; Specifica un file di "
-#~ "configurazione da usare. \n"
-#~ "     Il programma leggerà il file di configurazione predefinito e poi "
-#~ "questo \n"
-#~ "     file di configurazione. Vedere &apt-conf; per informazioni sulla "
-#~ "sintassi.     \n"
-#~ "     </para>\n"
-#~ "     </listitem>\n"
-#~ "     </varlistentry>\n"
-
 #~ msgid ""
 #~ "     <varlistentry><term><filename>&cachedir;/archives/partial/</"
 #~ "filename></term>\n"
@@ -15117,8 +15472,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "versions</option>. Se si specifica <option>--no-all-versions</option>, "
 #~ "verrà visualizzata solo la versione candidata (quella che sarebbe scelta "
 #~ "per l'installazione). Questa opzione è applicabile solo al comando "
-#~ "<literal>show</literal>. Voce di configurazione: <literal>APT::Cache::"
-#~ "AllVersions</literal>."
+#~ "<literal>show</literal>. Voce di configurazione: "
+#~ "<literal>APT::Cache::AllVersions</literal>."
 
 #~ msgid "<option>-g</option>"
 #~ msgstr "<option>-g</option>"
@@ -15353,16 +15708,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
 #~ msgid ""
 #~ "template-file and config-script are written to the temporary directory "
-#~ "specified by the -t or --tempdir (<literal>APT::ExtractTemplates::"
-#~ "TempDir</literal>)  directory, with filenames of the form "
-#~ "<filename>package.template.XXXX</filename> and <filename>package.config."
-#~ "XXXX</filename>"
+#~ "specified by the -t or --tempdir "
+#~ "(<literal>APT::ExtractTemplates::TempDir</literal>)  directory, with "
+#~ "filenames of the form <filename>package.template.XXXX</filename> and "
+#~ "<filename>package.config.XXXX</filename>"
 #~ msgstr ""
 #~ "file-template e script-di-configurazione sono scritti nella directory "
-#~ "temporanea specificata da -t o --tempdir (<literal>APT::ExtractTemplates::"
-#~ "TempDir</literal>) directory, con i nomi dei file nella forma "
-#~ "<filename>pacchetto.template.XXXX</filename> e <filename>pacchetto.config."
-#~ "XXXX</filename>"
+#~ "temporanea specificata da -t o --tempdir "
+#~ "(<literal>APT::ExtractTemplates::TempDir</literal>) directory, con i nomi "
+#~ "dei file nella forma <filename>pacchetto.template.XXXX</filename> e "
+#~ "<filename>pacchetto.config.XXXX</filename>"
 
 #~ msgid "<option>-t</option>"
 #~ msgstr "<option>-t</option>"
@@ -15372,12 +15727,12 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 
 #~ msgid ""
 #~ "Temporary directory in which to write extracted debconf template files "
-#~ "and config scripts.  Configuration Item: <literal>APT::ExtractTemplates::"
-#~ "TempDir</literal>"
+#~ "and config scripts.  Configuration Item: "
+#~ "<literal>APT::ExtractTemplates::TempDir</literal>"
 #~ msgstr ""
 #~ "Directory temporanea dove scrivere i file template di debconf e gli "
-#~ "script di configurazione estratti. Voce di configurazione: <literal>APT::"
-#~ "ExtractTemplates::TempDir</literal>."
+#~ "script di configurazione estratti. Voce di configurazione: "
+#~ "<literal>APT::ExtractTemplates::TempDir</literal>."
 
 #~ msgid ""
 #~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
@@ -15454,10 +15809,10 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ "MD5 digest and SHA1 digest for each file."
 #~ msgstr ""
 #~ "Il comando <literal>release</literal> genera un file Release da un albero "
-#~ "di directory. Cerca ricorivamente file Packages, Packages.gz, Packages."
-#~ "bz2, Sources, Sources.gz, Sources.bz2, Release e md5sum.txt nella "
-#~ "directory data. Quindi scrive su stdout un file Release che contiene un "
-#~ "digest MD5 e SHA1 per ciascun file."
+#~ "di directory. Cerca ricorivamente file Packages, Packages.gz, "
+#~ "Packages.bz2, Sources, Sources.gz, Sources.bz2, Release e md5sum.txt "
+#~ "nella directory data. Quindi scrive su stdout un file Release che "
+#~ "contiene un digest MD5 e SHA1 per ciascun file."
 
 #~ msgid ""
 #~ "Values for the additional metadata fields in the Release file are taken "
@@ -15566,16 +15921,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco."
 #~ msgstr "Contents"
 
 #~ msgid ""
-#~ "Sets the output Contents file. Defaults to <filename>$(DIST)/Contents-"
-#~ "$(ARCH)</filename>. If this setting causes multiple Packages files to map "
+#~ "Sets the output Contents file. Defaults to <filename>$(DIST)/Contents-$"
+#~ "(ARCH)</filename>. If this setting causes multiple Packages files to map "
 #~ "onto a single Contents file (such as the default)  then <command>apt-"
 #~ "ftparchive</command> will integrate those package files together "
 #~ "automatically."
 #~ msgstr ""
-#~ "Imposta il file Contents di uscita. Il valore predefinito è "
-#~ "<filename>$(DIST)/Contents-$(ARCH)</filename>. Se questa impostazione fa "
-#~ "sì che più file Packages  corrispondano a un solo file Contents (come con "
-#~ "il valore predefinito) allora <command>apt-ftparchive</command> unirà "
+#~ "Imposta il file Contents di uscita. Il valore predefinito è <filename>$"
+#~ "(DIST)/Contents-$(ARCH)</filename>. Se questa impostazione fa sì che più "
+#~ "file Packages  corrispondano a un solo file Contents (come con il valore "
+#~ "predefinito) allora <command>apt-ftparchive</command> unirà "
 #~ "automaticamente insieme questi file dei pacchetti."
 
 #~ msgid "Contents::Header"
diff --git a/doc/po/ja.po b/doc/po/ja.po
index 41e4979..73812d6 100644
--- a/doc/po/ja.po
+++ b/doc/po/ja.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.4\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2017-01-06 04:50+0900\n"
 "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
@@ -61,7 +61,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -72,7 +72,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>バグ</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT バグページ</ulink> をご覧ください。 \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT バグページ</ulink> をご覧ください。 \n"
 "   APT のバグを報告する場合は、\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ã‚„\n"
 "   &reportbug; コマンドをご覧ください。\n"
@@ -144,6 +144,33 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-v</option></term>\n"
+#| "      <term><option>--version</option></term>\n"
+#| "      <listitem><para>Show the program version.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"          <varlistentry>\n"
+"      <term><option>-v</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>プログラムのバージョンを表示します。\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -173,7 +200,19 @@ msgstr ""
 
 #. type: Plain text
 #: apt.ent
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
 msgid ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -185,6 +224,44 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+"          <varlistentry>\n"
+"      <term><option>-o</option></term>\n"
+"      <term><option>--option</option></term>\n"
+"     <listitem><para>設定オプションのセット。任意の設定オプションをセットします。\n"
+"     構文 <option>-o Foo::Bar=bar</option> となります。\n"
+"     異なるオプションを設定するため、<option>-o</option> と <option>--option</option> は、\n"
+"     複数回使用できます。\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 "          <varlistentry>\n"
@@ -522,11 +599,13 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"設定文字列\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"設定文字"
+"列\">"
 
 #. type: Plain text
 #: apt.ent
@@ -540,12 +619,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"対象リリー"
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"対象リリー"
 "ス\">"
 
 #. type: Plain text
@@ -596,11 +675,11 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"CDROMマウントポイント\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"CDROMマウントポイント\">"
 
 #. type: Plain text
 #: apt.ent
@@ -662,28 +741,18 @@ msgstr ""
 "<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"セクション\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"キーID\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -693,12 +762,11 @@ msgid "command-line interface"
 msgstr "コマンドラインインターフェイス"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "説明"
 
@@ -764,6 +832,13 @@ msgstr ""
 "ん。パッケージのアップグレードにインストール済みパッケージの削除が必要な場"
 "合、そのパッケージのアップグレードは行われません。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -776,7 +851,7 @@ msgstr ""
 "パッケージを削除することができます。"
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -907,13 +982,21 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+#| "command> in that it can display a list of packages satisfying certain "
+#| "criteria.  It supports &glob; patterns for matching package names as well "
+#| "as options to list installed (<option>--installed</option>), upgradeable "
+#| "(<option>--upgradeable</option>) or all available (<option>--all-"
+#| "versions</option>) versions."
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 "<option>list</option> は、一定の基準を満たすパッケージのリストを表示すること"
 "ができるという点で、<command>dpkg-query --list</command> に似ています。インス"
@@ -937,6 +1020,20 @@ msgstr ""
 "list; ファイルを編集することができます。また、基本的な健全性チェックを提供し"
 "ます。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-cache;)"
+msgid "(summarised in &apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-get;)"
+msgid "(summarised in &apt-get;)"
+msgstr "(&apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -972,22 +1069,23 @@ msgstr ""
 "うべきです。"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "関連項目"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;、&apt-cache;、&sources-list;、&apt-conf;、&apt-config;、"
-"&guidesdir; にある APT ユーザガイド、&apt-preferences;、APT Howto."
+"&apt-get;、&apt-cache;、&sources-list;、&apt-conf;、&apt-config;、&apt-"
+"patterns;、&guidesdir; にある APT ユーザガイド、&apt-preferences;、APT Howto."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1138,10 +1236,10 @@ msgid ""
 msgstr ""
 "<literal>install</literal> の後には、インストールや更新したいパッケージを 1 "
 "つ以上指定します。指定するパッケージは、完全なファイル名ではなくパッケージ名"
-"です (例えば Debian システムでは、<filename>apt-utils_&apt-product-version;"
-"_amd64.deb</filename> ではなく <package>apt-utils</package> を引数として与え"
-"ます)。インストールするよう指定したすべてのパッケージに対し、依存パッケージも"
-"含めて取得・インストールを行います。<filename>/etc/apt/sources.list</"
+"です (例えば Debian システムでは、<filename>apt-utils_&apt-product-"
+"version;_amd64.deb</filename> ではなく <package>apt-utils</package> を引数と"
+"して与えます)。インストールするよう指定したすべてのパッケージに対し、依存パッ"
+"ケージも含めて取得・インストールを行います。<filename>/etc/apt/sources.list</"
 "filename> ファイルを、要求するパッケージの場所を特定するのに使用します。パッ"
 "ケージ名の後ろに (空白を含まず) ハイフンが追加されている場合、そのパッケージ"
 "がインストールされていれば削除します。同様に、インストールするパッケージを明"
@@ -1449,6 +1547,20 @@ msgstr ""
 "Installed</literal> に off をセットしていれば、インストール済みのパッケージ"
 "ファイルが削除されるのを防ぐことができます。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1549,8 +1661,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "修復 - 依存関係が壊れたシステムの修正を試みます。このオプションを install や "
 "remove と一緒に使うときは、APT が解決法を推測するので、パッケージを指定しなく"
@@ -1560,8 +1672,8 @@ msgstr ""
 "の依存関係構造にかなり問題がある場合は、手動で修正するよう要求することもあり"
 "ます。(通常は、問題のあるパッケージを取り除くのに <command>dpkg --remove</"
 "command> を使用します) このオプションを <option>-m</option> オプションと同時"
-"に使用すると、エラーになる状況があるかもしれません。設定項目: <literal>APT::"
-"Get::Fix-Broken</literal>"
+"に使用すると、エラーになる状況があるかもしれません。設定項目: "
+"<literal>APT::Get::Fix-Broken</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1579,8 +1691,8 @@ msgstr ""
 "で処理を続けます。このオプションを <option>-f</option> オプションと同時に使用"
 "すると、エラーになる状況があるかもしれません。パッケージをインストールするよ"
 "う選択している (特にコマンドラインでの操作する) 場合や、ダウンロードできな"
-"かった場合に、なにも表示せず保留することになります。設定項目: <literal>APT::"
-"Get::Fix-Missing</literal>"
+"かった場合に、なにも表示せず保留することになります。設定項目: "
+"<literal>APT::Get::Fix-Missing</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1626,13 +1738,13 @@ msgid ""
 "literal>."
 msgstr ""
 "何もしない - 現在のシステム状態に基づいて起こるイベントのシミュレーションを行"
-"い、実際にはシステムを変更しません。ロックは無効になる (<option>Debug::"
-"NoLocking</option>) ので、<command>apt-get</command> 実行中にシステムの状態が"
-"変化する可能性があります。シミュレーションは root 以外のユーザが実行できます"
-"が、シミュレーションを歪めるすべての apt 設定への読み取りアクセス権を持ってい"
-"ない可能性があります。この警告を表す通知は、root 以外のユーザではデフォルトで"
-"表示されます (<option>APT::Get::Show-User-Simulation-Note</option>)。設定項"
-"ç›®: <literal>APT::Get::Simulate</literal>"
+"い、実際にはシステムを変更しません。ロックは無効になる "
+"(<option>Debug::NoLocking</option>) ので、<command>apt-get</command> 実行中に"
+"システムの状態が変化する可能性があります。シミュレーションは root 以外のユー"
+"ザが実行できますが、シミュレーションを歪めるすべての apt 設定への読み取りアク"
+"セス権を持っていない可能性があります。この警告を表す通知は、root 以外のユーザ"
+"ではデフォルトで表示されます (<option>APT::Get::Show-User-Simulation-Note</"
+"option>)。設定項目: <literal>APT::Get::Simulate</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1665,11 +1777,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
-"全ての質問に、自動的に \"no\" と答えます。設定項目: <literal>APT::Get::"
-"Assume-No</literal>"
+"全ての質問に、自動的に \"no\" と答えます。設定項目: "
+"<literal>APT::Get::Assume-No</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1689,21 +1801,50 @@ msgstr ""
 "更新・インストールするパッケージのバージョンをすべて表示します。設定項目: "
 "<literal>APT::Get::Show-Versions</literal>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Re-install packages that are already installed and at the newest "
+#| "version.  Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"すでに最新版がインストールされていても、パッケージを再インストールします。設"
+"定項目: <literal>APT::Get::ReInstall</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Select the source override file to use with the <literal>sources</"
+#| "literal> command.  Configuration Item: "
+#| "<literal>APT::FTPArchive::SourceOverride</literal>."
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"<literal>sources</literal> コマンドで使用する、ソースオーバーライドファイルを"
+"選択します。設定項目: <literal>APT::FTPArchive::SourceOverride</literal>"
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "このオプションは、<command>apt-get source --compile</command> で構築するパッ"
 "ケージのアーキテクチャや、どのようにクロス依存関係を解決するかを制御します。"
-"デフォルトでは未定義で、これはホストアーキテクチャは、(<literal>APT::"
-"Architecture</literal> で定義した) ビルドアーキテクチャと同じという意味になり"
-"ます。設定項目: <literal>APT::Get::Host-Architecture</literal>。"
+"デフォルトでは未定義で、これはホストアーキテクチャは、"
+"(<literal>APT::Architecture</literal> で定義した) ビルドアーキテクチャと同じ"
+"という意味になります。設定項目: <literal>APT::Get::Host-Architecture</"
+"literal>。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1726,8 +1867,8 @@ msgid ""
 "Compile source packages after downloading them.  Configuration Item: "
 "<literal>APT::Get::Compile</literal>."
 msgstr ""
-"ソースパッケージをダウンロード後、コンパイルします。設定項目: <literal>APT::"
-"Get::Compile</literal>"
+"ソースパッケージをダウンロード後、コンパイルします。設定項目: "
+"<literal>APT::Get::Compile</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1771,8 +1912,8 @@ msgid ""
 msgstr ""
 "パッケージ更新なし -  <literal>install</literal> と同時に使用すると、"
 "<literal>no-upgrade</literal> は、コマンドラインで指定したパッケージが、すで"
-"にインストールしてある場合に更新を行いません。設定項目: <literal>APT::Get::"
-"Upgrade</literal>"
+"にインストールしてある場合に更新を行いません。設定項目: "
+"<literal>APT::Get::Upgrade</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1826,8 +1967,9 @@ msgid ""
 msgstr ""
 "強制承諾 - 保持されたパッケージを変更する場合でも、確認なしで実行してしまう危"
 "険なオプションです。よほどの状況でなければ、使うべきではありません。このオプ"
-"ションを使うと、システムを破壊しかねません! 設定項目: <literal>APT::Get::"
-"allow-change-held-packages</literal>。APT 1.1 で導入されました。"
+"ションを使うと、システムを破壊しかねません! 設定項目: "
+"<literal>APT::Get::allow-change-held-packages</literal>。APT 1.1 で導入されま"
+"した。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1866,8 +2008,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "インストールするファイルを取得する代わりに、その URI を表示します。URI には、"
 "パス、対象ファイル名、ファイルサイズ、予測される MD5 ハッシュが含まれていま"
@@ -1875,8 +2017,8 @@ msgstr ""
 "い、ということに注意してください! これは <literal>source</literal> コマンド、"
 "<literal>update</literal> コマンドでも動作します。<literal>update</literal> "
 "で使用したときには、MD5 やファイルサイズを含みません。このとき、圧縮ファイル"
-"の展開はユーザの責任において行ってください。設定項目: <literal>APT::Get::"
-"Print-URIs</literal>"
+"の展開はユーザの責任において行ってください。設定項目: "
+"<literal>APT::Get::Print-URIs</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1907,8 +2049,8 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "この機能はデフォルトで ON になっています。OFF にするには <literal>--no-list-"
 "cleanup</literal> としてください。ON の場合、<command>apt-get</command> は古"
@@ -1916,6 +2058,16 @@ msgstr ""
 "filename> の中身を管理します。これを OFF にするのは、取得元リストを頻繁に変更"
 "する時ぐらいでしょう。設定項目: <literal>APT::Get::List-Cleanup</literal>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1935,9 +2087,9 @@ msgstr ""
 "pin で留めるのを明示されたパッケージには、このオプションの値は影響を与えませ"
 "ん。つまりこのオプションで、どの配布パッケージを取得するかを簡単に管理しま"
 "す。一般的な例としては、<option>-t '2.1*'</option>, <option>-t unstable</"
-"option>, <option>-t sid</option> のようになります。設定項目: <literal>APT::"
-"Default-Release</literal>。&apt-preferences; のマニュアルページも参照してくだ"
-"さい。"
+"option>, <option>-t sid</option> のようになります。設定項目: "
+"<literal>APT::Default-Release</literal>。&apt-preferences; のマニュアルページ"
+"も参照してください。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2045,8 +2197,8 @@ msgstr ""
 "ローカルリポジトリでの作業中には有用ですが、ユーザ自身が別の方法でデータの信"
 "憑性を確保していない場合は、セキュリティ上の重大なリスクになります。&sources-"
 "list; エントリ用の <option>Trusted</option> オプションの使用は、通常グローバ"
-"ルオーバーライドよりも優先されるはずです。設定項目: <literal>APT::Get::"
-"AllowUnauthenticated</literal>"
+"ルオーバーライドよりも優先されるはずです。設定項目: "
+"<literal>APT::Get::AllowUnauthenticated</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2055,8 +2207,8 @@ msgstr ""
 #| "Forbid the update command to acquire unverifiable data from configured "
 #| "sources. APT will fail at the update command for repositories without "
 #| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
+#| "the concept and the implications.  Configuration Item: "
+#| "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2127,8 +2279,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "ファイル"
@@ -2136,13 +2309,13 @@ msgstr "ファイル"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, &guidesdir; にある APT ユーザガイド, &apt-preferences;, APT "
-"Howto"
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, &guidesdir; にある APT ユーザガイド, "
+"&apt-preferences;, APT Howto"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2502,21 +2675,20 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> は、コマンドライン上のパッケージ名から、<ulink "
-"url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink> パッ"
-"ケージの dotty コマンドで利用するのに便利な出力を生成します。結果はパッケージ"
-"の関係を表わす、ノード・エッジのセットで表現されます。デフォルトでは、すべて"
-"の依存パッケージをトレースするので、非常に大きい図が得られます。コマンドライ"
-"ンに列挙したパッケージだけを出力するように制限するには、<literal>APT::Cache::"
-"GivenOnly</literal> をセットしてください。"
+"url=\"https://graphviz.org/\">GraphViz</ulink> パッケージの dotty コマンドで"
+"利用するのに便利な出力を生成します。結果はパッケージの関係を表わす、ノード・"
+"エッジのセットで表現されます。デフォルトでは、すべての依存パッケージをトレー"
+"スするので、非常に大きい図が得られます。コマンドラインに列挙したパッケージだ"
+"けを出力するように制限するには、<literal>APT::Cache::GivenOnly</literal> を"
+"セットしてください。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2540,11 +2712,12 @@ msgstr "注意) dotty は、パッケージのより大きなセットのグラ
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
-"<literal>dotty</literal> と同様ですが、<ulink url=\"http://rw4.cs.uni-sb.de/"
-"users/sander/html/gsvcg1.html\">VCG tool</ulink> の xvcg 専用です。"
+"<literal>dotty</literal> と同様ですが、<ulink url=\"https://www.rw.cdl.uni-"
+"saarland.de/people/sander/private/html/gsvcg1.html\">VCG tool</ulink> の "
+"xvcg 専用です。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2571,8 +2744,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "<literal>apt-cache</literal> の <literal>madison</literal> コマンドは、"
 "Debian アーカイブ管理ツール <literal>madison</literal> の機能のサブセットで、"
@@ -2585,12 +2758,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "パッケージキャッシュを格納するファイルを選択します。パッケージキャッシュは、"
-"すべての操作で使用される一次キャッシュです。設定項目: <literal>Dir::Cache::"
-"pkgcache</literal>"
+"すべての操作で使用される一次キャッシュです。設定項目: "
+"<literal>Dir::Cache::pkgcache</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2636,9 +2809,9 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "デフォルトでは <command>depends</command> や <command>rdepends</command> は全"
 "依存関係を出力します。この挙動を、ここに挙げたフラグで指定した依存関係を省略"
@@ -2668,8 +2841,8 @@ msgid ""
 "Print full package records when searching.  Configuration Item: "
 "<literal>APT::Cache::ShowFull</literal>."
 msgstr ""
-"search 時に全パッケージレコードを表示します。設定項目: <literal>APT::Cache::"
-"ShowFull</literal>"
+"search 時に全パッケージレコードを表示します。設定項目: "
+"<literal>APT::Cache::ShowFull</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2685,8 +2858,8 @@ msgstr ""
 "効にするには <option>--no-all-versions</option> を使用してください。"
 "<option>--no-all-versions</option> を指定すると、候補バージョン (インストール"
 "の際に選択されるもの) だけ表示します。このオプションは、<literal>show</"
-"literal> コマンドでのみ適用できます。設定項目: <literal>APT::Cache::"
-"AllVersions</literal>"
+"literal> コマンドでのみ適用できます。設定項目: "
+"<literal>APT::Cache::AllVersions</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2712,8 +2885,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "<literal>pkgnames</literal> で、仮想パッケージや欠落依存関係を含めた全名称を"
 "表示します。設定項目: <literal>APT::Cache::AllNames</literal>"
@@ -2726,8 +2899,8 @@ msgid ""
 "<literal>APT::Cache::RecurseDepends</literal>."
 msgstr ""
 "<literal>depends</literal> や <literal>rdepends</literal> で、指定した全パッ"
-"ケージを再帰的に一度に表示します。設定項目: <literal>APT::Cache::"
-"RecurseDepends</literal>"
+"ケージを再帰的に一度に表示します。設定項目: "
+"<literal>APT::Cache::RecurseDepends</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2737,8 +2910,8 @@ msgid ""
 "<literal>APT::Cache::Installed</literal>."
 msgstr ""
 "<literal>depends</literal> や <literal>rdepends</literal> の出力を、現在イン"
-"ストールされているパッケージに限定します。設定項目: <literal>APT::Cache::"
-"Installed</literal>"
+"ストールされているパッケージに限定します。設定項目: "
+"<literal>APT::Cache::Installed</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2768,8 +2941,8 @@ msgstr ""
 "<literal>Sources</literal> 及び <literal>Packages</literal> は正しい拡張子を"
 "付けていれば APT がサポートする任意の形式で圧縮できます。このファイルを同じ"
 "ディレクトリに複数置く必要がある場合は、自分が付ける名前の部分の最後尾にアン"
-"ダースコア (「<literal>_</literal>」) を付加したものを先頭に付けます。例: my."
-"example_Packages.xz"
+"ダースコア (「<literal>_</literal>」) を付加したものを先頭に付けます。例: "
+"my.example_Packages.xz"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2782,8 +2955,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2794,315 +2967,6 @@ msgstr ""
 "<command>apt-cache</command> は正常終了時に 0 を返します。エラー時には十進の "
 "100 を返します。"
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "APT キー管理ユーティリティ"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> は、apt が パッケージを認証するのに使用するキーの"
-"一覧を管理するのに使用します。このキーで認証されたパッケージは、信頼するに足"
-"ると見なせるでしょう。"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "サポートするキーリングファイル"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"apt-key では拡張子「<literal>gpg</literal>」の付けられた OpenPGP のバイナリ形"
-"式 (いわゆる「GPG キー公開用リング」) を収録するファイルだけをサポートしま"
-"す。&gpg; のもっと新しいバージョンで導入されてキーリングファイルのデフォルト"
-"となっているキーボックスのデータベース形式はサポートしません。そのため、バー"
-"ジョンを問わず apt で利用するためのバイナリキーリングファイルの作成には常に "
-"<command>gpg --export</command> を使ってください。"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"また、作成したキーリングを利用するシステムにインストールされている apt のバー"
-"ジョンが全て 1.4 以降であれば、<command>gpg --armor --export</command> で作成"
-"する、拡張子に「<literal>asc</literal>」を付けられた保護付きアスキー形式を代"
-"わりに使うこともできます。 "
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "コマンド"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(非推奨)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"信頼キーのリストに新しいキーを追加します。このキーを &synopsis-param-"
-"filename; パラメータに与えたファイル名から読み込みますが、ファイル名を "
-"<literal>-</literal> とすると、標準入力から読み込みます。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"<command>apt-key</command> を使用して手動で追加されたキーは、リポジトリの所有"
-"者に所属していることが確認されていることが重要です。そうでなければ、&apt-"
-"secure; インフラが完全に損なわれます。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>注意</emphasis>: このコマンドを使う代わりに、キーリングに記述的な名"
-"前 (ファイル名については &apt-conf; ファイルと同一の規則が適用されます) を付"
-"けて、ファイルの拡張子を「<literal>gpg</literal>」または「<literal>asc</"
-"literal>」として <filename>/etc/apt/trusted.gpg.d/</filename> ディレクトリに"
-"直接配置する方法もあります。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "(deprecated)"
-msgid "(mostly deprecated)"
-msgstr "(非推奨)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "信頼キー一覧からキーを削除します。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "キー &synopsis-param-keyid; を標準出力に出力します。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "信頼するキーをすべて標準出力に出力します。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "信頼キーとそのフィンガープリントを一覧表示します。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid ""
-#| "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
-#| "can e.g. download key from keyservers directly into the the trusted set "
-#| "of keys. Note that there are <emphasis>no</emphasis> checks performed, so "
-#| "it is easy to completely undermine the &apt-secure; infrastructure if "
-#| "used without care."
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"gpg に高度なオプションを渡します。<command>adv --recv-key</command> を使用し"
-"て、例えば、キーサーバーから信頼されたキーに直接キーをダウンロードすることが"
-"できます。チェックが<emphasis>行われない</emphasis>ことに注意してください。注"
-"意せず使用するなら、容易に &apt-secure; インフラを完全に傷つけます。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"ローカルキーリングをアーカイブキーリングで更新し、もう有効でなくなったアーカ"
-"イブキーをローカルキーリングから削除します。アーカイブキーリングは、使用中の"
-"ディストリビューションにある <literal>archive-keyring</literal> パッケージ "
-"(例えば &keyring-distro; では &keyring-package; パッケージ) で提供されていま"
-"す。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"ディストリビューションでこのコマンドを使う必要はなく、実のところもはやこれを"
-"使うのではなくキーリングファイルを <filename>/etc/apt/trusted.gpg</filename> "
-"ディレクトリに直接配置すべきであることに注意してください。それによって "
-"<package>gnupg</package> への依存を回避でき、鍵の管理は単純にファイルを追加、"
-"削除するだけになるため、メンテナにとってもユーザにとっても同様に容易になりま"
-"す。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"上記の <command>update</command> コマンドと同様に更新しますが、アーカイブキー"
-"リングを URI から取得し、マスターキーを用いて検証します。これには &wget; のイ"
-"ンストールと、 APT のビルドに取得するサーバと検証するマスターキーリングが設定"
-"されていることが必要です。Debian での APT はこのコマンドをサポートしていませ"
-"ん。代わりに <command>update</command> を使用してください。Ubuntu の APT では"
-"有効です。"
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "オプション"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"前節で説明したコマンドの前に、このオプションを定義する必要があることに注意し"
-"てください。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"このオプションでは、コマンドが操作するべき特定のキーリングファイルを指定でき"
-"ます。デフォルトでは、<filename>trusted.gpg</filename> と <filename>trusted."
-"gpg.d</filename> ディレクトリにあるすべてのファイルを用いて、コマンドが動作し"
-"ます。とはいえ、<filename>trusted.gpg</filename> がプライマリキーリングになり"
-"ます。つまり新しいキーはこのファイルに追加されます。"
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Operation"
-msgid "Deprecation"
-msgstr "操作"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3114,8 +2978,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "統合フロントエンドとして使用することができます。例えば、パッケージを自動/手動"
@@ -3209,6 +3073,12 @@ msgstr ""
 "<literal>showmanual</literal> は <literal>showauto</literal> と同様に使用でき"
 "ますが、手動でインストールされたパッケージの一覧を表示します。"
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "オプション"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3280,6 +3150,13 @@ msgstr ""
 "ができます。dpkg 選択とも呼ぶこれらの詳細については、dpkg で見つけることがで"
 "きます。"
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3334,6 +3211,66 @@ msgstr ""
 "単純化するためだけに、その全てを参照するのに <literal>APT</literal> を使って"
 "います。"
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "ユーザ設定"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Note that a default installation already contains all keys to securely "
+#| "acquire packages from the default repositories, so fiddling with "
+#| "<command>apt-key</command> is only needed if third-party repositories are "
+#| "added."
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"デフォルトのインストールでは、すでにデフォルトのリポジトリからセキュアにパッ"
+"ケージを取得するためにすべてのキーが含まれていることに注意してください。その"
+"ため、サードパーティのリポジトリを追加している場合は <command>apt-key</"
+"command> で操作する必要があります。"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3559,54 +3496,6 @@ msgid ""
 "shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "ユーザ設定"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"<command>apt-key</command> は、リポジトリを信頼するために APT が使用するキー"
-"リストを管理するプログラムです。信頼されたキーのリストにキーを追加または削除"
-"するために使用することができます。キーが署名することができるアーカイブは、"
-"&sources-list; 中の <option>Signed-By</option> を介して制限可能です。"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"デフォルトのインストールでは、すでにデフォルトのリポジトリからセキュアにパッ"
-"ケージを取得するためにすべてのキーが含まれていることに注意してください。その"
-"ため、サードパーティのリポジトリを追加している場合は <command>apt-key</"
-"command> で操作する必要があります。"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-"新しいキーを追加するためには、まずキーをダウンロードする必要があります (取得"
-"する際には、信頼できる通信チャネルを使用するよう、特に留意してください)。取得"
-"したキーを、<command>apt-key</command> で追加し、<command>apt-get update</"
-"command> を実行してください。以上により、apt は設定済みのアーカイブから、"
-"<filename>InRelease</filename> ファイルや <filename>Release.gpg</filename> "
-"ファイルをダウンロード・検証できるようになります。"
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3638,8 +3527,8 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>署名</emphasis>します。<command>gpg --clearsign -o InRelease "
 "Release</command> や <command>gpg -abs -o Release.gpg Release</command> を実"
@@ -3689,9 +3578,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3700,16 +3593,16 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "詳細な背景情報を検証するのなら、Securing Debian Manual (harden-doc パッケージ"
 "にも収録) の <ulink url=\"http://www.debian.org/doc/manuals/securing-debian-"
-"howto/ch7\">Debian Security Infrastructure</ulink> 章や、V. Alex Brennen によ"
-"ã‚‹ <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" "
+"manual/ch07\">Debian Security Infrastructure</ulink> 章や、V. Alex Brennen に"
+"よる <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" "
 ">Strong Distribution HOWTO</ulink> をご覧ください。"
 
 #. type: Content of: <refentry><refsect1><title>
@@ -3766,9 +3659,9 @@ msgid ""
 msgstr ""
 "<literal>add</literal> は、新しいディスクを取得元リストに追加します。CD-ROM "
 "デバイスのアンマウントやディスク挿入のプロンプト表示の後に、ディスクのスキャ"
-"ンとインデックスファイルのコピーを行います。ディスクに正しい <filename>."
-"disk</filename> ディレクトリが存在しない場合、タイトルを入力するよう促しま"
-"す。"
+"ンとインデックスファイルのコピーを行います。ディスクに正しい "
+"<filename>.disk</filename> ディレクトリが存在しない場合、タイトルを入力するよ"
+"う促します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3794,8 +3687,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "CD-ROM パスの自動検出を試行しません。通常、<option>--cdrom</option> オプショ"
 "ンと組み合わせて使います。設定項目: <literal>Acquire::cdrom::AutoDetect</"
@@ -3827,8 +3720,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "マウントなし - <command>apt-cdrom</command> が、マウントポイントにマウント・"
 "アンマウントしないようにします。設定項目: <literal>APT::CDROM::NoMount</"
@@ -3867,8 +3760,8 @@ msgid ""
 "<literal>APT::CDROM::NoAct</literal>."
 msgstr ""
 "変更なし - &sources-list; ファイルの変更や、インデックスファイルの書き込みを"
-"行いません。とはいえ、すべてのチェックは行います。設定項目: <literal>APT::"
-"CDROM::NoAct</literal>"
+"行いません。とはいえ、すべてのチェックは行います。設定項目: "
+"<literal>APT::CDROM::NoAct</literal>"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cdrom.8.xml
@@ -3931,8 +3824,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "これは、MyApp::options の値をシェル環境変数 $OPTS にセットします。デフォルト"
 "値は <option>-f</option> となります。"
@@ -3980,9 +3873,9 @@ msgstr ""
 "各設定オプションの出力を定義します。&percnt;t はオプション名に、&percnt;f は"
 "完全オプション名に、&percnt;v はオプションの値に置換されます。大文字や特殊文"
 "字を使用する値は、安全を保証するために、RFC822 で定義されている quoted-"
-"string でエンコードされることになります。さらに、&percnt;n は改行に、&percnt;"
-"N はタブ文字になります。&percnt; を出力するには、&percnt;&percnt; としてくだ"
-"さい。"
+"string でエンコードされることになります。さらに、&percnt;n は改行に、"
+"&percnt;N はタブ文字になります。&percnt; を出力するには、&percnt;&percnt; と"
+"してください。"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
@@ -4053,9 +3946,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "<literal>Dir::Etc::Parts</literal> にあるすべてのファイルを英数字の昇順になり"
 "ます。ファイル名には拡張子がないか、\"<literal>conf</literal>\" となってお"
@@ -4103,9 +3996,9 @@ msgid ""
 "their parent groups."
 msgstr ""
 "設定ファイルは、機能グループごとに系統立てられたオプションを木構造で表しま"
-"す。オプションの指定は、2 つのコロンで区切ります。例えば <literal>APT::Get::"
-"Assume-Yes</literal> は、APT ツールグループの Get ツール用オプションです。オ"
-"プションは、親グループからは継承しません。"
+"す。オプションの指定は、2 つのコロンで区切ります。例えば "
+"<literal>APT::Get::Assume-Yes</literal> は、APT ツールグループの Get ツール用"
+"オプションです。オプションは、親グループからは継承しません。"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4338,6 +4231,55 @@ msgstr ""
 "add-architecture</command> を用いて、外部アーキテクチャをデフォルトリストに追"
 "加します。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4407,6 +4349,14 @@ msgstr ""
 "testing-codename;', '4.0', '5.0*'  となります。&apt-preferences; も参照してく"
 "ださい。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4582,6 +4532,38 @@ msgstr ""
 "CDROM サブセクションは &apt-cdrom; ツールを制御します。このオプションの詳細"
 "は &apt-cdrom; の文書を参照してください。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -4799,92 +4781,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> は、FTP URI を使用する際のデフォルトプロキシを"
-"設定します。<literal>ftp://[[user][:pass]@]host[:port]/</literal> という標準"
-"形で表します。ホストごとのプロキシを、<literal>ftp::Proxy::&lt;host&gt;</"
-"literal> という形で指定できます。この時、プロキシを使用しないという意味の特殊"
-"キーワード <literal>DIRECT</literal> も使用できます。上記の設定をなにも指定し"
-"ないと、環境変数 <envar>ftp_proxy</envar> を使用します。FTP プロキシを使用す"
-"るには、設定ファイルに <literal>ftp::ProxyLogin</literal> スクリプトを設定す"
-"る必要があります。このエントリには、接続する際にプロキシサーバに送信するコマ"
-"ンドを設定します。どのようにするのかは &configureindex; の例を参照してくださ"
-"い。URI を構成するコンポーネントに対応する置換変数は、"
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal>, <literal>$(SITE_PORT)</literal> です。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"<literal>timeout</literal> オプションは、この方法でのタイムアウトまでの時間を"
-"設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれていま"
-"す。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"設定のいくつかは、パッシブモードを制御するものです。一般的に、パッシブモード"
-"のままにしておく方が安全で、ほぼどんな環境でも動作します。しかしある状況下で"
-"は、パッシブモードが無効のため、代わりにポートモード FTP を使用する必要があり"
-"ます。この設定は、プロキシを通る接続や特定のホストへの接続全般に有効です (設"
-"定例はサンプル設定ファイルを参照してください)。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"環境変数 <envar>ftp_proxy</envar> に HTTP URL を指定すると FTP over HTTP のプ"
-"ロキシが利用可能になります。構文は前述の http についての説明を参照してくださ"
-"い。設定ファイルの中でこれをセットすることはできません。また、効率が悪いため "
-"FTP over HTTP を使用するのは推奨しません。"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"<literal>ForceExtended</literal> の設定は RFC2428 の <literal>EPSV</literal> "
-"コマンドと <literal>EPRT</literal> コマンドの使用を制御します。デフォルトで"
-"は false で、コントロールコネクションが IPv6 の時にのみ、このコマンドを使用す"
-"るということです。これを true にセットすると、IPv4 コネクションでも、強制的に"
-"このコマンドを使用します。ほとんどの FTP サーバは RFC2428 をサポートしていな"
-"いことに注意してください。"
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -4905,12 +4801,12 @@ msgid ""
 msgstr ""
 "<literal>cdrom</literal> メソッドを利用する URI では、設定できるオプションは"
 "マウントポイントだけです。<filename>/etc/fstab</filename> で設定されているよ"
-"うに、CD-ROM (または DVD など) ドライブのマウントポイントを <literal>cdrom::"
-"Mount</literal> に設定しなければなりません。マウントポイントが fstab に記述で"
-"きない場合、かわりにマウント・アンマウントコマンドも使用できます。構文は、"
-"<literal>cdrom</literal> ブロックを <placeholder type=\"literallayout\" "
-"id=\"0\"/> の形で記述します。スラッシュを後につけるのが重要です。アンマウント"
-"コマンドは UMount で指定することができます。"
+"うに、CD-ROM (または DVD など) ドライブのマウントポイントを "
+"<literal>cdrom::Mount</literal> に設定しなければなりません。マウントポイント"
+"が fstab に記述できない場合、かわりにマウント・アンマウントコマンドも使用でき"
+"ます。構文は、<literal>cdrom</literal> ブロックを <placeholder "
+"type=\"literallayout\" id=\"0\"/> の形で記述します。スラッシュを後につけるの"
+"が重要です。アンマウントコマンドは UMount で指定することができます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5076,9 +4972,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5087,21 +4983,21 @@ msgid ""
 "locale (where the order would be \"fr, de, en\").  <placeholder "
 "type=\"programlisting\" id=\"0\"/>"
 msgstr ""
-"デフォルトのリストには \"environment\" と \"en\" がありま"
-"す。\"<literal>environment</literal>\" はここでは特殊な意味があります。これは"
-"実行時に、<literal>LC_MESSAGES</literal> 環境変数から取得した言語コードに置換"
-"されます。また、このリストには、同じコードが2度現れないように確認してくださ"
-"い。<literal>LC_MESSAGES</literal> が \"C\" に設定されているだけの場合、"
+"デフォルトのリストには \"environment\" と \"en\" があります。"
+"\"<literal>environment</literal>\" はここでは特殊な意味があります。これは実行"
+"時に、<literal>LC_MESSAGES</literal> 環境変数から取得した言語コードに置換され"
+"ます。また、このリストには、同じコードが2度現れないように確認してください。"
+"<literal>LC_MESSAGES</literal> が \"C\" に設定されているだけの場合、"
 "<filename>Translation-en</filename> ファイルを (利用可能であれば) 使用しま"
 "す。強制的に APT が Translation ファイルを使用しないようにするには、"
-"<literal>Acquire::Languages=none</literal> と設定してくださ"
-"い。\"<literal>none</literal>\" はもうひとつの特殊な意味を持つコードで、適切"
-"な <filename>Translation</filename> ファイルの検索を中止します。環境から実際"
-"の言語を指定されなかった場合、この値を用いて APT に翻訳をダウンロードさせま"
-"す。そのため、以下の設定例では、英語ロケールの場合 \"en, de\" の順になり、ド"
-"イツ語ロケールの場合 \"de, en\" の順になります。\"fr\" はダウンロードされます"
-"が、フランス語ロケール (\"fr, de, en\" の順になる) でないと、APT が使用しない"
-"ことに注意してください。<placeholder type=\"programlisting\" id=\"0\"/>"
+"<literal>Acquire::Languages=none</literal> と設定してください。"
+"\"<literal>none</literal>\" はもうひとつの特殊な意味を持つコードで、適切な "
+"<filename>Translation</filename> ファイルの検索を中止します。環境から実際の言"
+"語を指定されなかった場合、この値を用いて APT に翻訳をダウンロードさせます。そ"
+"のため、以下の設定例では、英語ロケールの場合 \"en, de\" の順になり、ドイツ語"
+"ロケールの場合 \"de, en\" の順になります。\"fr\" はダウンロードされますが、フ"
+"ランス語ロケール (\"fr, de, en\" の順になる) でないと、APT が使用しないことに"
+"注意してください。<placeholder type=\"programlisting\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5203,44 +5099,118 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
 msgstr ""
 "URI は、それらを取得する場所から知られている場合は、変更履歴の取得のみ行うこ"
 "とができます。好ましいリリースファイルは、「変更履歴」フィールドでこのことを"
 "示します。これが利用できない場合、<literal>Acquire::Changelogs::URI::Label::"
-"<replaceable>LABEL</replaceable></literal> または <literal>Acquire::"
-"Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> オプショ"
-"ンが存在し、そしてこの値が取られてる場合は、リリースファイルの Label/Origin "
-"フィールドが確認するために使用されます。リリースファイル内の値は、"
-"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> または <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal> で上書きできます。その"
-"パッケージ固有のデータが <literal>@CHANGEPATH@</literal> プレースホルダに置き"
-"換えられている場合以外は、値はテキストファイルへの正常な URI にする必要があり"
-"ます。値は次の通りです: 1. パッケージがコンポーネント (例えば、"
-"<literal>main</literal>) からのものである場合、それ以外の場合は省略されている"
-"最初の部分です、2. ソースパッケージ名の最初の文字。ただし、ソースパッケージ名"
-"が '<literal>lib</literal>' で始まる場合を除きます (その場合は 最初の 4 文字"
-"になります)。3. 完全なソースパッケージ名。4. 再び完全な名前および 5. ソースの"
-"バージョン。(存在する場合は) 最初、第二、第三、第四の部分はスラッシュ "
-"('<literal>/</literal>') で区切られ、第四と第五の部分の間はアンダースコア "
-"('<literal>_</literal>') です。このソースから変更履歴を取得することができない"
-"ことを示す特別な値 '<literal>no</literal>' がこのオプションで利用可能です。こ"
-"の場合、可能であれば別のソースが試行されます。"
+"<replaceable>LABEL</replaceable></literal> または "
+"<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> オプションが存在し、そしてこの値が取られてる場合は、リ"
+"リースファイルの Label/Origin フィールドが確認するために使用されます。リリー"
+"スファイル内の値は、<literal>Acquire::Changelogs::URI::Override::Label::"
+"<replaceable>LABEL</replaceable></literal> または "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> で上書きできます。そのパッケージ固有のデータが "
+"<literal>@CHANGEPATH@</literal> プレースホルダに置き換えられている場合以外"
+"は、値はテキストファイルへの正常な URI にする必要があります。値は次の通りで"
+"す: 1. パッケージがコンポーネント (例えば、<literal>main</literal>) からのも"
+"のである場合、それ以外の場合は省略されている最初の部分です、2. ソースパッケー"
+"ジ名の最初の文字。ただし、ソースパッケージ名が '<literal>lib</literal>' で始"
+"まる場合を除きます (その場合は 最初の 4 文字になります)。3. 完全なソースパッ"
+"ケージ名。4. 再び完全な名前および 5. ソースのバージョン。(存在する場合は) 最"
+"初、第二、第三、第四の部分はスラッシュ ('<literal>/</literal>') で区切られ、"
+"第四と第五の部分の間はアンダースコア ('<literal>_</literal>') です。このソー"
+"スから変更履歴を取得することができないことを示す特別な値 '<literal>no</"
+"literal>' がこのオプションで利用可能です。この場合、可能であれば別のソースが"
+"試行されます。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Acquiring changelogs can only be done if an URI is known from where to "
+#| "get them.  Preferable the Release file indicates this in a 'Changelogs' "
+#| "field. If this isn't available the Label/Origin field of the Release file "
+#| "is used to check if a <literal>Acquire::Changelogs::URI::Label::"
+#| "<replaceable>LABEL</replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal> option exists and if so this value is taken. The "
+#| "value in the Release file can be overridden with "
+#| "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+#| "replaceable></literal> or "
+#| "<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+#| "replaceable></literal>.  The value should be a normal URI to a text file, "
+#| "except that package specific data is replaced with the placeholder "
+#| "<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package "
+#| "is from a component (e.g. <literal>main</literal>)  this is the first "
+#| "part otherwise it is omitted, 2. the first letter of source package name, "
+#| "except if the source package name starts with '<literal>lib</literal>' in "
+#| "which case it will be the first four letters. 3. The complete source "
+#| "package name. 4. the complete name again and 5. the source version.  The "
+#| "first (if present), second, third and fourth part are separated by a "
+#| "slash ('<literal>/</literal>')  and between the fourth and fifth part is "
+#| "an underscore ('<literal>_</literal>').  The special value '<literal>no</"
+#| "literal>' is available for this option indicating that this source can't "
+#| "be used to acquire changelog files from. Another source will be tried if "
+#| "available in this case."
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
+msgstr ""
+"URI は、それらを取得する場所から知られている場合は、変更履歴の取得のみ行うこ"
+"とができます。好ましいリリースファイルは、「変更履歴」フィールドでこのことを"
+"示します。これが利用できない場合、<literal>Acquire::Changelogs::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> または "
+"<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> オプションが存在し、そしてこの値が取られてる場合は、リ"
+"リースファイルの Label/Origin フィールドが確認するために使用されます。リリー"
+"スファイル内の値は、<literal>Acquire::Changelogs::URI::Override::Label::"
+"<replaceable>LABEL</replaceable></literal> または "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> で上書きできます。そのパッケージ固有のデータが "
+"<literal>@CHANGEPATH@</literal> プレースホルダに置き換えられている場合以外"
+"は、値はテキストファイルへの正常な URI にする必要があります。値は次の通りで"
+"す: 1. パッケージがコンポーネント (例えば、<literal>main</literal>) からのも"
+"のである場合、それ以外の場合は省略されている最初の部分です、2. ソースパッケー"
+"ジ名の最初の文字。ただし、ソースパッケージ名が '<literal>lib</literal>' で始"
+"まる場合を除きます (その場合は 最初の 4 文字になります)。3. 完全なソースパッ"
+"ケージ名。4. 再び完全な名前および 5. ソースのバージョン。(存在する場合は) 最"
+"初、第二、第三、第四の部分はスラッシュ ('<literal>/</literal>') で区切られ、"
+"第四と第五の部分の間はアンダースコア ('<literal>_</literal>') です。このソー"
+"スから変更履歴を取得することができないことを示す特別な値 '<literal>no</"
+"literal>' がこのオプションで利用可能です。この場合、可能であれば別のソースが"
+"試行されます。"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5252,9 +5222,9 @@ msgstr "バイナリユーザ設定"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "特に、<command>apt</command> のバイナリの導入では、<option>APT::Get::Show-"
 "Versions</option> が <command>apt</command> と同様に <command>apt-get</"
@@ -5326,15 +5296,15 @@ msgid ""
 "the default directory is contained in <literal>Dir::Cache</literal>"
 msgstr ""
 "<literal>Dir::Cache</literal> は、ローカルキャッシュ情報に関する場所を格納し"
-"ています。これは、ダウンロード済アーカイブの場所を示す <literal>Dir::Cache::"
-"archives</literal> と同様に、<literal>srcpkgcache</literal> と "
-"<literal>pkgcache</literal> のパッケージキャッシュの場所になります。"
-"<literal>pkgcache</literal> や <literal>srcpkgcache</literal> に "
+"ています。これは、ダウンロード済アーカイブの場所を示す "
+"<literal>Dir::Cache::archives</literal> と同様に、<literal>srcpkgcache</"
+"literal> と <literal>pkgcache</literal> のパッケージキャッシュの場所になりま"
+"す。<literal>pkgcache</literal> や <literal>srcpkgcache</literal> に "
 "<literal>\"\"</literal> をセットすることで、キャッシュの生成を無効にできま"
 "す。これにより起動時に遅くなりますが、ディスク容量を節約できます。おそらく、"
-"srcpkgcache よりも pkgcache を無効にすることが多いと思います。<literal>Dir::"
-"State</literal> と同様、<literal>Dir::Cache</literal> はデフォルトディレクト"
-"リを含んでいます。"
+"srcpkgcache よりも pkgcache を無効にすることが多いと思います。"
+"<literal>Dir::State</literal> と同様、<literal>Dir::Cache</literal> はデフォ"
+"ルトディレクトリを含んでいます。"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5364,19 +5334,19 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
+msgstr ""
+"バイナリプログラムは <literal>Dir::Bin</literal> で指定します。"
+"<literal>Dir::Bin::Methods</literal> はメソッドハンドラの場所を指定し、"
 "<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
 "<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
-msgstr ""
-"バイナリプログラムは <literal>Dir::Bin</literal> で指定します。<literal>Dir::"
-"Bin::Methods</literal> はメソッドハンドラの場所を指定し、<literal>gzip</"
-"literal>, <literal>bzip2</literal>, <literal>lzma</literal>, <literal>dpkg</"
-"literal>, <literal>apt-get</literal> <literal>dpkg-source</literal> "
-"<literal>dpkg-buildpackage</literal>, <literal>apt-cache</literal> はそれぞれ"
-"プログラムの場所を指定します。"
+"literal> <literal>dpkg-buildpackage</literal>, <literal>apt-cache</literal> "
+"はそれぞれプログラムの場所を指定します。"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5559,9 +5529,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "各設定ディレクティブ行は、<literal>key=value</literal> 形式です。特殊文字 "
 "(<literal>key</literal> 中のイコール記号、改行、非印字可能文字、引用符、およ"
@@ -5603,11 +5573,10 @@ msgid ""
 "it should be read as \"no\" and users are encouraged to support both."
 msgstr ""
 "バージョン 3 では、各バージョンフィールドの後に、このバージョンのアーキテク"
-"チャが続きます。バージョンなしの場合は \"-\" 、そして MultiArch 型 "
-"\"same\"、\"foreign\"、\"allowed\" または \"none\" を示すフィール"
-"ド。\"none\" は単に互換性を維持するために残された、誤った型名であることに注意"
-"してください。それは\"no\" と読まれるべきで、ユーザは両方をサポートすることを"
-"お勧めします。"
+"チャが続きます。バージョンなしの場合は \"-\" 、そして MultiArch 型 \"same\"、"
+"\"foreign\"、\"allowed\" または \"none\" を示すフィールド。\"none\" は単に互"
+"換性を維持するために残された、誤った型名であることに注意してください。それは"
+"\"no\" と読まれるべきで、ユーザは両方をサポートすることをお勧めします。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5688,10 +5657,11 @@ msgid ""
 "<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
 "this script for the brief documentation of these options."
 msgstr ""
-"オプションの <literal>APT::Periodic</literal> グループと <literal>APT::"
-"Archives</literal> グループは、<literal>/usr/lib/apt/apt.systemd.daily</"
-"literal> スクリプトを使用して、apt の定期更新の挙動を設定します。このオプショ"
-"ンのドキュメントは、このスクリプトの先頭を参照してください。"
+"オプションの <literal>APT::Periodic</literal> グループと "
+"<literal>APT::Archives</literal> グループは、<literal>/usr/lib/apt/"
+"apt.systemd.daily</literal> スクリプトを使用して、apt の定期更新の挙動を設定"
+"します。このオプションのドキュメントは、このスクリプトの先頭を参照してくださ"
+"い。"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5769,11 +5739,6 @@ msgid ""
 msgstr ""
 "<literal>cdrom://</literal> ソースへのアクセスに関する情報を出力します。"
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr "FTP を用いたパッケージのダウンロードに関する情報を出力します。"
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -5801,11 +5766,6 @@ msgstr ""
 "CD-ROM にあるパッケージ集合に対して、アクセスするプロセスについての情報を出力"
 "します。"
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr "&apt-get; での構築依存関係解決のプロセスを説明します。"
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -5888,8 +5848,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "依存関係解決のために、どのパッケージが自動的にインストールされたかのデバッグ"
 "メッセージを生成します。これは完全な <literal>apt</literal> 依存関係解決プロ"
@@ -5905,26 +5865,27 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "ProblemResolver が動作する際に、一時保留・インストール・削除としてマークされ"
 "たパッケージに関する、デバッグメッセージを生成します。各追加・削除は追加アク"
 "ションのトリガとなり、これをオリジナルのエントリの下に、空白 2 個でインデント"
 "して表示します。各行は、<literal>MarkKeep</literal>, <literal>MarkDelete</"
-"literal>, <literal>MarkInstall</literal> となり、<literal>package-name &lt;a."
-"b.c -&gt; d.e.f | x.y.z&gt; (section)</literal> が続きます。ここで、"
-"<literal>a.b.c</literal> は、そのパッケージの現在のバージョン、<literal>d.e."
-"f</literal>は、インストール予定のバージョン、<literal>x.y.z</literal> はより"
-"新しいけれどインストール対象外のバージョン (pin のスコアが低いため) です。後"
-"のふたつは、存在しない、ないしインストール中のバージョンと同じ場合、省略され"
-"ます。<literal>section</literal> はパッケージが現れるセクション名です。"
+"literal>, <literal>MarkInstall</literal> となり、<literal>package-name "
+"&lt;a.b.c -&gt; d.e.f | x.y.z&gt; (section)</literal> が続きます。ここで、"
+"<literal>a.b.c</literal> は、そのパッケージの現在のバージョン、"
+"<literal>d.e.f</literal>は、インストール予定のバージョン、<literal>x.y.z</"
+"literal> はより新しいけれどインストール対象外のバージョン (pin のスコアが低い"
+"ため) です。後のふたつは、存在しない、ないしインストール中のバージョンと同じ"
+"場合、省略されます。<literal>section</literal> はパッケージが現れるセクション"
+"名です。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5987,8 +5948,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 "<filename>/etc/apt/vendors.list</filename> から読み込んだ、ベンダの情報を出力"
 "します。"
@@ -5996,8 +5957,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 "aptのフックにより呼び出される外部コマンドを表示します。これには例えば、設定オ"
@@ -6197,9 +6158,9 @@ msgid ""
 "phased on this systems."
 msgstr ""
 "Debian の <literal>experimental</literal> アーカイブのように、"
-"<filename>Release</filename> ファイルに \"NotAutomatic: yes\" とマークさ"
-"れ、\"ButAutomaticUpgrades: yes\" とマークされて<emphasis>いない</emphasis>"
-"アーカイブ由来のバージョン。"
+"<filename>Release</filename> ファイルに \"NotAutomatic: yes\" とマークされ、"
+"\"ButAutomaticUpgrades: yes\" とマークされて<emphasis>いない</emphasis>アーカ"
+"イブ由来のバージョン。"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
 #: apt_preferences.5.xml
@@ -6441,6 +6402,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6487,9 +6469,9 @@ msgid ""
 "hostname \"ftp.de.debian.org\""
 msgstr ""
 "注意: ここで使われるキーワードは、ホスト名にマッチするのに使われる "
-"\"<literal>origin</literal>\" です。以下のレコードは、ホスト名が \"ftp.de."
-"debian.org\" で識別されるサーバ由来のすべてのバージョンに、高い優先度を割り当"
-"てます。"
+"\"<literal>origin</literal>\" です。以下のレコードは、ホスト名が "
+"\"ftp.de.debian.org\" で識別されるサーバ由来のすべてのバージョンに、高い優先"
+"度を割り当てます。"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -6753,9 +6735,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -6923,9 +6905,9 @@ msgstr "すると、以下のように動作します。"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "バージョン番号が \"<literal>&good-perl;</literal>\" で始まっていれば、"
 "<literal>perl</literal> の最新の利用可能パッケージがインストールされます。"
@@ -7046,8 +7028,8 @@ msgid ""
 "archive.  Specifying this value in the APT preferences file would require "
 "the line:"
 msgstr ""
-"このディレクトリツリーに属する全パッケージのアーカイブ名です。例え"
-"ば、\"Archive: stable\" や \"Suite: stable\" という行は、<filename>Release</"
+"このディレクトリツリーに属する全パッケージのアーカイブ名です。例えば、"
+"\"Archive: stable\" や \"Suite: stable\" という行は、<filename>Release</"
 "filename> ファイルの親ディレクトリツリー以下にある全パッケージが、"
 "<literal>stable</literal> アーカイブだと指定します。APT プリファレンスファイ"
 "ルでこの値を指定するには、以下の行が必要になります。"
@@ -7073,8 +7055,8 @@ msgid ""
 "testing-codename;</literal>.  Specifying this value in the APT preferences "
 "file would require the line:"
 msgstr ""
-"このディレクトリツリーに属する全パッケージのコード名です。たとえ"
-"ば、\"Codename: &debian-testing-codename;\" という行は、<filename>Release</"
+"このディレクトリツリーに属する全パッケージのコード名です。たとえば、"
+"\"Codename: &debian-testing-codename;\" という行は、<filename>Release</"
 "filename> ファイルの親ディレクトリツリー以下にある全パッケージが、"
 "<literal>&debian-testing-codename;</literal> と名前のついたバージョンであると"
 "指定します。APT プリファレンスファイルでこの値を指定するには、以下の行が必要"
@@ -7196,23 +7178,23 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "&sources-list; ファイルに列挙された場所から取得した <filename>Packages</"
 "filename> ファイルや <filename>Release</filename> ファイルはすべて、"
 "<filename>/var/lib/apt/lists</filename> ディレクトリや、<filename>apt.conf</"
 "filename> ファイルの <literal>Dir::State::Lists</literal> 変数で指定した場所"
-"に取得されます。例えば、<filename>debian.lcs.mit."
-"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> ファイルは、"
-"<literal>debian.lcs.mit.edu</literal> から取得した、<literal>unstable</"
-"literal> ディストリビューションで、<literal>contrib</literal> コンポーネント"
-"な、<literal>binary-i386</literal> アーキテクチャ用の <filename>Release</"
-"filename> ファイルを含んでいます。"
+"に取得されます。例えば、"
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> ファイルは、<literal>debian.lcs.mit.edu</literal> か"
+"ら取得した、<literal>unstable</literal> ディストリビューションで、"
+"<literal>contrib</literal> コンポーネントな、<literal>binary-i386</literal> "
+"アーキテクチャ用の <filename>Release</filename> ファイルを含んでいます。"
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -7565,6 +7547,16 @@ msgstr ""
 "定リストのパターンに一致するもの以外に対して、ファイルを無視するという注意を "
 "APT が出力します。一致する場合は黙って無視します。"
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7618,6 +7610,12 @@ msgstr ""
 "するので、マルチアーキテクチャのサポートの導入前には珍しいオプションに遭遇す"
 "ることを期待しないかもしれないことに注意してください。"
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -7869,10 +7867,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
-msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
+msgid ""
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "例として、あなたのディストリビューション用のソースは、1 行スタイル形式で次の"
 "ようになります: <placeholder type=\"literallayout\" id=\"0\"/> または deb822 "
@@ -7938,11 +7943,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) は値を複数取るオプション"
 "で、apt がその取得元から取得するダウンロード対象を定義します。指定しない場合"
@@ -8105,18 +8111,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>) は、(<literal>_apt</"
 "literal> ユーザがアクセス可能かつ読み取り可能な必要があり、つまりすべてのユー"
@@ -8143,8 +8148,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>) は、"
 "APT がリプレイ攻撃を検出するかどうかを制御する yes/no 値です。リポジトリの作"
@@ -8181,9 +8187,9 @@ msgstr ""
 "Until フィールドがないものを提供する場合、-Max は特に有用です。-Min は完全に"
 "チェックを無効にする代わりに (sources.list 同様にある) より頻繁に更新があるミ"
 "ラーの、あまりアクセスされないアーカイブの有効期間を増やすことができます。設"
-"定オプション <option>Acquire::Min-ValidTime</option> および <option>Acquire::"
-"Max-ValidTime</option> の値がデフォルトになり、その両方のデフォルト値は "
-"unset です。"
+"定オプション <option>Acquire::Min-ValidTime</option> および "
+"<option>Acquire::Max-ValidTime</option> の値がデフォルトになり、その両方のデ"
+"フォルト値は unset です。"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8217,6 +8223,35 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8323,43 +8358,6 @@ msgstr ""
 "るようにします。取得元リストに cdrom エントリを追加するには、&apt-cdrom; プロ"
 "グラムを使用してください。"
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-#, fuzzy
-#| msgid ""
-#| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
-#| "behavior is highly configurable; for more information see the &apt-conf; "
-#| "manual page. Please note that an FTP proxy can be specified by using the "
-#| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
-#| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-#| "environment variable and <emphasis>only</emphasis> this environment "
-#| "variable. Proxies using HTTP specified in the configuration file will be "
-#| "ignored."
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"ftp スキームは、アーカイブに FTP サーバを指定します。APT の FTP の振る舞い"
-"は、高度に設定できます。詳細は、&apt-conf; のマニュアルページをご覧ください。"
-"FTP プロキシは、<envar>ftp_proxy</envar> 環境変数で指定することに注意してくだ"
-"さい。この環境変数、さらにこの<emphasis>環境変数のみ</emphasis>を使用して、"
-"HTTP プロキシを使用できます (HTTP プロキシサーバは大抵 FTP URL も理解できま"
-"す)。設定ファイルで HTTP を利用するプロキシが指定してあっても、無視されます。"
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8372,20 +8370,6 @@ msgstr ""
 "キャッシュディレクトリにコピーするところが違います。リムーバブルメディアを使"
 "用していて、APT でコピーを行う場合に便利です。"
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"rsh/ssh メソッドは、与えられたユーザでリモートホストに接続し、ファイルにアク"
-"セスするのに rsh/ssh を使用します。あらかじめ rhosts や RSA キーの設定をして"
-"おくことをお勧めします。リモートホストからのファイル転送に、標準の "
-"<command>find</command> コマンドと <command>dd</command> コマンドを使用しま"
-"す。"
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8575,62 +8559,62 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"ftp.debian.org のアーカイブに FTP アクセスし、debian ディレクトリ以下の "
+"deb.debian.org のアーカイブに HTTPS アクセスし、debian ディレクトリ以下の "
 "&debian-stable-codename;/contrib のみを使用します。"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"ftp.debian.org のアーカイブに FTP アクセスし、debian ディレクトリ以下の "
+"deb.debian.org のアーカイブに HTTPS アクセスし、debian ディレクトリ以下の "
 "unstable/contrib のみを使用します。<filename>sources.list</filename> に上記サ"
-"ンプルと一緒に指定された場合、両方のリソース行に対応する FTP セッションはひと"
-"つだけになります。"
+"ンプルと一緒に指定された場合、両方のリソース行に対応する HTTPS セッションはひ"
+"とつだけになります。"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -8763,17 +8747,17 @@ msgid ""
 "<filename>package.config.XXXXXX</filename>"
 msgstr ""
 "テンプレートファイルや、設定スクリプトは、<option>-t</option> や <option>--"
-"tempdir</option> で指定した一時ディレクトリ (<literal>APT::ExtractTemplates::"
-"TempDir</literal>) に書き出され、ファイル名は、<filename>package.template."
-"XXXXXX</filename> や <filename>package.config.XXXXXX</filename> といった形に"
-"なります。"
+"tempdir</option> で指定した一時ディレクトリ "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) に書き出され、ファイル名"
+"は、<filename>package.template.XXXXXX</filename> や "
+"<filename>package.config.XXXXXX</filename> といった形になります。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "抽出した <command>debconf</command> テンプレートファイルや設定スクリプトを書"
 "き出す一時ディレクトリ。設定項目: <literal>APT::ExtractTemplates::TempDir</"
@@ -8815,8 +8799,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "ソースインデックスフィールド順に並べ替えに使用します。設定項目: "
 "<literal>APT::SortPkgs::Source</literal>"
@@ -8945,10 +8929,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "<literal>release</literal> コマンドは、ディレクトリツリーから Release ファイ"
 "ルを生成します。与えたディレクトリを再帰的に検索し、未圧縮の "
@@ -8976,15 +8960,16 @@ msgid ""
 "<literal>Architectures</literal>, <literal>Components</literal> and "
 "<literal>Description</literal>."
 msgstr ""
-"Release ファイルの追加メタデータフィールドの値は、<literal>APT::FTPArchive::"
-"Release</literal> 以下の相当する値 (例: <literal>APT::FTPArchive::Release::"
-"Origin</literal>) をとります。サポートするフィールドは、<literal>Origin</"
-"literal>, <literal>Label</literal>, <literal>Suite</literal>, "
-"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</"
-"literal>, <literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</"
-"literal>, <literal>Acquire-By-Hash</literal>, <literal>Valid-Until</"
-"literal>, <literal>Signed-By</literal>, <literal>Architectures</literal>, "
-"<literal>Components</literal>, <literal>Description</literal> です。"
+"Release ファイルの追加メタデータフィールドの値は、"
+"<literal>APT::FTPArchive::Release</literal> 以下の相当する値 (例: "
+"<literal>APT::FTPArchive::Release::Origin</literal>) をとります。サポートする"
+"フィールドは、<literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal>, "
+"<literal>Description</literal> です。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9119,8 +9104,8 @@ msgid ""
 "Sets the default list of file extensions that are package files.  This "
 "defaults to '.deb'."
 msgstr ""
-"パッケージファイル拡張子のデフォルト値を列挙します。このデフォルト値は '."
-"deb' です。"
+"パッケージファイル拡張子のデフォルト値を列挙します。このデフォルト値は "
+"'.deb' です。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9197,8 +9182,8 @@ msgstr "<literal>TreeDefault</literal> セクション"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "特定の <literal>Tree</literal> セクションのデフォルトを設定します。これらの変"
 "数はすべて置換変数であり、文字列 $(DIST), $(SECTION), $(ARCH) をそれぞれの値"
@@ -9233,17 +9218,17 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
-".deb ディレクトリツリーの先頭を設定します。デフォルトは <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename> です。"
+".deb ディレクトリツリーの先頭を設定します。デフォルトは <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename> です。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "ソースパッケージディレクトリツリーの先頭を設定します。デフォルトは "
 "<filename>$(DIST)/$(SECTION)/source/</filename> です。"
@@ -9254,8 +9239,8 @@ msgid ""
 "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "binary-$(ARCH)/Packages</filename>"
 msgstr ""
-"Packages ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/Packages</filename> です。"
+"Packages ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/Packages</filename> です。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9263,19 +9248,19 @@ msgid ""
 "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "source/Sources</filename>"
 msgstr ""
-"Sources ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/"
-"$(SECTION)/source/Sources</filename> です。"
+"Sources ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/$"
+"(SECTION)/source/Sources</filename> です。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "万一 Packages ファイルに含まれていない場合、長い説明文がある Translation-en "
-"マスターファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/"
-"$(SECTION)/i18n/Translation-en</filename> です。"
+"マスターファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/$"
+"(SECTION)/i18n/Translation-en</filename> です。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9296,8 +9281,8 @@ msgid ""
 "ftparchive</command> will integrate those package files together "
 "automatically."
 msgstr ""
-"Contents ファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/"
-"$(SECTION)/Contents-$(ARCH)</filename> です。複数の Packages ファイルをひとつ"
+"Contents ファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/$"
+"(SECTION)/Contents-$(ARCH)</filename> です。複数の Packages ファイルをひとつ"
 "の Contents ファイルにまとめられる設定 (デフォルト) の場合、<command>apt-"
 "ftparchive</command> は自動でパッケージファイルをまとめます。"
 
@@ -9691,11 +9676,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
-"キャッシュデータベースを読み取り専用にします。設定項目: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>"
+"キャッシュデータベースを読み取り専用にします。設定項目: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9886,16 +9871,16 @@ msgstr "サンプル"
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
@@ -10064,16 +10049,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -10097,14 +10083,14 @@ msgstr ""
 #| "store the requested archive files in its cache, which can be used to "
 #| "prevent the proxy from polluting its cache with (big) .deb files."
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "HTTP/1.1 準拠のプロキシキャッシュの制御について 3 種類の設定があります。"
 "<literal>No-Cache</literal> はプロキシに対して、いかなる時もキャッシュを使用"
@@ -10133,11 +10119,11 @@ msgstr "ユーザ設定"
 #| "</literal> or the word <literal>DIRECT</literal> if no proxy should be "
 #| "used. No output indicates that the generic proxy settings should be "
 #| "used.  Note that auto-detection will not be used for a host if a host-"
-#| "specific proxy configuration is already set via <literal>Acquire::http::"
-#| "Proxy::<replaceable>HOST</replaceable></literal>.  See the &squid-deb-"
-#| "proxy-client; package for an example implementation that uses avahi.  "
-#| "This option takes precedence over the legacy option name "
-#| "<literal>ProxyAutoDetect</literal>."
+#| "specific proxy configuration is already set via "
+#| "<literal>Acquire::http::Proxy::<replaceable>HOST</replaceable></"
+#| "literal>.  See the &squid-deb-proxy-client; package for an example "
+#| "implementation that uses avahi.  This option takes precedence over the "
+#| "legacy option name <literal>ProxyAutoDetect</literal>."
 msgid ""
 "<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
 "an external command to discover the HTTP proxy to use. The first and only "
@@ -10177,8 +10163,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10237,12 +10223,12 @@ msgstr ""
 #| "by setting the value to 0. It is enabled by default with the value 10."
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "<literal>Acquire::http::Pipeline-Depth</literal> の設定は、例えばレイテンシの"
 "高い接続で有益な HTTP パイプライン (RFC 2616 8.1.2.2 節) を有効にするのに使用"
@@ -10339,9 +10325,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10370,9 +10356,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -10418,11 +10405,11 @@ msgstr ""
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -10624,9 +10611,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
@@ -10646,9 +10633,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
 #: apt-transport-mirror.1.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
@@ -11028,6 +11015,16 @@ msgstr ""
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -11208,6 +11205,17 @@ msgstr ""
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 #, fuzzy
@@ -11252,6 +11260,16 @@ msgstr ""
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -11305,8 +11323,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -11428,10 +11446,10 @@ msgstr ""
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -11691,13 +11709,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"取得 http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"取得 http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "取得 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "パッケージリストを読み込んでいます... 完了\n"
 
@@ -11864,8 +11882,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -11877,8 +11894,7 @@ msgstr ""
 "\n"
 " 例:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -11900,26 +11916,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " 取得するディストリビューションのタグやパッケージファイルへのパスを\n"
 " / で終える形式で指定してください。ディストリビューションのタグには\n"
-" 以下のようなものがあります: stable unstable testing non-US\n"
+" 以下のようなものがあります: stable unstable testing\n"
 "\n"
 " ディストリビューション [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "ディストリビューションはアーカイブ中の Debian バージョンを参照し、"
 "<emphasis>stable</emphasis> は最新のリリース版を、<emphasis>unstable</"
@@ -11999,8 +12020,8 @@ msgid ""
 "<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
 msgstr ""
 "デフォルトで APT はインストールに成功したパッケージ (.deb) ファイルを自動的に"
-"削除します。この挙動を変更するには /etc/apt/apt.conf 中に <literal>Dselect::"
-"clean \"prompt\";</literal> と記述します。"
+"削除します。この挙動を変更するには /etc/apt/apt.conf 中に "
+"<literal>Dselect::clean \"prompt\";</literal> と記述します。"
 
 #. type: Content of: <book><chapter><title>
 #: guide.dbk
@@ -12462,18 +12483,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"取得:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"取得:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "取得:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "ヒット http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"取得:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"取得:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "取得:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13002,6 +13023,353 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr "これで、ディスクにある取得済みのアーカイブを使用するようになります。"
 
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> は、FTP URI を使用する際のデフォルトプロキシ"
+#~ "を設定します。<literal>ftp://[[user][:pass]@]host[:port]/</literal> という"
+#~ "標準形で表します。ホストごとのプロキシを、"
+#~ "<literal>ftp::Proxy::&lt;host&gt;</literal> という形で指定できます。この"
+#~ "時、プロキシを使用しないという意味の特殊キーワード <literal>DIRECT</"
+#~ "literal> も使用できます。上記の設定をなにも指定しないと、環境変数 "
+#~ "<envar>ftp_proxy</envar> を使用します。FTP プロキシを使用するには、設定"
+#~ "ファイルに <literal>ftp::ProxyLogin</literal> スクリプトを設定する必要があ"
+#~ "ります。このエントリには、接続する際にプロキシサーバに送信するコマンドを設"
+#~ "定します。どのようにするのかは &configureindex; の例を参照してください。"
+#~ "URI を構成するコンポーネントに対応する置換変数は、<literal>$(PROXY_USER)</"
+#~ "literal>, <literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</"
+#~ "literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal>, "
+#~ "<literal>$(SITE_PORT)</literal> です。"
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "<literal>timeout</literal> オプションは、この方法でのタイムアウトまでの時"
+#~ "間を設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれ"
+#~ "ています。"
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "設定のいくつかは、パッシブモードを制御するものです。一般的に、パッシブモー"
+#~ "ドのままにしておく方が安全で、ほぼどんな環境でも動作します。しかしある状況"
+#~ "下では、パッシブモードが無効のため、代わりにポートモード FTP を使用する必"
+#~ "要があります。この設定は、プロキシを通る接続や特定のホストへの接続全般に有"
+#~ "効です (設定例はサンプル設定ファイルを参照してください)。"
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "環境変数 <envar>ftp_proxy</envar> に HTTP URL を指定すると FTP over HTTP "
+#~ "のプロキシが利用可能になります。構文は前述の http についての説明を参照して"
+#~ "ください。設定ファイルの中でこれをセットすることはできません。また、効率が"
+#~ "悪いため FTP over HTTP を使用するのは推奨しません。"
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "<literal>ForceExtended</literal> の設定は RFC2428 の <literal>EPSV</"
+#~ "literal> コマンドと <literal>EPRT</literal> コマンドの使用を制御します。デ"
+#~ "フォルトでは false で、コントロールコネクションが IPv6 の時にのみ、このコ"
+#~ "マンドを使用するということです。これを true にセットすると、IPv4 コネク"
+#~ "ションでも、強制的にこのコマンドを使用します。ほとんどの FTP サーバは "
+#~ "RFC2428 をサポートしていないことに注意してください。"
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr "FTP を用いたパッケージのダウンロードに関する情報を出力します。"
+
+#, fuzzy
+#~| msgid ""
+#~| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
+#~| "behavior is highly configurable; for more information see the &apt-conf; "
+#~| "manual page. Please note that an FTP proxy can be specified by using the "
+#~| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~| "environment variable and <emphasis>only</emphasis> this environment "
+#~| "variable. Proxies using HTTP specified in the configuration file will be "
+#~| "ignored."
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "ftp スキームは、アーカイブに FTP サーバを指定します。APT の FTP の振る舞い"
+#~ "は、高度に設定できます。詳細は、&apt-conf; のマニュアルページをご覧くださ"
+#~ "い。FTP プロキシは、<envar>ftp_proxy</envar> 環境変数で指定することに注意"
+#~ "してください。この環境変数、さらにこの<emphasis>環境変数のみ</emphasis>を"
+#~ "使用して、HTTP プロキシを使用できます (HTTP プロキシサーバは大抵 FTP URL "
+#~ "も理解できます)。設定ファイルで HTTP を利用するプロキシが指定してあって"
+#~ "も、無視されます。"
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "rsh/ssh メソッドは、与えられたユーザでリモートホストに接続し、ファイルにア"
+#~ "クセスするのに rsh/ssh を使用します。あらかじめ rhosts や RSA キーの設定を"
+#~ "しておくことをお勧めします。リモートホストからのファイル転送に、標準の "
+#~ "<command>find</command> コマンドと <command>dd</command> コマンドを使用し"
+#~ "ます。"
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"キーID\">"
+
+#, fuzzy
+#~| msgid "APT key management utility"
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "APT キー管理ユーティリティ"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> は、apt が パッケージを認証するのに使用するキー"
+#~ "の一覧を管理するのに使用します。このキーで認証されたパッケージは、信頼する"
+#~ "に足ると見なせるでしょう。"
+
+#~ msgid "Supported keyring files"
+#~ msgstr "サポートするキーリングファイル"
+
+#~ msgid ""
+#~ "apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+#~ "public ring\") in files with the \"<literal>gpg</literal>\" extension, "
+#~ "not the keybox database format introduced in newer &gpg; versions as "
+#~ "default for keyring files. Binary keyring files intended to be used with "
+#~ "any apt version should therefore always be created with <command>gpg --"
+#~ "export</command>."
+#~ msgstr ""
+#~ "apt-key では拡張子「<literal>gpg</literal>」の付けられた OpenPGP のバイナ"
+#~ "リ形式 (いわゆる「GPG キー公開用リング」) を収録するファイルだけをサポート"
+#~ "します。&gpg; のもっと新しいバージョンで導入されてキーリングファイルのデ"
+#~ "フォルトとなっているキーボックスのデータベース形式はサポートしません。その"
+#~ "ため、バージョンを問わず apt で利用するためのバイナリキーリングファイルの"
+#~ "作成には常に <command>gpg --export</command> を使ってください。"
+
+#~ msgid ""
+#~ "Alternatively, if all systems which should be using the created keyring "
+#~ "have at least apt version >= 1.4 installed, you can use the ASCII armored "
+#~ "format with the \"<literal>asc</literal>\" extension instead which can be "
+#~ "created with <command>gpg --armor --export</command>."
+#~ msgstr ""
+#~ "また、作成したキーリングを利用するシステムにインストールされている apt の"
+#~ "バージョンが全て 1.4 以降であれば、<command>gpg --armor --export</"
+#~ "command> で作成する、拡張子に「<literal>asc</literal>」を付けられた保護付"
+#~ "きアスキー形式を代わりに使うこともできます。 "
+
+#~ msgid "Commands"
+#~ msgstr "コマンド"
+
+#~ msgid "(deprecated)"
+#~ msgstr "(非推奨)"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "信頼キーのリストに新しいキーを追加します。このキーを &synopsis-param-"
+#~ "filename; パラメータに与えたファイル名から読み込みますが、ファイル名を "
+#~ "<literal>-</literal> とすると、標準入力から読み込みます。"
+
+#~ msgid ""
+#~ "It is critical that keys added manually via <command>apt-key</command> "
+#~ "are verified to belong to the owner of the repositories they claim to be "
+#~ "for otherwise the &apt-secure; infrastructure is completely undermined."
+#~ msgstr ""
+#~ "<command>apt-key</command> を使用して手動で追加されたキーは、リポジトリの"
+#~ "所有者に所属していることが確認されていることが重要です。そうでなければ、"
+#~ "&apt-secure; インフラが完全に損なわれます。"
+
+#~ msgid ""
+#~ "<emphasis>Note</emphasis>: Instead of using this command a keyring should "
+#~ "be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+#~ "directory with a descriptive name and either \"<literal>gpg</literal>\" "
+#~ "or \"<literal>asc</literal>\" as file extension."
+#~ msgstr ""
+#~ "<emphasis>注意</emphasis>: このコマンドを使う代わりに、キーリングに記述的"
+#~ "な名前 (ファイル名については &apt-conf; ファイルと同一の規則が適用されま"
+#~ "す) を付けて、ファイルの拡張子を「<literal>gpg</literal>」または"
+#~ "「<literal>asc</literal>」として <filename>/etc/apt/trusted.gpg.d/</"
+#~ "filename> ディレクトリに直接配置する方法もあります。"
+
+#, fuzzy
+#~| msgid "(deprecated)"
+#~ msgid "(mostly deprecated)"
+#~ msgstr "(非推奨)"
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "信頼キー一覧からキーを削除します。"
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr "キー &synopsis-param-keyid; を標準出力に出力します。"
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "信頼するキーをすべて標準出力に出力します。"
+
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "信頼キーとそのフィンガープリントを一覧表示します。"
+
+#, fuzzy
+#~| msgid ""
+#~| "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~| "can e.g. download key from keyservers directly into the the trusted set "
+#~| "of keys. Note that there are <emphasis>no</emphasis> checks performed, "
+#~| "so it is easy to completely undermine the &apt-secure; infrastructure if "
+#~| "used without care."
+#~ msgid ""
+#~ "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~ "can e.g. download key from keyservers directly into the trusted set of "
+#~ "keys. Note that there are <emphasis>no</emphasis> checks performed, so it "
+#~ "is easy to completely undermine the &apt-secure; infrastructure if used "
+#~ "without care."
+#~ msgstr ""
+#~ "gpg に高度なオプションを渡します。<command>adv --recv-key</command> を使用"
+#~ "して、例えば、キーサーバーから信頼されたキーに直接キーをダウンロードするこ"
+#~ "とができます。チェックが<emphasis>行われない</emphasis>ことに注意してくだ"
+#~ "さい。注意せず使用するなら、容易に &apt-secure; インフラを完全に傷つけま"
+#~ "す。"
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "ローカルキーリングをアーカイブキーリングで更新し、もう有効でなくなったアー"
+#~ "カイブキーをローカルキーリングから削除します。アーカイブキーリングは、使用"
+#~ "中のディストリビューションにある <literal>archive-keyring</literal> パッ"
+#~ "ケージ (例えば &keyring-distro; では &keyring-package; パッケージ) で提供"
+#~ "されています。"
+
+#~ msgid ""
+#~ "Note that a distribution does not need to and in fact should not use this "
+#~ "command any longer and instead ship keyring files in the <filename>/etc/"
+#~ "apt/trusted.gpg.d/</filename> directory directly as this avoids a "
+#~ "dependency on <package>gnupg</package> and it is easier to manage keys by "
+#~ "simply adding and removing files for maintainers and users alike."
+#~ msgstr ""
+#~ "ディストリビューションでこのコマンドを使う必要はなく、実のところもはやこれ"
+#~ "を使うのではなくキーリングファイルを <filename>/etc/apt/trusted.gpg</"
+#~ "filename> ディレクトリに直接配置すべきであることに注意してください。それに"
+#~ "よって <package>gnupg</package> への依存を回避でき、鍵の管理は単純にファイ"
+#~ "ルを追加、削除するだけになるため、メンテナにとってもユーザにとっても同様に"
+#~ "容易になります。"
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "上記の <command>update</command> コマンドと同様に更新しますが、アーカイブ"
+#~ "キーリングを URI から取得し、マスターキーを用いて検証します。これには "
+#~ "&wget; のインストールと、 APT のビルドに取得するサーバと検証するマスター"
+#~ "キーリングが設定されていることが必要です。Debian での APT はこのコマンドを"
+#~ "サポートしていません。代わりに <command>update</command> を使用してくださ"
+#~ "い。Ubuntu の APT では有効です。"
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "前節で説明したコマンドの前に、このオプションを定義する必要があることに注意"
+#~ "してください。"
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "このオプションでは、コマンドが操作するべき特定のキーリングファイルを指定で"
+#~ "きます。デフォルトでは、<filename>trusted.gpg</filename> と "
+#~ "<filename>trusted.gpg.d</filename> ディレクトリにあるすべてのファイルを用"
+#~ "いて、コマンドが動作します。とはいえ、<filename>trusted.gpg</filename> が"
+#~ "プライマリキーリングになります。つまり新しいキーはこのファイルに追加されま"
+#~ "す。"
+
+#, fuzzy
+#~| msgid "Operation"
+#~ msgid "Deprecation"
+#~ msgstr "操作"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "<command>apt-key</command> は、リポジトリを信頼するために APT が使用する"
+#~ "キーリストを管理するプログラムです。信頼されたキーのリストにキーを追加また"
+#~ "は削除するために使用することができます。キーが署名することができるアーカイ"
+#~ "ブは、&sources-list; 中の <option>Signed-By</option> を介して制限可能で"
+#~ "す。"
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "新しいキーを追加するためには、まずキーをダウンロードする必要があります (取"
+#~ "得する際には、信頼できる通信チャネルを使用するよう、特に留意してくださ"
+#~ "い)。取得したキーを、<command>apt-key</command> で追加し、<command>apt-"
+#~ "get update</command> を実行してください。以上により、apt は設定済みのアー"
+#~ "カイブから、<filename>InRelease</filename> ファイルや "
+#~ "<filename>Release.gpg</filename> ファイルをダウンロード・検証できるように"
+#~ "なります。"
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr "&apt-get; での構築依存関係解決のプロセスを説明します。"
+
 #~ msgid "Regular expressions and &glob; syntax"
 #~ msgstr "正規表現と &glob; 構文"
 
@@ -13025,20 +13393,20 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用
 
 #~ msgid ""
 #~ "<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
-#~ "URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:"
-#~ "port]/</literal>.  Per host proxies can also be specified by using the "
-#~ "form <literal>http::Proxy::&lt;host&gt;</literal> with the special "
-#~ "keyword <literal>DIRECT</literal> meaning to use no proxies. If no one of "
-#~ "the above settings is specified, <envar>http_proxy</envar> environment "
-#~ "variable will be used."
+#~ "URIs. It is in the standard form of <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>http::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>http_proxy</envar> "
+#~ "environment variable will be used."
 #~ msgstr ""
 #~ "<literal>http::Proxy</literal> には、HTTP URI で使用するデフォルトプロキシ"
 #~ "を設定します。<literal>http://[[user][:pass]@]host[:port]/</literal> とい"
-#~ "う標準形で表します。ホストごとのプロキシを、<literal>http::Proxy::&lt;"
-#~ "host&gt;</literal> という形で指定できます。この時、プロキシを使用しないと"
-#~ "いう意味の特殊キーワード <literal>DIRECT</literal> も使用できます。上記の"
-#~ "設定をなにも指定しないと、環境変数 <envar>http_proxy</envar> を使用しま"
-#~ "す。"
+#~ "う標準形で表します。ホストごとのプロキシを、"
+#~ "<literal>http::Proxy::&lt;host&gt;</literal> という形で指定できます。この"
+#~ "時、プロキシを使用しないという意味の特殊キーワード <literal>DIRECT</"
+#~ "literal> も使用できます。上記の設定をなにも指定しないと、環境変数 "
+#~ "<envar>http_proxy</envar> を使用します。"
 
 #~ msgid ""
 #~ "The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
@@ -13060,19 +13428,19 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用
 #~ "info about trusted certificates.  <literal>&lt;host&gt;::CaInfo</literal> "
 #~ "is the corresponding per-host option.  <literal>Verify-Peer</literal> "
 #~ "boolean suboption determines whether or not the server's host certificate "
-#~ "should be verified against trusted certificates.  <literal>&lt;host&gt;::"
-#~ "Verify-Peer</literal> is the corresponding per-host option.  "
-#~ "<literal>Verify-Host</literal> boolean suboption determines whether or "
-#~ "not the server's hostname should be verified.  <literal>&lt;host&gt;::"
-#~ "Verify-Host</literal> is the corresponding per-host option.  "
-#~ "<literal>SslCert</literal> determines what certificate to use for client "
-#~ "authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
-#~ "corresponding per-host option.  <literal>SslKey</literal> determines what "
-#~ "private key to use for client authentication. <literal>&lt;host&gt;::"
-#~ "SslKey</literal> is the corresponding per-host option.  "
-#~ "<literal>SslForceVersion</literal> overrides default SSL version to use.  "
-#~ "It can contain either of the strings '<literal>TLSv1</literal>' or "
-#~ "'<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
+#~ "should be verified against trusted certificates.  "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-"
+#~ "host option.  <literal>Verify-Host</literal> boolean suboption determines "
+#~ "whether or not the server's hostname should be verified.  "
+#~ "<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-"
+#~ "host option.  <literal>SslCert</literal> determines what certificate to "
+#~ "use for client authentication. <literal>&lt;host&gt;::SslCert</literal> "
+#~ "is the corresponding per-host option.  <literal>SslKey</literal> "
+#~ "determines what private key to use for client authentication. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+#~ "option.  <literal>SslForceVersion</literal> overrides default SSL version "
+#~ "to use.  It can contain either of the strings '<literal>TLSv1</literal>' "
+#~ "or '<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
 #~ "literal> is the corresponding per-host option."
 #~ msgstr ""
 #~ "<literal>CaInfo</literal> サブオプションは、信頼済み証明書情報の保持場所を"
@@ -13083,14 +13451,15 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用
 #~ "ションです。<literal>Verify-Host</literal> 真偽値サブオプションは、サーバ"
 #~ "のホスト名を検証するかどうかを決定します。<literal>&lt;host&gt;::Verify-"
 #~ "Host</literal> は、同様のホストごとのオプションです。<literal>SslCert</"
-#~ "literal> は、クライアント認証に使用する証明書を決定します。<literal>&lt;"
-#~ "host&gt;::SslCert</literal> は、同様のホストごとのオプションです。"
-#~ "<literal>SslKey</literal> は、クライアント認証に使用する秘密鍵を決定しま"
-#~ "す。<literal>&lt;host&gt;::SslKey</literal> は、同様のホストごとのオプショ"
-#~ "ンです。<literal>SslForceVersion</literal> は、デフォルトで使用する SSL の"
-#~ "バージョンを上書きします。'<literal>TLSv1</literal>' か '<literal>SSLv3</"
-#~ "literal>' という文字列を指定できます。<literal>&lt;host&gt;::"
-#~ "SslForceVersion</literal> は、同様のホストごとのオプションです。"
+#~ "literal> は、クライアント認証に使用する証明書を決定します。"
+#~ "<literal>&lt;host&gt;::SslCert</literal> は、同様のホストごとのオプション"
+#~ "です。<literal>SslKey</literal> は、クライアント認証に使用する秘密鍵を決定"
+#~ "します。<literal>&lt;host&gt;::SslKey</literal> は、同様のホストごとのオプ"
+#~ "ションです。<literal>SslForceVersion</literal> は、デフォルトで使用する "
+#~ "SSL のバージョンを上書きします。'<literal>TLSv1</literal>' か "
+#~ "'<literal>SSLv3</literal>' という文字列を指定できます。"
+#~ "<literal>&lt;host&gt;::SslForceVersion</literal> は、同様のホストごとのオ"
+#~ "プションです。"
 
 #~ msgid ""
 #~ "The http scheme specifies an HTTP server for the archive. If an "
@@ -13111,9 +13480,10 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用
 #~ "it encounters unauthenticated archives to give a slightly longer grace "
 #~ "period on this backward compatibility effecting change. This exception "
 #~ "will be removed in future releases and you can opt-out of this grace "
-#~ "period by setting the configuration option <option>Binary::apt-get::"
-#~ "Acquire::AllowInsecureRepositories</option> to <literal>false</literal> "
-#~ "or <option>--no-allow-insecure-repositories</option> on the command line."
+#~ "period by setting the configuration option <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> to <literal>false</"
+#~ "literal> or <option>--no-allow-insecure-repositories</option> on the "
+#~ "command line."
 #~ msgstr ""
 #~ "一時的な例外として &apt-get; (not &apt;!) はこの後方互換性に影響のある変更"
 #~ "に対応するための少しばかり長い猶予期間として、証明されていないアーカイブに"
diff --git a/doc/po/nl.po b/doc/po/nl.po
index 4d011fa..0cfeaab 100644
--- a/doc/po/nl.po
+++ b/doc/po/nl.po
@@ -1,13 +1,13 @@
 # Translation of apt-doc to Dutch
 # This file is distributed under the same license as the apt-doc package.
-# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015-2022.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015-2025.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt-doc 2.5.4\n"
+"Project-Id-Version: apt-doc 2.9.23\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
-"PO-Revision-Date: 2022-11-28 22:15+0100\n"
+"POT-Creation-Date: 2025-02-07 20:17+0000\n"
+"PO-Revision-Date: 2025-01-21 21:13+0100\n"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
 "Language: nl\n"
@@ -58,7 +58,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -69,7 +69,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bugpagina</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bugpagina</ulink>.\n"
 "   Indien u een bug in APT wilt rapporteren, raadpleeg dan\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> of het\n"
 "   &reportbug; commando.\n"
@@ -141,6 +141,24 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Controle- (en kennisgevings)berichten tonen. Dit heeft voorrang op de optie quiet, maar alleen voor waarschuwingsberichten, niet voor voortgangsberichten.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -184,7 +202,6 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
-"\">\n"
 msgstr ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -196,6 +213,31 @@ msgstr ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Kleur aan- of uitzetten. Kleur staat standaard aan voor &apt; op ondersteunde terminals en\n"
+"kan ook uitgezet worden met de omgevingsvariabelen <envar>NO_COLOR</envar> en <envar>APT_NO_COLOR</envar>,\n"
+"of verder geconfigureerd worden met de configuratieoptie en -scope <option>APT::Color</option>; zie &apt-conf; voor informatie hierover.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 
 #. type: Plain text
@@ -522,11 +564,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
 "\"configuratietekenreeks\">"
 
 #. type: Plain text
@@ -541,12 +584,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"doelrelease\">"
 
 #. type: Plain text
@@ -597,11 +640,11 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cd-aankoppelpunt\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cd-aankoppelpunt\">"
 
 #. type: Plain text
 #: apt.ent
@@ -663,28 +706,18 @@ msgstr ""
 "<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"sectie\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"sleutel-ID\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -694,12 +727,11 @@ msgid "command-line interface"
 msgstr "commandoregelinterface"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Omschrijving"
 
@@ -770,6 +802,15 @@ msgstr ""
 "opwaardering van een pakket vereist dat een geïnstalleerd pakket verwijderd "
 "wordt, zal de opwaardering voor dat pakket niet uitgevoerd worden."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+"Wanneer een pakket wordt opgegeven als argument, zal het pakket "
+"geïnstalleerd worden voordat de opwaardering plaats vindt."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -782,7 +823,7 @@ msgstr ""
 "systeem volledig op te waarderen."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -932,18 +973,18 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 "<literal>list</literal> is min of meer vergelijkbaar met <command>dpkg-query "
 "--list</command> in die zin dat het een lijst van pakketten kan weergeven "
 "die aan bepaalde criteria beantwoorden. Het kent het gebruik van "
-"expansiepatronen (&glob; patterns) voor het vergelijken van pakketnamen en "
-"het ondersteunt opties om geïnstalleerde (<option>--installed</option>), "
-"opwaardeerbare (<option>--upgradable</option>) of alle beschikbare "
-"(<option>--all-versions</option>) versies weer te geven."
+"expansiepatronen (&glob; patterns) voor het vergelijken van pakketnamen, "
+"&apt-patterns; en het ondersteunt opties om geïnstalleerde (<option>--"
+"installed</option>), opwaardeerbare (<option>--upgradable</option>) of alle "
+"beschikbare (<option>--all-versions</option>) versies weer te geven."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt.8.xml
@@ -960,6 +1001,16 @@ msgstr ""
 "bewerken met de teksteditor van uw voorkeur terwijl het ook basale "
 "foutcontroles uitvoert."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-cache;)"
+msgstr "(samengevat in &apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-get;)"
+msgstr "(samengevat in &apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -998,22 +1049,24 @@ msgstr ""
 "worden."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Zie ook"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, De APT "
-"Gebruikershandleiding in &guidesdir;, &apt-preferences;, de APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, De APT Gebruikershandleiding in &guidesdir;, &apt-preferences;, "
+"de APT Howto."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1076,9 +1129,9 @@ msgid ""
 msgstr ""
 "<literal>update</literal> wordt gebruikt om de indexbestanden van "
 "beschikbare pakketten terug te synchroniseren met hun pakketbronnen. De "
-"indexen worden opgehaald van de locatie(s) die in <filename>/etc/apt/sources."
-"list</filename> opgegeven werden. Indien bijvoorbeeld een Debian-archief "
-"gebruikt wordt, zal dit commando de bestanden <filename>Packages.gz</"
+"indexen worden opgehaald van de locatie(s) die in <filename>/etc/apt/"
+"sources.list</filename> opgegeven werden. Indien bijvoorbeeld een Debian-"
+"archief gebruikt wordt, zal dit commando de bestanden <filename>Packages.gz</"
 "filename> ophalen en doorzoeken zodat de informatie over nieuwe en "
 "bijgewerkte pakketten beschikbaar wordt. Een <literal>update</literal> moet "
 "altijd uitgevoerd worden voor een <literal>upgrade</literal> of een "
@@ -1214,7 +1267,7 @@ msgid ""
 "Both of the version selection mechanisms can downgrade packages and must be "
 "used with care."
 msgstr ""
-"Beide versieselectiemechanismes kunnen pakketten degraderen en moeten met "
+"Beide versieselectiemechanismes kunnen pakketten downgraden en moeten met "
 "zorg gebruikt worden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1449,8 +1502,8 @@ msgid ""
 "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (&gt;&gt; "
 "1.0) | bar (= 2.0), moo\"</literal>"
 msgstr ""
-"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (&gt;"
-"&gt; 1.0) | bar (= 2.0), moo\"</literal>"
+"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz "
+"(&gt;&gt; 1.0) | bar (= 2.0), moo\"</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1521,6 +1574,25 @@ msgstr ""
 "van de configuratieoptie <literal>APT::Clean-Installed</literal> kan het "
 "opruimen van pakketbestanden van geïnstalleerde pakketten verhinderd worden."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr "alias)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+"<literal>distclean</literal> verwijdert alle bestanden onder "
+"<filename>&statedir;/lists</filename> behalve Release, Release.gpg en "
+"InRelease. Het kan bijvoorbeeld gebruikt worden bij het afwerken van images "
+"die verspreid worden onder gebruikers. De bestanden release worden bewaard "
+"om veiligheidsredenen, om verschillende soorten aanvallen te voorkomen."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1628,8 +1700,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Herstellen; proberen een systeem met defecte vereisten te repareren. Als "
 "deze optie gebruikt wordt samen met install/remove, kan ze elk pakket "
@@ -1675,8 +1747,8 @@ msgid ""
 msgstr ""
 "Schakelt het downloaden van pakketten uit. Dit wordt best gebruikt samen met "
 "<option>--ignore-missing</option> om APT te verplichten enkel .debs te "
-"gebruiken die het al gedownload heeft. Configuratie-item: <literal>APT::Get::"
-"Download</literal>."
+"gebruiken die het al gedownload heeft. Configuratie-item: "
+"<literal>APT::Get::Download</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1720,9 +1792,9 @@ msgstr ""
 "bezig is. Ook een niet-systeembeheerder (non-root) kan simulaties uitvoeren "
 "en als die geen leestoegang heeft tot alle configuraties van apt, kan dit de "
 "simulatie vertekenen. Niet-systeembeheerders krijgen standaard ook een "
-"opmerking te zien waarin deze waarschuwing gegeven wordt (<option>APT::Get::"
-"Show-User-Simulation-Note</option>).  Configuratie-item: <literal>APT::Get::"
-"Simulate</literal>."
+"opmerking te zien waarin deze waarschuwing gegeven wordt "
+"(<option>APT::Get::Show-User-Simulation-Note</option>).  Configuratie-item: "
+"<literal>APT::Get::Simulate</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1754,17 +1826,17 @@ msgstr ""
 "situatie voordoet, zoals het wijzigen van een op zijn huidige versie "
 "vastgehouden pakket, een poging om een niet-geauthenticeerd pakket te "
 "installeren of het verwijderen van een essentieel pakket, zal <literal>apt-"
-"get</literal> afgebroken worden. Configuratie-item: <literal>APT::Get::"
-"Assume-Yes</literal>."
+"get</literal> afgebroken worden. Configuratie-item: "
+"<literal>APT::Get::Assume-Yes</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
-"Een automatisch \"neen\" op alle vragen. Configuratie-item: <literal>APT::"
-"Get::Assume-No</literal>."
+"Een automatisch \"neen\" op alle vragen. Configuratie-item: "
+"<literal>APT::Get::Assume-No</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1772,7 +1844,7 @@ msgid ""
 "Do not show a list of all packages that are to be upgraded.  Configuration "
 "Item: <literal>APT::Get::Show-Upgraded</literal>."
 msgstr ""
-"Geef geen lijst weer van alle pakketten die opgewaardeerd zullen worden. "
+"Geen lijst weergeven van alle pakketten die opgewaardeerd zullen worden. "
 "Configuratie-item: <literal>APT::Get::Show-Upgraded</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1781,18 +1853,38 @@ msgid ""
 "Show full versions for upgraded and installed packages.  Configuration Item: "
 "<literal>APT::Get::Show-Versions</literal>."
 msgstr ""
-"Geef het volledige versienummer weer van opgewaardeerde en geïnstalleerde "
+"Het volledige versienummer weergeven van opgewaardeerde en geïnstalleerde "
 "pakketten. Configuratie-item: <literal>APT::Get::Show-Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Pakketlijsten weergeven zonder deze in kolommen te rangschikken. Standaard "
+"worden pakketlijsten afgedrukt in de stijl van het commando \"ls\". "
+"Configuratie-item: <literal>APT::Get::List-Columns</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"De opgegeven waarde toevoegen aan het veld <literal>Comment:</literal> in "
+"history.log Configuratie-item: <literal>APT::History::Comment</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Deze optie regelt voor welke architectuur pakketten gebouwd worden met de "
 "opdracht <command>apt-get source --compile</command> en hoe aan kruiselingse "
@@ -1815,8 +1907,8 @@ msgstr ""
 "gebouwd wordt met <command>apt-get source --compile</command>. Ze regelt ook "
 "hoe voldaan wordt aan de bouwvereisten. Standaard is geen enkel bouwprofiel "
 "actief. Er kan meer dan een bouwprofiel tegelijk geactiveerd worden door ze "
-"gescheiden door en komma samen te voegen. Configuratie-item: <literal>APT::"
-"Build-Profiles</literal>."
+"gescheiden door en komma samen te voegen. Configuratie-item: "
+"<literal>APT::Build-Profiles</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1824,8 +1916,8 @@ msgid ""
 "Compile source packages after downloading them.  Configuration Item: "
 "<literal>APT::Get::Compile</literal>."
 msgstr ""
-"Bronpakketten na het downloaden compileren. Configuratie-item: <literal>APT::"
-"Get::Compile</literal>."
+"Bronpakketten na het downloaden compileren. Configuratie-item: "
+"<literal>APT::Get::Compile</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1886,8 +1978,8 @@ msgstr ""
 "Geen nieuwe pakketten installeren; wanneer <literal>only-upgrade</literal> "
 "gebruikt wordt in combinatie met <literal>install</literal>, zal het enkel "
 "voor reeds geïnstalleerde pakketten opwaarderingen installeren en verzoeken "
-"om nieuwe pakketten te installeren negeren. Configuratie-item: <literal>APT::"
-"Get::Only-Upgrade</literal>."
+"om nieuwe pakketten te installeren negeren. Configuratie-item: "
+"<literal>APT::Get::Only-Upgrade</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1898,10 +1990,10 @@ msgid ""
 "Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
 msgstr ""
 "Dit is een gevaarlijke optie die er voor zorgt dat apt zonder vragen "
-"voortgaat als het degradaties doorvoert. U zou dit niet moeten gebruiken "
+"voortgaat als het downgradings doorvoert. U zou dit niet moeten gebruiken "
 "behalve in zeer bijzondere situaties. Dit gebruiken kan mogelijkerwijs tot "
-"de vernietiging van uw systeem leiden! Configuratie-item: <literal>APT::Get::"
-"allow-downgrades</literal>. Geïntroduceerd in APT 1.1."
+"de vernietiging van uw systeem leiden! Configuratie-item: "
+"<literal>APT::Get::allow-downgrades</literal>. Geïntroduceerd in APT 1.1."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1966,8 +2058,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "In plaats van pakketten op te halen om ze te installeren wordt hun URI "
 "weergegeven. Elke URI bevat het pad en de naam van het doelbestand, zijn "
@@ -1990,8 +2082,8 @@ msgstr ""
 "Purge gebruiken in plaats van remove voor alles wat verwijderd zou worden. "
 "Er zal een sterretje (\"*\") staan naast de pakketten die ingepland staan om "
 "opgeruimd te worden. <option>remove --purge</option> is het equivalent van "
-"het commando <option>purge</option>. Configuratie-item: <literal>APT::Get::"
-"Purge</literal>."
+"het commando <option>purge</option>. Configuratie-item: "
+"<literal>APT::Get::Purge</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2009,16 +2101,31 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Deze optie is standaard aangezet; gebruik <literal>--no-list-cleanup</"
 "literal> om ze uit te zetten. Indien ze geactiveerd is, zal <command>apt-"
 "get</command> automatisch de inhoud van <filename>&statedir;/lists</"
 "filename> beheren om te garanderen dat in onbruik geraakte bestanden "
 "verwijderd worden. De enige reden waarom u dit zou uitzetten is wanneer u "
-"vaak het bestand sources.list wijzigt. Configuratie-item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"vaak het bestand sources.list wijzigt. Configuratie-item: "
+"<literal>APT::Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+"Deze optie bepaalt de gekozen momentopname voor archieven met "
+"<literal>Snapshot: enable</literal> in het element source. Bijvoorbeeld, "
+"<option>-S 20220102T030405Z</option> selecteert een momentopname van 2 "
+"januari 2022 om 03:04:05 UTC. Configuratie-item: <literal>APT::Snapshot</"
+"literal>; zie ook de man-pagina &sources-list;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2125,8 +2232,9 @@ msgid ""
 "literal>, and <literal>APT::Get::Tar-Only</literal>."
 msgstr ""
 "Enkel het diff-, dsc- of tar-bestand van een bronarchief downloaden. "
-"Configuratie-item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::"
-"Get::Dsc-Only</literal>, en <literal>APT::Get::Tar-Only</literal>."
+"Configuratie-item: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal>, en <literal>APT::Get::Tar-Only</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2166,13 +2274,6 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "Forbid the update command to acquire unverifiable data from configured "
-#| "sources. APT will fail at the update command for repositories without "
-#| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2180,11 +2281,12 @@ msgid ""
 "details on the concept and the implications.  Configuration Item: "
 "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgstr ""
-"Sta het commando update niet toe om niet-verifieerbare gegevens op te halen "
-"uit geconfigureerde pakketbronnen. Het commando update van APT zal mislukken "
-"bij pakketbronnen zonder geldige cryptografische ondertekening. Zie ook &apt-"
-"secure; voor meer informatie over het concept en de implicaties. "
-"Configuratie-item: <literal>Acquire::AllowInsecureRepositories</literal>."
+"Het commando update toestaan om niet-verifieerbare gegevens op te halen uit "
+"geconfigureerde pakketbronnen. Het commando update van APT zal anders "
+"mislukken bij pakketbronnen zonder geldige cryptografische ondertekening. "
+"Zie ook &apt-secure; voor meer informatie over het concept en de "
+"implicaties. Configuratie-item: <literal>Acquire::AllowInsecureRepositories</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2260,8 +2362,42 @@ msgstr ""
 "De update-opdracht doen mislukken als er een fout is opgetreden, zelfs een "
 "tijdelijke fout."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+"Voer de opdracht <option>update</option> uit vóór de opgegeven opdracht. Dit "
+"wordt ondersteund voor commando's die pakketten installeren, verwijderen of "
+"opwaarderen, zoals <option>install</option>, <option>remove</option>, "
+"<option>safe-upgrade</option>, <option>full-upgrade</option>. Dit kan handig "
+"zijn om ervoor te zorgen dat een commando altijd de nieuwste versies "
+"installeert, of, in combinatie met de optie <option>--snapshot</option>, om "
+"ervoor te zorgen dat de momentopname aanwezig is wanneer install wordt "
+"uitgevoerd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+"Waarschuwing: vanwege technische beperkingen worden vergrendelingen voor "
+"elke fase afzonderlijk verkregen. Daarom is het mogelijk dat een installatie "
+"geen vergrendelingen verkrijgt nadat de update met succes is uitgevoerd. "
+"Totdat dit is opgelost, is dit louter syntactische suiker voor <literal>apt "
+"update &amp;&amp; apt install</literal>"
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Bestanden"
@@ -2269,13 +2405,13 @@ msgstr "Bestanden"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, De gebruikershandleiding voor APT in &guidesdir;, &apt-"
-"preferences;, de Howto voor APT."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, De gebruikershandleiding voor APT in "
+"&guidesdir;, &apt-preferences;, de Howto voor APT."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2653,23 +2789,22 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> pikt op de commandoregel een lijst pakketten op en "
 "genereert uitvoer die geschikt is om gebruikt te worden door dotty uit het "
-"pakket <ulink url=\"http://www.research.att.com/sw/tools/graphviz/"
-"\">GraphViz</ulink>. Het resultaat is een geheel van knooppunten en gebogen "
-"lijnen die de relaties tussen pakketten voorstellen. Standaard trekken de "
-"als argument opgegeven pakketten al hun vereisten na, hetgeen een zeer "
-"uitgebreide grafiek kan opleveren. Om de uitvoer te beperken tot die "
-"pakketten die expliciet opgegeven werden aan de commandoregel, stelt men de "
-"optie <literal>APT::Cache::GivenOnly</literal> in."
+"pakket <ulink url=\"https://graphviz.org/\">GraphViz</ulink>. Het resultaat "
+"is een geheel van knooppunten en gebogen lijnen die de relaties tussen "
+"pakketten voorstellen. Standaard trekken de als argument opgegeven pakketten "
+"al hun vereisten na, hetgeen een zeer uitgebreide grafiek kan opleveren. Om "
+"de uitvoer te beperken tot die pakketten die expliciet opgegeven werden aan "
+"de commandoregel, stelt men de optie <literal>APT::Cache::GivenOnly</"
+"literal> in."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2697,12 +2832,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Hetzelfde als <literal>dotty</literal>, maar dan voor xvcg uit het <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG "
-"gereedschap</ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG gereedschap</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2731,8 +2866,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "Het commando <literal>madison</literal> van <literal>apt-cache</literal>  "
 "tracht het uitvoerformaat en een deel van de functionaliteit na te bootsen "
@@ -2746,8 +2881,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "Het bestand waarin de pakketcache opgeslagen wordt kiezen. De pakketcache is "
 "de primaire cache die door alle operaties aangesproken wordt. Configuratie-"
@@ -2801,9 +2936,9 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Standaard geven de opdrachten <literal>depends</literal> en "
 "<literal>rdepends</literal> alle vereisten weer. Met deze opties kan dit "
@@ -2866,8 +3001,8 @@ msgid ""
 msgstr ""
 "Automatisch een nieuwe pakketcache genereren, eerder dan de bestaande "
 "pakketcache te gebruiken. Dit is de standaard. Om dit uit te schakelen moet "
-"u <option>--no-generate</option> gebruiken. Configuratie-item: <literal>APT::"
-"Cache::Generate</literal>."
+"u <option>--no-generate</option> gebruiken. Configuratie-item: "
+"<literal>APT::Cache::Generate</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2876,19 +3011,19 @@ msgid ""
 "descriptions.  Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
 msgstr ""
 "Enkel zoeken in de pakketnamen en in de pakketnamen waarin voorzien wordt en "
-"niet in de uitgebreide beschrijvingen. Configuratie-item: <literal>APT::"
-"Cache::NamesOnly</literal>."
+"niet in de uitgebreide beschrijvingen. Configuratie-item: "
+"<literal>APT::Cache::NamesOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "<literal>pkgnames</literal> alle namen laten weergeven, inclusief virtuele "
-"pakketten en ontbrekende vereisten. Configuratie-item: <literal>APT::Cache::"
-"AllNames</literal>."
+"pakketten en ontbrekende vereisten. Configuratie-item: "
+"<literal>APT::Cache::AllNames</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2955,8 +3090,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2967,348 +3102,6 @@ msgstr ""
 "<command>apt-cache</command> geeft de terugkeerwaarde nul bij een normaal "
 "verlopen operatie, het decimaal getal 100 in geval van een fout."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-msgid "Deprecated APT key management utility"
-msgstr "Verouderd hulpprogramma voor het beheer van de sleutels van APT"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> wordt gebruikt om de lijst van sleutels te "
-"beheren die door apt gebruikt worden om pakketten te authenticeren. "
-"Pakketten die met deze sleutels geauthenticeerd werden, worden als "
-"betrouwbaar beschouwd."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-"Het gebruik van <command>apt-key</command> is verouderd, behalve voor het "
-"gebruik van <command>apt-key del</command> in scripts van pakketonderhouders "
-"om bestaande sleutels te verwijderen uit de hoofdsleutelbos. Indien een "
-"dergelijk gebruik van <command>apt-key</command> gewenst is, is bijkomend de "
-"installatie vereist van de suite GNU Privacy Guard (verpakt in "
-"<package>gnupg</package>)."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-"apt-key(8) zal voor het laatst beschikbaar zijn in Debian 11 en Ubuntu 22.04."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "Ondersteunde sleutelbosbestanden"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"apt-key ondersteunt enkel de binaire indeling van OpenPGP (ook gekend als "
-"\"GPG key public ring\") bij bestanden met de extensie \"<literal>gpg</"
-"literal>\" en niet de database-indeling keybox (sleutelkistje) die in "
-"recentere &gpg;-versies als standaard gebruikt wordt voor "
-"sleutelbosbestanden. Binaire sleutelbosbestanden die met om het even welke "
-"versie van apt gebruikt moeten kunnen worden, moeten daarom steeds "
-"aangemaakt worden met het commando <command>gpg --export</command>."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"In het andere geval, als op alle systemen die de aangemaakte sleutelbos "
-"moeten gebruiken, minstens een versie van apt >= 1.4 geïnstalleerd is, kunt "
-"u wel de ASCII-armor indeling met de extensie \"<literal>asc</literal>\" "
-"gebruiken die met het commando <command>gpg --armor --export</command> "
-"gecreëerd kan worden."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Commando's"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(verouderd)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Een nieuwe sleutel toevoegen aan de lijst van betrouwbare sleutels. De "
-"sleutel wordt gelezen uit het bestand waarvan de naam met de parameter "
-"&synopsis-param-filename; opgegeven werd of uit de standaardinvoer als de "
-"bestandsnaam <literal>-</literal> is."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"Het is van cruciaal belang dat bij sleutels die handmatig toegevoegd worden "
-"via <command>apt-key</command>, geverifieerd wordt of de bewering dat ze "
-"toebehoren aan de eigenaar van de pakketbronnen, wel degelijk met de "
-"werkelijkheid overeenkomt, anders wordt de &apt-secure;-infrastructuur "
-"volledig ondermijnd."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>Opmerking</emphasis>: In plaats van dit commando te gebruiken zou "
-"u een sleutelbos rechtstreeks in de map <filename>/etc/apt/trusted.gpg.d/</"
-"filename> moeten plaatsen met een descriptieve naam en ofwel \"<literal>gpg</"
-"literal>\" of \"<literal>asc</literal>\" als bestandsextensie."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr "(meestal verouderd)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Een sleutel verwijderen uit de lijst van betrouwbare sleutels."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "De sleutel &synopsis-param-keyid; via de standaarduitvoer weergeven."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Alle betrouwbare sleutels op de standaarduitvoer weergeven."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "Som betrouwbare sleutels op met hun vingerafdruk."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"Geef geavanceerde opties mee met gpg. Met <command>adv --recv-key</command> "
-"kunt u bijvoorbeeld een sleutel rechtstreeks van een sleutelserver naar de "
-"set van betrouwbare sleutels downloaden. Merk op dat er <emphasis>geen</"
-"emphasis> controles uitgevoerd worden. Daarom kan dit gemakkelijk de &apt-"
-"secure;-infrastructuur volledig ondermijnen als het onzorgvuldig gebruikt "
-"wordt."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"De lokale sleutelbos bijwerken met de sleutelbos van het archief en de "
-"archiefsleutels die niet langer geldig zijn verwijderen uit de lokale "
-"sleutelbos. De sleutelbos van het archief bevindt zich in het pakket "
-"<literal>archive-keyring</literal> van uw distributie, bijvoorbeeld het "
-"pakket &keyring-package; in &keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"Merk op dat een distributie dit commando niet langer hoeft en ook niet zou "
-"mogen gebruiken. In plaats daarvan moeten rechtstreeks sleutelbosbestanden "
-"meegeleverd worden in de map <filename>/etc/apt/trusted.gpg.d/</filename>. "
-"Dit voorkomt dat het pakket <package>gnupg</package> een vereiste is, en "
-"zowel voor pakketonderhouders als voor gebruikers is het makkelijker om "
-"sleutels te beheren door eenvoudigweg bestanden toe te voegen of te "
-"verwijderen."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Een bijwerking uitvoeren zoals hiervoor met het commando <command>update</"
-"command>, maar in plaats daarvan de sleutelbos van het archief ophalen vanaf "
-"een URI en die valideren tegenover een hoofdsleutel. Dit veronderstelt dat "
-"&wget; geïnstalleerd is en vereist een versie van APT die gebouwd werd met "
-"de nodige instellingen om de sleutel van een server te kunnen ophalen en een "
-"hoofdsleutelbos om de validering te kunnen uitvoeren. APT in Debian "
-"ondersteunt dit commando niet en steunt in de plaats daarvan op "
-"<command>update</command>, maar APT in Ubuntu wel."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Opties"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Merk op dat opties opgegeven moeten worden voor de commando's die in de "
-"vorige sectie behandeld werden."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Met deze optie kunt u een specifiek sleutelbosbestand opgeven waarmee het "
-"commando moet werken. Standaard wordt een commando uitgevoerd op het bestand "
-"<filename>trusted.gpg</filename> en op alle onderdelen uit de map "
-"<filename>trusted.gpg.d</filename>, hoewel <filename>trusted.gpg</filename> "
-"de primaire sleutelbos is, wat betekent dat bijvoorbeeld alle nieuwe "
-"sleutels daar toegevoegd worden."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Deprecation"
-msgstr "Uitfasering"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-"Met uitzondering van het gebruik van <command>apt-key del</command> in "
-"scripts van de pakketbeheerder, wordt het gebruik van <command>apt-key</"
-"command> uitgefaseerd. In deze onderafdeling wordt getoond hoe bestaand "
-"gebruik van <command>apt-key</command> vervangen kan worden."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-"Indien uw huidig gebruik van <command>apt-key add</command> iets "
-"gelijkaardigs is aan dit:"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-"dan kunt u dit onmiddellijk vervangen door dit (maar let op de onderstaande "
-"aanbeveling):"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-"Zorg ervoor dat u de extensie \"<literal>asc</literal>\" gebruikt voor met "
-"ASCII gepantserde sleutels en de extensie \"<literal>gpg</literal>\" voor "
-"het binaire OpenPGP formaat (ook bekend als \"openbare sleutelbos voor GPG-"
-"sleutels\"). Het binaire OpenPGP-formaat werkt voor alle versies van apt, "
-"terwijl het met ASCII gepantserde formaat werkt voor apt-versie >= 1.4."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-"<emphasis>Aanbevolen:</emphasis> in plaats van de sleutels te plaatsen in de "
-"map <filename>/etc/apt/trusted.gpg.d</filename>, kunt u ze om het even waar "
-"plaatsen in uw bestandssysteem door in uw <literal>sources.list</literal> de "
-"optie <literal>Signed-By</literal> te gebruiken en te verwijzen naar de "
-"bestandsnaam van de sleutel. Zie &sources-list; voor details. Sinds APT 2.4 "
-"wordt <filename>/etc/apt/keyrings</filename> voorzien als de aanbevolen "
-"locatie voor sleutels die niet door pakketten worden beheerd. Wanneer u een "
-"sources.list gebruikt in de deb822-stijl en een versie gebruikt van apt >= "
-"2.4, dan kunt u de optie <literal>Signed-By</literal> ook gebruiken om de "
-"volledige met ASCII gepantserde sleutelbos rechtstreeks op te nemen in "
-"<literal>sources.list</literal> zonder een extra bestand."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3322,8 +3115,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "<command>apt-mark</command> kan gebruikt worden als een geïntegreerd "
@@ -3424,6 +3217,12 @@ msgstr ""
 "literal> gebruikt worden, behalve dat in dit geval een lijst van manueel "
 "geïnstalleerde pakketten weergegeven zal worden."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Opties"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3499,6 +3298,11 @@ msgstr ""
 "worden. Meer informatie over deze zogenaamde dpkg-selecties vindt u in "
 "&dpkg;."
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get;, &aptitude;, &apt-conf;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3550,6 +3354,82 @@ msgstr ""
 "deze man-pagina van <literal>APT</literal> gebruikt wordt om die "
 "functionaliteit aan ze allemaal toe te schrijven."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuratie op gebruikersniveau"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+"Sleutels moeten doorgaans worden opgenomen in hun corresponderende "
+"<literal>.sources</literal> door de ASCII-gepantserde sleutel in de optie "
+"<literal>Signed-By</literal> op te nemen. Vervang hiervoor de lege regel "
+"door een punt en laat vervolgens alle regels met twee spaties inspringen. "
+"Zie &sources-list; voor meer informatie."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+"Als alternatief kunnen sleutels worden geplaatst in <filename>/etc/apt/"
+"keyrings</filename> voor lokale sleutels, of <filename>/usr/share/"
+"keyrings</filename> voor sleutels die worden beheerd door pakketten, en "
+"vervolgens kan er naar worden verwezen via de optie <literal>Signed-By: /etc/"
+"apt/keyrings/example-archive-keyring.asc</literal> in een <literal>.sources</"
+"literal>-bestand of via <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> te gebruiken in de oude <literal>.list</"
+"literal>-indeling. Dit kan handig zijn voor vroegere APT-versies dan 2.4, "
+"die geen ingesloten sleutels ondersteunen. ASCII-gepantserde sleutels moeten "
+"een extensie <literal>.asc</literal> gebruiken, en niet-gepantserde sleutels "
+"een extensie <literal>.gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+"Om sleutels te genereren die geschikt zijn voor gebruik in APT met GnuPG, "
+"moet u de opdracht <command>gpg --export-options export-minimal [--armor] --"
+"export</command> gebruiken. Eerdere oplossingen met <command>--keyring file "
+"--import</command> werken niet meer met recente GnuPG-versies, omdat deze "
+"een nieuwe interne indeling (\"GPG keybox database\") gebruiken."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"Merk op dat een standaardinstallatie reeds alle nodige sleutels bevat om op "
+"een veilige manier pakketten op te halen uit de standaard pakketbronnen. Het "
+"beheren van sleutels is dus alleen nodig als er externe pakketbronnen worden "
+"toegevoegd. Het pakket <command>extrepo</command> kan worden gebruikt om "
+"meerdere externe pakketbronnen eenvoudig te beheren."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -3611,10 +3491,11 @@ msgstr ""
 "geval van een <command>update</command>-operatie bij alle APT-clients een "
 "foutmelding opleveren, ongeacht het feit of een optie het gebruik van "
 "onveilige pakketbronnen toestaat of verbiedt. Een dergelijke fout kan "
-"voorkomen worden door bijkomend de optie <option>Acquire::"
-"AllowDowngradeToInsecureRepositories</option> op <literal>true</literal> in "
-"te stellen of voor individuele pakketbronnen door de optie <literal>allow-"
-"downgrade-to-insecure=yes</literal> te gebruiken in &sources-list;."
+"voorkomen worden door bijkomend de optie "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> op "
+"<literal>true</literal> in te stellen of voor individuele pakketbronnen door "
+"de optie <literal>allow-downgrade-to-insecure=yes</literal> te gebruiken in "
+"&sources-list;."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3796,57 +3677,6 @@ msgstr ""
 "hoofdrelease van de distributie (bijvoorbeeld aangeduid met de codenaam) die "
 "door de pakketbron verdeeld wordt."
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Configuratie op gebruikersniveau"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"<command>apt-key</command> is het programma dat de sleutelcatalogus beheert "
-"die door APT gebruikt wordt om pakketbronnen te vertrouwen. Het kan gebruikt "
-"worden om sleutels toe te voegen en te verwijderen en de lijst met "
-"vertrouwde sleutels weer te geven. Het is mogelijk om te begrenzen welke "
-"sleutel(s) welk archief kunnen ondertekenen via de optie <option>Signed-By</"
-"option> in &sources-list;."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"Merk op dat een standaardinstallatie reeds alle nodige sleutels bevat om op "
-"een veilige manier pakketten op te halen uit de standaard pakketbronnen. Met "
-"<command>apt-key</command> knoeien is dus enkel nodig als pakketbronnen van "
-"derden toegevoegd worden."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-"Om een nieuwe sleutel toe te voegen, moet u hem eerst downloaden (u moet "
-"zich ervan vergewissen dat u bij het ophalen ervan gebruik maakt van een "
-"betrouwbaar communicatiekanaal). Daarna voegt u hem toe met <command>apt-"
-"key</command> en vervolgens voert u de opdracht <command>apt-get update</"
-"command> uit, zodat apt het bestand <filename>InRelease</filename> of "
-"<filename>Release.gpg</filename> uit de door u geconfigureerde archieven kan "
-"ophalen en verifiëren."
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Repository Configuration"
@@ -3876,8 +3706,8 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Onderteken het</emphasis>. U doet dit door het uitvoeren van de "
 "commando's <command>gpg --clearsign -o InRelease Release</command> en "
@@ -3932,28 +3762,29 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Voor bijkomende achtergrondinformatie kunt u het hoofdstuk raadplegen over "
-"de beveiligingsinfrastructuur van Debian, <ulink url=\"https://www.debian."
-"org/doc/manuals/securing-debian-howto/ch7\">Debian Security Infrastructure</"
-"ulink>, uit de Securing Debian Manual (ook te vinden in het pakket harden-"
-"doc), alsook de <ulink url=\"http://www.cryptnet.net/fdp/crypto/"
-"strong_distro.html\" >Strong Distribution HOWTO</ulink> door V. Alex Brennen."
+"de beveiligingsinfrastructuur van Debian, <ulink url=\"https://"
+"www.debian.org/doc/manuals/securing-debian-manual/ch07\">Debian Security "
+"Infrastructure</ulink>, uit de Securing Debian Manual (ook te vinden in het "
+"pakket harden-doc), alsook de <ulink url=\"http://www.cryptnet.net/fdp/"
+"crypto/strong_distro.html\" >Strong Distribution HOWTO</ulink> door V. Alex "
+"Brennen."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -4039,8 +3870,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Niet automatisch het CD-pad trachten te achterhalen. Meestal wordt dit "
 "gecombineerd met de optie <option>--cdrom</option>. Configuratie-item: "
@@ -4055,8 +3886,8 @@ msgid ""
 msgstr ""
 "Aankoppelpunt; de locatie waar de CD aangekoppeld moet worden opgeven. Dit "
 "aankoppelpunt moet in <filename>/etc/fstab</filename> vermeld worden en "
-"correct geconfigureerd zijn. Configuratie-item: <literal>Acquire::cdrom::"
-"mount</literal>."
+"correct geconfigureerd zijn. Configuratie-item: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -4074,12 +3905,12 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "Niet aankoppelen; <command>apt-cdrom</command> verhinderen om het "
-"aankoppelpunt aan en af te koppelen. Configuratie-item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"aankoppelpunt aan en af te koppelen. Configuratie-item: "
+"<literal>APT::CDROM::NoMount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -4181,11 +4012,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
-"Dit zal aan de shell-omgevingsvariabele $OPTS de waarde toekennen van MyApp::"
-"options met een standaard van <option>-f</option>."
+"Dit zal aan de shell-omgevingsvariabele $OPTS de waarde toekennen van "
+"MyApp::options met een standaard van <option>-f</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
@@ -4311,9 +4142,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "alle bestanden uit <literal>Dir::Etc::Parts</literal> in oplopende "
 "alfabetische volgorde die ofwel geen extensie of \"<literal>conf</literal>\" "
@@ -4452,8 +4283,8 @@ msgid ""
 "example you could use <literal>dpkg::pre-install-pkgs</literal>."
 msgstr ""
 "In de namen van configuratie-items speelt het gebruik van hoofd- of kleine "
-"letters geen rol. In het voorgaande voorbeeld zou u dus ook <literal>dpkg::"
-"pre-install-pkgs</literal> kunnen gebruiken."
+"letters geen rol. In het voorgaande voorbeeld zou u dus ook "
+"<literal>dpkg::pre-install-pkgs</literal> kunnen gebruiken."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4606,6 +4437,79 @@ msgstr ""
 "geregistreerd worden via het commando <command>dpkg --add-architecture</"
 "command>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+"Deze scoop definieert kleuren en stijlen. De ondersteunde basiskleuren zijn "
+"<option>rood</option>, <option>groen</option>, <option>geel</option>, "
+"<option>blauw</option>, <option>magenta</option>, <option>cyaan</option> en "
+"<option>wit</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+"De subscoop <option>action</option> definieert de kleuren voor pakketlijsten "
+"in <option>install</option> en gelijkaardige commando's. De volgende opties "
+"kunnen ingesteld worden: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; die overeenkomen met hun "
+"lijsten in de uitvoer van &apt;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+"Elke kleur kan bij naam verwijzen naar een of meer andere kleuropties, "
+"relatief ten opzichte van <option>APT::Color</option>. Hun escape-sequenties "
+"worden gecombineerd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+"Kleuren kunnen volledig worden in- of uitgeschakeld door <option>APT::Color</"
+"option> in te stellen op <option>yes</option> of <option>no</option>, door "
+"gebruik te maken van de omgevingsvariabelen <envar>NO_COLOR</envar> of "
+"<envar>APT_NO_COLOR</envar>, of met behulp van de commandoregelopties "
+"<option>--color</option>, <option>--no-color</option>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4679,6 +4583,18 @@ msgstr ""
 "codename;', '&debian-testing-codename;', '4.0', '5.0*'. Zie ook &apt-"
 "preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+"Momentopname die moet worden gebruikt voor alle pakketbronnen die zijn "
+"geconfigureerd met <literal>Snapshot: yes</literal>. Zie ook &sources-list;, "
+"de optie <option>--snapshot</option> die deze waarde instelt, en "
+"<option>Acquire::Snapshots::URI</option> hieronder."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4872,6 +4788,53 @@ msgstr ""
 "De onderafdeling CDROM regelt het gereedschap &apt-cdrom; raadpleeg de "
 "documentatie daarover voor meer informatie over de opties in kwestie."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+"Pakketten waarvan de naam overeenkomt met de opgegeven reguliere "
+"expressie(s) nooit automatisch verwijderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+"Deze optie vertelt apt autoremove dat kernels beschermd zijn en staat "
+"standaard op true. In het geval dat kernels niet beschermd zijn, worden ze "
+"behandeld als elk ander pakket."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+"De reguliere expressie(s) definiëren voor kernelpakketten met versiebeheer. "
+"Op basis van deze expressies wordt een regelset in apt geïnjecteerd, "
+"vergelijkbaar met de reguliere expressies van APT::NeverAutoRemove."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+"Een aangepast aantal kernels behouden bij het automatisch verwijderen en is "
+"standaard ingesteld op 2, wat betekent dat er twee kernels behouden blijven. "
+"Apt zal altijd de actieve kernel en de laatste kernel behouden. Als de "
+"laatste kernel hetzelfde is als de actieve kernel, wordt de op één na "
+"laatste kernel behouden. Daarom wordt elke waarde lager dan 2 genegeerd. Als "
+"u alleen de laatste kernel wilt, moet u APT::Protect-Kernels op false "
+"instellen."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -5117,100 +5080,6 @@ msgstr ""
 "de protocollen HTTP en HTTPS en worden gedocumenteerd in de respectieve man-"
 "pagina's &apt-transport-http; en &apt-transport-https;."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> stelt de te gebruiken standaard-proxy in voor "
-"URI's van het type FTP. De standaardvorm ervan is <literal>ftp://[[user][:"
-"pass]@]host[:port]/</literal>. Proxy's kunnen ook per computer ingesteld "
-"worden volgens het schema <literal>ftp::Proxy::&lt;host&gt;</literal>, "
-"waarbij het bijzondere trefwoord <literal>DIRECT</literal> betekent dat geen "
-"proxy's gebruikt worden. Indien geen van de bovenstaande instellingen "
-"opgegeven werd, zal de omgevingsvariabele <envar>ftp_proxy</envar> gebruikt "
-"worden. Om een FTP-proxy te gebruiken zult u het script <literal>ftp::"
-"ProxyLogin</literal> in het configuratiebestand moeten instellen. Dit item "
-"omschrijft de te verzenden commando's die de proxy-server moeten laten weten "
-"waarmee hij een verbinding moet maken. Raadpleeg &configureindex; voor een "
-"voorbeeld van hoe dit moet gedaan worden. De substitutievariabelen die de "
-"overeenkomstige URI-component vertegenwoordigen, zijn "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> en <literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"De optie <literal>timeout</literal> stelt de tijdslimiet in die gehanteerd "
-"moet worden door de timer die door deze methode gebruikt wordt. Deze waarde "
-"is zowel van toepassing op de tijdslimiet van de verbinding als op die van "
-"de data-overdracht."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"Meerdere instellingen zijn beschikbaar om de passieve modus te controleren. "
-"Over het algemeen is het veilig om de passieve modus aan te laten staan. Hij "
-"werkt in praktisch elke omgeving. Toch vereisen sommige situaties het "
-"uitschakelen van de passieve modus en het gebruik in de plaats daarvan van "
-"FTP in poortmodus. Dit kan globaal gebeuren of voor verbindingen die langs "
-"een proxy passeren of voor een specifieke computer. (raadpleeg voor "
-"voorbeelden het voorbeeldconfiguratiebestand)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"Het is mogelijk om proxy voor FTP over HTTP te laten verlopen door de "
-"omgevingsvariabele <envar>ftp_proxy</envar> in te stellen op een URL van het "
-"type HTTP - zie de eerdere bespreking van de http-methode voor de syntaxis. "
-"U kunt dit niet in het configuratiebestand instellen en het gebruik van FTP "
-"over HTTP wordt niet aangeraden omwille van zijn geringe efficiëntie."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"De instelling <literal>ForceExtended</literal> regelt het gebruik van de "
-"RFC2428 commando's <literal>EPSV</literal> en <literal>EPRT</literal>. "
-"Standaard staat ze uitgeschakeld (ingesteld op false), hetgeen betekent dat "
-"deze commando's enkel gebruikt worden indien de controleverbinding van het "
-"type IPv6 is. Deze instelling aanzetten (instellen op true) verplicht het "
-"gebruik van deze commando's zelfs bij verbindingen van het type IPv4. Merk "
-"op dat de meeste FTP-servers RFC2428 niet ondersteunen."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5416,9 +5285,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5434,17 +5303,18 @@ msgstr ""
 "deze niet tweemaal voorkomen in de lijst. Als <literal>LC_MESSAGES</literal> "
 "op \"C\" ingesteld staat, wordt enkel het bestand <filename>Translation-en</"
 "filename> (als het beschikbaar is) gebruikt.Om APT te dwingen geen "
-"Translation-bestand te gebruiken, moet u de instelling <literal>Acquire::"
-"Languages=none</literal> gebruiken. Ook de code \"<literal>none</literal>\" "
-"is er een met een speciale betekenis. Ze zorgt ervoor dat niet verder "
-"gezocht wordt naar een passend <filename>Translation</filename>-bestand. Ze "
-"vertelt APT ook om die vertalingen wel te downloaden zonder ze effectief te "
-"gebruiken tenzij er in de omgeving talen gespecificeerd worden. Het volgende "
-"voorbeeld zal dus in de context van een Engelse lokalisatie resulteren in de "
-"volgorde \"en, de\" en in een Duitse lokalisatie in \"de, en\". Merk op dat "
-"\"fr\" wel gedownload wordt, maar niet gebruikt tenzij APT in de context van "
-"een Franse lokalisatie gebruikt wordt (in dat geval zou de volgorde \"fr, "
-"de, en\" zijn). <placeholder type=\"programlisting\" id=\"0\"/>"
+"Translation-bestand te gebruiken, moet u de instelling "
+"<literal>Acquire::Languages=none</literal> gebruiken. Ook de code "
+"\"<literal>none</literal>\" is er een met een speciale betekenis. Ze zorgt "
+"ervoor dat niet verder gezocht wordt naar een passend <filename>Translation</"
+"filename>-bestand. Ze vertelt APT ook om die vertalingen wel te downloaden "
+"zonder ze effectief te gebruiken tenzij er in de omgeving talen "
+"gespecificeerd worden. Het volgende voorbeeld zal dus in de context van een "
+"Engelse lokalisatie resulteren in de volgorde \"en, de\" en in een Duitse "
+"lokalisatie in \"de, en\". Merk op dat \"fr\" wel gedownload wordt, maar "
+"niet gebruikt tenzij APT in de context van een Franse lokalisatie gebruikt "
+"wordt (in dat geval zou de volgorde \"fr, de, en\" zijn). <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5554,21 +5424,22 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
 msgstr ""
 "Het ophalen van changelogs (bestanden met de registratie van aangebrachte "
 "wijzigingen) kan enkel gebeuren als er een URI gekend is waar ze opgehaald "
@@ -5580,23 +5451,64 @@ msgstr ""
 "replaceable></literal> bestaat en als dat het geval is, wordt die waarde "
 "gebruikt. De waarde in het Release-bestand kan vervangen worden door "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> of <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGINE</replaceable></literal>. De waarde ervan zou "
-"een normale URI naar een tekstbestand moeten zijn, behalve dat de "
-"pakketspecifieke gegevens vervangen worden door de plaatshouder "
-"<literal>@CHANGEPATH@</literal>. De waarde daarvan is: 1. als het pakket uit "
-"een onderdeel afkomstig is (bijv. <literal>main</literal>), vormt dit het "
-"eerste deel, anders wordt het weggelaten, 2. de eerste letter van de "
-"pakketnaam van het bronpakket, behalve als de naam van het bronpakket begint "
-"met '<literal>lib</literal>'. In dat laatste geval zullen het de eerste vier "
-"letters zijn. 3. De volledige naam van het bronpakket. 4. nogmaals de "
-"volledige naam en 5. de versie van de broncode. Het eerste (in voorkomend "
-"geval), tweede, derde en vierde deel worden gescheiden door een slash "
-"('<literal>/</literal>') en tussen het het vierde en het vijfde deel staat "
-"een laag liggend streepje ('<literal>_</literal>'). De speciale waarde "
+"replaceable></literal> of "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. De waarde ervan zou een normale URI naar een "
+"tekstbestand moeten zijn, behalve dat de pakketspecifieke gegevens vervangen "
+"worden door de plaatshouder <literal>@CHANGEPATH@</literal>. De waarde "
+"daarvan is: 1. als het pakket uit een onderdeel afkomstig is (bijv. "
+"<literal>main</literal>), vormt dit het eerste deel, anders wordt het "
+"weggelaten, 2. de eerste letter van de pakketnaam van het bronpakket, "
+"behalve als de naam van het bronpakket begint met '<literal>lib</literal>'. "
+"In dat laatste geval zullen het de eerste vier letters zijn. 3. De volledige "
+"naam van het bronpakket. 4. nogmaals de volledige naam en 5. de versie van "
+"de broncode. Het eerste (in voorkomend geval), tweede, derde en vierde deel "
+"worden gescheiden door een slash ('<literal>/</literal>') en tussen het het "
+"vierde en het vijfde deel staat een laag liggend streepje ('<literal>_</"
+"literal>'). De speciale waarde '<literal>no</literal>' kan gebruikt worden "
+"voor deze optie om aan te geven dat deze bron niet gebruikt kan worden om er "
+"changelog-bestanden op te halen. In dat geval zal een andere bron geprobeerd "
+"worden als die er is."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
+msgstr ""
+"Zoals changelogs (bestanden met de registratie van aangebrachte wijzigingen) "
+"kunnen momentopnames enkel verkregen worden als er een URI gekend is waar ze "
+"opgehaald kunnen worden. Bij voorkeur vermeldt het bestand Release dit in "
+"het veld 'Snapshots'. Indien er geen dergelijk veld is, wordt het veld Label/"
+"Origin van het Release-bestand gebruikt om na te gaan of er een optie "
+"<literal>Acquire::Snapshots::URI::Label::<replaceable>LABEL</replaceable></"
+"literal> of <literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGINE</"
+"replaceable></literal> bestaat en als dat het geval is, wordt die waarde "
+"gebruikt. De waarde in het Release-bestand kan vervangen worden door "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> of "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGINE</"
+"replaceable></literal>. De waarde ervan zou een normale URI naar een map "
+"moeten zijn, behalve dat het momentopname-ID vervangen wordt door de "
+"plaatshouder <literal>@SNAPSHOTID@</literal>. De speciale waarde "
 "'<literal>no</literal>' kan gebruikt worden voor deze optie om aan te geven "
-"dat deze bron niet gebruikt kan worden om er changelog-bestanden op te "
-"halen. In dat geval zal een andere bron geprobeerd worden als die er is."
+"dat deze bron niet gebruikt kan worden om er momentopnames van op te halen. "
+"In dat geval zal een andere bron geprobeerd worden als die er is."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5608,9 +5520,9 @@ msgstr "Programmaspecifieke configuratie"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "In het bijzonder omwille van de introductie van het binaire programma "
 "<command>apt</command>, kan het zinvol zijn om bepaalde opties enkel voor "
@@ -5632,8 +5544,8 @@ msgstr ""
 "worden door die optie in te stellen binnen het bereik <option>Binary::"
 "<replaceable>specifiek-programma</replaceable></option>. De optie "
 "<option>APT::Get::Show-Versions</option> enkel voor <command>apt</command> "
-"instellen, kan bijvoorbeeld gebeuren door in plaats daarvan <option>Binary::"
-"apt::APT::Get::Show-Versions</option> in te stellen."
+"instellen, kan bijvoorbeeld gebeuren door in plaats daarvan "
+"<option>Binary::apt::APT::Get::Show-Versions</option> in te stellen."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5725,12 +5637,12 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
 "Naar binaire programma's wordt verwezen door <literal>Dir::Bin</literal>. "
 "<literal>Dir::Bin::Methods</literal> geeft de locatie op van de "
@@ -5940,18 +5852,18 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "Elke regel met een configuratierichtlijn heeft de vorm <literal>key=value</"
 "literal> (sleutel=waarde). Bijzondere tekens (gelijkheidstekens, "
 "regeleinden, niet-afdrukbare tekens, aanhalingstekens en percenttekens in "
 "<literal>key</literal> en regeleinden, niet-afdrukbare tekens en "
 "percenttekens in <literal>value</literal>) worden met % gecodeerd. Lijsten "
-"worden voorgesteld door meerdere <literal>key::=value</literal> (sleutel::"
-"=waarde) regels met eenzelfde sleutel. De configuratiesectie eindigt met een "
-"lege regel."
+"worden voorgesteld door meerdere <literal>key::=value</literal> "
+"(sleutel::=waarde) regels met eenzelfde sleutel. De configuratiesectie "
+"eindigt met een lege regel."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5969,7 +5881,7 @@ msgstr ""
 "In Versie 2 bestaan regels in verband met een pakketactie uit vijf velden: "
 "pakketnaam (zonder architectuuropgave, zelfs indien niet-systeemeigen), oude "
 "versie, richting van de versiewijziging (&lt; voor opwaarderingen, &gt; voor "
-"degradaties, = voor geen wijziging), nieuwe versie, actie. De versievelden "
+"downgradings, = voor geen wijziging), nieuwe versie, actie. De versievelden "
 "zijn \"-\" voor helemaal geen versie (bijvoorbeeld wanneer een pakket voor "
 "het eerst geïnstalleerd wordt; geen versie wordt behandeld als ouder dan "
 "gelijk welke echte versie, waardoor het een opwaardering betreft, aangeduid "
@@ -6082,9 +5994,9 @@ msgid ""
 msgstr ""
 "De optiegroepen <literal>APT::Periodic</literal> en <literal>APT::Archives</"
 "literal> configureren het gedrag van de periodieke bijwerkingen die door apt "
-"uitgevoerd worden en die door het script <literal>/usr/lib/apt/apt.systemd."
-"daily</literal> uitgelokt worden. Raadpleeg het begin van dit script voor "
-"een beknopte documentatie over deze opties."
+"uitgevoerd worden en die door het script <literal>/usr/lib/apt/"
+"apt.systemd.daily</literal> uitgelokt worden. Raadpleeg het begin van dit "
+"script voor een beknopte documentatie over deze opties."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -6166,13 +6078,6 @@ msgstr ""
 "Weergeven van informatie in verband met het benaderen van pakketbronnen van "
 "het type <literal>cdrom://</literal>."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"Weergeven van informatie in verband met het downloaden van pakketten met "
-"behulp van FTP."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -6205,12 +6110,6 @@ msgstr ""
 "Informatie tonen over het proces van benaderen van verzamelingen pakketten "
 "op CD's."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"Beschrijft het proces van het oplossen van bouwvereisten door &apt-get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -6302,16 +6201,16 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "Debug-berichten genereren waarin beschreven wordt welke pakketten "
 "automatisch geïnstalleerd worden om aan vereisten te voldoen. Dit komt "
 "overeen met de initiële doorloop van het type auto-install die bijvoorbeeld "
 "door <literal>apt-get install</literal> uitgevoerd wordt. Het komt niet "
 "overeen met het volledige systeem van apt voor het oplossen van "
-"vereistenproblemen. Raadpleeg in dat verband <literal>Debug::"
-"pkgProblemResolver</literal>."
+"vereistenproblemen. Raadpleeg in dat verband "
+"<literal>Debug::pkgProblemResolver</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -6321,14 +6220,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "Debug-berichten genereren waarin beschreven wordt welke pakketten een "
 "markering krijgen van het type keep/install/remove (vasthouden/installeren/"
@@ -6407,23 +6306,23 @@ msgid ""
 msgstr ""
 "Een lijst weergeven van alle geïnstalleerde pakketten met hun berekende "
 "scores zoals die door de pkgProblemResolver gebruikt worden. De "
-"pakketbeschrijving is identiek aan wat in <literal>Debug::pkgDepCache::"
-"Marker</literal> beschreven werd"
+"pakketbeschrijving is identiek aan wat in "
+"<literal>Debug::pkgDepCache::Marker</literal> beschreven werd"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
-"Informatie weergeven over de leveranciers die in <filename>/etc/apt/vendors."
-"list</filename> vermeld worden."
+"Informatie weergeven over de leveranciers die in <filename>/etc/apt/"
+"vendors.list</filename> vermeld worden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 "De externe commando's tonen die aangeroepen worden door apt-uitbreidingen. "
@@ -6715,13 +6614,13 @@ msgid ""
 "exceeds 1000; such high priorities can only be set in the preferences file.  "
 "Note also that downgrading a package can be risky.)"
 msgstr ""
-"Nooit een degradatie uitvoeren tenzij de prioriteit van een beschikbaar "
-"pakket groter is dan 1000. (\"Degraderen\" (downgrading) betekent het "
-"installeren van een minder recente versie van een pakket ter vervanging van "
-"een recentere versie. Noteer dat geen enkele van de standaardprioriteiten "
-"die APT gebruikt, groter dan 1000 is. Dergelijke hoge prioriteiten kunnen "
-"enkel in het bestand preferences ingesteld worden. Merk ook op dat het "
-"degraderen van een pakket riskant kan zijn.)"
+"Nooit een downgrading uitvoeren tenzij de prioriteit van een beschikbaar "
+"pakket groter is dan 1000. (\"Downgrading\" betekent het installeren van een "
+"minder recente versie van een pakket ter vervanging van een recentere "
+"versie. Noteer dat geen enkele van de standaardprioriteiten die APT "
+"gebruikt, groter dan 1000 is. Dergelijke hoge prioriteiten kunnen enkel in "
+"het bestand preferences ingesteld worden. Merk ook op dat het downgraden van "
+"een pakket riskant kan zijn.)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
@@ -6778,7 +6677,7 @@ msgstr ""
 "van een pakket <emphasis>recenter</emphasis> is dan welke andere beschikbare "
 "versie ook. Bij het uitvoeren van de opdracht apt-get install "
 "<command><replaceable>een-bepaald-pakket</replaceable></command> of "
-"<command>apt-get upgrade</command> zal het pakket dan niet gedegradeerd "
+"<command>apt-get upgrade</command> zal het pakket dan niet gedowngraded "
 "worden."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -6845,10 +6744,10 @@ msgid ""
 msgstr ""
 "Als u meerdere systemen heeft waarvan u wilt dat deze dezelfde set updates "
 "ontvangen, kunt u <code>APT::Machine-ID</code> instellen op een UUID zodat "
-"ze allemaal dezelfde fasering toepassen, of u kunt de instelling <code>APT::"
-"Get::Never-include-Phased-Updates</code> gebruiken of <code>APT::Get::Always-"
-"include-Phased-Updates</code> instellen op true zodat APT nooit/altijd "
-"gefaseerde updates zal overwegen."
+"ze allemaal dezelfde fasering toepassen, of u kunt de instelling "
+"<code>APT::Get::Never-include-Phased-Updates</code> gebruiken of "
+"<code>APT::Get::Always-include-Phased-Updates</code> instellen op true zodat "
+"APT nooit/altijd gefaseerde updates zal overwegen."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -6898,6 +6797,23 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr "Sinds versie 2.9.9 kunt u pin ook gebruiken met een bronversie:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6949,8 +6865,8 @@ msgstr ""
 "Een aanmaning tot voorzichtigheid: het gebruikte trefwoord hier is "
 "\"<literal>origin</literal>\" dat gebruikt kan worden om een computernaam te "
 "vergelijken. De volgende structuur kent een hoge prioriteit toe aan alle "
-"versies die te verkrijgen zijn op de server die met de computernaam \"ftp.de."
-"debian.org\" geïdentificeerd wordt."
+"versies die te verkrijgen zijn op de server die met de computernaam "
+"\"ftp.de.debian.org\" geïdentificeerd wordt."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -7228,9 +7144,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 "Het achtervoegsel <literal>:any</literal> zorgt ervoor dat binaire pakketten "
 "uit elke architectuur worden geselecteerd. Zonder dat achtervoegsel neemt "
@@ -7265,7 +7181,7 @@ msgid ""
 "package"
 msgstr ""
 "heeft de installatie van een versie tot gevolg ook al houdt dit een "
-"degradatie van het pakket in"
+"downgrading van het pakket in"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
 #: apt_preferences.5.xml
@@ -7407,16 +7323,16 @@ msgstr "Dan is dit het gevolg:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "De meest recente beschikbare versie van het pakket <literal>perl</literal> "
 "zal geïnstalleerd worden, zolang het versienummer van die versie begint met "
 "\"<literal>&good-perl;</literal>\". Indien er <emphasis>een of andere</"
 "emphasis> &good-perl;* versie van <literal>perl</literal> beschikbaar is en "
 "de geïnstalleerde versie is &bad-perl;*, dan zal <literal>perl</literal> "
-"gedegradeerd worden."
+"gedowngraded worden."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
@@ -7693,25 +7609,25 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Alle <filename>Packages</filename>- en <filename>Release</filename>-"
 "bestanden die opgehaald worden van locaties die in het bestand &sources-"
 "list; vermeld staan, worden opgeslagen in de map <filename>/var/lib/apt/"
 "lists</filename> of in het bestand dat in het bestand <filename>apt.conf</"
 "filename> door de variabele <literal>Dir::State::Lists</literal> genoemd "
-"wordt. Het bestand <filename>debian.lcs.mit."
-"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> bevat "
-"bijvoorbeeld het <filename>Release</filename>-bestand dat opgehaald werd van "
-"de site <literal>debian.lcs.mit.edu</literal> en dat betrekking heeft op "
-"bestanden voor de architectuur <literal>binary-i386</literal> uit de "
-"component <literal>contrib</literal> van de distributie <literal>unstable</"
-"literal>."
+"wordt. Het bestand "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> bevat bijvoorbeeld het <filename>Release</filename>-"
+"bestand dat opgehaald werd van de site <literal>debian.lcs.mit.edu</literal> "
+"en dat betrekking heeft op bestanden voor de architectuur <literal>binary-"
+"i386</literal> uit de component <literal>contrib</literal> van de "
+"distributie <literal>unstable</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -7963,8 +7879,8 @@ msgstr ""
 "Het volgende preferences-bestand van APT doet APT een hogere prioriteit dan "
 "standaard (500) toekennen aan alle pakketversies die tot een distributie met "
 "de opgegeven codenaam behoren en een buitensporig lage prioriteit aan "
-"pakketversies die tot andere <literal>Debian</literal>-distributies, -"
-"codenamen en -archieven behoren. Merk op dat met deze APT-voorkeur APT de "
+"pakketversies die tot andere <literal>Debian</literal>-distributies, "
+"-codenamen en -archieven behoren. Merk op dat met deze APT-voorkeur APT de "
 "overgang van een release zal volgen vanuit het archief <literal>testing</"
 "literal> naar <literal>stable</literal> en later <literal>oldstable</"
 "literal>. Indien u bijvoorbeeld de voortgang in <literal>testing</literal> "
@@ -8069,15 +7985,31 @@ msgstr ""
 "De map <filename>/etc/apt/sources.list.d</filename> biedt de mogelijkheid om "
 "items voor sources.list in afzonderlijke bestanden toe te voegen. Zoals "
 "beschreven wordt in de volgende twee secties, zijn twee verschillende "
-"bestandsindelingen toegelaten. Bestandsnamen moeten eindigen op <filename>."
-"list</filename> of <filename>.sources</filename>, afhankelijk van welke "
-"indeling ze bevatten. De bestandsnamen mogen enkel letters (a-z en A-Z), "
-"cijfers (0-9), lage streepjes (_), koppeltekens (-) en punten (.) bevatten. "
-"Is dit niet het geval, dan zal APT melden dat het een bestand overgeslagen "
-"heeft, tenzij dat bestand beantwoordt aan een patroon uit de "
+"bestandsindelingen toegelaten. Bestandsnamen moeten eindigen op "
+"<filename>.list</filename> of <filename>.sources</filename>, afhankelijk van "
+"welke indeling ze bevatten. De bestandsnamen mogen enkel letters (a-z en A-"
+"Z), cijfers (0-9), lage streepjes (_), koppeltekens (-) en punten (.) "
+"bevatten. Is dit niet het geval, dan zal APT melden dat het een bestand "
+"overgeslagen heeft, tenzij dat bestand beantwoordt aan een patroon uit de "
 "configuratielijst <literal>Dir::Ignore-Files-Silently</literal> - in dat "
 "geval zal het stilzwijgend overgeslagen worden."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+"De voorgestelde bestandsnaam voor nieuwe systemen is <filename>/etc/apt/"
+"sources.list.d/<replaceable>leverancier</replaceable>.sources</filename>, "
+"waarbij <replaceable>leverancier</replaceable> het resultaat is van "
+"<command>dpkg-vendor --query Vendor | tr A-Z a-z</command>, in deb822-stijl. "
+"Ubuntu gebruikt bijvoorbeeld <filename>/etc/apt/sources.list.d/"
+"ubuntu.sources</filename>."
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -8137,6 +8069,12 @@ msgstr ""
 "zullen verwachten, aangezien die ongebruikelijk waren voor de invoering van "
 "multi-architectuurondersteuning."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -8329,10 +8267,11 @@ msgstr ""
 "<literal>suite</literal> kan ook een variabele, <literal>$(ARCH)</literal>, "
 "bevatten, die omgezet wordt naar de Debian architectuur (zoals "
 "<literal>amd64</literal> of <literal>armel</literal>) die op het systeem in "
-"gebruik is. Dit laat toe om archtectuuronafhankelijke <filename>sources."
-"list</filename>-bestanden te gebruiken. Over het algemeen is dit enkel van "
-"belang wanneer een exact pad opgegeven wordt. Anders zal <literal>APT</"
-"literal> automatisch een URI genereren met de huidige architectuur."
+"gebruik is. Dit laat toe om archtectuuronafhankelijke "
+"<filename>sources.list</filename>-bestanden te gebruiken. Over het algemeen "
+"is dit enkel van belang wanneer een exact pad opgegeven wordt. Anders zal "
+"<literal>APT</literal> automatisch een URI genereren met de huidige "
+"architectuur."
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
@@ -8388,10 +8327,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "Bij wijze van voorbeeld zouden de pakketbronnen voor uw distributie er als "
 "volgt kunnen uitzien met de indeling in de één-regelstijl: <placeholder "
@@ -8439,8 +8385,8 @@ msgstr ""
 "<option>Architectures</option> (<option>arch</option>) is een multi-waarde "
 "optie waarmee opgegeven wordt voor welke architecturen er informatie "
 "opgehaald moet worden. Indien deze optie niet ingesteld werd, geldt als "
-"standaard alle architecturen die in de configuratieoptie <literal>APT::"
-"Architectures</literal> gedefinieerd zijn."
+"standaard alle architecturen die in de configuratieoptie "
+"<literal>APT::Architectures</literal> gedefinieerd zijn."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8462,19 +8408,20 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) is een multi-waarde optie "
 "waarmee opgegeven wordt welke downloadtargets apt uit deze pakketbron zal "
 "trachten op te halen. Indien deze optie niet gespecificeerd werd, wordt de "
-"standaardset gedefinieerd door het configuratiebereik <option>Acquire::"
-"IndexTargets</option> (targets worden aan de hand van hun naam gepreciseerd "
-"in het veld <literal>Created-By</literal>). Daarenboven kunnen specifieke "
-"targets geactiveerd of gedeactiveerd worden door het veld "
+"standaardset gedefinieerd door het configuratiebereik "
+"<option>Acquire::IndexTargets</option> (targets worden aan de hand van hun "
+"naam gepreciseerd in het veld <literal>Created-By</literal>). Daarenboven "
+"kunnen specifieke targets geactiveerd of gedeactiveerd worden door het veld "
 "<literal>Identifier</literal> als een optie met een booleaanse waarde te "
 "gebruiken in plaats van op deze multi-waarde optie beroep te doen."
 
@@ -8644,18 +8591,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>) is een optie die van "
 "een pakketbron vereist dat de verificatie door &apt-secure; gebeurt aan de "
@@ -8670,21 +8616,20 @@ msgstr ""
 "<filename>/etc/apt/keyrings</filename> voor sleutelbossen die beheerd worden "
 "door de systeembeheerder. Indien geen sleutelbosbestanden opgegeven werden, "
 "geldt als standaard de sleutelbos <filename>trusted.gpg</filename> en alle "
-"sleutelbossen uit de map <filename>trusted.gpg.d/</filename> (zie "
-"<command>apt-key fingerprint</command>). Indien geen vingerafdruk opgegeven "
-"werd, worden alle sleutels uit de sleutelbossen geselecteerd. Een "
-"vingerafdruk aanvaardt ook alle handtekeningen die met een subsleutel van "
-"deze sleutel gemaakt werden. Indien dit niet het gewenste gedrag is, kan aan "
-"de vingerafdruk een uitroepteken (<literal>!</literal>) toegevoegd worden "
-"waardoor dit gedrag uitgezet wordt. Standaard krijgt de optie de waarde van "
-"de optie met dezelfde naam wanneer die ingesteld staat in het vooraf uit "
-"deze pakketbron opgehaald bestand <filename>Release</filename> (door middel "
-"hiervan kunnen enkel vingerafdrukken opgegeven worden). Anders worden alle "
-"sleutels uit de betrouwbare sleutelbossen als geldige ondertekenaars van "
-"deze pakketbron aanzien. De optie kan ook rechtstreeks worden ingesteld op "
-"een ingebed blok van een GPG-publieke sleutel. Speciale zorg is nodig om de "
-"lege regel te coderen met voorloopspaties en \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"sleutelbossen uit de map <filename>trusted.gpg.d/</filename>. Indien geen "
+"vingerafdruk opgegeven werd, worden alle sleutels uit de sleutelbossen "
+"geselecteerd. Een vingerafdruk aanvaardt ook alle handtekeningen die met een "
+"subsleutel van deze sleutel gemaakt werden. Indien dit niet het gewenste "
+"gedrag is, kan aan de vingerafdruk een uitroepteken (<literal>!</literal>) "
+"toegevoegd worden waardoor dit gedrag uitgezet wordt. Standaard krijgt de "
+"optie de waarde van de optie met dezelfde naam wanneer die ingesteld staat "
+"in het vooraf uit deze pakketbron opgehaald bestand <filename>Release</"
+"filename> (door middel hiervan kunnen enkel vingerafdrukken opgegeven "
+"worden). Anders worden alle sleutels uit de betrouwbare sleutelbossen als "
+"geldige ondertekenaars van deze pakketbron aanzien. De optie kan ook "
+"rechtstreeks worden ingesteld op een ingebed blok van een GPG-publieke "
+"sleutel. Speciale zorg is nodig om de lege regel te coderen met "
+"voorloopspaties en \".\": <placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8699,8 +8644,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
 "een yes/no (ja/nee) waarde die regelt of APT moet proberen om replay-"
@@ -8799,6 +8745,44 @@ msgstr ""
 "InRelease-bestand en wordt het terugvallen op <filename>Release</filename>-"
 "bestanden uitgeschakeld."
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+"<option>Snapshot</option> (<option>snapshot</option>) maakt het mogelijk om "
+"een eerdere versie van het archief te selecteren via de dienst "
+"momentopnames. Ondersteunde waarden zijn:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+"<literal>enable</literal> om het selecteren van een momentopname met de "
+"optie <option>--snapshot</option> mogelijk te maken, of"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr "een momentopname-ID om een specifieke momentopname te selecteren."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+"Momentopname-ID's zijn doorgaans tijdstempels in de vorm van "
+"<literal>JJJJMMDDTHHMMSSZ</literal>, zoals <literal>20220102T030405Z</"
+"literal> wat 2 januari 2022 om 03:04:05 UTC is. Servers kunnen echter meer "
+"soorten ID's ondersteunen en APT voert tot nu toe geen controles uit."
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8833,10 +8817,10 @@ msgstr ""
 "gegeven worden aan het gebruik van &apt-authconf;. De methode biedt ook "
 "ondersteuning voor SOCKS5- en HTTP(S)-proxy's, ofwel geconfigureerd via een "
 "apt-specifieke configuratie, of gespecificeerd met de omgevingsvariabele "
-"<envar>http_proxy</envar> volgens de indeling <replaceable>http://gebruiker:"
-"wachtwoord@server:poort/</replaceable> (er vanuit gaand dat het om een HTTP-"
-"proxy gaat die authenticatie vereist). De authenticatie-informatie voor "
-"proxy's kan ook verstrekt worden via &apt-authconf;."
+"<envar>http_proxy</envar> volgens de indeling <replaceable>http://"
+"gebruiker:wachtwoord@server:poort/</replaceable> (er vanuit gaand dat het om "
+"een HTTP-proxy gaat die authenticatie vereist). De authenticatie-informatie "
+"voor proxy's kan ook verstrekt worden via &apt-authconf;."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
@@ -8937,38 +8921,6 @@ msgstr ""
 "gebruiken en media te wisselen. Gebruik het programma &apt-cdrom; om regels "
 "met CD-pakketbronnen aan te maken in de lijst met pakketbronnen."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-"De methode ftp geeft een FTP-server op voor een archief. Het gebruik van FTP "
-"is op de terugweg ten voordele van <literal>http</literal> en "
-"<literal>https</literal> en veel archieven hebben ofwel nooit FTP-toegang "
-"aangeboden of trekken die terug in. Indien u deze methode nog steeds nodig "
-"heeft, zijn er veel configuratieopties voor beschikbaar binnen de ruimte "
-"<literal>Acquire::ftp</literal>. Ze worden in &apt-conf; gedetailleerd."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Noteer dat een FTP-proxy opgegeven kan worden met de omgevingsvariabele "
-"<envar>ftp_proxy</envar>. Met deze omgevingsvariabele en <emphasis>enkel</"
-"emphasis> daarmee kan ook een HTTP-proxy opgegeven worden (HTTP proxyservers "
-"kunnen vaak omgaan met FTP-URL's). Proxy's die HTTP gebruiken en in het "
-"configuratiebestand vermeld staan worden genegeerd."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8982,21 +8934,6 @@ msgstr ""
 "locatie te gebruiken. Dit is nuttig voor gebruikers van verwijderbare media "
 "om met behulp van APT bestanden te kopiëren."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"De methode rsh/ssh maakt gebruik van RSH/SSH om een verbinding met een "
-"externe computer te maken en als een welbepaalde gebruiker toegang te "
-"krijgen tot de bestanden. Voorafgaandelijke configuratie van rhosts of RSA-"
-"sleutels wordt aanbevolen. De standaardcommando's <command>find</command> en "
-"<command>dd</command> worden gebruikt om de overdracht van bestanden van de "
-"externe computer uit te voeren."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -9179,64 +9116,64 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"Gebruikt FTP om toegang te krijgen tot het archief op ftp.debian.org onder "
+"Gebruikt HTTPS om toegang te krijgen tot het archief op deb.debian.org onder "
 "de map debian en gebruikt er enkel het gebied &debian-stable-codename;/"
 "contrib."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"Gebruikt FTP om toegang te krijgen tot het archief op ftp.debian.org onder "
+"Gebruikt HTTPS om toegang te krijgen tot het archief op deb.debian.org onder "
 "de map debian en gebruikt er enkel het gebied unstable/contrib. Indien deze "
 "regel en die uit het voorgaande voorbeeld allebei voorkomen in "
-"<filename>sources.list</filename> zal een enkele FTP-verbinding gebruikt "
+"<filename>sources.list</filename> zal een enkele HTTPS-verbinding gebruikt "
 "worden voor beide regels met pakketbronnen."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -9380,8 +9317,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "Tijdelijke map om er geëxtraheerde sjabloonbestanden en configuratiescripts "
 "voor <command>debconf</command> in op te slaan. Configuratie-item: "
@@ -9425,8 +9362,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "Veldordening gebruiken bij een broncode-index. Configuratie-item: "
 "<literal>APT::SortPkgs::Source</literal>."
@@ -9521,9 +9458,9 @@ msgid ""
 msgstr ""
 "Het commando <literal>sources</literal> maakt vertrekkend vanuit een "
 "mappenboom een indexbestand over broncodebestanden aan. Het begint bij de "
-"opgegeven map en doorzoekt de onderliggende mappen op de aanwezigheid van ."
-"dsc-bestanden en schrijft voor elk ervan een broncodebestandsfiche weg naar "
-"de standaarduitvoer. Dit commando is bij benadering analoog aan &dpkg-"
+"opgegeven map en doorzoekt de onderliggende mappen op de aanwezigheid "
+"van .dsc-bestanden en schrijft voor elk ervan een broncodebestandsfiche weg "
+"naar de standaarduitvoer. Dit commando is bij benadering analoog aan &dpkg-"
 "scansources;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -9567,10 +9504,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "Het commando <literal>release</literal> maakt voor een mappenboom een "
 "Release-bestand aan. Het begint bij de opgegeven map en zoekt daar en in de "
@@ -9601,15 +9538,16 @@ msgid ""
 "<literal>Description</literal>."
 msgstr ""
 "De waarden voor de bijkomende velden met metagegevens in het Release-bestand "
-"worden ontleend aan de overeenkomstige variabelen uit <literal>APT::"
-"FTPArchive::Release</literal>, bijvoorbeeld <literal>APT::FTPArchive::"
-"Release::Origin</literal>. De ondersteunde velden zijn: <literal>Origin</"
-"literal>, <literal>Label</literal>, <literal>Suite</literal>, "
-"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</"
-"literal>, <literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</"
-"literal>, <literal>Acquire-By-Hash</literal>, <literal>Valid-Until</"
-"literal>, <literal>Signed-By</literal>, <literal>Architectures</literal>, "
-"<literal>Components</literal> en <literal>Description</literal>."
+"worden ontleend aan de overeenkomstige variabelen uit "
+"<literal>APT::FTPArchive::Release</literal>, bijvoorbeeld "
+"<literal>APT::FTPArchive::Release::Origin</literal>. De ondersteunde velden "
+"zijn: <literal>Origin</literal>, <literal>Label</literal>, <literal>Suite</"
+"literal>, <literal>Version</literal>, <literal>Codename</literal>, "
+"<literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> en "
+"<literal>Description</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9831,8 +9769,8 @@ msgstr "De sectie <literal>TreeDefault</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "Stelt standaarden in die specifiek zijn voor de secties <literal>Tree</"
 "literal>. Al deze variabelen zijn substitutievariabelen waarbij de "
@@ -9873,8 +9811,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
 "Stelt de basis van de .deb-mappenboom in. Standaard is dat <filename>$(DIST)/"
 "$(SECTION)/binary-$(ARCH)/</filename>"
@@ -9882,8 +9820,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "Stelt de basis in van de mappenboom van broncodepakketten. Standaard is dat "
 "<filename>$(DIST)/$(SECTION)/source/</filename>"
@@ -9910,8 +9848,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "Stelt in waar het hoofdbestand Translation-en geschreven wordt met daarin de "
 "uitgebreide beschrijvingen in het geval die niet in het bestand Packages "
@@ -10279,15 +10217,15 @@ msgid ""
 msgstr ""
 "De vermelde controlesom genereren. Standaard staan deze opties aan. Indien "
 "ze uitgezet worden, dan zal het aangemaakte indexbestand zo mogelijk geen "
-"velden voor de controlesom bevatten. Configuratie-items: <literal>APT::"
-"FTPArchive::<replaceable>Checksum</replaceable></literal> en <literal>APT::"
-"FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</"
-"replaceable></literal> waarbij <literal><replaceable>Index</replaceable></"
-"literal> kan bestaan uit <literal>Packages</literal>, <literal>Sources</"
-"literal> of <literal>Release</literal> en <literal><replaceable>Checksum</"
-"replaceable></literal> kan bestaan uit <literal>MD5</literal>, "
-"<literal>SHA1</literal>, <literal>SHA256</literal> of <literal>SHA512</"
-"literal>."
+"velden voor de controlesom bevatten. Configuratie-items: "
+"<literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> en "
+"<literal>APT::FTPArchive::<replaceable>Index</replaceable>::"
+"<replaceable>Checksum</replaceable></literal> waarbij "
+"<literal><replaceable>Index</replaceable></literal> kan bestaan uit "
+"<literal>Packages</literal>, <literal>Sources</literal> of <literal>Release</"
+"literal> en <literal><replaceable>Checksum</replaceable></literal> kan "
+"bestaan uit <literal>MD5</literal>, <literal>SHA1</literal>, "
+"<literal>SHA256</literal> of <literal>SHA512</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10324,8 +10262,8 @@ msgstr ""
 "Ontkoppelingen uitvoeren. Indien de instelling <literal>External-Links</"
 "literal> gebruikt wordt, dan maakt deze optie het eigenlijk mogelijk om de "
 "bestanden te ontkoppelen. Standaard staat dit aangezet en het kan uitgezet "
-"worden met <option>--no-delink</option>.  Configuratie-item: <literal>APT::"
-"FTPArchive::DeLinkAct</literal>."
+"worden met <option>--no-delink</option>.  Configuratie-item: "
+"<literal>APT::FTPArchive::DeLinkAct</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10351,14 +10289,14 @@ msgid ""
 "literal>."
 msgstr ""
 "Het override-bestand voor broncode selecteren om met het commando "
-"<literal>sources</literal> te gebruiken. Configuratie-item: <literal>APT::"
-"FTPArchive::SourceOverride</literal>."
+"<literal>sources</literal> te gebruiken. Configuratie-item: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "De bufferende databases alleen lezen maken. Configuration Item: "
 "<literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -10372,10 +10310,10 @@ msgid ""
 "path.  Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
 msgstr ""
 "Voor de commando's <literal>packages</literal> en <literal>contents</"
-"literal> enkel pakketbestanden toelaten die overeenkomen met <literal>*_arch."
-"deb</literal> of <literal>*_all.deb</literal> in plaats van alle "
-"pakketbestanden in het opgegeven pad. Configuratie-item: <literal>APT::"
-"FTPArchive::Architecture</literal>."
+"literal> enkel pakketbestanden toelaten die overeenkomen met "
+"<literal>*_arch.deb</literal> of <literal>*_all.deb</literal> in plaats van "
+"alle pakketbestanden in het opgegeven pad. Configuratie-item: "
+"<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10473,10 +10411,10 @@ msgid ""
 "files inside <filename>/etc/apt/auth.conf.d</filename> can be used to store "
 "login information in a netrc-like format with restrictive file permissions."
 msgstr ""
-"Het bestand auth.conf van APT, <filename>/etc/apt/auth.conf</filename>, en ."
-"conf-bestanden in de map <filename>/etc/apt/auth.conf.d</filename> kunnen "
-"gebruikt worden om er login-informatie in op te slaan in een netrc-achtige "
-"indeling met restrictieve bestandspermissies."
+"Het bestand auth.conf van APT, <filename>/etc/apt/auth.conf</filename>, "
+"en .conf-bestanden in de map <filename>/etc/apt/auth.conf.d</filename> "
+"kunnen gebruikt worden om er login-informatie in op te slaan in een netrc-"
+"achtige indeling met restrictieve bestandspermissies."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt_auth.conf.5.xml
@@ -10650,8 +10588,8 @@ msgstr ""
 "<literal>debian</literal> inloginformatie verstrekken voor het element "
 "&sources-list; <placeholder type=\"literallayout\" id=\"0\"/> zou "
 "rechtstreeks in het element kunnen gedaan worden: <placeholder "
-"type=\"literallayout\" id=\"1\"/> Als alternatief zou in het bestand auth."
-"conf een element als het volgende gebruikt kunnen worden: <placeholder "
+"type=\"literallayout\" id=\"1\"/> Als alternatief zou in het bestand "
+"auth.conf een element als het volgende gebruikt kunnen worden: <placeholder "
 "type=\"literallayout\" id=\"2\"/> Of anders in één enkele regel: "
 "<placeholder type=\"literallayout\" id=\"3\"/> Indien u meer moet "
 "specificeren, zullen al deze regels ook op het element example van "
@@ -10796,16 +10734,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 "De omgevingsvariabele <envar>http_proxy</envar> wordt gebruikt voor de "
 "configuratie die op het hele systeem van toepassing is. Proxy's die "
@@ -10839,14 +10778,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "Daarenboven worden drie instellingen voorzien om HTTP/1.1-compatibele proxy-"
 "caches te beheren: <literal>Acquire::http::No-Cache</literal> zegt de proxy "
@@ -10907,11 +10846,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
-"Deze optie heeft voorrang op de verouderde optienaam <literal>Acquire::http::"
-"ProxyAutoDetect</literal>."
+"Deze optie heeft voorrang op de verouderde optienaam "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-http.1.xml
@@ -10950,12 +10889,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "De instelling <literal>Acquire::http::Pipeline-Depth</literal> kan gebruikt "
 "worden om de pijplijnmethode van HTTP (RFC 2616 sectie 8.1.2.2) toe te "
@@ -11089,9 +11028,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 "Het HTTPS-protocol is gebaseerd op het HTTP-protocol, en dus zijn alle "
 "opties die ondersteund worden door &apt-transport-http; ook beschikbaar via "
@@ -11138,15 +11077,17 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 "Er kan een aangepaste lijst van herroepen certificaten (certificate "
-"revocation list - CRL) geconfigureerd worden met de opties <literal>Acquire::"
-"https::CRLFile</literal> en <literal>Acquire::https::CRLFile::"
-"<replaceable>computer</replaceable></literal>. Zoals bij de vorige optie "
-"moet een bestand opgegeven worden in PEM-indeling."
+"revocation list - CRL) geconfigureerd worden met de opties "
+"<literal>Acquire::https::CRLFile</literal> en "
+"<literal>Acquire::https::CRLFile::<replaceable>computer</replaceable></"
+"literal>. Zoals bij de vorige optie moet een bestand opgegeven worden in PEM-"
+"indeling."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-https.1.xml
@@ -11200,7 +11141,7 @@ msgstr ""
 "wordt de naam van de spiegelserver standaard getoetst aan de identiteit die "
 "in het certificaat gevonden wordt. Dit standaardgedrag is veilig en moet "
 "niet gewijzigd worden, maar indien u weet dat de server die u gebruikt, een "
-"DNS-naam heeft die niet overeenkomst met de identiteit in diens certificaat, "
+"DNS-naam heeft die niet overeenkomt met de identiteit uit diens certificaat, "
 "kunt u de optie instellen op \"<literal>false</literal>\", hetgeen zal "
 "voorkomen dat de vergelijking uitgevoerd wordt."
 
@@ -11214,11 +11155,11 @@ msgstr "Cliëntauthenticatie"
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 "Behalve de geboden ondersteuning voor authenticatie via een wachtwoord (zie "
 "&apt-authconf;), ondersteunt HTTPS ook authenticatie op basis van "
@@ -11530,9 +11471,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 "In de veronderstelling dat een bestand met deze inhoud op uw computer "
 "opgeslagen werd als <filename>/etc/apt/mirrorlist.txt</filename>, kan het op "
@@ -11774,7 +11715,7 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Narrowing patterns"
-msgstr "Beperkende patronen"
+msgstr "Vernauwen van patronen"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -11965,6 +11906,10 @@ msgid ""
 "narrowing this pattern (see narrowing patterns above) makes it only match "
 "installed versions (see version patterns below)."
 msgstr ""
+"Selecteert pakketten die momenteel geïnstalleerd zijn. Sinds versie 2.5.4 "
+"zorgt het vernauwen van dit patroon (zie vernauwen van patronen hierboven) "
+"ervoor dat het alleen overeenkomsten oplevert met geïnstalleerde versies "
+"(zie versiepatronen hieronder)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -11980,7 +11925,7 @@ msgstr "<code>~nREGEX</code>"
 #: apt-patterns.7.xml
 msgid "Selects packages where the name matches the given regular expression."
 msgstr ""
-"Selecteert pakketten waarvan de naam overeenkomst met de opgegeven reguliere "
+"Selecteert pakketten waarvan de naam overeenkomt met de opgegeven reguliere "
 "expressie."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -11999,6 +11944,17 @@ msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 "Selecteert pakketten die niet langer aanwezig zijn in de pakketbronnen."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr "<code>?phasing</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+"Selecteert pakketten die bij upgrades vastgehouden worden vanwege fasering."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -12092,6 +12048,10 @@ msgid ""
 "version(2.0))</code>matched even if 2.0 was not installed, but another "
 "version was."
 msgstr ""
+"Selecteert pakketversies die momenteel zijn geïnstalleerd. Versies ouder dan "
+"2.5.4 gaven alleen een overeenkomst op het pakketniveau; dus <code>?any-"
+"version(?installed?version(2.0))</code> leverde een overeenkomst op, zelfs "
+"als 2.0 niet was geïnstalleerd, maar een andere versie wel."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -12201,6 +12161,19 @@ msgstr ""
 "Selecteert versies waarvan de prioriteitstekenreeks gelijk is aan de "
 "opgegeven naam."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr "<code>?security</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+"Selecteert pakketten die een beveiligingsupdate zijn of een opvolger zijn "
+"van een beveiligingsupdate."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -12245,6 +12218,16 @@ msgstr "<code>?suggests(PATROON)</code>"
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr "<code>~DSuggests:PATROON</code>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr "<code>?recommends(PATROON)</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr "<code>~DRecommends:PATROON</code>"
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -12298,11 +12281,12 @@ msgstr "<code>~DEnhances:PATROON</code>"
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 "Selecteert versies welke als vereiste hebben/als voorvereiste hebben/"
-"suggereren/conflicteren met/enz. pakketten welke overeenkomen met PATROON."
+"suggereren/aanbevelen/conflicteren met/enz. pakketten welke overeenkomen met "
+"PATROON."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -12442,10 +12426,10 @@ msgstr "?narrow accepteert een oneindig aantal argumenten"
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 "<code>foo</code> kan niet gebruikt worden als een verkorte vorm van <code>?"
 "name(foo)</code>, omdat dit ertoe kan leiden dat typefouten onopgemerkt "
@@ -12719,13 +12703,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"Ophalen van http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Ophalen van http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Ophalen van http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Pakketlijsten worden ingelezen... Klaar\n"
 "Boom van vereisten wordt opgebouwd... Klaar\n"
@@ -12907,8 +12891,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12920,8 +12903,7 @@ msgstr ""
 "\n"
 " Bijvoorbeeld:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12944,13 +12926,13 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Voer het label van de op te halen distributie in of een pad\n"
 " naar het pakketbestand dat eindig op een /. Een label van een\n"
-" distributie is typisch iets in de zin van : stable unstable testing non-US\n"
+" distributie is typisch iets in de zin van : stable unstable testing\n"
 "\n"
 " Distributie [stable]:\n"
 
@@ -12959,19 +12941,12 @@ msgstr ""
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "De distributie verwijst naar de versie van Debian in het archief. "
 "<emphasis>stable</emphasis> verwijst naar de recentste uitgebrachte versie "
 "en <emphasis>unstable</emphasis> verwijst naar de versie die ontwikkeld "
-"wordt. <emphasis>non-US</emphasis> is enkel op sommige spiegelservers "
-"beschikbaar en verwijst naar pakketten die encryptietechnologie gebruiken of "
-"andere zaken waarvan de uitvoer uit de Verenigde Staten niet toegelaten is. "
-"Deze pakketten invoeren in de Verenigde Staten is echter wel legaal."
+"wordt."
 
 #. type: Content of: <book><chapter><screen>
 #: guide.dbk
@@ -13544,18 +13519,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Ophalen:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Ophalen:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Ophalen:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Geraakt http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Ophalen:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Ophalen:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Ophalen:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Wachten op bestand' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13898,8 +13873,8 @@ msgid ""
 "emphasis>."
 msgstr ""
 "U krijgt meer details als u de man-pagina apt.conf raadpleegt en het "
-"voorbeeldconfiguratiebestand in <emphasis>/usr/share/doc/apt/examples/apt."
-"conf</emphasis>."
+"voorbeeldconfiguratiebestand in <emphasis>/usr/share/doc/apt/examples/"
+"apt.conf</emphasis>."
 
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
@@ -14120,17 +14095,3 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr ""
 "En dit zal gebruik maken van de reeds opgehaalde archieven op de schijf."
-
-#~ msgid "Selects packages that are currently installed."
-#~ msgstr "Selecteert pakketten die momenteel geïnstalleerd zijn."
-
-#~ msgid ""
-#~ "Grouping patterns with <code>(...)</code> or writing <code>?or(A,B)</"
-#~ "code> as <code>A|B</code> are not supported. We do not believe that the "
-#~ "use of <code>|</code> is that common, and the grouping is not necessary "
-#~ "without it."
-#~ msgstr ""
-#~ "Het groeperen van patronen met <code>(...)</code> of <code>?or(A,B)</"
-#~ "code> schrijven als <code>A|B</code> worden niet ondersteund. We zijn "
-#~ "niet van mening dat het gebruik van <code>|</code> erg verspreid is en "
-#~ "dat zonder dit de groepering niet noodzakelijk is."
diff --git a/doc/po/pl.po b/doc/po/pl.po
index 0d5e58f..a86a1fe 100644
--- a/doc/po/pl.po
+++ b/doc/po/pl.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2014-07-04 02:13+0200\n"
 "Last-Translator: Robert Luberda <robert@debian.org>\n"
 "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
@@ -65,7 +65,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -76,7 +76,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>Strona błędów APT</ulink>. \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>Strona błędów APT</ulink>. \n"
 " Aby zgłosić błąd w APT, proszę przeczytać\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> lub opis polecenia\n"
 "   &reportbug;.\n"
@@ -148,6 +148,33 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-v</option></term>\n"
+#| "      <term><option>--version</option></term>\n"
+#| "      <listitem><para>Show the program version.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-v</option></term>\n"
+"      <term><option>--version</option></term>\n"
+"      <listitem><para>Wyświetla wersję programu.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -176,7 +203,19 @@ msgstr ""
 
 #. type: Plain text
 #: apt.ent
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
 msgid ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -188,6 +227,44 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>-o</option></term>\n"
+"      <term><option>--option</option></term>\n"
+"     <listitem><para>Ustawia opcję konfiguracji. Pozwala ustawić dowolną\n"
+"      opcję konfiguracji. Składnia jest następująca: <option>-o Foo::Bar=bar</option>.\n"
+"      <option>-o</option> i <option>--option</option> można podać wielokrotnie - \n"
+"      do ustawiania różnych opcji.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+#| msgid ""
+#| "     <varlistentry>\n"
+#| "      <term><option>-o</option></term>\n"
+#| "      <term><option>--option</option></term>\n"
+#| "     <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+#| "      configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+#| "      <option>-o</option> and <option>--option</option> can be used multiple\n"
+#| "      times to set different options.\n"
+#| "     </para>\n"
+#| "     </listitem>\n"
+#| "     </varlistentry>\n"
+#| "\">\n"
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 "     <varlistentry>\n"
@@ -516,11 +593,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
 "\"opcja_konfiguracji\">"
 
 #. type: Plain text
@@ -535,12 +613,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"wydanie_docelowe\">"
 
 #. type: Plain text
@@ -591,11 +669,11 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"pkt_montowania_cdromu\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"pkt_montowania_cdromu\">"
 
 #. type: Plain text
 #: apt.ent
@@ -658,28 +736,18 @@ msgstr ""
 "<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"sekcja\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"id_klucza\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -689,12 +757,11 @@ msgid "command-line interface"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Opis"
 
@@ -743,6 +810,13 @@ msgid ""
 "package isn't performed."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -752,7 +826,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ""
 
@@ -877,10 +951,10 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -895,6 +969,20 @@ msgid ""
 "your preferred text editor while also providing basic sanity checks."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "&apt-conf;"
+msgid "(summarised in &apt-cache;)"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "apt-get"
+msgid "(summarised in &apt-get;)"
+msgstr "apt-get"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -921,29 +1009,25 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Zobacz także"
 
 #
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
-#, fuzzy
-#| msgid ""
-#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
-#| "preferences;, the APT Howto."
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-"&apt-config;, &apt-secure;, Przewodnik APT dla użytkowników w &guidesdir;, "
-"&apt-preferences;, APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, Przewodnik APT dla użytkowników w &guidesdir;, &apt-preferences;, "
+"APT Howto."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1268,10 +1352,10 @@ msgstr ""
 "pakiety ze źródłami. APT na podstawie listy dostępnych pakietów decyduje, "
 "który pakiet źródłowy ściągnąć. Następnie szuka najnowszej dostępnej wersji "
 "pakietu źródłowego i pobiera ją do bieżącego katalogu. Jeśli jest to "
-"możliwe, to APT bierze pod uwagę domyślne wydanie, ustawione w <literal>APT::"
-"Default-Release</literal> w pliku konfiguracyjnym albo określone w opcji "
-"<option>-t</option>, albo podane przy użyciu składni <literal>pakiet/"
-"wydanie</literal>."
+"możliwe, to APT bierze pod uwagę domyślne wydanie, ustawione w "
+"<literal>APT::Default-Release</literal> w pliku konfiguracyjnym albo "
+"określone w opcji <option>-t</option>, albo podane przy użyciu składni "
+"<literal>pakiet/wydanie</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1462,6 +1546,20 @@ msgstr ""
 "<literal>APT::Clean-Installed</literal> zapobiegnie usuwaniu plików "
 "zawierajÄ…cych zainstalowane pakiety."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1503,12 +1601,12 @@ msgstr ""
 "<literal>changelog</literal> pobiera dziennik zmian pakietu i wyświetla go, "
 "używając polecenia  <command>sensible-pager</command>. Nazwa serwera i "
 "katalog bazowy jest definiowany w zmiennej <literal>APT::Changelogs::Server</"
-"literal> (np. <ulink url=\"http://packages.debian.org/changelogs\">packages."
-"debian.org/changelogs</ulink> dla Debiana lub <ulink url=\"http://changelogs."
-"ubuntu.com/changelogs\">changelogs.ubuntu.com/changelogs</ulink> dla "
-"Ubuntu). Domyślnie wyświetlany jest dziennik zmian wersji, która już jest "
-"zainstalowana. Jednakże można to zmienić, używając takich samych opcji, jak "
-"te dla polecenia <option>install</option>."
+"literal> (np. <ulink url=\"http://packages.debian.org/"
+"changelogs\">packages.debian.org/changelogs</ulink> dla Debiana lub <ulink "
+"url=\"http://changelogs.ubuntu.com/changelogs\">changelogs.ubuntu.com/"
+"changelogs</ulink> dla Ubuntu). Domyślnie wyświetlany jest dziennik zmian "
+"wersji, która już jest zainstalowana. Jednakże można to zmienić, używając "
+"takich samych opcji, jak te dla polecenia <option>install</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1556,8 +1654,8 @@ msgid ""
 "Configuration Item: <literal>APT::Get::Download-Only</literal>."
 msgstr ""
 "Tylko pobieranie; pliki z pakietami są tylko ściągane, ale nie rozpakowywane "
-"czy instalowane.  Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Download-Only</literal>."
+"czy instalowane.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Download-Only</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1585,8 +1683,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Popraw; podejmuje próbę poprawienia zepsutych zależności. Używanie tej opcji "
 "z install/remove może spowodować pominięcie któregokolwiek z pakietów "
@@ -1630,8 +1728,8 @@ msgid ""
 msgstr ""
 "Wyłącza pobierania pakietów. Najlepiej stosować z <option>--ignore-missing</"
 "option>, aby wymusić na APT używanie tylko tych plików .deb, które zostały "
-"wcześniej ściągnięte.  Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Download</literal>."
+"wcześniej ściągnięte.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Download</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1648,8 +1746,8 @@ msgstr ""
 "wskaźniki postępu. Więcej znaków q spowoduje jeszcze bardziej ciche wyjście, "
 "maksimum jest 2. Można także ustawić poziom cichości za pomocą <option>-q=#</"
 "option>, nadpisując tym samym opcję z pliku konfiguracyjnego. Należy "
-"zauważyć, że poziom cichości równy 2 implikuje <option>-y</option>, dlatego -"
-"qq nigdy nie powinno być używane bez opcji typu -d, --print-uris lub -s, "
+"zauważyć, że poziom cichości równy 2 implikuje <option>-y</option>, dlatego "
+"-qq nigdy nie powinno być używane bez opcji typu -d, --print-uris lub -s, "
 "gdyż APT może zadecydować o zrobieniu czegoś, czego użytkownik się nie "
 "spodziewa. Pozycja w pliku konfiguracyjnym: <literal>quiet</literal>."
 
@@ -1697,14 +1795,14 @@ msgstr ""
 "wszelkie pytania, uruchamia się w trybie nieinteraktywnym. Jeśli wystąpi "
 "jakaś niepożądana sytuacja, na przykład zmiana wstrzymanego pakietu lub "
 "usunięcie pakietu mającego status Essential, <literal>apt-get</literal> "
-"przerwie działanie.  Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Assume-Yes</literal>."
+"przerwie działanie.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Assume-Yes</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
 "Automatycznie odpowiada \"nie\" na wszystkie zapytania. Pozycja w pliku "
 "konfiguracyjnym: <literal>APT::Get::Assume-No</literal>."
@@ -1734,6 +1832,33 @@ msgstr ""
 "Wyświetla pełne wersje aktualizowanych pakietów Pozycja w pliku "
 "konfiguracyjnym: <literal>APT::Get::Show-Versions</literal>."
 
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Re-install packages that are already installed and at the newest "
+#| "version.  Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Ponownie instaluje pakiety, których najnowsza wersja już jest zainstalowana "
+"Pozycja w pliku konfiguracyjnym: <literal>APT::Get::ReInstall</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"Ogranicza wyjście poleceń <literal>depends</literal> i <literal>rdepends</"
+"literal> tylko do pakietów, które są obecnie zainstalowane.  Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Cache::Installed</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 #, fuzzy
@@ -1748,17 +1873,17 @@ msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Za pomocą tej opcji można określić architekturę pakietów budowanych przez "
 "<command>apt-get source --compile</command> i sposób, w jaki są spełniane "
 "międzyarchitekturowe zależności czasu budowania. Domyślnie nie jest "
 "ustawiona, co oznacza, że architektura budowanych pakietów jest taka sama "
-"jak architektura bieżącego komputera (definiowana przez <literal>APT::"
-"Architecture</literal>). Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Host-Architecture</literal>."
+"jak architektura bieżącego komputera (definiowana przez "
+"<literal>APT::Architecture</literal>). Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Host-Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1781,9 +1906,9 @@ msgstr ""
 "<command>apt-get source --compile</command> i sposób, w jaki są spełniane "
 "międzyarchitekturowe zależności czasu budowania. Domyślnie nie jest "
 "ustawiona, co oznacza, że architektura budowanych pakietów jest taka sama "
-"jak architektura bieżącego komputera (definiowana przez <literal>APT::"
-"Architecture</literal>). Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Host-Architecture</literal>."
+"jak architektura bieżącego komputera (definiowana przez "
+"<literal>APT::Architecture</literal>). Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Host-Architecture</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1869,8 +1994,8 @@ msgstr ""
 "kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
 "jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
 "bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
-"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"force-yes</literal>."
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::force-yes</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1893,8 +2018,8 @@ msgstr ""
 "kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
 "jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
 "bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
-"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"force-yes</literal>."
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::force-yes</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1917,8 +2042,8 @@ msgstr ""
 "kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
 "jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
 "bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
-"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"force-yes</literal>."
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::force-yes</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1944,8 +2069,8 @@ msgstr ""
 "kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
 "jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
 "bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
-"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"force-yes</literal>."
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::force-yes</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1957,8 +2082,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "Nie ściąga pakietów do zainstalowania, tylko wypisuje ich URI. Każdy URI "
 "składa się z lokalizacji, nazwy pliku przeznaczenia, rozmiaru oraz "
@@ -2002,8 +2127,8 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Ta opcja jest domyślnie włączona, można ją wyłączyć używając <literal>--no-"
 "list-cleanup</literal>. Jeżeli jest włączona, <command>apt-get</command> "
@@ -2012,6 +2137,16 @@ msgstr ""
 "wyłączenia mogłyby być częste zmiany w sources.list. Pozycja w pliku "
 "konfiguracyjnym: <literal>APT::Get::List-Cleanup</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2048,8 +2183,8 @@ msgstr ""
 "Wykonuje tylko \"banalne\" (ang. \"trivial\") operacje. Tę opcję można "
 "porównać z <option>--assume-yes</option>, ale tam gdzie <option>--assume-"
 "yes</option> odpowiedziałoby \"tak\" na pytanie, <option>--trivial-only</"
-"option> odpowie \"nie\".  Pozycja w pliku konfiguracyjnym: <literal>APT::"
-"Get::Trivial-Only</literal>."
+"option> odpowie \"nie\".  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Trivial-Only</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2083,8 +2218,8 @@ msgstr ""
 "Jeżeli polecenie to albo <literal>install</literal>, albo <literal>remove</"
 "literal>, to ta opcja działa tak, jak uruchomienie polecenia "
 "<literal>autoremove</literal> i usuwa pakiety mające nieużywane już "
-"zależności. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"AutomaticRemove</literal>."
+"zależności. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::AutomaticRemove</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2101,10 +2236,10 @@ msgstr ""
 "Ma znaczenie tylko dla poleceń <literal>source</literal> i <literal>build-"
 "dep</literal>. Wskazuje na to, że podane nazwy pakietów źródłowych nie "
 "powinny być mapowane w tabeli pakietów binarnych. Oznacza to, że gdy podano "
-"tę opcję, to powyższe polecenia zaakceptują tylko nazwy pakietów źródłowych."
-"Nie będą akceptować nazw pakietów binarnych ani wyszukiwać odpowiadających "
-"im pakietów źródłowych. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"Only-Source</literal>."
+"tę opcję, to powyższe polecenia zaakceptują tylko nazwy pakietów "
+"źródłowych.Nie będą akceptować nazw pakietów binarnych ani wyszukiwać "
+"odpowiadających im pakietów źródłowych. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Only-Source</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2115,8 +2250,9 @@ msgid ""
 "literal>, and <literal>APT::Get::Tar-Only</literal>."
 msgstr ""
 "Ściągnij tylko plik diff, dsc albo tar pakietu źródłowego.  Pozycje w pliku "
-"konfiguracyjnym:  <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
-"Dsc-Only</literal> oraz <literal>APT::Get::Tar-Only</literal>."
+"konfiguracyjnym:  <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal> oraz <literal>APT::Get::Tar-Only</"
+"literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2217,8 +2353,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Pliki"
@@ -2226,19 +2383,14 @@ msgstr "Pliki"
 #
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
-#| "preferences;, the APT Howto."
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
-"&apt-config;, &apt-secure;, Przewodnik APT dla użytkowników w &guidesdir;, "
-"&apt-preferences;, APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, Przewodnik APT dla użytkowników w "
+"&guidesdir;, &apt-preferences;, APT Howto."
 
 #
 #. type: Content of: <refentry><refsect1><para>
@@ -2656,22 +2808,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> bierze jako argument listę pakietów i generuje "
-"wyjście odpowiednie dla programu dotty z pakietu <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. Wynikiem będzie "
-"zbiór wierzchołków i krawędzi reprezentujących powiązania między pakietami. "
-"Domyślnie podane pakiety wyśledzą wszystkie pakiety zależne.  Może to "
-"spowodować wypisanie bardzo dużego grafu. Aby wypisać powiązania tylko "
-"pomiędzy pakietami podanymi w linii poleceń, należy użyć opcji <literal>APT::"
-"Cache::GivenOnly</literal>."
+"wyjście odpowiednie dla programu dotty z pakietu <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink>. Wynikiem będzie zbiór wierzchołków i "
+"krawędzi reprezentujących powiązania między pakietami. Domyślnie podane "
+"pakiety wyśledzą wszystkie pakiety zależne.  Może to spowodować wypisanie "
+"bardzo dużego grafu. Aby wypisać powiązania tylko pomiędzy pakietami "
+"podanymi w linii poleceń, należy użyć opcji <literal>APT::Cache::GivenOnly</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2697,12 +2848,12 @@ msgstr "Uwaga: dotty nie potrafi narysować większego zbioru pakietów."
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "Robi to samo, co <literal>dotty</literal>, tylko dla xvcg z <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">narzędzia VCG</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">narzędzia VCG</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2732,8 +2883,8 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "polecenie <literal>madison</literal> z <literal>apt-cache</literal> próbuje "
 "naśladować format wyjścia i część funkcjonalności programu <literal>madison</"
@@ -2747,8 +2898,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "Podaje nazwę pliku to przechowywania bufora pakietów, który jest podstawowym "
 "buforem używanym we wszystkich operacjach.  Pozycja w pliku konfiguracyjnym: "
@@ -2768,8 +2919,8 @@ msgstr ""
 "akcjÄ™ <literal>gencaches</literal> i przechowuje sparsowanÄ… wersjÄ™ "
 "informacji o pakietach pobraną ze zdalnych źródeł. Podczas budowania bufora "
 "pakietów, bufor źródeł jest używany w celu uniknięcia ponownego parsowania "
-"wszystkich plików pakietów.  Pozycja w pliku konfiguracyjnym: <literal>Dir::"
-"Cache::srcpkgcache</literal>."
+"wszystkich plików pakietów.  Pozycja w pliku konfiguracyjnym: "
+"<literal>Dir::Cache::srcpkgcache</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2795,8 +2946,8 @@ msgid ""
 msgstr ""
 "Wyświetla tylko ważne zależności; do używania z akcjami <literal>unmet</"
 "literal> o <literal>depends</literal>. Powoduje wypisanie tylko zależności "
-"typu Depends i Pre-Depends. Pozycja w pliku konfiguracyjnym: <literal>APT::"
-"Cache::Important</literal>."
+"typu Depends i Pre-Depends. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Cache::Important</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2810,9 +2961,9 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Domyślnie <literal>depends</literal> i <literal>rdepends</literal> wypisują "
 "wszystkie zależności. Można to zmienić, używając tych flag, które spowodują "
@@ -2891,8 +3042,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "Powoduje, że akcja <literal>pkgnames</literal> wypisze nazwy wszystkich "
 "pakietów, łącznie z pakietami wirtualnymi oraz pakietami mającymi brakujące "
@@ -2949,8 +3100,8 @@ msgstr ""
 #: apt-cache.8.xml
 #, fuzzy
 #| msgid ""
-#| "Use source index field ordering.  Configuration Item: <literal>APT::"
-#| "SortPkgs::Source</literal>."
+#| "Use source index field ordering.  Configuration Item: "
+#| "<literal>APT::SortPkgs::Source</literal>."
 msgid ""
 "Note that these sources are treated as trusted (see &apt-secure;).  "
 "Configuration Item: <literal>APT::Sources::With</literal>."
@@ -2961,8 +3112,8 @@ msgstr ""
 #
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #
 #. type: Content of: <refentry><refsect1><para>
@@ -2974,284 +3125,6 @@ msgstr ""
 "<command>apt-cache</command> zwraca zero, gdy zakończyło się pomyślnie, 100 "
 "- w przypadku błędu."
 
-#
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "APT key management utility"
-msgid "Deprecated APT key management utility"
-msgstr "Narzędzie zarządzanie kluczami APT"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> jest używane do zarządzania listami kluczy "
-"używanych przez APT do sprawdzania autentyczności pakietów. Pakiety, których "
-"autentyczność została sprawdzona przy użyciu tych kluczy, są uznawane za "
-"zaufane."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Polecenia"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Dodaje nowy klucz do listy zaufanych kluczy. Klucz jest czytany z pliku "
-"podanego jako parametr &synopsis-param-filename; lub ze standardowego "
-"wejścia, jeśli zamiast nazwy pliku podano <literal>-</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Usuwa klucz z listy zaufanych kluczy."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "Wyświetla klucz &synopsis-param-keyid; na standardowym wyjściu."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Wypisuje na standardowe wyjście wszystkie zaufane klucze."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "List trusted keys."
-msgid "List trusted keys with fingerprints."
-msgstr "Wyświetla listę zaufanych kluczy."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum i "
-"usuwa z lokalnej składnicy niepoprawne klucze archiwum. Składnica kluczy "
-"archiwum jest dostarczana przez pakiet <literal>archive-keyring</literal> "
-"Twojej dystrybucji, np. pakiet &keyring-package; w systemach &keyring-"
-"distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Aktualizuje składnicę kluczy, działając podobnie do powyższego polecenia "
-"<command>update</command>, z tą różnicą, że pobiera składnicę kluczy "
-"archiwum z URI i waliduje go względem klucza głównego. Wymaga "
-"zainstalowanego programu &wget; oraz podanego (podczas budowania APT) "
-"serwera, z którego główny klucz będzie pobrany. APT w Debianie nie obsługuje "
-"tego polecenia i opiera siÄ™ zamiast niego na poleceniu <command>update</"
-"command>, ale APT w Ubuntu je obsługuje."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Opcje"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Proszę zauważyć, że poniższe opcje muszą być podane przed poleceniami "
-"opisanymi w poprzednim rozdziale."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Opcja pozwala na podanie pliku składnicy kluczy publicznych używanego w "
-"programie. Domyślnie program używa pliku <filename>trusted.gpg</filename> "
-"oraz wszystkich plików częściowych w katalogu <filename>trusted.gpg.d</"
-"filename>. <filename>trusted.gpg</filename> jest jednakże podstawową "
-"składnicą kluczy, co oznacza na przykład to, że nowe klucze będą dodawane "
-"właśnie tam."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-#| msgid "Operation"
-msgid "Deprecation"
-msgstr "Kolejne kroki"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3263,8 +3136,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 
@@ -3364,6 +3237,12 @@ msgstr ""
 "jak <literal>showauto</literal> z tym wyjątkiem, że wypisze listę ręcznie "
 "zainstalowanych pakietów."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Opcje"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3434,6 +3313,13 @@ msgid ""
 "called dpkg selections can be found in &dpkg;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
@@ -3487,6 +3373,58 @@ msgstr ""
 "Nakładki na APT typu &apt-get;, &aptitude; i &synaptic; obsługują ten nowy "
 "sposób autoryzacji pakietów."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "User configuration"
+msgid "User Configuration"
+msgstr "Konfiguracja użytkownika"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 #, fuzzy
@@ -3690,84 +3628,32 @@ msgid ""
 msgstr ""
 "Jednakże nie chroni przed złamaniem zabezpieczeń głównego serwera Debiana "
 "(używanego do podpisywania pakietów) lub złamaniem zabezpieczeń klucza "
-"używanego do podpisywania plików Release. Mechanizm ten stanowi uzupełnienie "
-"dla sprawdzania sygnatur poszczególnych pakietów."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "Information changes"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"A Release file contains beside the checksums for the files in the repository "
-"also general information about the repository like the origin, codename or "
-"version number of the release."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"This information is shown in various places so a repository owner should "
-"always ensure correctness. Further more user configuration like &apt-"
-"preferences; can depend and make use of this information. Since version 1.5 "
-"the user must therefore explicitly confirm changes to signal that the user "
-"is sufficiently prepared e.g. for the new major release of the distribution "
-"shipped in the repository (as e.g. indicated by the codename)."
-msgstr ""
+"używanego do podpisywania plików Release. Mechanizm ten stanowi uzupełnienie "
+"dla sprawdzania sygnatur poszczególnych pakietów."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
-#, fuzzy
-#| msgid "User configuration"
-msgid "User Configuration"
-msgstr "Konfiguracja użytkownika"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-#, fuzzy
-#| msgid ""
-#| "<command>apt-key</command> is the program that manages the list of keys "
-#| "used by apt. It can be used to add or remove keys, although an "
-#| "installation of this release will automatically contain the default "
-#| "Debian archive signing keys used in the Debian package repositories."
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgid "Information changes"
 msgstr ""
-"<command>apt-key</command> jest programem służącym do zarządzania listą "
-"kluczy używanych przez APT. Można go użyć do dodania lub usunięcia klucza, "
-"chociaż zainstalowanie bieżącego wydania automatycznie dostarczy domyślny "
-"klucz używany w repozytoriach pakietów Debiana do podpisywania archiwów "
-"Debiana."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
+"A Release file contains beside the checksums for the files in the repository "
+"also general information about the repository like the origin, codename or "
+"version number of the release."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
+"This information is shown in various places so a repository owner should "
+"always ensure correctness. Further more user configuration like &apt-"
+"preferences; can depend and make use of this information. Since version 1.5 "
+"the user must therefore explicitly confirm changes to signal that the user "
+"is sufficiently prepared e.g. for the new major release of the distribution "
+"shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
-"Aby dodać nowy klucz, należy go najpierw pobrać (używając zaufanego kanału "
-"komunikacji podczas pobierania), dodać go poleceniem <command>apt-key</"
-"command> oraz uruchomić  <command>apt-get update</command>, tak żeby APT "
-"mogło pobrać i zweryfikować pliki <filename>InRelease</filename> lub "
-"<filename>Release.gpg</filename> ze skonfigurowanych archiwów."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3798,12 +3684,12 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Podpisać go</emphasis>. Można to zrobić za pomocą poleceń "
-"<command>gpg --clearsign -o InRelease Release</command> i <command>gpg -abs -"
-"o Release.gpg Release</command>."
+"<command>gpg --clearsign -o InRelease Release</command> i <command>gpg -abs "
+"-o Release.gpg Release</command>."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-secure.8.xml
@@ -3846,9 +3732,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3865,17 +3755,18 @@ msgstr ""
 #| "Distribution HOWTO</ulink> by V. Alex Brennen."
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
-msgstr ""
-"Więcej informacji można znaleźć w rozdziale \"<ulink url=\"http://www.debian."
-"org/doc/manuals/securing-debian-howto/ch7\">Debian Security Infrastructure</"
-"ulink>\" podręcznika \"Securing Debian Manual\" i w dokumencie \"<ulink "
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
 "url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
-"Distribution HOWTO</ulink>\" napisanym przez V. Alexa Brennena."
+"Distribution HOWTO</ulink> by V. Alex Brennen."
+msgstr ""
+"Więcej informacji można znaleźć w rozdziale \"<ulink url=\"http://"
+"www.debian.org/doc/manuals/securing-debian-manual/ch07\">Debian Security "
+"Infrastructure</ulink>\" podręcznika \"Securing Debian Manual\" i w "
+"dokumencie \"<ulink url=\"http://www.cryptnet.net/fdp/crypto/"
+"strong_distro.html\" >Strong Distribution HOWTO</ulink>\" napisanym przez V. "
+"Alexa Brennena."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
@@ -3971,8 +3862,8 @@ msgstr ""
 #| "configured.  Configuration Item: <literal>Acquire::cdrom::mount</literal>."
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Punkt montowania. Podaje lokalizację katalogu, w którym będzie zamontowany "
 "CD-ROM. Musi istnieć odpowiednia konfiguracja dla tego punktu montowania w "
@@ -4002,20 +3893,20 @@ msgid ""
 msgstr ""
 "Przemianuj dysk. Zmienia etykietę dysku lub unieważnia etykietę wcześniej "
 "daną dyskowi. Podanie tej opcji spowoduje, że <command>apt-cdrom</command>  "
-"spyta siÄ™ o nowÄ… etykietÄ™.  Pozycja w pliku konfiguracyjnym: <literal>APT::"
-"CDROM::Rename</literal>."
+"spyta siÄ™ o nowÄ… etykietÄ™.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::CDROM::Rename</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "Nie montuj. Uniemożliwia programowi <command>apt-cdrom</command> montowanie "
-"i odmontowywanie CDROM-u.  Pozycja w pliku konfiguracyjnym: <literal>APT::"
-"CDROM::NoMount</literal>."
+"i odmontowywanie CDROM-u.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::CDROM::NoMount</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4029,8 +3920,8 @@ msgstr ""
 "Szybkie kopiowanie. Zakłada, że pliki z pakietami są poprawne i nie sprawdza "
 "każdego pakietu. Ta opcja powinna być używana tylko wtedy, jeżeli "
 "<command>apt-cdrom</command> był już uruchomiony na danym dysku i nie wykrył "
-"na nim żadnych błędów.  Pozycja w pliku konfiguracyjnym: <literal>APT::"
-"CDROM::Fast</literal>."
+"na nim żadnych błędów.  Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::CDROM::Fast</literal>."
 
 #
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4121,8 +4012,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 "Powyższe ustawi wartość zmiennej środowiskowej powłoki $OPTS na wartość "
 "zmiennej MojaAplikacja::opcje, z domyślną wartością <option>-f</option>."
@@ -4251,9 +4142,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "wszystkie pliki w <literal>Dir::Etc::Parts</literal> w rosnÄ…cym porzÄ…dku "
 "alfanumerycznym, których nazwy nie mają rozszerzenia lub mają rozszerzenie "
@@ -4463,6 +4354,55 @@ msgid ""
 "are registered via <command>dpkg --add-architecture</command>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4508,6 +4448,14 @@ msgid ""
 "testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4626,6 +4574,38 @@ msgid ""
 "documentation for more information about the options here."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -4775,61 +4755,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -4971,9 +4896,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5062,21 +4987,44 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -5091,9 +5039,9 @@ msgstr "Konfiguracja użytkownika"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -5166,12 +5114,12 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -5309,9 +5257,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -5462,11 +5410,6 @@ msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -5491,11 +5434,6 @@ msgid ""
 "stored on CD-ROMs."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -5563,8 +5501,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -5575,14 +5513,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -5635,15 +5573,15 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 
@@ -6096,6 +6034,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6413,9 +6372,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -6593,9 +6552,9 @@ msgstr "Wtedy:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "Zostanie zainstalowana najnowsza dostępna wersja pakietu <literal>perl</"
 "literal>, jeśli tylko numer tej wersji zaczyna się od \"<literal>&good-perl;"
@@ -6874,21 +6833,21 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Wszystkie pliki <filename>Packages</filename> i <filename>Release</filename> "
 "pobierane z lokalizacji podanych w pliku &sources-list; sÄ… przechowywane w "
 "katalogu <filename>/var/lib/apt/lists</filename> lub w pliku o nazwie "
 "będącej wartością zmiennej <literal>Dir::State::Lists</literal> z pliku "
-"<filename>apt.conf</filename>. Na przykład plik o nazwie <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"zawiera plik <filename>Release</filename> pobrany z komputera "
-"<literal>debian.lcs.mit.edu</literal> dla plików komponentu "
+"<filename>apt.conf</filename>. Na przykład plik o nazwie "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> zawiera plik <filename>Release</filename> pobrany z "
+"komputera <literal>debian.lcs.mit.edu</literal> dla plików komponentu "
 "<literal>contrib</literal> architektury <literal>binary-i386</literal> "
 "dystrybucji <literal>unstable</literal> ."
 
@@ -7268,6 +7227,16 @@ msgstr ""
 "zmiennych konfiguracji <literal>Dir::Ignore-Files-Silently</literal>, to "
 "wypisze odpowiedni komunikat."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7303,6 +7272,12 @@ msgid ""
 "multi-architecture support."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -7466,13 +7441,13 @@ msgstr ""
 #: sources.list.5.xml
 #, fuzzy
 #| msgid ""
-#| "<literal>distribution</literal> may also contain a variable, "
-#| "<literal>$(ARCH)</literal> which expands to the Debian architecture (such "
-#| "as <literal>amd64</literal> or <literal>armel</literal>) used on the "
-#| "system. This permits architecture-independent <filename>sources.list</"
-#| "filename> files to be used. In general this is only of interest when "
-#| "specifying an exact path, <literal>APT</literal> will automatically "
-#| "generate a URI with the current architecture otherwise."
+#| "<literal>distribution</literal> may also contain a variable, <literal>$"
+#| "(ARCH)</literal> which expands to the Debian architecture (such as "
+#| "<literal>amd64</literal> or <literal>armel</literal>) used on the system. "
+#| "This permits architecture-independent <filename>sources.list</filename> "
+#| "files to be used. In general this is only of interest when specifying an "
+#| "exact path, <literal>APT</literal> will automatically generate a URI with "
+#| "the current architecture otherwise."
 msgid ""
 "<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
 "literal> which expands to the Debian architecture (such as <literal>amd64</"
@@ -7560,9 +7535,10 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -7634,11 +7610,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -7741,18 +7718,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -7768,8 +7744,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -7820,6 +7797,35 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 #, fuzzy
@@ -7926,46 +7932,8 @@ msgid ""
 "source list."
 msgstr ""
 "Schemat cdrom pozwala APT na użycie lokalnego dysku CD-ROM ze zmianą dysków. "
-"Prosimy używać programu &apt-cdrom; do dodawania takich wpisów w sources."
-"list."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-#, fuzzy
-#| msgid ""
-#| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
-#| "behavior is highly configurable; for more information see the &apt-conf; "
-#| "manual page. Please note that an FTP proxy can be specified by using the "
-#| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
-#| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-#| "environment variable and <emphasis>only</emphasis> this environment "
-#| "variable. Proxies using HTTP specified in the configuration file will be "
-#| "ignored."
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Schemat ftp opisuje serwer FTP archiwum. Zachowanie modułu FTP można "
-"dowolnie konfigurować, szczegóły można znaleźć na stronie podręcznika  &apt-"
-"conf;. Proszę zauważyć, że można podać serwer proxy FTP, używając zmiennej "
-"środowiskowej <envar>ftp_proxy</envar>. Możliwe jest podanie serwera proxy "
-"HTTP (które to serwery często rozumieją lokalizacje zasobów FTP), używając "
-"tej i <emphasis>tylko</emphasis> tej zmiennej środowiskowej. Podane w pliku "
-"konfiguracyjnym serwery proxy  używające HTTP zostaną zignorowane."
+"Prosimy używać programu &apt-cdrom; do dodawania takich wpisów w "
+"sources.list."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
@@ -7980,20 +7948,6 @@ msgstr ""
 "katalogu bufora. Jest to użyteczne w przypadku używania nośnika przenośnego "
 "do skopiowania plików przy użyciu APT."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"Metoda rsh/ssh uruchamia RSH/SSH do połączenia się ze zdalnym komputerem i "
-"uzyskania dostępu do plików jako podany użytkownik. Dobrym pomysłem jest "
-"wcześniejsze przygotowanie kluczy RSA lub dostępu rhosts. APT używa "
-"standardowych poleceń <command>find</command> i <command>dd</command> do "
-"przetransferowania plików ze zdalnego komputera."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8115,9 +8069,9 @@ msgid ""
 "<literal>APT::Architectures</literal> while the second always retrieves "
 "<literal>amd64</literal> and <literal>armel</literal>."
 msgstr ""
-"Pierwsza linia pobiera informacje o pakiecie dla architektur w <literal>APT::"
-"Architectures</literal> , podczas gdy druga zawsze pobiera <literal>amd64</"
-"literal> i <literal>armel</literal>."
+"Pierwsza linia pobiera informacje o pakiecie dla architektur w "
+"<literal>APT::Architectures</literal> , podczas gdy druga zawsze pobiera "
+"<literal>amd64</literal> i <literal>armel</literal>."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
@@ -8161,8 +8115,8 @@ msgid ""
 "Uses HTTP to access the archive at archive.debian.org, and uses only the "
 "hamm/main area."
 msgstr ""
-"Użycie HTTP do uzyskania dostępu do archiwum na komputerze archive.debian."
-"org i dystrybucji hamm/main."
+"Użycie HTTP do uzyskania dostępu do archiwum na komputerze "
+"archive.debian.org i dystrybucji hamm/main."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
@@ -8187,62 +8141,63 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"Użycie FTP do uzyskania dostępu do archiwum na komputerze ftp.debian.org w "
+"Użycie HTTPS do uzyskania dostępu do archiwum na komputerze deb.debian.org w "
 "katalogu debian i używa tylko dystrybucji &debian-stable-codename;/contrib."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"Użycie FTP do uzyskania dostępu do archiwum na komputerze ftp.debian.org, "
+"Użycie HTTPS do uzyskania dostępu do archiwum na komputerze deb.debian.org, "
 "dystrybucji unstable/contrib. Jeśli poniższa linia wystąpi razem z linią z "
 "poprzedniego przykładu w tym samym pliku <filename>sources.list</filename>, "
-"to pojedyncza sesja FTP będzie użyta w celu uzyskania dostępu do obu zasobów."
+"to pojedyncza sesja HTTPS będzie użyta w celu uzyskania dostępu do obu "
+"zasobów."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -8284,11 +8239,11 @@ msgid ""
 "archives are not structured like this] <placeholder type=\"literallayout\" "
 "id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
 msgstr ""
-"Użycie HTTP do uzyskania dostępu do archiwum na komputerze ftp.tlh.debian."
-"org, w katalogu universe. Dla komputerów i386 używa tylko plików "
-"znalezionych w podkatalogu <filename>unstable/binary-i386</filename>, a dla "
-"komputerów amd64 - <filename>unstable/binary-amd64</filename> i tak dalej "
-"dla innych obsługiwanych architektur. (Uwaga: ten przykład jest tylko "
+"Użycie HTTP do uzyskania dostępu do archiwum na komputerze "
+"ftp.tlh.debian.org, w katalogu universe. Dla komputerów i386 używa tylko "
+"plików znalezionych w podkatalogu <filename>unstable/binary-i386</filename>, "
+"a dla komputerów amd64 - <filename>unstable/binary-amd64</filename> i tak "
+"dalej dla innych obsługiwanych architektur. (Uwaga: ten przykład jest tylko "
 "ilustracją, jak używać zmiennych podstawienia, oficjalne archiwum Debiana "
 "nie zawiera takiej struktury). <placeholder type=\"literallayout\" id=\"0\"/>"
 
@@ -8373,15 +8328,15 @@ msgstr ""
 "plik-template i skrypt-config sÄ… zapisywane w katalogu tymczasowym podanym "
 "jako argument opcji <option>-t</option> lub <option>--tempdir</option> "
 "(<literal>APT::ExtractTemplates::TempDir</literal>). Nazwy tych plików są w "
-"postaci <filename>pakiet.template.XXXXXX</filename> oraz <filename>pakiet."
-"config.XXXXXX</filename>."
+"postaci <filename>pakiet.template.XXXXXX</filename> oraz "
+"<filename>pakiet.config.XXXXXX</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "Katalog tymczasowy, w którym zapisywane będą wyciągnięte szablony "
 "<command>debconf</command> i pliki konfiguracyjne. Pozycja w pliku "
@@ -8427,8 +8382,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 "Używa kolejności pól indeksu pliku Source. Pozycja w pliku konfiguracji: "
 "<literal>APT::SortPkgs::Source</literal>."
@@ -8534,10 +8489,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -8729,8 +8684,8 @@ msgstr "linia <literal>Label:</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -8755,15 +8710,15 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -8784,8 +8739,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -9143,8 +9098,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 #, fuzzy
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "Przeszukaj tylko nazwy pakietów, pomijając szczegółowe opisy.  Pozycja w "
 "pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>."
@@ -9166,8 +9121,8 @@ msgstr ""
 "Jeżeli polecenie to albo <literal>install</literal>, albo <literal>remove</"
 "literal>, to ta opcja działa tak, jak uruchomienie polecenia "
 "<literal>autoremove</literal> i usuwa pakiety mające nieużywane już "
-"zależności. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
-"AutomaticRemove</literal>."
+"zależności. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::AutomaticRemove</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9330,16 +9285,16 @@ msgstr "Przykłady"
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><para><literallayout>
 #: apt_auth.conf.5.xml
@@ -9515,16 +9470,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -9539,14 +9495,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -9586,8 +9542,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -9619,12 +9575,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -9711,9 +9667,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -9742,9 +9698,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -9790,11 +9747,11 @@ msgstr ""
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -9996,9 +9953,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
@@ -10018,9 +9975,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
 #: apt-transport-mirror.1.xml
 #, fuzzy, no-wrap
-#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
@@ -10400,6 +10357,16 @@ msgstr ""
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -10578,6 +10545,17 @@ msgstr ""
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -10620,6 +10598,16 @@ msgstr ""
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -10673,8 +10661,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -10796,10 +10784,10 @@ msgstr ""
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -10869,8 +10857,8 @@ msgid ""
 msgstr ""
 "\"APT\" i ten dokument są oprogramowaniem wolnodostępnym, które można "
 "rozpowszechniać oraz zmieniać zgodnie z postanowieniami drugiej albo (wedle "
-"uznania) dowolnej późniejszej wersji \"Ogólnej Licencji Publicznej "
-"GNU\" (GNU General Public License) publikowanej przez \"FundacjÄ™ Wolnego "
+"uznania) dowolnej późniejszej wersji \"Ogólnej Licencji Publicznej GNU\" "
+"(GNU General Public License) publikowanej przez \"FundacjÄ™ Wolnego "
 "Oprogramowania (Free Software Foundation)."
 
 #. type: Content of: <book><bookinfo><legalnotice><para>
@@ -11061,13 +11049,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"Pob: http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Pob: http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Pob: http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Czytanie list pakietów... Gotowe\n"
 "Budowanie drzewa zależności... Gotowe\n"
@@ -11243,8 +11231,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -11256,7 +11243,6 @@ msgstr ""
 "\n"
 " Przykłady:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
 "      http://ftp.pl.debian.org/debian,\n"
 "\n"
 "\n"
@@ -11279,26 +11265,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Proszę podać znacznik dystrybucji do pobrania lub ścieżkę do pliku\n"
 " pakietów kończącą się znakiem \"/\". Zazwyczaj znacznikiem dystrybucji\n"
-" jest coÅ› w rodzaju: stable unstable testing non-US\n"
+" jest coÅ› w rodzaju: stable unstable testing\n"
 "\n"
 " Dystrybucja [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "Dystrybucja odnosi siÄ™ do wersji Debiana: <emphasis>stable</"
 "emphasis>(stabilna) to najnowsza wydana wersja, a <emphasis>unstable</"
@@ -11384,8 +11375,8 @@ msgid ""
 "<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
 msgstr ""
 "Domyślnie APT automatycznie usunie pliki pakietów (.deb), gdy tylko zostaną "
-"zainstalowane. Aby zmienić to zachowanie, proszę umieścić  <literal>Dselect::"
-"clean \"prompt\";</literal> w /etc/apt/apt.conf."
+"zainstalowane. Aby zmienić to zachowanie, proszę umieścić  "
+"<literal>Dselect::clean \"prompt\";</literal> w /etc/apt/apt.conf."
 
 #. type: Content of: <book><chapter><title>
 #: guide.dbk
@@ -11858,18 +11849,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Pob:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Pob:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Pob:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Traf http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Pob:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Pob:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Pob:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Oczekiwane na nagłówki' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -12130,11 +12121,11 @@ msgid ""
 "file URIs."
 msgstr ""
 "Plik konfiguracyjny powinien informować program APT, aby przechowywał swoje "
-"pliki na dysku, a także używał plików konfiguracyjnych z dysku. Plik sources."
-"list powinien zawierać prawidłowe odnośniki, których należy użyć na zdalnym "
-"komputerze, a plik status powinien być kopią <emphasis>/var/lib/dpkg/status</"
-"emphasis>. Należy zauważyć, że podczas używania lokalnego archiwum trzeba "
-"użyć tych samych odnośników o identycznej składni."
+"pliki na dysku, a także używał plików konfiguracyjnych z dysku. Plik "
+"sources.list powinien zawierać prawidłowe odnośniki, których należy użyć na "
+"zdalnym komputerze, a plik status powinien być kopią <emphasis>/var/lib/dpkg/"
+"status</emphasis>. Należy zauważyć, że podczas używania lokalnego archiwum "
+"trzeba użyć tych samych odnośników o identycznej składni."
 
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
@@ -12205,8 +12196,8 @@ msgid ""
 "emphasis>."
 msgstr ""
 "Więcej szczegółów można zobaczyć w stronie podręcznika apt.conf i w "
-"przykładowym pliku konfiguracyjnym <emphasis>/usr/share/doc/apt/examples/apt."
-"conf</emphasis>."
+"przykładowym pliku konfiguracyjnym <emphasis>/usr/share/doc/apt/examples/"
+"apt.conf</emphasis>."
 
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
@@ -12424,6 +12415,186 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 
+#, fuzzy
+#~| msgid ""
+#~| "The ftp scheme specifies an FTP server for the archive. APT's FTP "
+#~| "behavior is highly configurable; for more information see the &apt-conf; "
+#~| "manual page. Please note that an FTP proxy can be specified by using the "
+#~| "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~| "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~| "environment variable and <emphasis>only</emphasis> this environment "
+#~| "variable. Proxies using HTTP specified in the configuration file will be "
+#~| "ignored."
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Schemat ftp opisuje serwer FTP archiwum. Zachowanie modułu FTP można "
+#~ "dowolnie konfigurować, szczegóły można znaleźć na stronie podręcznika  "
+#~ "&apt-conf;. Proszę zauważyć, że można podać serwer proxy FTP, używając "
+#~ "zmiennej środowiskowej <envar>ftp_proxy</envar>. Możliwe jest podanie "
+#~ "serwera proxy HTTP (które to serwery często rozumieją lokalizacje zasobów "
+#~ "FTP), używając tej i <emphasis>tylko</emphasis> tej zmiennej "
+#~ "środowiskowej. Podane w pliku konfiguracyjnym serwery proxy  używające "
+#~ "HTTP zostanÄ… zignorowane."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "Metoda rsh/ssh uruchamia RSH/SSH do połączenia się ze zdalnym komputerem "
+#~ "i uzyskania dostępu do plików jako podany użytkownik. Dobrym pomysłem "
+#~ "jest wcześniejsze przygotowanie kluczy RSA lub dostępu rhosts. APT używa "
+#~ "standardowych poleceń <command>find</command> i <command>dd</command> do "
+#~ "przetransferowania plików ze zdalnego komputera."
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"id_klucza\">"
+
+#
+#, fuzzy
+#~| msgid "APT key management utility"
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "Narzędzie zarządzanie kluczami APT"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> jest używane do zarządzania listami kluczy "
+#~ "używanych przez APT do sprawdzania autentyczności pakietów. Pakiety, "
+#~ "których autentyczność została sprawdzona przy użyciu tych kluczy, są "
+#~ "uznawane za zaufane."
+
+#~ msgid "Commands"
+#~ msgstr "Polecenia"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "Dodaje nowy klucz do listy zaufanych kluczy. Klucz jest czytany z pliku "
+#~ "podanego jako parametr &synopsis-param-filename; lub ze standardowego "
+#~ "wejścia, jeśli zamiast nazwy pliku podano <literal>-</literal>."
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "Usuwa klucz z listy zaufanych kluczy."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr "Wyświetla klucz &synopsis-param-keyid; na standardowym wyjściu."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "Wypisuje na standardowe wyjście wszystkie zaufane klucze."
+
+#, fuzzy
+#~| msgid "List trusted keys."
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "Wyświetla listę zaufanych kluczy."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum i "
+#~ "usuwa z lokalnej składnicy niepoprawne klucze archiwum. Składnica kluczy "
+#~ "archiwum jest dostarczana przez pakiet <literal>archive-keyring</literal> "
+#~ "Twojej dystrybucji, np. pakiet &keyring-package; w systemach &keyring-"
+#~ "distro;."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "Aktualizuje składnicę kluczy, działając podobnie do powyższego polecenia "
+#~ "<command>update</command>, z tą różnicą, że pobiera składnicę kluczy "
+#~ "archiwum z URI i waliduje go względem klucza głównego. Wymaga "
+#~ "zainstalowanego programu &wget; oraz podanego (podczas budowania APT) "
+#~ "serwera, z którego główny klucz będzie pobrany. APT w Debianie nie "
+#~ "obsługuje tego polecenia i opiera się zamiast niego na poleceniu "
+#~ "<command>update</command>, ale APT w Ubuntu je obsługuje."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Proszę zauważyć, że poniższe opcje muszą być podane przed poleceniami "
+#~ "opisanymi w poprzednim rozdziale."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Opcja pozwala na podanie pliku składnicy kluczy publicznych używanego w "
+#~ "programie. Domyślnie program używa pliku <filename>trusted.gpg</filename> "
+#~ "oraz wszystkich plików częściowych w katalogu <filename>trusted.gpg.d</"
+#~ "filename>. <filename>trusted.gpg</filename> jest jednakże podstawową "
+#~ "składnicą kluczy, co oznacza na przykład to, że nowe klucze będą dodawane "
+#~ "właśnie tam."
+
+#, fuzzy
+#~| msgid "Operation"
+#~ msgid "Deprecation"
+#~ msgstr "Kolejne kroki"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#, fuzzy
+#~| msgid ""
+#~| "<command>apt-key</command> is the program that manages the list of keys "
+#~| "used by apt. It can be used to add or remove keys, although an "
+#~| "installation of this release will automatically contain the default "
+#~| "Debian archive signing keys used in the Debian package repositories."
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "<command>apt-key</command> jest programem służącym do zarządzania listą "
+#~ "kluczy używanych przez APT. Można go użyć do dodania lub usunięcia "
+#~ "klucza, chociaż zainstalowanie bieżącego wydania automatycznie dostarczy "
+#~ "domyślny klucz używany w repozytoriach pakietów Debiana do podpisywania "
+#~ "archiwów Debiana."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "Aby dodać nowy klucz, należy go najpierw pobrać (używając zaufanego "
+#~ "kanału komunikacji podczas pobierania), dodać go poleceniem <command>apt-"
+#~ "key</command> oraz uruchomić  <command>apt-get update</command>, tak żeby "
+#~ "APT mogło pobrać i zweryfikować pliki <filename>InRelease</filename> lub "
+#~ "<filename>Release.gpg</filename> ze skonfigurowanych archiwów."
+
 #~ msgid "Regular expressions and &glob; syntax"
 #~ msgstr "Składnia wyrażeń regularnych i &glob;"
 
@@ -12580,8 +12751,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 #
 #~ msgid ""
 #~ "No action; perform a simulation of events that would occur but do not "
-#~ "actually change the system.  Configuration Item: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "actually change the system.  Configuration Item: "
+#~ "<literal>APT::Get::Simulate</literal>."
 #~ msgstr ""
 #~ "Brak akcji; wykonuje symulację zdarzeń, które mogłyby się przytrafić, ale "
 #~ "nic nie zmienia w systemie.  Pozycja w pliku konfiguracyjnym: "
@@ -12589,12 +12760,12 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 
 #~ msgid ""
 #~ "Simulated runs performed as a user will automatically deactivate locking "
-#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
-#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
-#~ "notice will also be displayed indicating that this is only a simulation. "
-#~ "Runs performed as root do not trigger either NoLocking or the notice - "
-#~ "superusers should know what they are doing without further warnings from "
-#~ "<literal>apt-get</literal>."
+#~ "(<literal>Debug::NoLocking</literal>), and if the option "
+#~ "<literal>APT::Get::Show-User-Simulation-Note</literal> is set (as it is "
+#~ "by default) a notice will also be displayed indicating that this is only "
+#~ "a simulation. Runs performed as root do not trigger either NoLocking or "
+#~ "the notice - superusers should know what they are doing without further "
+#~ "warnings from <literal>apt-get</literal>."
 #~ msgstr ""
 #~ "Symulowane uruchomienia przeprowadzane przez przez zwykłego użytkownika "
 #~ "automatycznie wyłączą blokady (<literal>Debug::NoLocking</literal>). "
@@ -12741,8 +12912,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 #~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~| "B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgid ""
-#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
-#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), "
+#~ "B<sources.list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
 #~ msgstr ""
 #~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
 #~ "B<apt_preferences>(5), B<apt-secure>(8)"
@@ -12762,11 +12933,11 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 #~ msgstr "Ta strona podręcznika nie jest nawet zaczęta."
 
 #~ msgid ""
-#~ "See E<lt>http://bugs.debian.org/aptE<gt>.  If you wish to report a bug in "
-#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "See E<lt>https://bugs.debian.org/aptE<gt>.  If you wish to report a bug "
+#~ "in B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
 #~ "B<reportbug>(1)  command."
 #~ msgstr ""
-#~ "Patrz E<lt>http://bugs.debian.org/aptE<gt>.  Aby wysłać zgłoszenie o "
+#~ "Patrz E<lt>https://bugs.debian.org/aptE<gt>.  Aby wysłać zgłoszenie o "
 #~ "błędzie w programie B<apt>, przeczytaj I</usr/share/doc/debian/bug-"
 #~ "reporting.txt> lub użyj polecenia B<reportbug>(1)."
 
@@ -12852,8 +13023,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku."
 #~ "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-"
 #~ "US directory."
 #~ msgstr ""
-#~ "Użycie HTTP do uzyskania dostępu do archiwum na komputerze  nonus.debian."
-#~ "org, w katalogu debian-non-US."
+#~ "Użycie HTTP do uzyskania dostępu do archiwum na komputerze  "
+#~ "nonus.debian.org, w katalogu debian-non-US."
 
 #~ msgid ""
 #~ "Status list of auto-installed packages.  Configuration Item: "
diff --git a/doc/po/pt.po b/doc/po/pt.po
index bac974e..83a7985 100644
--- a/doc/po/pt.po
+++ b/doc/po/pt.po
@@ -2,20 +2,20 @@
 # Copyright (C) 2009 Free Software Foundation, Inc.
 # This file is distributed under the same license as the apt package.
 #
-# Américo Monteiro <a_monteiro@gmx.com>, 2014 to 2022.
+# Américo Monteiro <a_monteiro@gmx.com>, 2014 to 2024.
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.4.5\n"
+"Project-Id-Version: apt 2.9.10\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
-"PO-Revision-Date: 2022-05-19 23:40+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
+"PO-Revision-Date: 2024-10-29 23:10+0000\n"
 "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
 "Language-Team: Portuguese <>\n"
 "Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 20.12.0\n"
+"X-Generator: Lokalize 22.12.3\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. type: Plain text
@@ -59,7 +59,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -70,7 +70,7 @@ msgstr ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>página de bugs do APT</ulink>. \n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>página de bugs do APT</ulink>. \n"
 "   Se deseja reportar um bug no APT, por favor veja\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ou o\n"
 "   comando &reportbug;.\n"
@@ -142,6 +142,24 @@ msgstr ""
 "     </listitem>\n"
 "     </varlistentry>\n"
 
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>-Mostra mensagens audit (e notificações). Isto sobrepõe a opção quiet, mas apenas para mensagens de notificação, não as de progresso.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -186,7 +204,6 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
-"\">\n"
 msgstr ""
 "     <varlistentry>\n"
 "      <term><option>-o</option></term>\n"
@@ -198,6 +215,31 @@ msgstr ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+"\">\n"
+msgstr ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Liga e desliga cores. As cores estão ligadas por predefinição nos terminais suportados para &apt; e\n"
+"também podem ser desactivadas usando as variáveis de ambiente <envar>NO_COLOR</envar> ou <envar>APT_NO_COLOR</envar>,\n"
+"ou também configuradas pela opção de configuração e escopo <option>APT::Color</option>, veja &apt-conf; para informação sobre isso.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 
 #. type: Plain text
@@ -517,11 +559,13 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
-"<!-- TRANSLATOR: usado como -o=config_string ex. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: usado como -o=config_string ex. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 
 #. type: Plain text
 #: apt.ent
@@ -535,13 +579,13 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
-"<!-- TRANSLATOR: usado como -t=target_release ou pkg/target_release ex. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"lançamento-"
-"alvo\">"
+"<!-- TRANSLATOR: usado como -t=target_release ou pkg/target_release ex. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"lançamento-alvo\">"
 
 #. type: Plain text
 #: apt.ent
@@ -591,8 +635,8 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
 "<!-- TRANSLATOR: usado como apt-cdrom -d=cdrom_mount_point ex. apt-cdrom -d=/"
 "media/cdrom --> <!ENTITY synopsis-cdrom-mount \"ponto_de_montagem-do_cdrom\">"
@@ -658,28 +702,18 @@ msgstr ""
 "<!-- TRANSLATOR: usado como parâmetro para apt-ftparchive ex. apt-ftparchive "
 "generate section --> <!ENTITY synopsis-section \"secção\">"
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-"<!-- TRANSLATOR: usado como id de chave de exportação do apt-key ex. apt-key "
-"export 473041FA --> <!ENTITY synopsis-keyid \"id_de_chave\">"
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr "8"
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr "APT"
 
@@ -689,12 +723,11 @@ msgid "command-line interface"
 msgstr "interface de linha de comandos"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "Description"
 msgstr "Descrição"
 
@@ -761,6 +794,15 @@ msgstr ""
 "removidos. Se a actualização de um pacote necessitar da remoção de um pacote "
 "instalado, a actualização deste pacote não será executada."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+"Quando um pacote é fornecido como um argumento, o pacote será instalado "
+"antes da acção de actualização."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -773,7 +815,7 @@ msgstr ""
 "sistema como um todo."
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ","
 
@@ -917,16 +959,16 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 "<option>list</option> é de certa maneira semelhante a <command>dpkg-query --"
 "list</command> pois pode mostrar uma lista de pacotes que satisfaçam certos "
-"critérios. Suporta padrões &glob; para coincidir com nomes de pacotes assim "
-"como opções para listar instalados (<option>--installed</option>), "
-"actualizáveis (<option>--upgradeable</option>) ou todas as versões "
+"critérios. Suporta padrões &glob; para coincidir com nomes de pacotes, &apt-"
+"patterns;, assim como opções para listar instalados (<option>--installed</"
+"option>), actualizáveis (<option>--upgradeable</option>) ou todas as versões "
 "disponíveis (<option>--all-versions</option>)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -944,6 +986,16 @@ msgstr ""
 "&sources-list; no seu editor de texto preferido enquanto também "
 "disponibiliza verificações básicas aos mesmos."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-cache;)"
+msgstr "(resumido em &apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-get;)"
+msgstr "(resumido em &apt-get;)"
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -980,22 +1032,24 @@ msgstr ""
 "compatibilidade com versões anteriores sempre que possível."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 msgid "See Also"
 msgstr "Veja também"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, O guia de "
-"utilizadores do The APT em &guidesdir;, &apt-preferences;, o Howto do APT."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, O guia de utilizadores do The APT em &guidesdir;, &apt-"
+"preferences;, o Howto do APT."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
@@ -1112,10 +1166,10 @@ msgstr ""
 "command> tem um sistema de resolução de conflitos 'inteligente', que irá "
 "tentar actualizar os pacotes mais importantes a custo dos pacotes menos "
 "importantes, caso necessário. Portanto, o comando <literal>dist-upgrade</"
-"literal> pode remover alguns pacotes. O ficheiro <filename>/etc/apt/sources."
-"list</filename> contém uma lista de localizações de onde obter os ficheiros "
-"de pacotes desejados. Veja também &apt-preferences; para um mecanismo para "
-"sobrepor as definições gerais em pacotes individuais."
+"literal> pode remover alguns pacotes. O ficheiro <filename>/etc/apt/"
+"sources.list</filename> contém uma lista de localizações de onde obter os "
+"ficheiros de pacotes desejados. Veja também &apt-preferences; para um "
+"mecanismo para sobrepor as definições gerais em pacotes individuais."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1353,8 +1407,8 @@ msgstr ""
 "Uma versão fonte específica pode ser obtida ao pós-fixar o nome da fonte com "
 "um igual (=) e depois a versão a procurar, semelhante ao mecanismo usado "
 "para os ficheiros de pacotes. Isto activa a correspondência exacta do pacote "
-"fonte, nome e versão, activando implicitamente a opção <literal>APT::Get::"
-"Only-Source</literal>."
+"fonte, nome e versão, activando implicitamente a opção "
+"<literal>APT::Get::Only-Source</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1435,16 +1489,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "<literal>download</literal> will download the given binary package into "
-#| "the current directory."
 msgid ""
 "<literal>download</literal> will download the given binary package into the "
 "current directory. The authenticity of the package data is ensured as usual."
 msgstr ""
 "<literal>download</literal> irá descarregar o pacote binário dado para o "
-"directório actual."
+"directório actual. Autenticidade dos dados do pacote é assegurada como "
+"costume."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1487,6 +1538,25 @@ msgstr ""
 "configuração <literal>APT::Clean-Installed</literal> irá prevenir que "
 "pacotes instalados sejam apagados se estiver definida para 'off'."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr "alias)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+"<literal>distclean</literal> remove todos os ficheiros sob "
+"<filename>&statedir;/lists</filename> excepto Release, Release.gpg, e "
+"InRelease.  Pode ser usado por exemplo, quando se finaliza imagens "
+"distribuídas para utilizadores. Os ficheiros release são mantidos por razões "
+"de segurança, para prevenir vários tipos de ataques."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1505,6 +1575,9 @@ msgid ""
 "removes configuration files. This is a shortcut for <literal>autoremove --"
 "purge</literal>."
 msgstr ""
+"Como <literal>autoremove</literal>, mas <literal>autopurge</literal> também "
+"remove ficheiros de configuração. Isto é um atalho para <literal>autoremove "
+"--purge</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1576,8 +1649,8 @@ msgid ""
 "Configuration Item: <literal>APT::Get::Download-Only</literal>."
 msgstr ""
 "Apenas descarrega; os ficheiros pacotes são apenas obtidos, não são "
-"desempacotados nem instalados. Item de Configuração: <literal>APT::Get::"
-"Download-Only</literal>."
+"desempacotados nem instalados. Item de Configuração: "
+"<literal>APT::Get::Download-Only</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1591,8 +1664,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 "Corrige; tenta corrigir um sistema com dependências quebradas no lugar. Esta "
 "opção, quando usada com install/remove, pode omitir quaisquer pacotes para "
@@ -1678,8 +1751,8 @@ msgstr ""
 "os quais podem não ter acesso de leitura a todas as configurações do apt "
 "distorcendo a simulação. Também é mostrada por predefinição uma nota "
 "expressando este aviso aos utilizadores não-root. (<option>APT::Get::Show-"
-"User-Simulation-Note</option>). Item de Configuração: <literal>APT::Get::"
-"Simulate</literal>."
+"User-Simulation-Note</option>). Item de Configuração: "
+"<literal>APT::Get::Simulate</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -1715,8 +1788,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
 "Resposta \"Não\" automática a todos os avisos. Item de Configuração: "
 "<literal>APT::Get::Assume-No</literal>."
@@ -1740,15 +1813,41 @@ msgstr ""
 "Mostra as versões completas para pacotes actualizados e instalados.  Item de "
 "Configuração: <literal>APT::Get::Show-Versions</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+"Mostra listas de pacotes sem as arrumar em colunas. Por predefinição, as "
+"listas de pacotes são escritas no estilo do comando \"ls\". Item de "
+"Configuração: <literal>APT::Get::List-Columns</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Select the source override file to use with the <literal>sources</"
+#| "literal> command.  Configuration Item: "
+#| "<literal>APT::FTPArchive::SourceOverride</literal>."
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+"Seleciona o ficheiro de sobreposição de fonte a usar com o comando "
+"<literal>sources</literal>. Item de Configuração: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 "Esta opção controla a arquitectura para que os pacotes são compilados pelo "
 "<command>apt-get source --compile</command> e como as dependências cruzadas "
@@ -1914,8 +2013,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 "Ao invés de ir buscar os ficheiros para instalar, escreve os seus URIs. Cada "
 "URI irá ter o caminho, o nome de ficheiro de destino, o tamanho e o hash MD5 "
@@ -1956,8 +2055,8 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
 msgstr ""
 "Esta opção está ligada por predefinição; use <literal>--no-list-cleanup</"
 "literal> para a desligar. Quando ligada o <command>apt-get</command> irá "
@@ -1966,6 +2065,21 @@ msgstr ""
 "desligar isto é no caso de você alterar frequentemente a sua lista de "
 "fontes. Item de Configuração: <literal>APT::Get::List-Cleanup</literal>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
+msgstr ""
+"Esta opção controla o instantâneo escolhido para arquivos com "
+"<literal>Snapshot: enable</literal> na entrada de fonte. Por exemplo, "
+"<option>-S 20220102T030405Z</option> seleciona um instantâneo de 2 de "
+"Janeiro de 0022 às 03:04:05 UTC. Item de Configuração: "
+"<literal>APT::Snapshot</literal>; veja também o manual &sources-list;."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -2000,8 +2114,8 @@ msgstr ""
 "Apenas executa operações 'triviais'. Na lógica isto pode ser considerado "
 "relacionado ao <option>--assume-yes</option>, onde <option>--assume-yes</"
 "option> irá responder 'sim' a todos os avisos, <option>--trivial-only</"
-"option> irá responder 'não'. Item de Configuração: <literal>APT::Get::"
-"Trivial-Only</literal>."
+"option> irá responder 'não'. Item de Configuração: "
+"<literal>APT::Get::Trivial-Only</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2105,18 +2219,11 @@ msgstr ""
 "risco de segurança se a autenticidade dos dados não poder ser assegurada de "
 "outro modo pelo próprio utilizador. A utilização da opção <option>Trusted</"
 "option> para entradas da &sources-list; deve normalmente ser preferida em "
-"vez desta sobreposição global. Item de configuração: <literal>APT::Get::"
-"AllowUnauthenticated</literal>."
+"vez desta sobreposição global. Item de configuração: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
-#, fuzzy
-#| msgid ""
-#| "Forbid the update command to acquire unverifiable data from configured "
-#| "sources. APT will fail at the update command for repositories without "
-#| "valid cryptographically signatures. See also &apt-secure; for details on "
-#| "the concept and the implications.  Configuration Item: <literal>Acquire::"
-#| "AllowInsecureRepositories</literal>."
 msgid ""
 "Allow the update command to acquire unverifiable data from configured "
 "sources. APT will otherwise fail at the update command for repositories "
@@ -2124,11 +2231,11 @@ msgid ""
 "details on the concept and the implications.  Configuration Item: "
 "<literal>Acquire::AllowInsecureRepositories</literal>."
 msgstr ""
-"Proíbe o comando de actualização de adquirir dados não verificáveis a partir "
-"de fontes configuradas O APT irá falhar no comando de actualização para "
-"repositórios sem assinaturas criptograficamente válidas. Veja também &apt-"
-"secure; para detalhes no conceito e nas implicações. Item de Configuração: "
-"<literal>Acquire::AllowInsecureRepositories</literal>."
+"Permite ao comando de actualização de adquirir dados não verificáveis a "
+"partir de fontes configuradas. Caso contrário o APT irá falhar no comando de "
+"actualização para repositórios sem assinaturas criptograficamente válidas. "
+"Veja também &apt-secure; para detalhes no conceito e nas implicações. Item "
+"de Configuração: <literal>Acquire::AllowInsecureRepositories</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2162,8 +2269,8 @@ msgstr ""
 "apenas para certos campos como <literal>origin</literal>, <literal>label</"
 "literal>, <literal>codename</literal>, <literal>suite</literal>, "
 "<literal>version</literal> e <literal>defaultpin</literal>. Veja também &apt-"
-"preferences;. Item de Configuração: <literal>Acquire::"
-"AllowReleaseInfoChange</literal>."
+"preferences;. Item de Configuração: "
+"<literal>Acquire::AllowReleaseInfoChange</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2177,8 +2284,8 @@ msgstr ""
 "Mostra informação de progresso compreensível para o utilizador na janela de "
 "terminal quando os pacotes são instalados, actualizados ou removidos. Para "
 "uma versão \"analisável por máquina\" destes dados veja o  README.progress-"
-"reporting no directório doc do apt. Itens de Configuração:  <literal>Dpkg::"
-"Progress</literal> e <literal>Dpkg::Progress-Fancy</literal>."
+"reporting no directório doc do apt. Itens de Configuração:  "
+"<literal>Dpkg::Progress</literal> e <literal>Dpkg::Progress-Fancy</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
@@ -2203,8 +2310,41 @@ msgstr ""
 "Falha o comando de actualização se ocorrer qualquer erro, mesmo sendo um "
 "transitório."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+"Corre o comando <option>update</option> antes do comando especificado. Isto "
+"é suportado para comandos que instalam, removem, ou atualizam pacotes tais "
+"como <option>install</option>, <option>remove</option>, <option>safe-"
+"upgrade</option>, <option>full-upgrade</option>.  Isto pode ser útil para "
+"assegurar que um comando instala sempre as versões mais recentes, ou, em "
+"combinação com a opção <option>--snapshot</option> para certificar que o "
+"instantâneo está presente quando a instalação está a correr."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+"Embargo: Devido a limitações técnicas, as trancas são adquiridas "
+"individualmente para cada fase, assim uma instalação pode falhar ao adquirir "
+"tranca após executar com sucesso a actualização. Até que isto seja "
+"resolvido, isto é meramente açúcar sintático para <literal>apt update "
+"&amp;&amp; apt install</literal>"
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr "Ficheiros"
@@ -2212,13 +2352,13 @@ msgstr "Ficheiros"
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, O guia de utilizadores do The APT em &guidesdir;, &apt-"
-"preferences;, o Howto do APT."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, O guia de utilizadores do The APT em "
+"&guidesdir;, &apt-preferences;, o Howto do APT."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
@@ -2592,22 +2732,21 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 "<literal>dotty</literal> recebe uma lista de pacotes na linha de comandos e "
 "gera resultados apropriados para uso pelo dotty do pacote <ulink "
-"url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. O "
-"resultado será um conjunto de nós e orlas que representam os relacionamentos "
-"entre os pacotes. Por predefinição, os pacotes fornecidos irão seguir todos "
-"os pacotes dependentes; isto pode produzir um gráfico muito grande. Para "
-"limitar os resultados apenas aos pacotes listados na linha de comandos, "
-"defina a opção <literal>APT::Cache::GivenOnly</literal>."
+"url=\"https://graphviz.org/\">GraphViz</ulink>. O resultado será um conjunto "
+"de nós e orlas que representam os relacionamentos entre os pacotes. Por "
+"predefinição, os pacotes fornecidos irão seguir todos os pacotes "
+"dependentes; isto pode produzir um gráfico muito grande. Para limitar os "
+"resultados apenas aos pacotes listados na linha de comandos, defina a opção "
+"<literal>APT::Cache::GivenOnly</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2634,12 +2773,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 "O mesmo que <literal>dotty</literal>, apenas para xvcg a partir de <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">Ferramenta "
-"VCG</ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">Ferramenta VCG</ulink>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-cache.8.xml
@@ -2667,23 +2806,23 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 "O comando <literal>madison</literal> do <literal>apt-cache</literal> tenta "
 "imitar o formato de saída e um subconjunto das funcionalidades da ferramenta "
 "<literal>madison</literal> de gestão de pacotes da Debian. Mostra versões "
 "disponíveis de um pacote num formato tabular. Ao contrário do "
 "<literal>madison</literal> original, apenas pode mostrar informação para a "
-"arquitectura que o APT recolheu listas de pacotes (<literal>APT::"
-"Architecture</literal>)."
+"arquitectura que o APT recolheu listas de pacotes "
+"(<literal>APT::Architecture</literal>)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 "Seleciona o ficheiro para armazenar a cache do pacote. A cache do pacote é a "
 "cache principal usada por todas as operações. Item de Configuração: "
@@ -2727,17 +2866,17 @@ msgid ""
 msgstr ""
 "Escreve apenas dependências importantes; para usar com <literal>unmet</"
 "literal> e <literal>depends</literal>. Separa apenas relações de Depends e "
-"Pre-Depends para serem escritas. Item de Configuração: <literal>APT::Cache::"
-"Important</literal>."
+"Pre-Depends para serem escritas. Item de Configuração: "
+"<literal>APT::Cache::Important</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 "Por predefinição o <command>depends</command> and <command>rdepends</"
 "command> escrevem todas as dependências. Isto pode ser \"afinado\" com estas "
@@ -2815,8 +2954,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 "Faz com que o <literal>pkgnames</literal> escreva todos os nomes, incluindo "
 "pacotes virtuais e dependências em falta. Item de configuração: "
@@ -2855,10 +2994,11 @@ msgid ""
 msgstr ""
 "Adiciona o ficheiro fornecido como a fonte para meta-dados. Pode ser "
 "repetido para adicionar múltiplos ficheiros. Presentemente são suportados "
-"ficheiros <literal>*.deb</literal>, <literal>*.dsc</literal>, <literal>*."
-"changes</literal>, <literal>Sources</literal> e <literal>Packages</literal> "
-"assim como directórios de pacotes fonte: A correspondência dos ficheiros é "
-"baseada apenas com base no seu nome, não no seu conteúdo."
+"ficheiros <literal>*.deb</literal>, <literal>*.dsc</literal>, "
+"<literal>*.changes</literal>, <literal>Sources</literal> e "
+"<literal>Packages</literal> assim como directórios de pacotes fonte: A "
+"correspondência dos ficheiros é baseada apenas com base no seu nome, não no "
+"seu conteúdo."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
@@ -2886,8 +3026,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr "&apt-conf;, &sources-list;, &apt-get;"
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2898,335 +3038,6 @@ msgstr ""
 "<command>apt-cache</command> devolve zero em operação normal, 100 decimal em "
 "erro."
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-msgid "Deprecated APT key management utility"
-msgstr "Utilitário de gestão de chaves do APT descontinuado"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-"<command>apt-key</command> é usado para gerir uma lista de chaves usadas "
-"pelo apt para autenticar pacotes. Os pacotes que foram autenticados com "
-"estas chaves serão considerados de confiança."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-"O uso de <command>apt-key</command> está descontinuado, excepto para o uso "
-"de <command>apt-key del</command> em scripts de maintainer para remover "
-"chaves existentes do chaveiro principal. Se tal utilização do <command>apt-"
-"key</command> é desejada, é requerida a instalação adicional da suite GNU "
-"Privacy Guard (empacotada em <package>gnupg</package>)."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr "apt-key(8) estará disponível por último em Debian 11 e Ubuntu 22.04."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr "Ficheiros de chaveiro suportados"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-"O apt-key suporta apenas o formato binário OpenPGP (também conhecido como "
-"\"GPG key public ring\") em ficheiros com a extensão \"<literal>gpg</"
-"literal>\", não o formato de base de dados keybox introduzido em novas "
-"versões &gpg; como predefinição para ficheiros de chaveiro. Os ficheiros "
-"chaveiro binários que se destinam a ser usados com qualquer versão do apt "
-"devem por isto ser sempre criados com <command>gpg --export</command>."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-"Como alternativa, se todos os sistemas que devem estar a usar o chaveiro "
-"criado têm pelo menos a versão de apt >= 1.4 instalada, você pode usar o "
-"formato blindado de ASCII com a extensão \"<literal>asc</literal>\" em "
-"substituição o qual pode ser criado com <command>gpg --armor --export</"
-"command>."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr "Comandos"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr "(descontinuado)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-"Adiciona uma chave nova à lista de chaves de confiança. A chave é lida a "
-"partir do nome de ficheiro dado com o parâmetro &synopsis-param-filename; ou "
-"se o nome do ficheiro for <literal>-</literal> a partir da entrada standard."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-"É crítico que as chaves adicionadas manualmente via <command>apt-key</"
-"command> sejam verificadas que pertencem ao dono dos repositórios que elas "
-"afirmam ser, caso contrário a infraestrutura &apt-secure; fica completamente "
-"indeterminada."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-"<emphasis>Note</emphasis>: Em vez de se usar este comando, deve-se colocar "
-"um chaveiro directamente no directório <filename>/etc/apt/trusted.gpg.d/</"
-"filename> com um nome descritivo e com \"<literal>gpg</literal>\" ou "
-"\"<literal>asc</literal>\" como extensão de ficheiro."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr "(maioritariamente descontinuado)"
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr "Remove uma chave da lista de chaves de confiança."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr "Escreve o &synopsis-param-keyid; da chave na saída standard."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr "Escreve todas as chaves de confiança na saída standard."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr "Lista as chaves de confiança com impressões digitais."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-"Passa opções avançadas ao gpg. Com <command>adv --recv-key</command> você "
-"pode por exemplo descarregar uma chave de servidores de chaves directamente "
-"para o conjunto de chaves de confiança. Note que <emphasis>não</emphasis> "
-"são feitas verificações, portanto é fácil enfraquecer completamente a "
-"infraestrutura &apt-secure; se for usado sem cuidado."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-"Actualiza o chaveiro local com o chaveiro do arquivo e remove do chaveiro "
-"local as chaves de arquivo que já não são válidas. O chaveiro do arquivo é "
-"submetido no pacote <literal>archive-keyring</literal> da sua distribuição, "
-"por exemplo o pacote &keyring-package; em &keyring-distro;."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-"Note que uma distribuição não precisa e de facto nem deve usar mais este "
-"comando e em vez disso empacotar ficheiros chaveiro no directório  "
-"<filename>/etc/apt/trusted.gpg.d</filename> directamente pois isto evita uma "
-"dependência no <package>gnupg</package> e é mais fácil gerir as chaves ao "
-"simplesmente adicionar e remover ficheiros para responsáveis e utilizadores "
-"de modo semelhante."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-"Executa uma actualização que funciona de modo semelhante ao comando "
-"<command>update</command> em cima, mas obtém o chaveiro do arquivo a partir "
-"de um URI e valida-o com uma chave mestra. Isto requer um &wget; instalado e "
-"uma compilação de APT configurada para ter um servidor de onde obter e um "
-"chaveiro mestre para validação. O APT em Debian não suporta este comando, "
-"confiando em vez disso no <command>update</command>, mas o APT do Ubuntu fá-"
-"lo."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr "Opções"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-"Note que as opções precisam ser definidas antes dos comandos descritos na "
-"secção prévia."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-"Com esta opção é possível especificar um ficheiro de chaveiro específico com "
-"o qual o comando deve operar. A predefinição é que um comando é executado no "
-"ficheiro <filename>trusted.gpg</filename> assim como em todas as partes do "
-"directório <filename>trusted.gpg.d</filename>, assim <filename>trusted.gpg</"
-"filename> é o chaveiro principal o que significa que, por exemplo, as novas "
-"chaves são adicionadas a este."
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Deprecation"
-msgstr "Descontinuação"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-"Excepto para usar <command>apt-key del</command> em scripts de maintainer, o "
-"uso de <command>apt-key</command> está descontinuado. Esta secção mostra "
-"como substituir o uso existente de <command>apt-key</command>."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-"Se o seu uso existente de <command>apt-key add</command> se parecer com isto:"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-"Então você pode substituir directamente isto por (contudo note a "
-"recomendação em baixo):"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-"Certifique-se de usar a extensão \"<literal>asc</literal>\" para as chaves "
-"blindadas ASCII e a extensão \"<literal>gpg</literal>\" para o formato "
-"binário OpenPGP (também conhecido como \"GPG key public ring\"). O formato "
-"binário OpenPGP funciona para todas as versões do apt, enquanto o formato "
-"blindado ASCII funciona para apt versão >= 1.4."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-"<emphasis>Recomendação:</emphasis> Em vez de colocar chaves no directório "
-"<filename>/etc/apt/trusted.gpg.d</filename>, você pode coloca-las em "
-"qualquer local no seu sistema de ficheiros ao usar a opção <literal>Signed-"
-"By</literal> no seu <literal>sources.list</literal> e apontando para o nome "
-"de ficheiro da chave. Veja &sources-list; para detalhes. Desde o APT 2.4, é "
-"fornecido <filename>/etc/apt/keyrings</filename> como a localização "
-"recomendada para chaves não geridas por pacotes. Quando se usa sources.list "
-"ao estilo deb822, e com a versão de apt >= 2.4, a opção <literal>Signed-By</"
-"literal> pode também ser usada para incluir a chave blindada ASCII completa "
-"directamente no <literal>sources.list</literal> sem um ficheiro adicional."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -3238,8 +3049,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 "<command>apt-mark</command> pode ser usado como um front-end unificado para "
@@ -3337,6 +3148,12 @@ msgstr ""
 "<literal>showauto</literal>, excepto que irá escrever uma lista dos pacotes "
 "instalados manualmente."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr "Opções"
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3410,6 +3227,11 @@ msgstr ""
 "Mais informação acerca destas chamadas selecções do dpkg pode ser encontrada "
 "em &dpkg;."
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get;, &aptitude;, &apt-conf;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -3460,6 +3282,66 @@ msgstr ""
 "manual usa o <literal>APT</literal> para se referir a eles todos apenas para "
 "simplificar."
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuração do Utilizador"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Note that a default installation already contains all keys to securely "
+#| "acquire packages from the default repositories, so fiddling with "
+#| "<command>apt-key</command> is only needed if third-party repositories are "
+#| "added."
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+"Note que uma instalação predefinida já contém todas as chaves para adquirir "
+"em segurança pacotes a partir dos repositórios predefinidos, portanto perder "
+"tempo com o <command>apt-key</command> só é necessário se forem adicionados "
+"repositórios de terceiros."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -3697,55 +3579,6 @@ msgstr ""
 "distribuição enviada para o repositório (como por exemplo indicada pelo nome "
 "de código)."
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr "Configuração do Utilizador"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-"O <command>apt-key</command> é o programa que gere a lista de chaves usada "
-"pelo APT para confiar nos repositórios. Pode ser usado para adicionar assim "
-"como para listar as chaves confiadas. Limitando quais chave(s) são capazes "
-"de assinar qual arquivo é possível via <option>Signed-By</option> em "
-"&sources-list;."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-"Note que uma instalação predefinida já contém todas as chaves para adquirir "
-"em segurança pacotes a partir dos repositórios predefinidos, portanto perder "
-"tempo com o <command>apt-key</command> só é necessário se forem adicionados "
-"repositórios de terceiros."
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-"De modo a adicionar uma chave nova você precisa primeiro de descarrega-la "
-"(você deve certificar-se que está a usar um canal de comunicação de "
-"confiança quando a obtém), adiciona-la com <command>apt-key</command> e "
-"depois correr <command>apt-get update</command> para que o apt possa "
-"descarregar e verificar os ficheiros <filename>InRelease</filename> ou "
-"<filename>Release.gpg</filename> dos arquivos que você configurou."
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Repository Configuration"
@@ -3775,12 +3608,12 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 "<emphasis>Assina-lo</emphasis>. Você pode fazer isso ao correr <command>gpg "
-"--clearsign -o InRelease Release</command> e <command>gpg -abs -o Release."
-"gpg Release</command>."
+"--clearsign -o InRelease Release</command> e <command>gpg -abs -o "
+"Release.gpg Release</command>."
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
 #: apt-secure.8.xml
@@ -3828,9 +3661,13 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+#| "&debsign;, &debsig-verify;, &gpg;"
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
 "&debsign;, &debsig-verify;, &gpg;"
@@ -3839,17 +3676,17 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 "Para mais informação de fundo você deve querer reler a <ulink url=\"https://"
-"www.debian.org/doc/manuals/securing-debian-howto/ch7\">Infraestrutura de "
+"www.debian.org/doc/manuals/securing-debian-manual/ch07\">Infraestrutura de "
 "Segurança da Debian</ulink> no capítulo do Manual Debian de Segurança "
-"(disponível também no pacote harden-doc) e o <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"(disponível também no pacote harden-doc) e o <ulink url=\"http://"
+"www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
 "ulink> de V. Alex Brennen."
 
 #. type: Content of: <refentry><refsect1><title>
@@ -3919,8 +3756,8 @@ msgid ""
 "filename>"
 msgstr ""
 "O APT usa um ID de CD-ROM para acompanhar qual disco está actualmente na "
-"drive e mantêm uma base de dados desses IDs em <filename>&statedir;/cdroms."
-"list</filename>"
+"drive e mantêm uma base de dados desses IDs em <filename>&statedir;/"
+"cdroms.list</filename>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3935,12 +3772,12 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 "Não tente a auto-detecção do caminho do CD-ROM. Normalmente combinada com a "
-"opção <option>--cdrom</option>.  Item de Configuração: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"opção <option>--cdrom</option>.  Item de Configuração: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3951,8 +3788,8 @@ msgid ""
 msgstr ""
 "Ponto de Montagem; especifica a localização para montar o cdrom. Este ponto "
 "de montagem deve estar listado em <filename>/etc/fstab</filename> e "
-"configurado apropriadamente. Item de configuração: <literal>Acquire::cdrom::"
-"mount</literal>."
+"configurado apropriadamente. Item de configuração: "
+"<literal>Acquire::cdrom::mount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -3963,19 +3800,19 @@ msgid ""
 msgstr ""
 "Renomear um disco; muda a etiqueta de um disco ou sobrepõe a etiqueta "
 "fornecida do disco. Esta opção irá fazer com que o <command>apt-cdrom</"
-"command> pergunte por uma nova etiqueta. Item de configuração: <literal>APT::"
-"CDROM::Rename</literal>."
+"command> pergunte por uma nova etiqueta. Item de configuração: "
+"<literal>APT::CDROM::Rename</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 "Nenhuma montagem; impede o <command>apt-cdrom</command> de montar e "
-"desmontar o ponto de montagem. Item de configuração: <literal>APT::CDROM::"
-"NoMount</literal>."
+"desmontar o ponto de montagem. Item de configuração: "
+"<literal>APT::CDROM::NoMount</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cdrom.8.xml
@@ -4074,11 +3911,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
-"Isto irá definir a variável de ambiente shell $OPTS ao valor de MyApp::"
-"options com uma predefinição de <option>-f</option>."
+"Isto irá definir a variável de ambiente shell $OPTS ao valor de "
+"MyApp::options com uma predefinição de <option>-f</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
@@ -4203,9 +4040,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 "todos os ficheiros em <literal>Dir::Etc::Parts</literal> em ordem ascendente "
 "alfa-numérica não têm extensão ou têm \"<literal>conf</literal>\" como "
@@ -4220,8 +4057,8 @@ msgstr ""
 msgid ""
 "the main configuration file specified by <literal>Dir::Etc::main</literal>"
 msgstr ""
-"o ficheiro de configuração principal especificado por <literal>Dir::Etc::"
-"main</literal>"
+"o ficheiro de configuração principal especificado por "
+"<literal>Dir::Etc::main</literal>"
 
 #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
 #: apt.conf.5.xml
@@ -4281,12 +4118,13 @@ msgstr ""
 "<literal>//</literal> são tratadas como comentários (ignoradas), assim como "
 "todo o texto entre <literal>/*</literal> e <literal>*/</literal>, tal como "
 "os comentários de C/C++. As linhas começadas com <literal>#</literal> são "
-"também tratadas como comentários. Cada linha é do formato <literal>APT::Get::"
-"Assume-Yes \"true\";</literal>. As aspas e o ponto-e-vírgula final são "
-"necessários. O valor deve estar em uma linha, e não existe nenhum tipo de "
-"concatenação de string. Os valores não podem incluir barras invertidas ou "
-"aspas extras. Os nomes das opções são feitos de caracteres alfa-numéricos e "
-"os caracteres \"/-:._+\". Um novo scope pode ser aberto com chavetas, assim:"
+"também tratadas como comentários. Cada linha é do formato "
+"<literal>APT::Get::Assume-Yes \"true\";</literal>. As aspas e o ponto-e-"
+"vírgula final são necessários. O valor deve estar em uma linha, e não existe "
+"nenhum tipo de concatenação de string. Os valores não podem incluir barras "
+"invertidas ou aspas extras. Os nomes das opções são feitos de caracteres "
+"alfa-numéricos e os caracteres \"/-:._+\". Um novo scope pode ser aberto com "
+"chavetas, assim:"
 
 #. type: Content of: <refentry><refsect1><informalexample><programlisting>
 #: apt.conf.5.xml
@@ -4340,8 +4178,8 @@ msgid ""
 "example you could use <literal>dpkg::pre-install-pkgs</literal>."
 msgstr ""
 "Maiúsculas e minúsculas não são significativas nos nomes dos items de "
-"configuração, portanto no exemplo prévio você poderia usar <literal>dpkg::"
-"pre-install-pkgs</literal>."
+"configuração, portanto no exemplo prévio você poderia usar "
+"<literal>dpkg::pre-install-pkgs</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -4491,6 +4329,79 @@ msgstr ""
 "alienígenas são adicionadas à lista predefinida quando são registadas via "
 "<command>dpkg --add-architecture</command>."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+"Este escopo define cores e estilos. As cores básicas suportadas são "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, e "
+"<option>white</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+"O sub-escopo <option>action</option> define as cores para listas de pacotes "
+"em <option>install</option> e comandos semelhantes. As seguintes opções "
+"podem ser definidas: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; correspondendo às suas listas "
+"no resultado do &apt;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+"Cada cor pode referenciar uma ou mais de outras opções de cor pelo nome, "
+"relativo a <option>APT::Color</option>. As suas sequências de escape serão "
+"combinadas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+"As cores podem ser ligadas ou desligadas completamente ao definir "
+"<option>APT::Color</option> para <option>yes</option> ou <option>no</"
+"option>, ao utilizar as variáveis de ambiente <envar>NO_COLOR</envar> ou "
+"<envar>APT_NO_COLOR</envar>, ou usando as opções de linha de comandos "
+"<option>--color</option>, <option>--no-color</option>."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4561,6 +4472,18 @@ msgstr ""
 "codename;', '&debian-testing-codename;', '4.0', '5.0*'. Veja também &apt-"
 "preferences;."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+"Instantâneo a usar para todos os repositórios configurados com "
+"<literal>Snapshot: yes</literal>. Veja também &sources-list;, a opção "
+"<option>--snapshot</option> que define este valor, e "
+"<option>Acquire::Snapshots::URI</option> em baixo."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4717,36 +4640,82 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
-msgid "Defines which packages are considered essential build dependencies."
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"Define quais pacotes são considerados dependências essenciais de compilação."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"A subsecção Get controla a ferramenta &apt-get;, por favor veja a sua "
+"documentação para mais informação acerca das opções daqui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"A subsecção Cache controla a ferramenta &apt-cache;, por favor veja a sua "
+"documentação para mais informação acerca das opções daqui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"A subsecção CDROM controla a ferramenta &apt-cdrom;, por favor veja a sua "
+"documentação para mais informação acerca das opções de aqui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
 msgstr ""
-"Define quais pacotes são considerados dependências essenciais de compilação."
+"Nunca autoremove pacotes que correspondem à(s) expressão(ões) regulares."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The Get subsection controls the &apt-get; tool; please see its documentation "
-"for more information about the options here."
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
 msgstr ""
-"A subsecção Get controla a ferramenta &apt-get;, por favor veja a sua "
-"documentação para mais informação acerca das opções daqui."
+"Esta opção diz ao apt autoremove que os kernels são protegidos e predefine "
+"para verdadeiro. No caso em que os kernels não são protegidos eles são "
+"tratados como qualquer outro pacote."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The Cache subsection controls the &apt-cache; tool; please see its "
-"documentation for more information about the options here."
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
 msgstr ""
-"A subsecção Cache controla a ferramenta &apt-cache;, por favor veja a sua "
-"documentação para mais informação acerca das opções daqui."
+"Define as expressão(ões) regulares para pacotes de kernel versionados.  Com "
+"base nestas expressões um conjunto de regras é injetado no apt semelhante às "
+"expressões regulares APT::NeverAutoRemove."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"The CDROM subsection controls the &apt-cdrom; tool; please see its "
-"documentation for more information about the options here."
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
 msgstr ""
-"A subsecção CDROM controla a ferramenta &apt-cdrom;, por favor veja a sua "
-"documentação para mais informação acerca das opções de aqui."
+"Mantém uma quantidade personalizada de kernels quando faz autoremove e está "
+"predefinido para 2, o que significa que dois kernels são mantidos. O apt irá "
+"sempre manter o kernel que está em execução e o mais recente. Se o kernel "
+"mais recente for o mesmo que o kernel em execução, é mantido o segundo mais "
+"recente. Devido a isto, qualquer valor menor que 2 será ignorado. Se você "
+"desejar apenas o kernel mais recente, você deve definir APT::Protect-Kernels "
+"para falso."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -4979,95 +4948,6 @@ msgstr ""
 "protocolos HTTP e HTTPS e estão documentadas nos manuais &apt-transport-"
 "http; e &apt-transport-https; respetivamente."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-"<literal>ftp::Proxy</literal> define o proxy predefinido a usar para URIs "
-"FTP. Está no formato standard de <literal>ftp://[[user][:pass]@]host[:port]/"
-"</literal>. Os proxies por máquina podem também ser especificados ao usar o "
-"formato <literal>ftp::Proxy::&lt;host&gt;</literal> com a palavra chave "
-"especial <literal>DIRECT</literal> que significa não usar nenhum proxy. Se "
-"nenhuma das definições acima for especificada, será usada a variável de "
-"ambiente <envar>ftp_proxy</envar>. Para usar um proxy FTP você tem que "
-"definir o script <literal>ftp::ProxyLogin</literal> no ficheiro de "
-"configuração. Esta entrada especifica os comandos a enviar para dizer ao "
-"servidor proxy ao que se ligar. Por favor veja &configureindex; para um "
-"exemplo de como fazer isto. As variáveis de substituição que representam o "
-"componente URI correspondente são <literal>$(PROXY_USER)</literal> "
-"<literal>$(PROXY_PASS)</literal> <literal>$(SITE_USER)</literal> "
-"<literal>$(SITE_PASS)</literal> <literal>$(SITE)</literal> e "
-"<literal>$(SITE_PORT)</literal>."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-"A opção <literal>timeout</literal> define o tempo limite usado por este "
-"método, este valor aplica-se à ligação assim como os tempos de limite de "
-"dados."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-"São disponibilizadas várias definições para controlar o modo passivo. "
-"Geralmente é seguro deixar o modo passivo ligado, funciona em quase todos "
-"ambientes. No entanto algumas situações requerem que o modo passivo seja "
-"desactivado e em vez disso usar o  modo port FTP. Isto pode ser feito "
-"globalmente ou para ligações que passam por um proxy ou para uma máquina "
-"específica (veja a amostra de ficheiro de configuração para exemplos)."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-"É possível usar proxy FTP sobre HTTP ao definir a variável de ambiente "
-"<envar>ftp_proxy</envar> para um URL HTTP - veja a discussão do método http "
-"em cima para a sintaxe. Você não pode definir isto no ficheiro de "
-"configuração e não é recomendado usar FTP sobre HTTP devido à sua baixa "
-"eficiência."
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-"A definição <literal>ForceExtended</literal> controla o uso de comandos "
-"RFC2428 <literal>EPSV</literal> e <literal>EPRT</literal>. A predefinição é "
-"falso, o que significa que estes comandos apenas são usados se a ligação de "
-"controle for IPv6. Definir isto para verdadeiro força o seu uso mesmo em "
-"ligações IPv4. Note que a maioria dos servidores FTP não suporta RFC2428."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -5268,9 +5148,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -5402,38 +5282,40 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
 msgstr ""
 "Adquirir changelogs só pode ser feito se for conhecido um URL de onde os "
 "obter. De preferência o ficheiro Release indica isto num campo 'Changelogs'. "
 "Se isto não estiver disponível, é usado o campo Label/Origin do ficheiro "
-"Release para verificar se uma opção <literal>Acquire::Changelogs::URI::"
-"Label::<replaceable>LABEL</replaceable></literal> ou <literal>Acquire::"
-"Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> existem "
-"e se sim é utilizado este valor. Este valor no ficheiro Release pode ser "
-"sobreposto com <literal>Acquire::Changelogs::URI::Override::Label::"
-"<replaceable>LABEL</replaceable></literal> ou <literal>Acquire::Changelogs::"
-"URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>. O valor "
-"deve ser um URI normal para um ficheiro de texto, excepto se os dados desse "
-"pacote específico for substituído pelo marcador de posição "
-"<literal>@CHANGEPATH@</literal>. O valor para isto é: 1. se o pacote "
-"pertence a um componente (ex. <literal>main</literal>) esta é a primeira "
-"parte, caso contrário é omitida. 2. a primeira letra do nome do pacote "
-"fonte, excepto se o nome do pacote fonte começar com '<literal>lib</"
+"Release para verificar se uma opção "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></"
+"literal> ou <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> existem e se sim é utilizado este valor. Este valor "
+"no ficheiro Release pode ser sobreposto com "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> ou "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>. O valor deve ser um URI normal para um ficheiro de "
+"texto, excepto se os dados desse pacote específico for substituído pelo "
+"marcador de posição <literal>@CHANGEPATH@</literal>. O valor para isto é: 1. "
+"se o pacote pertence a um componente (ex. <literal>main</literal>) esta é a "
+"primeira parte, caso contrário é omitida. 2. a primeira letra do nome do "
+"pacote fonte, excepto se o nome do pacote fonte começar com '<literal>lib</"
 "literal>' e neste caso será as primeiras quatro letras. 3. O nome completo "
 "do pacote fonte. 4. O nome completo outra vez e 5. a versão da fonte. A "
 "primeira (se presente), segunda, terceira e quarta partes são separadas por "
@@ -5443,6 +5325,45 @@ msgstr ""
 "ser usada para adquirir ficheiros changelog a partir dela. Neste caso será "
 "tentada outra fonte se estiver disponível."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
+msgstr ""
+"Tal como changelogs, os instantâneos só podem ser adquiridos se for "
+"conhecido um URI de onde os obter. Preferencialmente o ficheiro Release "
+"indica isto num campo 'Snapshots'. Se isto não estiver disponível o campo "
+"Label/Origin do ficheiro Release é usado para verificar se uma opção "
+"<literal>Acquire::Snapshots::URI::Label::<replaceable>LABEL</replaceable></"
+"literal> ou <literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</"
+"replaceable></literal> existe e se sim esse valor é tomado. O valor no "
+"ficheiro Release pode ser sobreposto com "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> ou "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>. O valor deve ser um URI normal para um directório, "
+"excepto com o ID de instantâneo substituído pelo marcador de posição "
+"<literal>@SNAPSHOTID@</literal>. O valor especial '<literal>no</literal>' "
+"está disponível para esta opção indicando que esta fonte não pode ser usada "
+"para de onde se adquirir instantâneos. Será tentada outra fonte se "
+"disponível neste caso."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "Binary specific configuration"
@@ -5453,15 +5374,15 @@ msgstr "Configuração específica de binário"
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 "Especialmente com a introdução do binário <command>apt</command> pode ser "
 "útil para definir certas opções apenas para um binário específico mesmo como "
-"opções que parecessem apenas afectar um certo binário como <option>APT::Get::"
-"Show-Versions</option> afecta <command>apt-get</command> assim como "
-"<command>apt</command>."
+"opções que parecessem apenas afectar um certo binário como "
+"<option>APT::Get::Show-Versions</option> afecta <command>apt-get</command> "
+"assim como <command>apt</command>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5566,12 +5487,12 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
 "Programas binários são apontados por <literal>Dir::Bin</literal>. "
 "<literal>Dir::Bin::Methods</literal> especifica a localização dos "
@@ -5597,11 +5518,11 @@ msgstr ""
 "especial. Se definido, todos os caminhos serão relativos a <literal>RootDir</"
 "literal>, <emphasis>mesmo caminhos que estão absolutamente especificados</"
 "emphasis>. Então, por exemplo, se <literal>RootDir</literal> estiver "
-"definido para <filename>/tmp/staging</filename> e <literal>Dir::State::"
-"status</literal> estiver definido para <filename>/var/lib/dpkg/status</"
-"filename>, então o ficheiro status será procurado em <filename>/tmp/staging/"
-"var/lib/dpkg/status</filename>. Se desejar usar como prefixo apenas caminhos "
-"relativos, defina antes <literal>Dir</literal>."
+"definido para <filename>/tmp/staging</filename> e "
+"<literal>Dir::State::status</literal> estiver definido para <filename>/var/"
+"lib/dpkg/status</filename>, então o ficheiro status será procurado em "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. Se desejar usar como "
+"prefixo apenas caminhos relativos, defina antes <literal>Dir</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
@@ -5616,10 +5537,10 @@ msgstr ""
 "A lista <literal>Ignore-Files-Silently</literal> pode ser usada para "
 "especificar quais os ficheiros que o APT deve ignorar em silêncio enquanto "
 "analisa os ficheiros nos directórios de fragmento. Por predefinição que "
-"termine com <literal>.disabled</literal>, <literal>~</literal>, <literal>."
-"bak</literal> ou <literal>.dpkg-[a-z]+</literal> é ignorado em silêncio. "
-"Como visto no último valor predefinido, estes padrões podem usar sintaxe de "
-"expressão regular."
+"termine com <literal>.disabled</literal>, <literal>~</literal>, "
+"<literal>.bak</literal> ou <literal>.dpkg-[a-z]+</literal> é ignorado em "
+"silêncio. Como visto no último valor predefinido, estes padrões podem usar "
+"sintaxe de expressão regular."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5774,9 +5695,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 "Cada linha directiva de configuração tem a forma <literal>chave=valor</"
 "literal>. Caracteres especiais (sinais de igual, novas-linhas, caracteres "
@@ -5837,10 +5758,11 @@ msgid ""
 "has support for instead."
 msgstr ""
 "A versão do protocolo a ser usado para o comando <literal><replaceable>cmd</"
-"replaceable></literal> pode ser escolhida ao definir <literal>DPkg::Tools::"
-"options::<replaceable>cmd</replaceable>::Version</literal> correctamente, "
-"sendo a predefinição a versão 1. Se o APT não suportar a versão requisitada "
-"irá então enviar a informação na versão mais alta que suporta."
+"replaceable></literal> pode ser escolhida ao definir "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> correctamente, sendo a predefinição a versão 1. Se o APT não "
+"suportar a versão requisitada irá então enviar a informação na versão mais "
+"alta que suporta."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
@@ -5907,11 +5829,11 @@ msgid ""
 "<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
 "this script for the brief documentation of these options."
 msgstr ""
-"Os grupos de opções <literal>APT::Periodic</literal> e <literal>APT::"
-"Archives</literal> configuram o comportamento das actualizações periódicas "
-"do APT, o que é feito pelo script <literal>/usr/lib/apt/apt.systemd.daily</"
-"literal>. Veja o cabeçalho deste script para uma breve documentação das suas "
-"opções."
+"Os grupos de opções <literal>APT::Periodic</literal> e "
+"<literal>APT::Archives</literal> configuram o comportamento das "
+"actualizações periódicas do APT, o que é feito pelo script <literal>/usr/lib/"
+"apt/apt.systemd.daily</literal>. Veja o cabeçalho deste script para uma "
+"breve documentação das suas opções."
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
@@ -5991,12 +5913,6 @@ msgstr ""
 "Escreve informação relacionada com o acesso a fontes de <literal>cdrom://</"
 "literal>."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-"Escreve informação relacionada com o descarregamento de pacotes usando FTP."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -6027,12 +5943,6 @@ msgstr ""
 "Escreve informação acerca do processo de aceder a coleções de pacotes "
 "armazenados em CD-ROMs."
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-"Descreve os processos de resolver dependências de compilação no &apt-get;."
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -6103,7 +6013,7 @@ msgstr ""
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
-"Regista todas as interacções com os sub-processos que realmente executam os "
+"Regista todas as interações com os sub-processos que realmente executam os "
 "downloads."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -6121,8 +6031,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 "Gera mensagens de depuração descrevendo quais pacotes estão a ser instalados "
 "automaticamente para resolver dependências. Isto corresponde ao passo de "
@@ -6138,14 +6048,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 "Gera mensagens de depuração descrevendo qual pacote está marcado como manter/"
 "instalar/remover enquanto o \"solucionador-de-problemas\" faz o seu "
@@ -6225,8 +6135,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 "Escreve informação acerca dos fornecedores lida de <filename>/etc/apt/"
 "vendors.list</filename>."
@@ -6234,8 +6144,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 "Mostra os comandos externos que são chamados por hooks do apt. Isto inclui "
@@ -6700,6 +6610,23 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr "Desde 2.9.9, você também pode fixar por uma versão de fonte:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 msgid ""
@@ -6750,8 +6677,8 @@ msgstr ""
 "Uma nota de atenção: a palavra chave usada aqui é \"<literal>origin</"
 "literal>\" que pode ser usada para corresponder a um nome de máquina. O "
 "seguinte registo irá atribuir uma alta prioridade a todas as versões "
-"disponíveis do servidor identificadas pelo nome de máquina \"ftp.de.debian."
-"org\""
+"disponíveis do servidor identificadas pelo nome de máquina "
+"\"ftp.de.debian.org\""
 
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
 #: apt_preferences.5.xml
@@ -7023,9 +6950,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 "O sufixo <literal>:any</literal> certifica a selecção de pacotes binários de "
 "qualquer arquitectura. Sem este sufixo, o apt assume implicitamente o sufixo "
@@ -7202,9 +7129,9 @@ msgstr "Então:"
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "Será instalada a versão mais recente disponível do pacote <literal>perl</"
 "literal>, desde que o número da versão comece com \"<literal>&good-perl;</"
@@ -7483,12 +7410,12 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Todos os ficheiros <filename>Packages</filename> e <filename>Release</"
 "filename> obtidos das localizações listadas no ficheiro &sources-list; são "
@@ -7853,15 +7780,25 @@ msgstr ""
 "O directório <filename>/etc/apt/sources.list.d</filename> disponibiliza um "
 "modo de adicionar entradas na sources.list em ficheiros separados. São "
 "permitidos dois formatos diferentes de ficheiro como descrito nas próximas "
-"duas secções. Os nomes de ficheiros precisam de ter ou a extensão <filename>."
-"list</filename> ou <filename>.sources</filename> dependendo do formato "
-"contido. Os nomes dos ficheiros podem apenas conter letras (a-z e A-Z), "
-"dígitos (0-9), e os caracteres underscore (_), menos (-) e ponto (.). De "
+"duas secções. Os nomes de ficheiros precisam de ter ou a extensão "
+"<filename>.list</filename> ou <filename>.sources</filename> dependendo do "
+"formato contido. Os nomes dos ficheiros podem apenas conter letras (a-z e A-"
+"Z), dígitos (0-9), e os caracteres underscore (_), menos (-) e ponto (.). De "
 "outro modo o APT irá escrever um aviso de que ignorou um ficheiro, a menos "
 "que esse ficheiro coincida com um padrão na lista de configuração "
 "<literal>Dir::Ignore-Files-Silently</literal> - que neste caso serão "
 "ignorados em silêncio."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -7889,7 +7826,7 @@ msgstr ""
 "Os ficheiros neste formato têm a extensão <filename>.list</filename>. Cada "
 "linha que especifica uma fonte começa com um tipo (ex. <literal>deb-src</"
 "literal>)  seguido de opções e argumentos para esse tipo. Entradas "
-"individuais não podem ser continuadas até a linha seguinte. As linhas vezias "
+"individuais não podem ser continuadas até a linha seguinte. As linhas vazias "
 "são ignoradas,e um caractere <literal>#</literal> em qualquer pondo de uma "
 "linha marca o restante da linha como um comentário. Consequentemente uma "
 "entrada pode ser desactivada ao comentar a linha inteira. Se for preciso "
@@ -7918,6 +7855,12 @@ msgstr ""
 "formato por si mesmas podem não esperar encontrar opções pois estas não eram "
 "comuns antes da introdução do suporte a multi-arquitecturas."
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -7986,7 +7929,7 @@ msgstr ""
 "desenvolvedores que estão a trabalhar com e/ou a analisar fontes do apt são "
 "altamente encorajados a adicionar suporte a este formato e a contactar a "
 "equipa do APT para coordenar e partilhar este trabalho. Os utilizadores "
-"podem já livremente adoptar este formato, mas podem encontrar problemas com "
+"podem já livremente adotar este formato, mas podem encontrar problemas com "
 "software que ainda não suporte o formato."
 
 #. type: Content of: <refentry><refsect1><title>
@@ -8161,10 +8104,17 @@ msgstr "&sourceslist-sources-format;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "As an example, the sources for your distribution could look like this in "
+#| "one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+#| "like this in deb822 style format: <placeholder type=\"literallayout\" "
+#| "id=\"1\"/>"
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 "Como um exemplo, as fontes da sua distribuição podem-se parecer com isto no "
 "formato estilo uma-linha: <placeholder type=\"literallayout\" id=\"0\"/> ou "
@@ -8195,7 +8145,7 @@ msgstr ""
 "descrito, mas estes não têm as mesmas opções disponíveis. Para simplificar "
 "listamos o nome-de-campo deb822 e disponibilizamos o nome de uma-linha entre "
 "parênteses. Lembre-se que além de definir explicitamente opções de multi-"
-"valor, existe também a opção de modificá-os com base na predefinição, mas "
+"valor, existe também a opção de modifica-los com base na predefinição, mas "
 "não estamos a listar explicitamente esses nomes aqui. As opções não "
 "suportadas são ignoradas em silêncio por todas as versões do APT."
 
@@ -8232,11 +8182,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 "<option>Targets</option> (<option>target</option>) é uma opção multi-valor "
 "que define quais alvos de download o apt irá tentar adquirir a partir desta "
@@ -8265,8 +8216,9 @@ msgstr ""
 "se o repositório não anunciar a disponibilidade de PDiffs. Usa por "
 "predefinição o valor da opção com o mesmo nome para um ficheiro índice "
 "específico definido no scope <option>Acquire::IndexTargets</option>, o qual "
-"usa por predefinição o valor da opção de configuração <option>Acquire::"
-"PDiffs</option> o qual usa por predefinição <literal>yes</literal>."
+"usa por predefinição o valor da opção de configuração "
+"<option>Acquire::PDiffs</option> o qual usa por predefinição <literal>yes</"
+"literal>."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8294,10 +8246,10 @@ msgstr ""
 "funcionalidade se esta fonte indicar suporte para tal, enquanto "
 "<literal>force</literal> irá activar a funcionalidade independentemente do "
 "que a fonte indique. Recorre à predefinição do valor da opção com o mesmo "
-"nome para um ficheiro index específico definido no scope <option>Acquire::"
-"IndexTargets</option>, que o próprio usa por predefinição o valor da opção "
-"de configuração <option>Acquire::By-Hash</option> a qual é predefinida para "
-"<literal>yes</literal>."
+"nome para um ficheiro index específico definido no scope "
+"<option>Acquire::IndexTargets</option>, que o próprio usa por predefinição o "
+"valor da opção de configuração <option>Acquire::By-Hash</option> a qual é "
+"predefinida para <literal>yes</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
@@ -8393,6 +8345,32 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<option>Signed-By</option> (<option>signed-by</option>)  is an option to "
+#| "require a repository to pass &apt-secure; verification with a certain set "
+#| "of keys rather than all trusted keys apt has configured.  It is specified "
+#| "as a list of absolute paths to keyring files (have to be accessible and "
+#| "readable for the <literal>_apt</literal> system user, so ensure everyone "
+#| "has read-permissions on the file) and fingerprints of keys to select from "
+#| "these keyrings. The recommended locations for keyrings are <filename>/usr/"
+#| "share/keyrings</filename> for keyrings managed by packages, and "
+#| "<filename>/etc/apt/keyrings</filename> for keyrings managed by the system "
+#| "operator.  If no keyring files are specified the default is the "
+#| "<filename>trusted.gpg</filename> keyring and all keyrings in the "
+#| "<filename>trusted.gpg.d/</filename> directory (see <command>apt-key "
+#| "fingerprint</command>). If no fingerprint is specified all keys in the "
+#| "keyrings are selected. A fingerprint will accept also all signatures by a "
+#| "subkey of this key, if this isn't desired an exclamation mark (<literal>!"
+#| "</literal>) can be appended to the fingerprint to disable this "
+#| "behaviour.  The option defaults to the value of the option with the same "
+#| "name if set in the previously acquired <filename>Release</filename> file "
+#| "of this repository (only fingerprints can be specified there through).  "
+#| "Otherwise all keys in the trusted keyrings are considered valid signers "
+#| "for this repository.  The option may also be set directly to an embedded "
+#| "GPG public key block. Special care is needed to encode the empty line "
+#| "with leading spaces and \".\": <placeholder type=\"literallayout\" "
+#| "id=\"0\"/>"
 msgid ""
 "<option>Signed-By</option> (<option>signed-by</option>)  is an option to "
 "require a repository to pass &apt-secure; verification with a certain set of "
@@ -8405,18 +8383,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 "<option>Signed-By</option> (<option>signed-by</option>)  é uma opção para "
 "requerer a um repositório para passar a verificação &apt-secure; com um "
@@ -8459,8 +8436,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 "<option>Check-Valid-Until</option> (<option>check-valid-until</option>)  é "
 "um valor yes/no que controla se o APT deverá tentar detectar ataques de "
@@ -8503,8 +8481,9 @@ msgstr ""
 "actualizados (locais) de um arquivo mais frequentemente actualizado mas "
 "menos acessível (o qual está também em sources.list) em vez de desactivar "
 "completamente a verificação. Usa por predefinição o valor das opções de "
-"configuração <option>Acquire::Min-ValidTime</option> and <option>Acquire::"
-"Max-ValidTime</option> que estão ambas não definidas por predefinição."
+"configuração <option>Acquire::Min-ValidTime</option> and "
+"<option>Acquire::Max-ValidTime</option> que estão ambas não definidas por "
+"predefinição."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
 #: sources.list.5.xml
@@ -8555,6 +8534,45 @@ msgstr ""
 "tentado o caminho especificado em vez do ficheiro InRelease, e o recurso a "
 "ficheiros <filename>Release</filename> será desactivado."
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+"<option>Snapshot</option> (<option>snapshot</option>) permite selecionar uma "
+"versão anterior do arquivo a partir do serviço de instantâneos. Os valores "
+"suportados são:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+"<literal>enable</literal> para permitir selecionar um instantâneo com a "
+"opção <option>--snapshot</option>, ou"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr "um ID de instantâneo para seleciona um instantâneo específico."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+"Os IDs de instantâneos são geralmente marcadores horários no formado de "
+"<literal>AAAAMMDDTHHMMSSZ</literal>, tal como <literal>20220102T030405Z</"
+"literal> o qual é 2 de Janeiro, 2022 às 03:04:05 UTC, os servidores podem no "
+"entanto suportar tipos de IDs adicionais, e o APT não executa nenhumas "
+"verificações até agora."
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -8690,38 +8708,6 @@ msgstr ""
 "local com mudança de media. Use o programa &apt-cdrom; para criar entradas "
 "cdrom na lista de fontes."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-"O esquema ftp especifica um servidor FTP para um arquivo. O uso de FTP está "
-"em declínio em favor de <literal>http</literal> e <literal>https</literal> e "
-"muitos arquivos ou nunca ofereceram ou estão a retirar o acesso FTP. Se você "
-"ainda precisa deste método, estão disponíveis muitas opções de configuração "
-"no escopo <literal>Acquire::ftp</literal> e detalhadas em &apt-conf;."
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-"Por favor note que pode ser especificado um proxy FTP ao usar a variável de "
-"ambiente <envar>ftp_proxy</envar>. É possível especifica um proxy HTTP (os "
-"servidores proxy HTTP geralmente compreendem URLs de FTP) usando esta "
-"variável de ambiente e <emphasis>apenas</emphasis> esta variável de "
-"ambiente. Os proxies que usam HTTP especificados no ficheiro de configuração "
-"serão ignorados."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -8735,20 +8721,6 @@ msgstr ""
 "localização. Isto é útil para quem use um meio amovível para copiar "
 "ficheiros com o APT."
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-"O método rsh/ssh invoca RSH/SSH a ligar a uma máquina remota e aceder a "
-"ficheiros como um dado utilizador. É recomendada a configuração prévia de "
-"rhosts ou chaves RSA. Os comandos standard <command>find</command> e "
-"<command>dd</command> são usados para executar as transferências de "
-"ficheiros a partir da máquina remota."
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -8929,62 +8901,62 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
-"Usa FTP para aceder ao arquivo em ftp.debian.org, sob o directório debian, e "
-"usa apenas a área &debian-stable-codename;/contrib."
+"Usa HTTPS para aceder ao arquivo em deb.debian.org, sob o directório debian, "
+"e usa apenas a área &debian-stable-codename;/contrib."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
-msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
-"Usa FTP para aceder ao arquivo em ftp.debian.org, sob o directório debian, e "
-"usa apenas a área unstable/contrib. Se esta linha aparecer também como "
+"Usa HTTPS para aceder ao arquivo em deb.debian.org, sob o directório debian, "
+"e usa apenas a área unstable/contrib. Se esta linha aparecer também como "
 "aquela no exemplo anterior em <filename>sources.list</filename> será usada "
-"uma única sessão FTP para ambas linhas de recurso."
+"uma única sessão HTTPS para ambas linhas de recurso."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
-msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
+msgstr "deb https://deb.debian.org/debian unstable contrib"
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 
@@ -9127,8 +9099,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 "Directório temporário para onde escrever ficheiros <command>debconf</"
 "command> modelo extraídos e scripts de configuração. Item de Configuração: "
@@ -9172,11 +9144,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
-"Usa ordenação de campo de índice Source. Item de Configuração: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Usa ordenação de campo de índice Source. Item de Configuração: "
+"<literal>APT::SortPkgs::Source</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-sortpkgs.1.xml
@@ -9309,10 +9281,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 "O comando <literal>release</literal> gera um ficheiro Release a partir de "
 "uma árvore de directórios. Por predefinição, procura recursivamente no "
@@ -9343,13 +9315,14 @@ msgid ""
 "<literal>Description</literal>."
 msgstr ""
 "Valores para os campos de metadados adicionais no ficheiro Release são "
-"tomados a partir das variáveis correspondentes sob <literal>APT::FTPArchive::"
-"Release</literal>, ex. <literal>APT::FTPArchive::Release::Origin</literal>.  "
-"Os campos suportados são <literal>Origin</literal>, <literal>Label</"
-"literal>, <literal>Suite</literal>, <literal>Version</literal>, "
-"<literal>Codename</literal>, <literal>Date</literal>, <literal>NotAutomatic</"
-"literal>, <literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</"
-"literal>, <literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"tomados a partir das variáveis correspondentes sob "
+"<literal>APT::FTPArchive::Release</literal>, ex. "
+"<literal>APT::FTPArchive::Release::Origin</literal>.  Os campos suportados "
+"são <literal>Origin</literal>, <literal>Label</literal>, <literal>Suite</"
+"literal>, <literal>Version</literal>, <literal>Codename</literal>, "
+"<literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
 "<literal>Architectures</literal>, <literal>Components</literal> e "
 "<literal>Description</literal>."
 
@@ -9572,12 +9545,12 @@ msgstr "Secção <literal>TreeDefault</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 "Define predefinições específicas para as secções <literal>Tree</literal>. "
-"Todas estas variáveis são variáveis de substituição e têm as strings "
-"$(DIST), $(SECTION) e $(ARCH) substituídas pelos seus respectivos valores."
+"Todas estas variáveis são variáveis de substituição e têm as strings $"
+"(DIST), $(SECTION) e $(ARCH) substituídas pelos seus respectivos valores."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9611,17 +9584,17 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
-"Define o topo da árvore de directórios .deb. A predefinição é "
-"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
+"Define o topo da árvore de directórios .deb. A predefinição é <filename>$"
+"(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 "Define o topo da árvore de directórios de pacotes fonte. A predefinição é "
 "<filename>$(DIST)/$(SECTION)/source/</filename>"
@@ -9632,8 +9605,8 @@ msgid ""
 "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "binary-$(ARCH)/Packages</filename>"
 msgstr ""
-"Define o ficheiro Packages de saída. A predefinição é <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/Packages</filename>"
+"Define o ficheiro Packages de saída. A predefinição é <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/Packages</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9641,19 +9614,19 @@ msgid ""
 "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "source/Sources</filename>"
 msgstr ""
-"Define o ficheiro Sources de saída. A predefinição é <filename>$(DIST)/"
-"$(SECTION)/source/Sources</filename>"
+"Define o ficheiro Sources de saída. A predefinição é <filename>$(DIST)/$"
+"(SECTION)/source/Sources</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 "Define se o ficheiro mestre Translation-en de saída com as descrições longas "
-"não deve ser incluído no ficheiro Packages. A predefinição é "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"não deve ser incluído no ficheiro Packages. A predefinição é <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -9663,8 +9636,8 @@ msgid ""
 "filename>"
 msgstr ""
 "Define o prefixo de caminho que causa que um symlink seja considerado um "
-"link interno em vez de um link externo. A predefinição é <filename>$(DIST)/"
-"$(SECTION)/</filename>"
+"link interno em vez de um link externo. A predefinição é <filename>$(DIST)/$"
+"(SECTION)/</filename>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10078,14 +10051,14 @@ msgid ""
 "literal>."
 msgstr ""
 "Seleciona o ficheiro de sobreposição de fonte a usar com o comando "
-"<literal>sources</literal>. Item de Configuração: <literal>APT::FTPArchive::"
-"SourceOverride</literal>."
+"<literal>sources</literal>. Item de Configuração: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 "Torna as bases de dados de cache apenas de leitura. Item de Configuração: "
 "<literal>APT::FTPArchive::ReadOnlyDB</literal>."
@@ -10101,8 +10074,8 @@ msgstr ""
 "Aceita nos comandos <literal>packages</literal> e <literal>contents</"
 "literal> apenas ficheiros de pacotes que condizem com <literal>*_arch.deb</"
 "literal> ou <literal>*_all.deb</literal> em vez de todos os ficheiros de "
-"pacotes presentes no caminho fornecido. Item de Configuração: <literal>APT::"
-"FTPArchive::Architecture</literal>."
+"pacotes presentes no caminho fornecido. Item de Configuração: "
+"<literal>APT::FTPArchive::Architecture</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
@@ -10217,9 +10190,10 @@ msgid ""
 "following tokens being recognized; Unknown tokens will be ignored. Tokens "
 "may be separated by spaces, tabs or newlines."
 msgstr ""
-"O formato definido aqui é semelhante ao formato do ficheiro <filename>~/."
-"netrc</filename> usado pelo <citerefentry><refentrytitle><command>ftp</"
-"command></refentrytitle><manvolnum>1</manvolnum></citerefentry> e programas "
+"O formato definido aqui é semelhante ao formato do ficheiro "
+"<filename>~/.netrc</filename> usado pelo "
+"<citerefentry><refentrytitle><command>ftp</command></"
+"refentrytitle><manvolnum>1</manvolnum></citerefentry> e programas "
 "semelhantes que interagem com servidores. É um formato simples baseado em "
 "token com os seguintes tokens a serem reconhecidos. Os tokens desconhecidos "
 "serão ignorados. Os tokens podem ser separados por espaços, tabs ou nova-"
@@ -10514,16 +10488,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 "A variável de ambiente <envar>http_proxy</envar> é suportada pela "
 "configuração de todo o sistema. Proxies específicos para o APT podem ser "
@@ -10556,14 +10531,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 "Mais ainda, existem três definições disponibilizadas para controle de cache "
 "como caches de proxy compatíveis com HTTP/1.1. <literal>Acquire::http::No-"
@@ -10572,8 +10547,8 @@ msgstr ""
 "idade máxima permitida (em segundos) de um ficheiro índice na cache do "
 "proxy. <literal>Acquire::http::No-Store</literal> especifica que o proxy não "
 "deve armazenar os ficheiros de arquivo pedidos na sua cache, o que pode ser "
-"usado para prevenir que o proxy polua a sua cache com (grandes) ficheiros ."
-"deb."
+"usado para prevenir que o proxy polua a sua cache com (grandes) "
+"ficheiros .deb."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-http.1.xml
@@ -10608,8 +10583,8 @@ msgid ""
 "<replaceable>host</replaceable></literal>."
 msgstr ""
 "Note que a auto-detecção não será usada para uma máquina se uma configuração "
-"de proxy específica de máquina já estiver definida via <literal>Acquire::"
-"http::Proxy::<replaceable>máquina</replaceable></literal>."
+"de proxy específica de máquina já estiver definida via "
+"<literal>Acquire::http::Proxy::<replaceable>máquina</replaceable></literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
@@ -10623,11 +10598,11 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
-"Esta opção toma precedência sobre a opção antiga de nome <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"Esta opção toma precedência sobre a opção antiga de nome "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt-transport-http.1.xml
@@ -10664,12 +10639,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 "A definição <literal>Acquire::http::Pipeline-Depth</literal> pode ser usada "
 "para activar o 'pipelining' de HTTP (RFC 2616 secção 8.1.2.2) a qual pode "
@@ -10799,9 +10774,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 "O protocolo HTTPS é baseado no protocolo HTTP, assim todas as opções "
 "suportadas pelo &apt-transport-http; são também suportadas via "
@@ -10848,9 +10823,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 "Uma lista de revogação de certificados personalizada (CRL) pode ser "
 "configurada com as opções <literal>Acquire::https::CRLFile</literal> e "
@@ -10921,19 +10897,19 @@ msgstr "Autenticação do cliente"
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 "Para além de suportar autenticação baseada em palavra-passe (veja &apt-"
 "authconf;) o HTTPS também suporta autenticação baseada em certificados do "
-"cliente via <literal>Acquire::https::SSLCert</literal> e <literal>Acquire::"
-"https::SSLKey</literal>. Estes devem ser definidos respetivamente no nome de "
-"ficheiro do certificado de cliente X.509 e a chave privada (não encriptada) "
-"associada, ambos em formato PEM. Na prática o uso de variantes especificas "
-"da máquina de ambas opções é altamente recomendado."
+"cliente via <literal>Acquire::https::SSLCert</literal> e "
+"<literal>Acquire::https::SSLKey</literal>. Estes devem ser definidos "
+"respetivamente no nome de ficheiro do certificado de cliente X.509 e a chave "
+"privada (não encriptada) associada, ambos em formato PEM. Na prática o uso "
+"de variantes especificas da máquina de ambas opções é altamente recomendado."
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: apt-transport-https.1.xml
@@ -11222,9 +11198,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 "Assumindo que um ficheiro com este conteúdo está armazenado em <filename>/"
 "etc/apt/mirrorlist.txt</filename> na sua máquina, pode ser usado desta "
@@ -11244,9 +11220,9 @@ msgid ""
 "literal> the sources.list entry from above could instead be written as:"
 msgstr ""
 "Todas as versões do método mirror suportam uma mirrorlist acessível via "
-"HTTP, portanto assumindo que está disponível em <literal>http://apt.example."
-"org/mirror.lst</literal> a entrada sources.list de cima poderá, em vez "
-"dessa, ser escrita como:"
+"HTTP, portanto assumindo que está disponível em <literal>http://"
+"apt.example.org/mirror.lst</literal> a entrada sources.list de cima poderá, "
+"em vez dessa, ser escrita como:"
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
 #: apt-transport-mirror.1.xml
@@ -11649,6 +11625,9 @@ msgid ""
 "narrowing this pattern (see narrowing patterns above) makes it only match "
 "installed versions (see version patterns below)."
 msgstr ""
+"Seleciona pacotes que estão actualmente instalados. Desde a versão 2.5.4, "
+"estreitar este padrão (veja estreitar padrões em cima) faz com que apenas "
+"corresponda às versões instaladas (veja padrões de versão em baixo)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -11681,6 +11660,18 @@ msgstr "<code>~o</code>"
 msgid "Selects packages that no longer exist in repositories."
 msgstr "Seleciona todos os pacotes que já não existem nos repositórios."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr "<code>?phasing</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+"Seleciona pacotes que serão mantidos nas versões anteriores nas "
+"actualizações devido a phasing."
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -11773,6 +11764,10 @@ msgid ""
 "version(2.0))</code>matched even if 2.0 was not installed, but another "
 "version was."
 msgstr ""
+"Seleciona versões de pacotes que estão actualmente instaladas. As versões "
+"anteriores a 2.5.4 apenas correspondiam ao nível do pacote, assim <code>?any-"
+"version(?installed?version(2.0))</code> correspondia mesmo se 2.0 não "
+"estivesse instalado, mas outra versão estava."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -11879,6 +11874,19 @@ msgstr "<code>~pNAME</code>"
 msgid "Selects versions where the Priority string equals the given name."
 msgstr "Seleciona versões onde a string Priority é igual ao nome dado."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr "<code>?security</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+"Seleciona pacotes que são actualizações de segurança ou sucedem a uma "
+"actualização de segurança."
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -11923,6 +11931,16 @@ msgstr "<code>?suggests(PATTERN)</code>"
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr "<code>~DSuggests:PATTERN</code>"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr "<code>?recommends(PATTERN)</code>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr "<code>~DRecommends:PATTERN</code>"
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -11976,11 +11994,11 @@ msgstr "<code>~DEnhances:PATTERN</code>"
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
-"Seleciona versões que dependem/pré-dependem/sugerem/entram em conflito/etc "
-"de/com pacotes que correspondem ao padrão PATTERN."
+"Seleciona versões que dependem/pré-dependem/sugerem/recomendam/entram em "
+"conflito/etc de/com pacotes que correspondem ao padrão PATTERN."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
@@ -12118,10 +12136,10 @@ msgstr "?narrow aceita argumentos infinitos"
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 "<code>foo</code> não pode ser usado como abreviatura para <code>?name(foo)</"
 "code>, pois isto pode fazer com que erros de escrita passem despercebidos: "
@@ -12390,13 +12408,13 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
 msgstr ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
@@ -12566,8 +12584,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12579,8 +12596,7 @@ msgstr ""
 "\n"
 " Por exemplo:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -12602,26 +12618,31 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
 " Por favor forneça a etiqueta da distribuição a obter ou um caminho para o\n"
 " ficheiro package terminando com um /. As etiquetas da\n"
-" distribuição são tipicamente algo como: stable unstable testing non-US\n"
+" distribuição são tipicamente algo como: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 
 #. type: Content of: <book><chapter><para>
 #: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "The distribution refers to the Debian version in the archive, "
+#| "<emphasis>stable</emphasis> refers to the latest released version and "
+#| "<emphasis>unstable</emphasis> refers to the developmental version. "
+#| "<emphasis>non-US</emphasis> is only available on some mirrors and refers "
+#| "to packages that contain encryption technology or other things that "
+#| "cannot be exported from the United States. Importing these packages into "
+#| "the US is legal however."
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 "A distribuição refere-se à versão Debian no arquivo, <emphasis>stable</"
 "emphasis> refere-se à última versão lançada e <emphasis>unstable</emphasis> "
@@ -12700,8 +12721,8 @@ msgid ""
 "have been successfully installed. To change this behavior place "
 "<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
 msgstr ""
-"Por predefinição o APT irá automaticamente remover o ficheiro de pacote (."
-"deb) assim que ele tenha sido instalado com sucesso. Para alterar este "
+"Por predefinição o APT irá automaticamente remover o ficheiro de pacote "
+"(.deb) assim que ele tenha sido instalado com sucesso. Para alterar este "
 "comportamento coloque <literal>Dselect::clean \"prompt\";</literal> em /etc/"
 "apt/apt.conf."
 
@@ -13174,18 +13195,18 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 
@@ -13515,8 +13536,8 @@ msgid ""
 "emphasis>."
 msgstr ""
 "Mais detalhes podem ser vistos ao examinar o manual do apt.conf e o exemplo "
-"de ficheiro de configuração em <emphasis>/usr/share/doc/apt/examples/apt."
-"conf</emphasis>."
+"de ficheiro de configuração em <emphasis>/usr/share/doc/apt/examples/"
+"apt.conf</emphasis>."
 
 #. type: Content of: <book><chapter><section><para>
 #: offline.dbk
@@ -13731,6 +13752,445 @@ msgstr "  # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
 msgid "Which will use the already fetched archives on the disc."
 msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 
+#~ msgid ""
+#~ "<literal>ftp::Proxy</literal> sets the default proxy to use for FTP "
+#~ "URIs.  It is in the standard form of <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>ftp::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>ftp_proxy</envar> "
+#~ "environment variable will be used. To use an FTP proxy you will have to "
+#~ "set the <literal>ftp::ProxyLogin</literal> script in the configuration "
+#~ "file. This entry specifies the commands to send to tell the proxy server "
+#~ "what to connect to. Please see &configureindex; for an example of how to "
+#~ "do this. The substitution variables representing the corresponding URI "
+#~ "component are <literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</"
+#~ "literal>, <literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</"
+#~ "literal>, <literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
+#~ msgstr ""
+#~ "<literal>ftp::Proxy</literal> define o proxy predefinido a usar para URIs "
+#~ "FTP. Está no formato standard de <literal>ftp://[[user]"
+#~ "[:pass]@]host[:port]/</literal>. Os proxies por máquina podem também ser "
+#~ "especificados ao usar o formato <literal>ftp::Proxy::&lt;host&gt;</"
+#~ "literal> com a palavra chave especial <literal>DIRECT</literal> que "
+#~ "significa não usar nenhum proxy. Se nenhuma das definições acima for "
+#~ "especificada, será usada a variável de ambiente <envar>ftp_proxy</envar>. "
+#~ "Para usar um proxy FTP você tem que definir o script "
+#~ "<literal>ftp::ProxyLogin</literal> no ficheiro de configuração. Esta "
+#~ "entrada especifica os comandos a enviar para dizer ao servidor proxy ao "
+#~ "que se ligar. Por favor veja &configureindex; para um exemplo de como "
+#~ "fazer isto. As variáveis de substituição que representam o componente URI "
+#~ "correspondente são <literal>$(PROXY_USER)</literal> <literal>$"
+#~ "(PROXY_PASS)</literal> <literal>$(SITE_USER)</literal> <literal>$"
+#~ "(SITE_PASS)</literal> <literal>$(SITE)</literal> e <literal>$(SITE_PORT)</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "The option <literal>timeout</literal> sets the timeout timer used by the "
+#~ "method; this value applies to the connection as well as the data timeout."
+#~ msgstr ""
+#~ "A opção <literal>timeout</literal> define o tempo limite usado por este "
+#~ "método, este valor aplica-se à ligação assim como os tempos de limite de "
+#~ "dados."
+
+#~ msgid ""
+#~ "Several settings are provided to control passive mode. Generally it is "
+#~ "safe to leave passive mode on; it works in nearly every environment.  "
+#~ "However, some situations require that passive mode be disabled and port "
+#~ "mode FTP used instead. This can be done globally or for connections that "
+#~ "go through a proxy or for a specific host (see the sample config file for "
+#~ "examples)."
+#~ msgstr ""
+#~ "São disponibilizadas várias definições para controlar o modo passivo. "
+#~ "Geralmente é seguro deixar o modo passivo ligado, funciona em quase todos "
+#~ "ambientes. No entanto algumas situações requerem que o modo passivo seja "
+#~ "desactivado e em vez disso usar o  modo port FTP. Isto pode ser feito "
+#~ "globalmente ou para ligações que passam por um proxy ou para uma máquina "
+#~ "específica (veja a amostra de ficheiro de configuração para exemplos)."
+
+#~ msgid ""
+#~ "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+#~ "envar> environment variable to an HTTP URL - see the discussion of the "
+#~ "http method above for syntax. You cannot set this in the configuration "
+#~ "file and it is not recommended to use FTP over HTTP due to its low "
+#~ "efficiency."
+#~ msgstr ""
+#~ "É possível usar proxy FTP sobre HTTP ao definir a variável de ambiente "
+#~ "<envar>ftp_proxy</envar> para um URL HTTP - veja a discussão do método "
+#~ "http em cima para a sintaxe. Você não pode definir isto no ficheiro de "
+#~ "configuração e não é recomendado usar FTP sobre HTTP devido à sua baixa "
+#~ "eficiência."
+
+#~ msgid ""
+#~ "The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+#~ "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default "
+#~ "is false, which means these commands are only used if the control "
+#~ "connection is IPv6. Setting this to true forces their use even on IPv4 "
+#~ "connections. Note that most FTP servers do not support RFC2428."
+#~ msgstr ""
+#~ "A definição <literal>ForceExtended</literal> controla o uso de comandos "
+#~ "RFC2428 <literal>EPSV</literal> e <literal>EPRT</literal>. A predefinição "
+#~ "é falso, o que significa que estes comandos apenas são usados se a "
+#~ "ligação de controle for IPv6. Definir isto para verdadeiro força o seu "
+#~ "uso mesmo em ligações IPv4. Note que a maioria dos servidores FTP não "
+#~ "suporta RFC2428."
+
+#~ msgid "Print information related to downloading packages using FTP."
+#~ msgstr ""
+#~ "Escreve informação relacionada com o descarregamento de pacotes usando "
+#~ "FTP."
+
+#~ msgid ""
+#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on "
+#~ "the decline in favour of <literal>http</literal> and <literal>https</"
+#~ "literal> and many archives either never offered or are retiring FTP "
+#~ "access. If you still need this method many configuration options for it "
+#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed "
+#~ "in &apt-conf;."
+#~ msgstr ""
+#~ "O esquema ftp especifica um servidor FTP para um arquivo. O uso de FTP "
+#~ "está em declínio em favor de <literal>http</literal> e <literal>https</"
+#~ "literal> e muitos arquivos ou nunca ofereceram ou estão a retirar o "
+#~ "acesso FTP. Se você ainda precisa deste método, estão disponíveis muitas "
+#~ "opções de configuração no escopo <literal>Acquire::ftp</literal> e "
+#~ "detalhadas em &apt-conf;."
+
+#~ msgid ""
+#~ "Please note that an FTP proxy can be specified by using the "
+#~ "<envar>ftp_proxy</envar> environment variable. It is possible to specify "
+#~ "an HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
+#~ "environment variable and <emphasis>only</emphasis> this environment "
+#~ "variable. Proxies using HTTP specified in the configuration file will be "
+#~ "ignored."
+#~ msgstr ""
+#~ "Por favor note que pode ser especificado um proxy FTP ao usar a variável "
+#~ "de ambiente <envar>ftp_proxy</envar>. É possível especifica um proxy HTTP "
+#~ "(os servidores proxy HTTP geralmente compreendem URLs de FTP) usando esta "
+#~ "variável de ambiente e <emphasis>apenas</emphasis> esta variável de "
+#~ "ambiente. Os proxies que usam HTTP especificados no ficheiro de "
+#~ "configuração serão ignorados."
+
+#~ msgid ""
+#~ "The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+#~ "the files as a given user. Prior configuration of rhosts or RSA keys is "
+#~ "recommended. The standard <command>find</command> and <command>dd</"
+#~ "command> commands are used to perform the file transfers from the remote "
+#~ "host."
+#~ msgstr ""
+#~ "O método rsh/ssh invoca RSH/SSH a ligar a uma máquina remota e aceder a "
+#~ "ficheiros como um dado utilizador. É recomendada a configuração prévia de "
+#~ "rhosts ou chaves RSA. Os comandos standard <command>find</command> e "
+#~ "<command>dd</command> são usados para executar as transferências de "
+#~ "ficheiros a partir da máquina remota."
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+#~ "473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+#~ msgstr ""
+#~ "<!-- TRANSLATOR: usado como id de chave de exportação do apt-key ex. apt-"
+#~ "key export 473041FA --> <!ENTITY synopsis-keyid \"id_de_chave\">"
+
+#~ msgid "Deprecated APT key management utility"
+#~ msgstr "Utilitário de gestão de chaves do APT descontinuado"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is used to manage the list of keys used by apt "
+#~ "to authenticate packages.  Packages which have been authenticated using "
+#~ "these keys will be considered trusted."
+#~ msgstr ""
+#~ "<command>apt-key</command> é usado para gerir uma lista de chaves usadas "
+#~ "pelo apt para autenticar pacotes. Os pacotes que foram autenticados com "
+#~ "estas chaves serão considerados de confiança."
+
+#~ msgid ""
+#~ "Use of <command>apt-key</command> is deprecated, except for the use of "
+#~ "<command>apt-key del</command> in maintainer scripts to remove existing "
+#~ "keys from the main keyring.  If such usage of <command>apt-key</command> "
+#~ "is desired the additional installation of the GNU Privacy Guard suite "
+#~ "(packaged in <package>gnupg</package>) is required."
+#~ msgstr ""
+#~ "O uso de <command>apt-key</command> está descontinuado, excepto para o "
+#~ "uso de <command>apt-key del</command> em scripts de maintainer para "
+#~ "remover chaves existentes do chaveiro principal. Se tal utilização do "
+#~ "<command>apt-key</command> é desejada, é requerida a instalação adicional "
+#~ "da suite GNU Privacy Guard (empacotada em <package>gnupg</package>)."
+
+#~ msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04."
+#~ msgstr ""
+#~ "apt-key(8) estará disponível por último em Debian 12 e Ubuntu 24.04."
+
+#~ msgid "Supported keyring files"
+#~ msgstr "Ficheiros de chaveiro suportados"
+
+#~ msgid ""
+#~ "apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+#~ "public ring\") in files with the \"<literal>gpg</literal>\" extension, "
+#~ "not the keybox database format introduced in newer &gpg; versions as "
+#~ "default for keyring files. Binary keyring files intended to be used with "
+#~ "any apt version should therefore always be created with <command>gpg --"
+#~ "export</command>."
+#~ msgstr ""
+#~ "O apt-key suporta apenas o formato binário OpenPGP (também conhecido como "
+#~ "\"GPG key public ring\") em ficheiros com a extensão \"<literal>gpg</"
+#~ "literal>\", não o formato de base de dados keybox introduzido em novas "
+#~ "versões &gpg; como predefinição para ficheiros de chaveiro. Os ficheiros "
+#~ "chaveiro binários que se destinam a ser usados com qualquer versão do apt "
+#~ "devem por isto ser sempre criados com <command>gpg --export</command>."
+
+#~ msgid ""
+#~ "Alternatively, if all systems which should be using the created keyring "
+#~ "have at least apt version >= 1.4 installed, you can use the ASCII armored "
+#~ "format with the \"<literal>asc</literal>\" extension instead which can be "
+#~ "created with <command>gpg --armor --export</command>."
+#~ msgstr ""
+#~ "Como alternativa, se todos os sistemas que devem estar a usar o chaveiro "
+#~ "criado têm pelo menos a versão de apt >= 1.4 instalada, você pode usar o "
+#~ "formato blindado de ASCII com a extensão \"<literal>asc</literal>\" em "
+#~ "substituição o qual pode ser criado com <command>gpg --armor --export</"
+#~ "command>."
+
+#~ msgid "Commands"
+#~ msgstr "Comandos"
+
+#~ msgid "(deprecated)"
+#~ msgstr "(descontinuado)"
+
+#~ msgid ""
+#~ "Add a new key to the list of trusted keys.  The key is read from the "
+#~ "filename given with the parameter &synopsis-param-filename; or if the "
+#~ "filename is <literal>-</literal> from standard input."
+#~ msgstr ""
+#~ "Adiciona uma chave nova à lista de chaves de confiança. A chave é lida a "
+#~ "partir do nome de ficheiro dado com o parâmetro &synopsis-param-filename; "
+#~ "ou se o nome do ficheiro for <literal>-</literal> a partir da entrada "
+#~ "standard."
+
+#~ msgid ""
+#~ "It is critical that keys added manually via <command>apt-key</command> "
+#~ "are verified to belong to the owner of the repositories they claim to be "
+#~ "for otherwise the &apt-secure; infrastructure is completely undermined."
+#~ msgstr ""
+#~ "É crítico que as chaves adicionadas manualmente via <command>apt-key</"
+#~ "command> sejam verificadas que pertencem ao dono dos repositórios que "
+#~ "elas afirmam ser, caso contrário a infraestrutura &apt-secure; fica "
+#~ "completamente indeterminada."
+
+#~ msgid ""
+#~ "<emphasis>Note</emphasis>: Instead of using this command a keyring should "
+#~ "be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+#~ "directory with a descriptive name and either \"<literal>gpg</literal>\" "
+#~ "or \"<literal>asc</literal>\" as file extension."
+#~ msgstr ""
+#~ "<emphasis>Note</emphasis>: Em vez de se usar este comando, deve-se "
+#~ "colocar um chaveiro directamente no directório <filename>/etc/apt/"
+#~ "trusted.gpg.d/</filename> com um nome descritivo e com \"<literal>gpg</"
+#~ "literal>\" ou \"<literal>asc</literal>\" como extensão de ficheiro."
+
+#~ msgid "(mostly deprecated)"
+#~ msgstr "(maioritariamente descontinuado)"
+
+#~ msgid "Remove a key from the list of trusted keys."
+#~ msgstr "Remove uma chave da lista de chaves de confiança."
+
+#~ msgid "Output the key &synopsis-param-keyid; to standard output."
+#~ msgstr "Escreve o &synopsis-param-keyid; da chave na saída standard."
+
+#~ msgid "Output all trusted keys to standard output."
+#~ msgstr "Escreve todas as chaves de confiança na saída standard."
+
+#~ msgid "List trusted keys with fingerprints."
+#~ msgstr "Lista as chaves de confiança com impressões digitais."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#~ "can e.g. download key from keyservers directly into the trusted set of "
+#~ "keys. Note that there are <emphasis>no</emphasis> checks performed, so it "
+#~ "is easy to completely undermine the &apt-secure; infrastructure if used "
+#~ "without care."
+#~ msgstr ""
+#~ "Passa opções avançadas ao gpg. Com <command>adv --recv-key</command> você "
+#~ "pode por exemplo descarregar uma chave de servidores de chaves "
+#~ "directamente para o conjunto de chaves de confiança. Note que "
+#~ "<emphasis>não</emphasis> são feitas verificações, portanto é fácil "
+#~ "enfraquecer completamente a infraestrutura &apt-secure; se for usado sem "
+#~ "cuidado."
+
+#~ msgid ""
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid.  The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the &keyring-package; package in &keyring-distro;."
+#~ msgstr ""
+#~ "Actualiza o chaveiro local com o chaveiro do arquivo e remove do chaveiro "
+#~ "local as chaves de arquivo que já não são válidas. O chaveiro do arquivo "
+#~ "é submetido no pacote <literal>archive-keyring</literal> da sua "
+#~ "distribuição, por exemplo o pacote &keyring-package; em &keyring-distro;."
+
+#~ msgid ""
+#~ "Note that a distribution does not need to and in fact should not use this "
+#~ "command any longer and instead ship keyring files in the <filename>/etc/"
+#~ "apt/trusted.gpg.d/</filename> directory directly as this avoids a "
+#~ "dependency on <package>gnupg</package> and it is easier to manage keys by "
+#~ "simply adding and removing files for maintainers and users alike."
+#~ msgstr ""
+#~ "Note que uma distribuição não precisa e de facto nem deve usar mais este "
+#~ "comando e em vez disso empacotar ficheiros chaveiro no directório  "
+#~ "<filename>/etc/apt/trusted.gpg.d</filename> directamente pois isto evita "
+#~ "uma dependência no <package>gnupg</package> e é mais fácil gerir as "
+#~ "chaves ao simplesmente adicionar e remover ficheiros para responsáveis e "
+#~ "utilizadores de modo semelhante."
+
+#~ msgid ""
+#~ "Perform an update working similarly to the <command>update</command> "
+#~ "command above, but get the archive keyring from a URI instead and "
+#~ "validate it against a master key.  This requires an installed &wget; and "
+#~ "an APT build configured to have a server to fetch from and a master "
+#~ "keyring to validate.  APT in Debian does not support this command, "
+#~ "relying on <command>update</command> instead, but Ubuntu's APT does."
+#~ msgstr ""
+#~ "Executa uma actualização que funciona de modo semelhante ao comando "
+#~ "<command>update</command> em cima, mas obtém o chaveiro do arquivo a "
+#~ "partir de um URI e valida-o com uma chave mestra. Isto requer um &wget; "
+#~ "instalado e uma compilação de APT configurada para ter um servidor de "
+#~ "onde obter e um chaveiro mestre para validação. O APT em Debian não "
+#~ "suporta este comando, confiando em vez disso no <command>update</"
+#~ "command>, mas o APT do Ubuntu fá-lo."
+
+#~ msgid ""
+#~ "Note that options need to be defined before the commands described in the "
+#~ "previous section."
+#~ msgstr ""
+#~ "Note que as opções precisam ser definidas antes dos comandos descritos na "
+#~ "secção prévia."
+
+#~ msgid ""
+#~ "With this option it is possible to specify a particular keyring file the "
+#~ "command should operate on. The default is that a command is executed on "
+#~ "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#~ "<filename>trusted.gpg.d</filename> directory, though "
+#~ "<filename>trusted.gpg</filename> is the primary keyring which means that "
+#~ "e.g. new keys are added to this one."
+#~ msgstr ""
+#~ "Com esta opção é possível especificar um ficheiro de chaveiro específico "
+#~ "com o qual o comando deve operar. A predefinição é que um comando é "
+#~ "executado no ficheiro <filename>trusted.gpg</filename> assim como em "
+#~ "todas as partes do directório <filename>trusted.gpg.d</filename>, assim "
+#~ "<filename>trusted.gpg</filename> é o chaveiro principal o que significa "
+#~ "que, por exemplo, as novas chaves são adicionadas a este."
+
+#~ msgid "Deprecation"
+#~ msgstr "Descontinuação"
+
+#~ msgid ""
+#~ "Except for using <command>apt-key del</command> in maintainer scripts, "
+#~ "the use of <command>apt-key</command> is deprecated. This section shows "
+#~ "how to replace existing use of <command>apt-key</command>."
+#~ msgstr ""
+#~ "Excepto para usar <command>apt-key del</command> em scripts de "
+#~ "maintainer, o uso de <command>apt-key</command> está descontinuado. Esta "
+#~ "secção mostra como substituir o uso existente de <command>apt-key</"
+#~ "command>."
+
+#~ msgid ""
+#~ "If your existing use of <command>apt-key add</command> looks like this:"
+#~ msgstr ""
+#~ "Se o seu uso existente de <command>apt-key add</command> se parecer com "
+#~ "isto:"
+
+#~ msgid ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add "
+#~ "-</literal>"
+#~ msgstr ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add "
+#~ "-</literal>"
+
+#~ msgid ""
+#~ "Then you can directly replace this with (though note the recommendation "
+#~ "below):"
+#~ msgstr ""
+#~ "Então você pode substituir directamente isto por (contudo note a "
+#~ "recomendação em baixo):"
+
+#~ msgid ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
+#~ "trusted.gpg.d/myrepo.asc</literal>"
+#~ msgstr ""
+#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
+#~ "trusted.gpg.d/myrepo.asc</literal>"
+
+#~ msgid ""
+#~ "Make sure to use the \"<literal>asc</literal>\" extension for ASCII "
+#~ "armored keys and the \"<literal>gpg</literal>\" extension for the binary "
+#~ "OpenPGP format (also known as \"GPG key public ring\"). The binary "
+#~ "OpenPGP format works for all apt versions, while the ASCII armored format "
+#~ "works for apt version >= 1.4."
+#~ msgstr ""
+#~ "Certifique-se de usar a extensão \"<literal>asc</literal>\" para as "
+#~ "chaves blindadas ASCII e a extensão \"<literal>gpg</literal>\" para o "
+#~ "formato binário OpenPGP (também conhecido como \"GPG key public ring\"). "
+#~ "O formato binário OpenPGP funciona para todas as versões do apt, enquanto "
+#~ "o formato blindado ASCII funciona para apt versão >= 1.4."
+
+#~ msgid ""
+#~ "<emphasis>Recommended:</emphasis> Instead of placing keys into the "
+#~ "<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
+#~ "anywhere on your filesystem by using the <literal>Signed-By</literal> "
+#~ "option in your <literal>sources.list</literal> and pointing to the "
+#~ "filename of the key. See &sources-list; for details.  Since APT 2.4, "
+#~ "<filename>/etc/apt/keyrings</filename> is provided as the recommended "
+#~ "location for keys not managed by packages.  When using a deb822-style "
+#~ "sources.list, and with apt version >= 2.4, the <literal>Signed-By</"
+#~ "literal> option can also be used to include the full ASCII armored "
+#~ "keyring directly in the <literal>sources.list</literal> without an "
+#~ "additional file."
+#~ msgstr ""
+#~ "<emphasis>Recomendação:</emphasis> Em vez de colocar chaves no directório "
+#~ "<filename>/etc/apt/trusted.gpg.d</filename>, você pode coloca-las em "
+#~ "qualquer local no seu sistema de ficheiros ao usar a opção "
+#~ "<literal>Signed-By</literal> no seu <literal>sources.list</literal> e "
+#~ "apontando para o nome de ficheiro da chave. Veja &sources-list; para "
+#~ "detalhes. Desde o APT 2.4, é fornecido <filename>/etc/apt/keyrings</"
+#~ "filename> como a localização recomendada para chaves não geridas por "
+#~ "pacotes. Quando se usa sources.list ao estilo deb822, e com a versão de "
+#~ "apt >= 2.4, a opção <literal>Signed-By</literal> pode também ser usada "
+#~ "para incluir a chave blindada ASCII completa directamente no "
+#~ "<literal>sources.list</literal> sem um ficheiro adicional."
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
+#~ msgid ""
+#~ "<command>apt-key</command> is the program that manages the list of keys "
+#~ "used by APT to trust repositories. It can be used to add or remove keys "
+#~ "as well as list the trusted keys. Limiting which key(s) are able to sign "
+#~ "which archive is possible via the <option>Signed-By</option> in &sources-"
+#~ "list;."
+#~ msgstr ""
+#~ "O <command>apt-key</command> é o programa que gere a lista de chaves "
+#~ "usada pelo APT para confiar nos repositórios. Pode ser usado para "
+#~ "adicionar assim como para listar as chaves confiadas. Limitando quais "
+#~ "chave(s) são capazes de assinar qual arquivo é possível via "
+#~ "<option>Signed-By</option> em &sources-list;."
+
+#~ msgid ""
+#~ "In order to add a new key you need to first download it (you should make "
+#~ "sure you are using a trusted communication channel when retrieving it), "
+#~ "add it with <command>apt-key</command> and then run <command>apt-get "
+#~ "update</command> so that apt can download and verify the "
+#~ "<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+#~ "from the archives you have configured."
+#~ msgstr ""
+#~ "De modo a adicionar uma chave nova você precisa primeiro de descarrega-la "
+#~ "(você deve certificar-se que está a usar um canal de comunicação de "
+#~ "confiança quando a obtém), adiciona-la com <command>apt-key</command> e "
+#~ "depois correr <command>apt-get update</command> para que o apt possa "
+#~ "descarregar e verificar os ficheiros <filename>InRelease</filename> ou "
+#~ "<filename>Release.gpg</filename> dos arquivos que você configurou."
+
+#~ msgid "Describes the process of resolving build-dependencies in &apt-get;."
+#~ msgstr ""
+#~ "Descreve os processos de resolver dependências de compilação no &apt-get;."
+
 #~ msgid "Selects packages that are currently installed."
 #~ msgstr "Seleciona pacotes que estão presentemente instalados."
 
@@ -13778,20 +14238,20 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 
 #~ msgid ""
 #~ "<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
-#~ "URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:"
-#~ "port]/</literal>.  Per host proxies can also be specified by using the "
-#~ "form <literal>http::Proxy::&lt;host&gt;</literal> with the special "
-#~ "keyword <literal>DIRECT</literal> meaning to use no proxies. If no one of "
-#~ "the above settings is specified, <envar>http_proxy</envar> environment "
-#~ "variable will be used."
+#~ "URIs. It is in the standard form of <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>.  Per host proxies can also be specified "
+#~ "by using the form <literal>http::Proxy::&lt;host&gt;</literal> with the "
+#~ "special keyword <literal>DIRECT</literal> meaning to use no proxies. If "
+#~ "no one of the above settings is specified, <envar>http_proxy</envar> "
+#~ "environment variable will be used."
 #~ msgstr ""
 #~ "<literal>http::Proxy</literal> define o proxy http predefinido a usar "
-#~ "para URIs de HTTP. Está no formato standard de <literal>http://[[user][:"
-#~ "pass]@]host[:port]/</literal>. Também podem ser especificados proxies por "
-#~ "máquina ao usar o formato <literal>http::Proxy::&lt;host&gt;</literal> "
-#~ "com a palavra chave especial <literal>DIRECT</literal> que significa não "
-#~ "usar proxies. Se nenhuma das definições acima for especificada, será "
-#~ "usada a variável de ambiente <envar>http_proxy</envar>."
+#~ "para URIs de HTTP. Está no formato standard de <literal>http://[[user]"
+#~ "[:pass]@]host[:port]/</literal>. Também podem ser especificados proxies "
+#~ "por máquina ao usar o formato <literal>http::Proxy::&lt;host&gt;</"
+#~ "literal> com a palavra chave especial <literal>DIRECT</literal> que "
+#~ "significa não usar proxies. Se nenhuma das definições acima for "
+#~ "especificada, será usada a variável de ambiente <envar>http_proxy</envar>."
 
 #~ msgid ""
 #~ "The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
@@ -13813,39 +14273,40 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 #~ "info about trusted certificates.  <literal>&lt;host&gt;::CaInfo</literal> "
 #~ "is the corresponding per-host option.  <literal>Verify-Peer</literal> "
 #~ "boolean suboption determines whether or not the server's host certificate "
-#~ "should be verified against trusted certificates.  <literal>&lt;host&gt;::"
-#~ "Verify-Peer</literal> is the corresponding per-host option.  "
-#~ "<literal>Verify-Host</literal> boolean suboption determines whether or "
-#~ "not the server's hostname should be verified.  <literal>&lt;host&gt;::"
-#~ "Verify-Host</literal> is the corresponding per-host option.  "
-#~ "<literal>SslCert</literal> determines what certificate to use for client "
-#~ "authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
-#~ "corresponding per-host option.  <literal>SslKey</literal> determines what "
-#~ "private key to use for client authentication. <literal>&lt;host&gt;::"
-#~ "SslKey</literal> is the corresponding per-host option.  "
-#~ "<literal>SslForceVersion</literal> overrides default SSL version to use.  "
-#~ "It can contain either of the strings '<literal>TLSv1</literal>' or "
-#~ "'<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
+#~ "should be verified against trusted certificates.  "
+#~ "<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-"
+#~ "host option.  <literal>Verify-Host</literal> boolean suboption determines "
+#~ "whether or not the server's hostname should be verified.  "
+#~ "<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-"
+#~ "host option.  <literal>SslCert</literal> determines what certificate to "
+#~ "use for client authentication. <literal>&lt;host&gt;::SslCert</literal> "
+#~ "is the corresponding per-host option.  <literal>SslKey</literal> "
+#~ "determines what private key to use for client authentication. "
+#~ "<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+#~ "option.  <literal>SslForceVersion</literal> overrides default SSL version "
+#~ "to use.  It can contain either of the strings '<literal>TLSv1</literal>' "
+#~ "or '<literal>SSLv3</literal>'.  <literal>&lt;host&gt;::SslForceVersion</"
 #~ "literal> is the corresponding per-host option."
 #~ msgstr ""
 #~ "A sub-opção <literal>CaInfo</literal> especifica o lugar do ficheiro que "
-#~ "contém informação acerca de certificados de confiança. <literal>&lt;"
-#~ "host&gt;::CaInfo</literal> é a opção 'por máquina' correspondente. A sub-"
-#~ "opção booleana <literal>Verify-Peer</literal> determina se o certificado "
-#~ "da máquina anfitriã deve ou não ser verificado com certificados de "
-#~ "confiança. <literal>&lt;host&gt;::Verify-Peer</literal> é a opção 'por "
-#~ "máquina' correspondente. A sub-opção booleana <literal>Verify-Host</"
-#~ "literal> determina se o nome da máquina servidora deve ao não ser "
-#~ "verificado. <literal>&lt;host&gt;::Verify-Host</literal> é a opção 'por "
-#~ "máquina' correspondente. <literal>SslCert</literal> determina qual "
-#~ "certificado a usar para autenticação de clientes. <literal>&lt;host&gt;::"
-#~ "SslCert</literal> é a opção 'por máquina' correspondente. "
-#~ "<literal>SslKey</literal> determina qual a chave privada a usar para "
-#~ "autenticação de clientes. <literal>&lt;host&gt;::SslKey</literal> é a "
-#~ "opção 'por máquina' correspondente. <literal>SslForceVersion</literal> "
-#~ "sobrepõe a versão SSL predefinida a usar. Pode conter qualquer uma das "
-#~ "strings 'TLSv1' ou 'SSLv3'. <literal>&lt;host&gt;::SslForceVersion</"
-#~ "literal> é a opção 'por máquina' correspondente."
+#~ "contém informação acerca de certificados de confiança. "
+#~ "<literal>&lt;host&gt;::CaInfo</literal> é a opção 'por máquina' "
+#~ "correspondente. A sub-opção booleana <literal>Verify-Peer</literal> "
+#~ "determina se o certificado da máquina anfitriã deve ou não ser verificado "
+#~ "com certificados de confiança. <literal>&lt;host&gt;::Verify-Peer</"
+#~ "literal> é a opção 'por máquina' correspondente. A sub-opção booleana "
+#~ "<literal>Verify-Host</literal> determina se o nome da máquina servidora "
+#~ "deve ao não ser verificado. <literal>&lt;host&gt;::Verify-Host</literal> "
+#~ "é a opção 'por máquina' correspondente. <literal>SslCert</literal> "
+#~ "determina qual certificado a usar para autenticação de clientes. "
+#~ "<literal>&lt;host&gt;::SslCert</literal> é a opção 'por máquina' "
+#~ "correspondente. <literal>SslKey</literal> determina qual a chave privada "
+#~ "a usar para autenticação de clientes. <literal>&lt;host&gt;::SslKey</"
+#~ "literal> é a opção 'por máquina' correspondente. "
+#~ "<literal>SslForceVersion</literal> sobrepõe a versão SSL predefinida a "
+#~ "usar. Pode conter qualquer uma das strings 'TLSv1' ou 'SSLv3'. "
+#~ "<literal>&lt;host&gt;::SslForceVersion</literal> é a opção 'por máquina' "
+#~ "correspondente."
 
 #~ msgid ""
 #~ "The http scheme specifies an HTTP server for the archive. If an "
@@ -13859,8 +14320,9 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 #~ "variável de ambiente <envar>http_proxy</envar> estiver definida com o "
 #~ "formato http://server:port/, será usado o servidor proxy especificado em "
 #~ "<envar>http_proxy</envar>. Os utilizadores de proxies HTTP/1.1 "
-#~ "autenticados pode usar uma string do formato http://user:pass@server:"
-#~ "port/. Note que este não é um método de autenticação seguro."
+#~ "autenticados pode usar uma string do formato http://"
+#~ "user:pass@server:port/. Note que este não é um método de autenticação "
+#~ "seguro."
 
 #~ msgid "Archive Configuration"
 #~ msgstr "Configuração de Arquivo"
@@ -14172,21 +14634,21 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 
 #~ msgid ""
 #~ "No action; perform a simulation of events that would occur but do not "
-#~ "actually change the system.  Configuration Item: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "actually change the system.  Configuration Item: "
+#~ "<literal>APT::Get::Simulate</literal>."
 #~ msgstr ""
 #~ "Nenhuma acção; executa uma simulação dos eventos que irão ocorrer mas na "
-#~ "realidade não altera o sistema. Item de Configuração: <literal>APT::Get::"
-#~ "Simulate</literal>."
+#~ "realidade não altera o sistema. Item de Configuração: "
+#~ "<literal>APT::Get::Simulate</literal>."
 
 #~ msgid ""
 #~ "Simulated runs performed as a user will automatically deactivate locking "
-#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
-#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
-#~ "notice will also be displayed indicating that this is only a simulation. "
-#~ "Runs performed as root do not trigger either NoLocking or the notice - "
-#~ "superusers should know what they are doing without further warnings from "
-#~ "<literal>apt-get</literal>."
+#~ "(<literal>Debug::NoLocking</literal>), and if the option "
+#~ "<literal>APT::Get::Show-User-Simulation-Note</literal> is set (as it is "
+#~ "by default) a notice will also be displayed indicating that this is only "
+#~ "a simulation. Runs performed as root do not trigger either NoLocking or "
+#~ "the notice - superusers should know what they are doing without further "
+#~ "warnings from <literal>apt-get</literal>."
 #~ msgstr ""
 #~ "As simulações executadas como um utilizador irão desactivar "
 #~ "automaticamente o bloqueio (<literal>Debug::NoLocking</literal>), e se a "
@@ -14327,18 +14789,20 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
 #~ "it encounters unauthenticated archives to give a slightly longer grace "
 #~ "period on this backward compatibility effecting change. This exception "
 #~ "will be removed in future releases and you can opt-out of this grace "
-#~ "period by setting the configuration option <option>Binary::apt-get::"
-#~ "Acquire::AllowInsecureRepositories</option> to <literal>false</literal> "
-#~ "or <option>--no-allow-insecure-repositories</option> on the command line."
+#~ "period by setting the configuration option <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> to <literal>false</"
+#~ "literal> or <option>--no-allow-insecure-repositories</option> on the "
+#~ "command line."
 #~ msgstr ""
 #~ "Como uma excepção temporária o &apt-get; (não o &apt;!) dispara avisos "
 #~ "apenas se encontrar arquivos não autenticados para dar um período de "
 #~ "graça ligeiramente mais longo nesta alteração que afecta a "
 #~ "compatibilidade com versões anteriores. Esta excepção será removida em "
 #~ "lançamentos futuros e você pode optar por não usar este período de graça "
-#~ "ao definir a opção de configuração <option>Binary::apt-get::Acquire::"
-#~ "AllowInsecureRepositories</option> para <literal>false</literal> ou "
-#~ "<option>--no-allow-insecure-repositories</option> na linha de comandos."
+#~ "ao definir a opção de configuração <option>Binary::apt-"
+#~ "get::Acquire::AllowInsecureRepositories</option> para <literal>false</"
+#~ "literal> ou <option>--no-allow-insecure-repositories</option> na linha de "
+#~ "comandos."
 
 #~ msgid ""
 #~ "In the future APT will refuse to work with unauthenticated repositories "
diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po
index e203348..7b12b6d 100644
--- a/doc/po/pt_BR.po
+++ b/doc/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-02-08 17:09+0100\n"
+"POT-Creation-Date: 2025-01-28 18:52+0000\n"
 "PO-Revision-Date: 2004-09-20 17:02+0000\n"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
@@ -47,7 +47,7 @@ msgid ""
 "<!-- Boiler plate Bug reporting section -->\n"
 "<!ENTITY manbugs \"\n"
 " <refsect1><title>Bugs</title>\n"
-"   <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+"   <para><ulink url='https://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
 "   If you wish to report a bug in APT, please see\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
 "   &reportbug; command.\n"
@@ -58,7 +58,7 @@ msgstr ""
 "\n"
 " <RefSect1><Title>Bugs</>\n"
 "   <para>\n"
-"   Consulte a <ulink url='http://bugs.debian.org/apt'>página de bugs do APT</>.\n"
+"   Consulte a <ulink url='https://bugs.debian.org/apt'>página de bugs do APT</>.\n"
 "   Caso você queira relatar um bug no APT, por favor consulte o arquivo\n"
 "   <filename>/usr/share/doc/debian/bug-reporting.txt</> ou o comando &reportbug;.\n"
 " </RefSect1>\n"
@@ -109,6 +109,18 @@ msgid ""
 "     </varlistentry>\n"
 msgstr ""
 
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--audit</option></term>\n"
+"      <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
+msgstr ""
+
 #. type: Plain text
 #: apt.ent
 #, no-wrap
@@ -140,6 +152,21 @@ msgid ""
 "     </para>\n"
 "     </listitem>\n"
 "     </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"     <varlistentry>\n"
+"      <term><option>--no-color</option></term>\n"
+"      <term><option>--color</option></term>\n"
+"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n"
+"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n"
+"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n"
+"     </para>\n"
+"     </listitem>\n"
+"     </varlistentry>\n"
 "\">\n"
 msgstr ""
 
@@ -368,8 +395,9 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
-"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+"<!-- TRANSLATOR: used as in -o=config_string e.g. "
+"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
 msgstr ""
 
 #. type: Plain text
@@ -382,8 +410,8 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
-"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. "
+"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
 "\"target_release\">"
 msgstr ""
 
@@ -425,8 +453,8 @@ msgstr ""
 #. type: Plain text
 #: apt.ent
 msgid ""
-"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
-"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
 msgstr ""
 
 #. type: Plain text
@@ -474,26 +502,18 @@ msgid ""
 "generate section --> <!ENTITY synopsis-section \"section\">"
 msgstr ""
 
-#. type: Plain text
-#: apt.ent
-msgid ""
-"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
-"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
-msgstr ""
-
 #. type: Content of: <refentry><refmeta><manvolnum>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml
 msgid "8"
 msgstr ""
 
 #. type: Content of: <refentry><refmeta><refmiscinfo>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 msgid "APT"
 msgstr ""
 
@@ -503,12 +523,11 @@ msgid "command-line interface"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml
-#: apt-transport-mirror.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml
 #, fuzzy
 msgid "Description"
 msgstr "Descrição"
@@ -556,6 +575,13 @@ msgid ""
 "package isn't performed."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml apt-get.8.xml
+msgid ""
+"When a package is supplied as an argument, the package will be installed "
+"prior to the upgrade action."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml
 msgid ""
@@ -565,7 +591,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
-#: apt.8.xml apt-key.8.xml sources.list.5.xml
+#: apt.8.xml sources.list.5.xml
 msgid ","
 msgstr ""
 
@@ -665,10 +691,10 @@ msgstr ""
 msgid ""
 "<option>list</option> is somewhat similar to <command>dpkg-query --list</"
 "command> in that it can display a list of packages satisfying certain "
-"criteria.  It supports &glob; patterns for matching package names as well as "
-"options to list installed (<option>--installed</option>), upgradeable "
-"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
-"option>) versions."
+"criteria.  It supports &glob; patterns for matching package names, &apt-"
+"patterns;, as well as options to list installed (<option>--installed</"
+"option>), upgradeable (<option>--upgradeable</option>)  or all available "
+"(<option>--all-versions</option>) versions."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -683,6 +709,18 @@ msgid ""
 "your preferred text editor while also providing basic sanity checks."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "(&apt-cache;)"
+msgid "(summarised in &apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(summarised in &apt-get;)"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.8.xml
 msgid "Script Usage and Differences from Other APT Tools"
@@ -709,11 +747,11 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
-#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
-#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
-#: apt-sortpkgs.1.xml apt-ftparchive.1.xml apt_auth.conf.5.xml
-#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml
+#: apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml apt_preferences.5.xml
+#: sources.list.5.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml apt_auth.conf.5.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-patterns.7.xml
 #, fuzzy
 msgid "See Also"
 msgstr "Consulte também"
@@ -721,8 +759,9 @@ msgstr "Consulte também"
 #. type: Content of: <refentry><refsect1><para>
 #: apt.8.xml
 msgid ""
-"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
-"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, &apt-"
+"patterns;, The APT User's guide in &guidesdir;, &apt-preferences;, the APT "
+"Howto."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -1058,6 +1097,20 @@ msgid ""
 "is set to off."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>distclean</literal> removes all files under <filename>&statedir;/"
+"lists</filename> except Release, Release.gpg, and InRelease.  It can be used "
+"for example, when finalizing images distributed to users.  The release files "
+"are kept for security reasons, to prevent various types of attacks."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
@@ -1136,8 +1189,8 @@ msgid ""
 "structure can be so corrupt as to require manual intervention (which usually "
 "means using <command>dpkg --remove</command> to eliminate some of the "
 "offending packages). Use of this option together with <option>-m</option> "
-"may produce an error in some situations.  Configuration Item: <literal>APT::"
-"Get::Fix-Broken</literal>."
+"may produce an error in some situations.  Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1209,8 +1262,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
-"Automatic \"no\" to all prompts.  Configuration Item: <literal>APT::Get::"
-"Assume-No</literal>."
+"Automatic \"no\" to all prompts.  Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1227,15 +1280,30 @@ msgid ""
 "<literal>APT::Get::Show-Versions</literal>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Display package lists without arranging them in columns. By default, package "
+"lists are printed in the style of the \"ls\" command.  Configuration Item: "
+"<literal>APT::Get::List-Columns</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Add the given value to the <literal>Comment:</literal> field in history.log "
+"Configuration Item: <literal>APT::History::Comment</literal>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-get.8.xml
 msgid ""
 "This option controls the architecture packages are built for by <command>apt-"
 "get source --compile</command> and how cross-builddependencies are "
 "satisfied. By default is it not set which means that the host architecture "
-"is the same as the build architecture (which is defined by <literal>APT::"
-"Architecture</literal>).  Configuration Item: <literal>APT::Get::Host-"
-"Architecture</literal>."
+"is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>).  Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1345,8 +1413,8 @@ msgid ""
 "name on the remote site! This also works with the <literal>source</literal> "
 "and <literal>update</literal> commands. When used with the <literal>update</"
 "literal> command the MD5 and size are not included, and it is up to the user "
-"to decompress any compressed files.  Configuration Item: <literal>APT::Get::"
-"Print-URIs</literal>."
+"to decompress any compressed files.  Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1372,8 +1440,18 @@ msgid ""
 "turn it off. When it is on, <command>apt-get</command> will automatically "
 "manage the contents of <filename>&statedir;/lists</filename> to ensure that "
 "obsolete files are erased.  The only reason to turn it off is if you "
-"frequently change your sources list.  Configuration Item: <literal>APT::Get::"
-"List-Cleanup</literal>."
+"frequently change your sources list.  Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the snapshot chosen for archives with "
+"<literal>Snapshot: enable</literal> in the source entry. For example, "
+"<option>-S 20220102T030405Z</option> selects a snapshot from January 2nd, "
+"2022 at 03:04:05 UTC.  Configuration Item: <literal>APT::Snapshot</literal>; "
+"see also the &sources-list; manual page."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1530,8 +1608,29 @@ msgstr ""
 msgid "Fail the update command if any error occured, even a transient one."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Run the <option>update</option> command before the specified command. This "
+"is supported for commands installing, removing, or upgrading packages such "
+"as <option>install</option>, <option>remove</option>, <option>safe-upgrade</"
+"option>, <option>full-upgrade</option>.  This can be useful to ensure a "
+"command always installs the latest versions, or, in combination with the "
+"<option>--snapshot</option> option to make sure the snapshot is present when "
+"install is being run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Caveat: Due to technical limitations, locks are acquired individually for "
+"each phase, hence an install may fail to acquire locks after successfully "
+"executing the update. Until this is resolved, this is merely syntactic sugar "
+"for <literal>apt update &amp;&amp; apt install</literal>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml
 #: apt_preferences.5.xml apt_auth.conf.5.xml
 msgid "Files"
 msgstr ""
@@ -1539,9 +1638,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt-get.8.xml
 msgid ""
-"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
-"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
-"APT Howto."
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-"
+"patterns;, &apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, "
+"&apt-preferences;, the APT Howto."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -1804,13 +1903,12 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "<literal>dotty</literal> takes a list of packages on the command line and "
-"generates output suitable for use by dotty from the <ulink url=\"http://www."
-"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
-"will be a set of nodes and edges representing the relationships between the "
-"packages. By default the given packages will trace out all dependent "
-"packages; this can produce a very large graph.  To limit the output to only "
-"the packages listed on the command line, set the <literal>APT::Cache::"
-"GivenOnly</literal> option."
+"generates output suitable for use by dotty from the <ulink url=\"https://"
+"graphviz.org/\">GraphViz</ulink> package. The result will be a set of nodes "
+"and edges representing the relationships between the packages. By default "
+"the given packages will trace out all dependent packages; this can produce a "
+"very large graph.  To limit the output to only the packages listed on the "
+"command line, set the <literal>APT::Cache::GivenOnly</literal> option."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1831,8 +1929,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "The same as <literal>dotty</literal>, only for xvcg from the <ulink "
-"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
-"ulink>."
+"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/"
+"gsvcg1.html\">VCG tool</ulink>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -1857,16 +1955,16 @@ msgid ""
 "archive management tool, <literal>madison</literal>.  It displays available "
 "versions of a package in a tabular format.  Unlike the original "
 "<literal>madison</literal>, it can only display information for the "
-"architecture for which APT has retrieved package lists (<literal>APT::"
-"Architecture</literal>)."
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-cache.8.xml
 msgid ""
 "Select the file to store the package cache. The package cache is the primary "
-"cache used by all operations.  Configuration Item: <literal>Dir::Cache::"
-"pkgcache</literal>."
+"cache used by all operations.  Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1901,9 +1999,9 @@ msgstr ""
 msgid ""
 "Per default the <command>depends</command> and <command>rdepends</command> "
 "print all dependencies. This can be tweaked with these flags which will omit "
-"the specified dependency type.  Configuration Item: <literal>APT::Cache::"
-"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
-"Cache::ShowRecommends</literal>."
+"the specified dependency type.  Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -1954,8 +2052,8 @@ msgstr ""
 #: apt-cache.8.xml
 msgid ""
 "Make <literal>pkgnames</literal> print all names, including virtual packages "
-"and missing dependencies.  Configuration Item: <literal>APT::Cache::"
-"AllNames</literal>."
+"and missing dependencies.  Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2003,8 +2101,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
-msgid "&apt-conf;, &sources-list;, &apt-get;"
-msgstr ""
+msgid "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;, &apt-patterns;"
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-cache.8.xml
@@ -2013,251 +2111,6 @@ msgid ""
 "on error."
 msgstr ""
 
-#. type: Content of: <refentry><refnamediv><refpurpose>
-#: apt-key.8.xml
-msgid "Deprecated APT key management utility"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<command>apt-key</command> is used to manage the list of keys used by apt to "
-"authenticate packages.  Packages which have been authenticated using these "
-"keys will be considered trusted."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Use of <command>apt-key</command> is deprecated, except for the use of "
-"<command>apt-key del</command> in maintainer scripts to remove existing keys "
-"from the main keyring.  If such usage of <command>apt-key</command> is "
-"desired the additional installation of the GNU Privacy Guard suite (packaged "
-"in <package>gnupg</package>) is required."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "apt-key(8) will last be available in Debian 11 and Ubuntu 22.04."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Supported keyring files"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
-"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
-"the keybox database format introduced in newer &gpg; versions as default for "
-"keyring files. Binary keyring files intended to be used with any apt version "
-"should therefore always be created with <command>gpg --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Alternatively, if all systems which should be using the created keyring have "
-"at least apt version >= 1.4 installed, you can use the ASCII armored format "
-"with the \"<literal>asc</literal>\" extension instead which can be created "
-"with <command>gpg --armor --export</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-msgid "Commands"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Add a new key to the list of trusted keys.  The key is read from the "
-"filename given with the parameter &synopsis-param-filename; or if the "
-"filename is <literal>-</literal> from standard input."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"It is critical that keys added manually via <command>apt-key</command> are "
-"verified to belong to the owner of the repositories they claim to be for "
-"otherwise the &apt-secure; infrastructure is completely undermined."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
-"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
-"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
-"\"<literal>asc</literal>\" as file extension."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
-#: apt-key.8.xml
-msgid "(mostly deprecated)"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Remove a key from the list of trusted keys."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output the key &synopsis-param-keyid; to standard output."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "Output all trusted keys to standard output."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid "List trusted keys with fingerprints."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
-"e.g. download key from keyservers directly into the trusted set of keys. "
-"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
-"to completely undermine the &apt-secure; infrastructure if used without care."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Update the local keyring with the archive keyring and remove from the local "
-"keyring the archive keys which are no longer valid.  The archive keyring is "
-"shipped in the <literal>archive-keyring</literal> package of your "
-"distribution, e.g. the &keyring-package; package in &keyring-distro;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Note that a distribution does not need to and in fact should not use this "
-"command any longer and instead ship keyring files in the <filename>/etc/apt/"
-"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
-"<package>gnupg</package> and it is easier to manage keys by simply adding "
-"and removing files for maintainers and users alike."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"Perform an update working similarly to the <command>update</command> command "
-"above, but get the archive keyring from a URI instead and validate it "
-"against a master key.  This requires an installed &wget; and an APT build "
-"configured to have a server to fetch from and a master keyring to validate.  "
-"APT in Debian does not support this command, relying on <command>update</"
-"command> instead, but Ubuntu's APT does."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
-#: apt-transport-https.1.xml apt-transport-mirror.1.xml
-msgid "Options"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Note that options need to be defined before the commands described in the "
-"previous section."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt-key.8.xml
-msgid ""
-"With this option it is possible to specify a particular keyring file the "
-"command should operate on. The default is that a command is executed on the "
-"<filename>trusted.gpg</filename> file as well as on all parts in the "
-"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
-"filename> is the primary keyring which means that e.g. new keys are added to "
-"this one."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><title>
-#: apt-key.8.xml
-#, fuzzy
-msgid "Deprecation"
-msgstr "Descrição"
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Except for using <command>apt-key del</command> in maintainer scripts, the "
-"use of <command>apt-key</command> is deprecated. This section shows how to "
-"replace existing use of <command>apt-key</command>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "If your existing use of <command>apt-key add</command> looks like this:"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</"
-"literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Then you can directly replace this with (though note the recommendation "
-"below):"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/"
-"trusted.gpg.d/myrepo.asc</literal>"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored "
-"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP "
-"format (also known as \"GPG key public ring\"). The binary OpenPGP format "
-"works for all apt versions, while the ASCII armored format works for apt "
-"version >= 1.4."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid ""
-"<emphasis>Recommended:</emphasis> Instead of placing keys into the "
-"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them "
-"anywhere on your filesystem by using the <literal>Signed-By</literal> option "
-"in your <literal>sources.list</literal> and pointing to the filename of the "
-"key. See &sources-list; for details.  Since APT 2.4, <filename>/etc/apt/"
-"keyrings</filename> is provided as the recommended location for keys not "
-"managed by packages.  When using a deb822-style sources.list, and with apt "
-"version >= 2.4, the <literal>Signed-By</literal> option can also be used to "
-"include the full ASCII armored keyring directly in the <literal>sources."
-"list</literal> without an additional file."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-key.8.xml
-msgid "&apt-get;, &apt-secure;"
-msgstr "&apt-get;, &apt-secure;"
-
 #. type: Content of: <refentry><refnamediv><refpurpose>
 #: apt-mark.8.xml
 msgid "show, set and unset various settings for a package"
@@ -2269,8 +2122,8 @@ msgid ""
 "<command>apt-mark</command> can be used as a unified front-end to set "
 "various settings for a package, such as marking a package as being "
 "automatically/manually installed or changing <command>dpkg</command> "
-"selections such as hold, install, deinstall and purge which are respected e."
-"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
 "command>."
 msgstr ""
 
@@ -2334,6 +2187,12 @@ msgid ""
 "installed packages instead."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml
+#: apt-transport-https.1.xml apt-transport-mirror.1.xml
+msgid "Options"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-mark.8.xml
 msgid ""
@@ -2387,6 +2246,12 @@ msgid ""
 "called dpkg selections can be found in &dpkg;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+msgid "&apt-get;, &aptitude;, &apt-conf;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
 #. type: Content of: <refentry><refsect1><para>
 #: apt-mark.8.xml
 msgid ""
@@ -2421,6 +2286,56 @@ msgid ""
 "<literal>APT</literal> to refer to them all for simplicity only."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Keys should usually be included inside their corresponding "
+"<literal>.sources</literal> by embedding the ASCII-armored key in the "
+"<literal>Signed-By</literal> option.  To do so, replace the empty line with "
+"a dot, and then indent all lines by two spaces.  See &sources-list; for more "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> "
+"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed "
+"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/"
+"example-archive-keyring.asc</literal> option in a <literal>.sources</"
+"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-"
+"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> "
+"format. This may be useful for APT versions prior to 2.4, which do not "
+"support embedded keys. ASCII-armored keys must use an extension of "
+"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"To generate keys suitable for use in APT using GnuPG, you will need to use "
+"the <command>gpg --export-options export-minimal [--armor] --export</"
+"command> command.  Earlier solutions involving <command>--keyring file --"
+"import</command> no longer work with recent GnuPG versions as they use a new "
+"internal format (\"GPG keybox database\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so managing keys is only "
+"needed if third-party repositories are added.  The <command>extrepo</"
+"command> package can be used to manage several external repositories with "
+"ease."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Unsigned Repositories"
@@ -2579,40 +2494,6 @@ msgid ""
 "shipped in the repository (as e.g. indicated by the codename)."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><title>
-#: apt-secure.8.xml
-msgid "User Configuration"
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"<command>apt-key</command> is the program that manages the list of keys used "
-"by APT to trust repositories. It can be used to add or remove keys as well "
-"as list the trusted keys. Limiting which key(s) are able to sign which "
-"archive is possible via the <option>Signed-By</option> in &sources-list;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"Note that a default installation already contains all keys to securely "
-"acquire packages from the default repositories, so fiddling with "
-"<command>apt-key</command> is only needed if third-party repositories are "
-"added."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para>
-#: apt-secure.8.xml
-msgid ""
-"In order to add a new key you need to first download it (you should make "
-"sure you are using a trusted communication channel when retrieving it), add "
-"it with <command>apt-key</command> and then run <command>apt-get update</"
-"command> so that apt can download and verify the <filename>InRelease</"
-"filename> or <filename>Release.gpg</filename> files from the archives you "
-"have configured."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><title>
 #: apt-secure.8.xml
 msgid "Repository Configuration"
@@ -2637,8 +2518,8 @@ msgstr ""
 #: apt-secure.8.xml
 msgid ""
 "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
-"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
-"gpg Release</command>."
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -2673,19 +2554,19 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
-"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
-"&debsign;, &debsig-verify;, &gpg;"
+"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-"
+"verify;, &gpg;"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-secure.8.xml
 msgid ""
 "For more background information you might want to review the <ulink "
-"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
-"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
-"available in the harden-doc package) and the <ulink url=\"http://www."
-"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
-"ulink> by V. Alex Brennen."
+"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/"
+"ch07\">Debian Security Infrastructure</ulink> chapter of the Securing Debian "
+"Manual (also available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -2751,8 +2632,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "Do not try to auto-detect the CD-ROM path. Usually combined with the "
-"<option>--cdrom</option> option.  Configuration Item: <literal>Acquire::"
-"cdrom::AutoDetect</literal>."
+"<option>--cdrom</option> option.  Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2775,8 +2656,8 @@ msgstr ""
 #: apt-cdrom.8.xml
 msgid ""
 "No mounting; prevent <command>apt-cdrom</command> from mounting and "
-"unmounting the mount point.  Configuration Item: <literal>APT::CDROM::"
-"NoMount</literal>."
+"unmounting the mount point.  Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2852,8 +2733,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-config.8.xml
 msgid ""
-"This will set the shell environment variable $OPTS to the value of MyApp::"
-"options with a default of <option>-f</option>."
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -2955,9 +2836,9 @@ msgid ""
 "order which have either no or \"<literal>conf</literal>\" as filename "
 "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
 "and period (.) characters.  Otherwise APT will print a notice that it has "
-"ignored a file, unless that file matches a pattern in the <literal>Dir::"
-"Ignore-Files-Silently</literal> configuration list - in which case it will "
-"be silently ignored."
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
@@ -3145,6 +3026,55 @@ msgid ""
 "are registered via <command>dpkg --add-architecture</command>."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines colors and styles. The basic colors supported are "
+"<option>red</option>, <option>green</option>, <option>yellow</option>, "
+"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
+"<option>white</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The subscope <option>action</option> defines the colors for package lists in "
+"<option>install</option> and similar commands. The following options may be "
+"set: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, "
+"<option>APT::Color::Action::Install-Dependencies</option>, "
+"<option>APT::Color::Action::Downgrade</option>, "
+"<option>APT::Color::Action::Remove</option>; corresponding to their lists in "
+"the &apt; output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each color may reference one or more other color options by name, relative "
+"to <option>APT::Color</option>. Their escape sequences will be combined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+"        "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Colors may be turned on or off completely by setting <option>APT::Color</"
+"option> to <option>yes</option> or <option>no</option>, by utilizing "
+"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment "
+"variables, or using the <option>--color</option>, <option>--no-color</"
+"option> command-line options."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -3190,6 +3120,14 @@ msgid ""
 "testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Snapshot to use for all repositories configured with <literal>Snapshot: yes</"
+"literal>. See also &sources-list;, the <option>--snapshot</option> option "
+"that sets this value, and <option>Acquire::Snapshots::URI</option> below."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -3308,6 +3246,38 @@ msgid ""
 "documentation for more information about the options here."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Never autoremove packages that match the regular expression(s)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option tells apt autoremove that kernels are protected and defaults to "
+"true. In case kernels are not protected they are treated as any other "
+"package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Define the regular expression(s) for versioned kernel packages.  Based on "
+"these expressions a rule set is injected into apt similar to "
+"APT::NeverAutoRemove regular expressions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Keep a custom amount of kernels when autoremoving and defaults to 2, meaning "
+"two kernels are kept. Apt will always keep the running kernel and the latest "
+"one. If the latest kernel is the same as the running kernel, the second "
+"latest kernel is kept.  Because of this, any value lower than 2 will be "
+"ignored. If you want only the latest kernel, you should set APT::Protect-"
+"Kernels to false."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt.conf.5.xml
 msgid "The Acquire Group"
@@ -3457,61 +3427,6 @@ msgid ""
 "&apt-transport-https; manpages respectively."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.  "
-"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
-"literal>.  Per host proxies can also be specified by using the form "
-"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
-"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
-"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
-"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
-"literal> script in the configuration file. This entry specifies the commands "
-"to send to tell the proxy server what to connect to. Please see "
-"&configureindex; for an example of how to do this. The substitution "
-"variables representing the corresponding URI component are "
-"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, "
-"<literal>$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, "
-"<literal>$(SITE)</literal> and <literal>$(SITE_PORT)</literal>."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The option <literal>timeout</literal> sets the timeout timer used by the "
-"method; this value applies to the connection as well as the data timeout."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"Several settings are provided to control passive mode. Generally it is safe "
-"to leave passive mode on; it works in nearly every environment.  However, "
-"some situations require that passive mode be disabled and port mode FTP used "
-"instead. This can be done globally or for connections that go through a "
-"proxy or for a specific host (see the sample config file for examples)."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
-"envar> environment variable to an HTTP URL - see the discussion of the http "
-"method above for syntax. You cannot set this in the configuration file and "
-"it is not recommended to use FTP over HTTP due to its low efficiency."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid ""
-"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
-"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
-"false, which means these commands are only used if the control connection is "
-"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
-"that most FTP servers do not support RFC2428."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
 #: apt.conf.5.xml
 #, no-wrap
@@ -3652,9 +3567,9 @@ msgid ""
 "that these codes are not included twice in the list. If "
 "<literal>LC_MESSAGES</literal> is set to \"C\" only the "
 "<filename>Translation-en</filename> file (if available) will be used.  To "
-"force APT to use no Translation file use the setting <literal>Acquire::"
-"Languages=none</literal>. \"<literal>none</literal>\" is another special "
-"meaning code which will stop the search for a suitable "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
 "<filename>Translation</filename> file.  This tells APT to download these "
 "translations too, without actually using them unless the environment "
 "specifies the languages. So the following example configuration will result "
@@ -3743,21 +3658,44 @@ msgid ""
 "<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
 "value is taken. The value in the Release file can be overridden with "
 "<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
-"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
-"Origin::<replaceable>ORIGIN</replaceable></literal>.  The value should be a "
-"normal URI to a text file, except that package specific data is replaced "
-"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
-"1. if the package is from a component (e.g. <literal>main</literal>)  this "
-"is the first part otherwise it is omitted, 2. the first letter of source "
-"package name, except if the source package name starts with '<literal>lib</"
-"literal>' in which case it will be the first four letters. 3. The complete "
-"source package name. 4. the complete name again and 5. the source version.  "
-"The first (if present), second, third and fourth part are separated by a "
-"slash ('<literal>/</literal>')  and between the fourth and fifth part is an "
-"underscore ('<literal>_</literal>').  The special value '<literal>no</"
-"literal>' is available for this option indicating that this source can't be "
-"used to acquire changelog files from. Another source will be tried if "
-"available in this case."
+"replaceable></literal> or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a text file, "
+"except that package specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>)  this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package name. "
+"4. the complete name again and 5. the source version.  The first (if "
+"present), second, third and fourth part are separated by a slash ('<literal>/"
+"</literal>')  and between the fourth and fifth part is an underscore "
+"('<literal>_</literal>').  The special value '<literal>no</literal>' is "
+"available for this option indicating that this source can't be used to "
+"acquire changelog files from. Another source will be tried if available in "
+"this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Like changelogs, snapshots can only be acquired if an URI is known from "
+"where to get them.  Preferable the Release file indicates this in a "
+"'Snapshots' field. If this isn't available the Label/Origin field of the "
+"Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></"
+"literal> option exists and if so this value is taken. The value in the "
+"Release file can be overridden with "
+"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or "
+"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</"
+"replaceable></literal>.  The value should be a normal URI to a directory, "
+"except that the snapshot ID replaced with the placeholder "
+"<literal>@SNAPSHOTID@</literal>.  The special value '<literal>no</literal>' "
+"is available for this option indicating that this source cannot be used to "
+"acquire snapshots from. Another source will be tried if available in this "
+"case."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -3770,9 +3708,9 @@ msgstr ""
 msgid ""
 "Especially with the introduction of the <command>apt</command> binary it can "
 "be useful to set certain options only for a specific binary as even options "
-"which look like they would effect only a certain binary like <option>APT::"
-"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
-"<command>apt</command>."
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -3845,12 +3783,12 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: apt.conf.5.xml
 msgid ""
-"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
-"Bin::Methods</literal> specifies the location of the method handlers and "
-"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
-"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
-"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
-"literal> specify the location of the respective programs."
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> specifies the location of the method "
+"handlers and <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> specify the location of the respective programs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -3988,9 +3926,9 @@ msgid ""
 "literal>.  Special characters (equal signs, newlines, nonprintable "
 "characters, quotation marks, and percent signs in <literal>key</literal> and "
 "newlines, nonprintable characters, and percent signs in <literal>value</"
-"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
-"=value</literal> lines with the same key. The configuration section ends "
-"with a blank line."
+"literal>) are %-encoded. Lists are represented by multiple "
+"<literal>key::=value</literal> lines with the same key. The configuration "
+"section ends with a blank line."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4137,11 +4075,6 @@ msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Print information related to downloading packages using FTP."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid "Print information related to downloading packages using HTTP."
@@ -4166,11 +4099,6 @@ msgid ""
 "stored on CD-ROMs."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml
-msgid "Describes the process of resolving build-dependencies in &apt-get;."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
@@ -4238,8 +4166,8 @@ msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
 "install pass performed in, e.g., <literal>apt-get install</literal>, and not "
-"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
-"pkgProblemResolver</literal> for that."
+"to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4250,14 +4178,14 @@ msgid ""
 "may trigger additional actions; they are shown indented two additional "
 "spaces under the original entry.  The format for each line is "
 "<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
-"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
-"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
-"the current version of the package, <literal>d.e.f</literal> is the version "
-"considered for installation and <literal>x.y.z</literal> is a newer version, "
-"but not considered for installation (because of a low pin score). The later "
-"two can be omitted if there is none or if it is the same as the installed "
-"version.  <literal>section</literal> is the name of the section the package "
-"appears in."
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin score). "
+"The later two can be omitted if there is none or if it is the same as the "
+"installed version.  <literal>section</literal> is the name of the section "
+"the package appears in."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -4310,15 +4238,15 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Print information about the vendors read from <filename>/etc/apt/vendors."
-"list</filename>."
+"Print information about the vendors read from <filename>/etc/apt/"
+"vendors.list</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.conf.5.xml
 msgid ""
-"Display the external commands that are called by apt hooks.  This includes e."
-"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"Display the external commands that are called by apt hooks.  This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
 "<literal>APT::Update::{Pre,Post}-Invoke</literal>."
 msgstr ""
 
@@ -4753,6 +4681,27 @@ msgstr ""
 "Pin: version &good-perl;*\n"
 "Pin-Priority: 1001\n"
 
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Since 2.9.9, you can also pin by a source version:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Package: perl\n"
+#| "Pin: version &good-perl;*\n"
+#| "Pin-Priority: 1001\n"
+msgid ""
+"Package: perl\n"
+"Pin: source-version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
 #: apt_preferences.5.xml
 #, fuzzy
@@ -5050,9 +4999,9 @@ msgstr ""
 #: apt_preferences.5.xml
 msgid ""
 "The <literal>:any</literal> suffix makes sure to select binary packages from "
-"any architecture. Without that suffix, apt implicitly assumes the <literal>:"
-"native</literal> suffix which would only select packages from the native "
-"architecture."
+"any architecture. Without that suffix, apt implicitly assumes the "
+"<literal>:native</literal> suffix which would only select packages from the "
+"native architecture."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -5235,9 +5184,9 @@ msgstr ""
 msgid ""
 "The most recent available version of the <literal>perl</literal> package "
 "will be installed, so long as that version's version number begins with "
-"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-perl;"
-"* version of <literal>perl</literal> is available and the installed version "
-"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+"\"<literal>&good-perl;</literal>\".  If <emphasis>any</emphasis> &good-"
+"perl;* version of <literal>perl</literal> is available and the installed "
+"version is &bad-perl;*, then <literal>perl</literal> will be downgraded."
 msgstr ""
 "A versão mais recente disponível do pacote <literal>perl</literal> será "
 "instalado, contanto que esse número de versão da versão inicie com "
@@ -5538,23 +5487,23 @@ msgid ""
 "files retrieved from locations listed in the &sources-list; file are stored "
 "in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
 "named by the variable <literal>Dir::State::Lists</literal> in the "
-"<filename>apt.conf</filename> file.  For example, the file <filename>debian."
-"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
-"contains the <filename>Release</filename> file retrieved from the site "
-"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
-"architecture files from the <literal>contrib</literal> component of the "
-"<literal>unstable</literal> distribution."
+"<filename>apt.conf</filename> file.  For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contains the <filename>Release</filename> file "
+"retrieved from the site <literal>debian.lcs.mit.edu</literal> for "
+"<literal>binary-i386</literal> architecture files from the <literal>contrib</"
+"literal> component of the <literal>unstable</literal> distribution."
 msgstr ""
 "Todos os arquivos <filename>Packages</filename> e <filename>Release</"
 "filename> obtidos das localidades listadas no arquivo &sources-list; são "
 "mantidos no diretório <filename>/var/lib/apt/lists</filename> ou no arquivo "
 "indicado pela variável <literal>Dir::State::Lists</literal> no arquivo "
-"<filename>apt.conf</filename>. Por exemplo, o arquivo <filename>debian.lcs."
-"mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> contém "
-"o arquivo <filename>Release</filename> obtido do site <literal>debian.lcs."
-"mit.edu</literal> para a arquitetura <literal>binary-i386</literal>, "
-"arquivos do componente <literal>contrib</literal> da distribuição "
-"<literal>unstable</literal>."
+"<filename>apt.conf</filename>. Por exemplo, o arquivo "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contém o arquivo <filename>Release</filename> obtido "
+"do site <literal>debian.lcs.mit.edu</literal> para a arquitetura "
+"<literal>binary-i386</literal>, arquivos do componente <literal>contrib</"
+"literal> da distribuição <literal>unstable</literal>."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml
@@ -5891,6 +5840,16 @@ msgid ""
 "ignored."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/"
+"<replaceable>vendor</replaceable>.sources</filename>, where "
+"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --"
+"query Vendor | tr A-Z a-z</command>, in deb822-style format.  For example, "
+"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "One-Line-Style Format"
@@ -5926,6 +5885,12 @@ msgid ""
 "multi-architecture support."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This format is deprecated and may eventually be removed, but not before 2029."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "deb822-Style Format"
@@ -6087,9 +6052,10 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"As an example, the sources for your distribution could look like this in one-"
-"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
-"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+"As an example, the sources for your distribution could look like this in the "
+"deprecated one-line-style format: <placeholder type=\"literallayout\" "
+"id=\"0\"/> or like this in deb822 style format: <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
@@ -6135,11 +6101,12 @@ msgstr ""
 msgid ""
 "<option>Targets</option> (<option>target</option>) is a multivalue option "
 "defining which download targets apt will try to acquire from this source. If "
-"not specified, the default set is defined by the <option>Acquire::"
-"IndexTargets</option> configuration scope (targets are specified by their "
-"name in the <literal>Created-By</literal> field).  Additionally, targets can "
-"be enabled or disabled by using the <literal>Identifier</literal> field as "
-"an option with a boolean value instead of using this multivalue option."
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field).  "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -6242,18 +6209,17 @@ msgid ""
 "keyrings</filename> for keyrings managed by the system operator.  If no "
 "keyring files are specified the default is the <filename>trusted.gpg</"
 "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</"
-"filename> directory (see <command>apt-key fingerprint</command>). If no "
-"fingerprint is specified all keys in the keyrings are selected. A "
-"fingerprint will accept also all signatures by a subkey of this key, if this "
-"isn't desired an exclamation mark (<literal>!</literal>) can be appended to "
-"the fingerprint to disable this behaviour.  The option defaults to the value "
-"of the option with the same name if set in the previously acquired "
-"<filename>Release</filename> file of this repository (only fingerprints can "
-"be specified there through).  Otherwise all keys in the trusted keyrings are "
-"considered valid signers for this repository.  The option may also be set "
-"directly to an embedded GPG public key block. Special care is needed to "
-"encode the empty line with leading spaces and \".\": <placeholder "
-"type=\"literallayout\" id=\"0\"/>"
+"filename> directory.  If no fingerprint is specified all keys in the "
+"keyrings are selected. A fingerprint will accept also all signatures by a "
+"subkey of this key, if this isn't desired an exclamation mark (<literal>!</"
+"literal>) can be appended to the fingerprint to disable this behaviour.  The "
+"option defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file of this repository "
+"(only fingerprints can be specified there through).  Otherwise all keys in "
+"the trusted keyrings are considered valid signers for this repository.  The "
+"option may also be set directly to an embedded GPG public key block. Special "
+"care is needed to encode the empty line with leading spaces and \".\": "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -6269,8 +6235,9 @@ msgid ""
 "helps users identify mirrors which are no longer updated. However, some "
 "repositories such as historic archives are not updated any more by design, "
 "so this check can be disabled by setting this option to <literal>no</"
-"literal>.  Defaults to the value of configuration option <option>Acquire::"
-"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+"literal>.  Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
@@ -6321,6 +6288,35 @@ msgid ""
 "<filename>Release</filename> files will be disabled."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Snapshot</option> (<option>snapshot</option>)  allows selecting an "
+"earlier version of the archive from the snapshot service. Supported values "
+"are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>enable</literal> to allow selecting a snapshot with the <option>--"
+"snapshot</option> option, or"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid "a snapshot ID to select a specific snapshot."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"Snapshot IDs are usually timestamps in the form of "
+"<literal>YYYYMMDDTHHMMSSZ</literal>, such as <literal>20220102T030405Z</"
+"literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however "
+"support additional types of IDs, and APT does not perform any checks so far."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: sources.list.5.xml
 msgid "URI Specification"
@@ -6417,27 +6413,6 @@ msgid ""
 "source list."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the "
-"decline in favour of <literal>http</literal> and <literal>https</literal> "
-"and many archives either never offered or are retiring FTP access. If you "
-"still need this method many configuration options for it are available in "
-"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;."
-msgstr ""
-
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"Please note that an FTP proxy can be specified by using the "
-"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
-"HTTP proxy (HTTP proxy servers often understand FTP URLs)  using this "
-"environment variable and <emphasis>only</emphasis> this environment "
-"variable. Proxies using HTTP specified in the configuration file will be "
-"ignored."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
 #: sources.list.5.xml
 msgid ""
@@ -6447,15 +6422,6 @@ msgid ""
 "APT."
 msgstr ""
 
-#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
-#: sources.list.5.xml
-msgid ""
-"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
-"the files as a given user. Prior configuration of rhosts or RSA keys is "
-"recommended. The standard <command>find</command> and <command>dd</command> "
-"commands are used to perform the file transfers from the remote host."
-msgstr ""
-
 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
 #: sources.list.5.xml
 msgid "adding more recognizable URI types"
@@ -6594,14 +6560,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the &debian-stable-codename;/contrib area."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -6609,7 +6575,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: &debian-stable-codename;\n"
 "Components: contrib"
 msgstr ""
@@ -6617,16 +6583,16 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><para>
 #: sources.list.5.xml
 msgid ""
-"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"Uses HTTPS to access the archive at deb.debian.org, under the debian "
 "directory, and uses only the unstable/contrib area. If this line appears as "
 "well as the one in the previous example in <filename>sources.list</filename> "
-"a single FTP session will be used for both resource lines."
+"a single HTTPS session will be used for both resource lines."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
 #: sources.list.5.xml
 #, no-wrap
-msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid "deb https://deb.debian.org/debian unstable contrib"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -6634,7 +6600,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "Types: deb\n"
-"URIs: ftp://ftp.debian.org/debian\n"
+"URIs: https://deb.debian.org/debian\n"
 "Suites: unstable\n"
 "Components: contrib"
 msgstr ""
@@ -6743,8 +6709,8 @@ msgstr ""
 #: apt-extracttemplates.1.xml
 msgid ""
 "Temporary directory in which to write extracted <command>debconf</command> "
-"template files and config scripts.  Configuration Item: <literal>APT::"
-"ExtractTemplates::TempDir</literal>"
+"template files and config scripts.  Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -6777,8 +6743,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-sortpkgs.1.xml
 msgid ""
-"Use source index field ordering.  Configuration Item: <literal>APT::"
-"SortPkgs::Source</literal>."
+"Use source index field ordering.  Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
@@ -6875,10 +6841,10 @@ msgid ""
 "<filename>icons</filename> files as well as <filename>Release</filename>, "
 "<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
 "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).  "
-"Additional filename patterns can be added by listing them in <literal>APT::"
-"FTPArchive::Release::Patterns</literal>.  It then writes to stdout a "
-"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
-"SHA256 and SHA512 digest for each file."
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>.  It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -7066,8 +7032,8 @@ msgstr "a linha <literal>Label:</literal>"
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
-"variables are substitution variables and have the strings $(DIST), "
-"$(SECTION) and $(ARCH) replaced with their respective values."
+"variables are substitution variables and have the strings $(DIST), $"
+"(SECTION) and $(ARCH) replaced with their respective values."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -7092,15 +7058,15 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
-"$(SECTION)/binary-$(ARCH)/</filename>"
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$"
+"(SECTION)/binary-$(ARCH)/</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Sets the top of the source package directory tree. Defaults to "
-"<filename>$(DIST)/$(SECTION)/source/</filename>"
+"Sets the top of the source package directory tree. Defaults to <filename>$"
+"(DIST)/$(SECTION)/source/</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -7121,8 +7087,8 @@ msgstr ""
 #: apt-ftparchive.1.xml
 msgid ""
 "Sets the output Translation-en master file with the long descriptions if "
-"they should be not included in the Packages file. Defaults to "
-"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+"they should be not included in the Packages file. Defaults to <filename>$"
+"(DIST)/$(SECTION)/i18n/Translation-en</filename>"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
@@ -7449,8 +7415,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml
 msgid ""
-"Make the caching databases read only.  Configuration Item: <literal>APT::"
-"FTPArchive::ReadOnlyDB</literal>."
+"Make the caching databases read only.  Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
@@ -7777,16 +7743,17 @@ msgid ""
 "The environment variable <envar>http_proxy</envar> is supported for system "
 "wide configuration.  Proxies specific to APT can be configured via the "
 "option <literal>Acquire::http::Proxy</literal>.  Proxies which should be "
-"used only for certain hosts can be specified via <literal>Acquire::http::"
-"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained "
-"control can be achieved via proxy autodetection, detailed further below.  "
-"All these options use the URI format <literal><replaceable>scheme</"
-"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</"
-"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</"
-"replaceable>]/</literal>.  Supported URI schemes are <literal>socks5h</"
-"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and "
-"<literal>https</literal>.  Authentication details can be supplied via &apt-"
-"authconf; instead of including it in the URI directly."
+"used only for certain hosts can be specified via "
+"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. "
+"Even more fine-grained control can be achieved via proxy autodetection, "
+"detailed further below.  All these options use the URI format "
+"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</"
+"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</"
+"replaceable>[:<replaceable>port</replaceable>]/</literal>.  Supported URI "
+"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), "
+"<literal>http</literal> and <literal>https</literal>.  Authentication "
+"details can be supplied via &apt-authconf; instead of including it in the "
+"URI directly."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -7801,14 +7768,14 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"Furthermore, there are three settings provided for cache control with "
-"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> "
-"tells the proxy not to use its cached response under any circumstances.  "
+"Furthermore, there are three settings provided for cache control with HTTP/"
+"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells "
+"the proxy not to use its cached response under any circumstances.  "
 "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in "
-"seconds) of an index file in the cache of the proxy.  <literal>Acquire::"
-"http::No-Store</literal> specifies that the proxy should not store the "
-"requested archive files in its cache, which can be used to prevent the proxy "
-"from polluting its cache with (big) .deb files."
+"seconds) of an index file in the cache of the proxy.  "
+"<literal>Acquire::http::No-Store</literal> specifies that the proxy should "
+"not store the requested archive files in its cache, which can be used to "
+"prevent the proxy from polluting its cache with (big) .deb files."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7846,8 +7813,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-http.1.xml
 msgid ""
-"This option takes precedence over the legacy option name <literal>Acquire::"
-"http::ProxyAutoDetect</literal>."
+"This option takes precedence over the legacy option name "
+"<literal>Acquire::http::ProxyAutoDetect</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7877,12 +7844,12 @@ msgstr ""
 #: apt-transport-http.1.xml
 msgid ""
 "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
-"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
-"g. on high-latency connections. It specifies how many requests are sent in a "
-"pipeline.  APT tries to detect and work around misbehaving webservers and "
-"proxies at runtime, but if you know that yours does not conform to the "
-"HTTP/1.1 specification, pipelining can be disabled by setting the value to "
-"0. It is enabled by default with the value 10."
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline.  APT tries to detect and work around misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the HTTP/"
+"1.1 specification, pipelining can be disabled by setting the value to 0. It "
+"is enabled by default with the value 10."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
@@ -7968,9 +7935,9 @@ msgstr ""
 msgid ""
 "The HTTPS protocol is based on the HTTP protocol, so all options supported "
 "by &apt-transport-http; are also available via <literal>Acquire::https</"
-"literal> and will default to the same values specified for <literal>Acquire::"
-"http</literal>. This manpage will only document the options <emphasis>unique "
-"to https</emphasis>."
+"literal> and will default to the same values specified for "
+"<literal>Acquire::http</literal>. This manpage will only document the "
+"options <emphasis>unique to https</emphasis>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -7999,9 +7966,10 @@ msgstr ""
 #: apt-transport-https.1.xml
 msgid ""
 "A custom certificate revocation list (CRL) can be configured with the "
-"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::"
-"https::CRLFile::<replaceable>host</replaceable></literal>.  As with the "
-"previous option, a file in PEM format needs to be specified."
+"options <literal>Acquire::https::CRLFile</literal> and "
+"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></"
+"literal>.  As with the previous option, a file in PEM format needs to be "
+"specified."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
@@ -8047,11 +8015,11 @@ msgstr ""
 msgid ""
 "Besides supporting password-based authentication (see &apt-authconf;) HTTPS "
 "also supports authentication based on client certificates via "
-"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::"
-"SSLKey</literal>. These should be set respectively to the filename of the "
-"X.509 client certificate and the associated (unencrypted) private key, both "
-"in PEM format.  In practice the use of the host-specific variants of both "
-"options is highly recommended."
+"<literal>Acquire::https::SSLCert</literal> and "
+"<literal>Acquire::https::SSLKey</literal>. These should be set respectively "
+"to the filename of the X.509 client certificate and the associated "
+"(unencrypted) private key, both in PEM format.  In practice the use of the "
+"host-specific variants of both options is highly recommended."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><literallayout>
@@ -8253,9 +8221,9 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-transport-mirror.1.xml
 msgid ""
-"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist."
-"txt</filename> on your machine it can be used like this in &sources-list; "
-"(since apt 1.6):"
+"Assuming a file with this content is stored as <filename>/etc/apt/"
+"mirrorlist.txt</filename> on your machine it can be used like this in "
+"&sources-list; (since apt 1.6):"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><literallayout>
@@ -8656,6 +8624,16 @@ msgstr ""
 msgid "Selects packages that no longer exist in repositories."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?phasing</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid "Selects packages that will be kept back in upgrades due to phasing."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?upgradable</code>"
@@ -8834,6 +8812,17 @@ msgstr ""
 msgid "Selects versions where the Priority string equals the given name."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?security</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-patterns.7.xml
+msgid ""
+"Selects packages that are a security update or succeed a security update."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
 #: apt-patterns.7.xml
 msgid "Package relationship patterns"
@@ -8876,6 +8865,16 @@ msgstr ""
 msgid "<code>~DSuggests:PATTERN</code>"
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>?recommends(PATTERN)</code>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-patterns.7.xml
+msgid "<code>~DRecommends:PATTERN</code>"
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
 #: apt-patterns.7.xml
 msgid "<code>?conflicts(PATTERN)</code>"
@@ -8929,8 +8928,8 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-patterns.7.xml
 msgid ""
-"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ "
-"packages matching PATTERN."
+"Selects versions depending/pre-depending/suggesting/recommending/conflicting/"
+"etc on/with/ packages matching PATTERN."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@ -9052,10 +9051,10 @@ msgstr ""
 #: apt-patterns.7.xml
 msgid ""
 "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, "
-"as this can cause typos to go unnoticed: Consider <code>?and(...,"
-"~poptional)</code>: this requires the package to have <code>required</code> "
-"priority, but if you do not type the <code>~</code>, it would require the "
-"package name to contain <code>poptional</code>."
+"as this can cause typos to go unnoticed: Consider <code>?"
+"and(...,~poptional)</code>: this requires the package to have "
+"<code>required</code> priority, but if you do not type the <code>~</code>, "
+"it would require the package name to contain <code>poptional</code>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
@@ -9254,7 +9253,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n"
 "Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Reading Package Lists... Done\n"
 "Building Dependency Tree... Done\n"
@@ -9378,8 +9377,7 @@ msgid ""
 "\n"
 " For example:\n"
 "      file:/mnt/debian,\n"
-"      ftp://ftp.debian.org/debian,\n"
-"      http://ftp.de.debian.org/debian,\n"
+"      http://deb.debian.org/debian,\n"
 "\n"
 "\n"
 " URL [http://llug.sep.bnl.gov/debian]:\n"
@@ -9399,7 +9397,7 @@ msgstr ""
 msgid ""
 " Please give the distribution tag to get or a path to the\n"
 " package file ending in a /. The distribution\n"
-" tags are typically something like: stable unstable testing non-US\n"
+" tags are typically something like: stable unstable testing\n"
 "\n"
 " Distribution [stable]:\n"
 msgstr ""
@@ -9409,11 +9407,7 @@ msgstr ""
 msgid ""
 "The distribution refers to the Debian version in the archive, "
 "<emphasis>stable</emphasis> refers to the latest released version and "
-"<emphasis>unstable</emphasis> refers to the developmental version. "
-"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
-"packages that contain encryption technology or other things that cannot be "
-"exported from the United States. Importing these packages into the US is "
-"legal however."
+"<emphasis>unstable</emphasis> refers to the developmental version."
 msgstr ""
 
 #. type: Content of: <book><chapter><screen>
@@ -9804,10 +9798,10 @@ msgstr ""
 #, no-wrap
 msgid ""
 "# apt-get update\n"
-"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:1 http://ftp.de.debian.org/debian/ stable/main Packages\n"
 "Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
 "Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
-"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages\n"
 "Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
 "11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
 msgstr ""
@@ -10188,6 +10182,13 @@ msgstr ""
 msgid "Which will use the already fetched archives on the disc."
 msgstr ""
 
+#, fuzzy
+#~ msgid "Deprecation"
+#~ msgstr "Descrição"
+
+#~ msgid "&apt-get;, &apt-secure;"
+#~ msgstr "&apt-get;, &apt-secure;"
+
 #, fuzzy
 #~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
 #~ msgstr "a linha <literal>Package:</literal>"
@@ -10216,14 +10217,14 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "See E<lt>http://bugs.debian.org/aptE<gt>.  If you wish to report a bug in "
-#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "See E<lt>https://bugs.debian.org/aptE<gt>.  If you wish to report a bug "
+#~ "in B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
 #~ "B<reportbug>(1)  command."
 #~ msgstr ""
 #~ "\n"
 #~ " <RefSect1><Title>Bugs</>\n"
 #~ "   <para>\n"
-#~ "   Consulte a <ulink url='http://bugs.debian.org/apt'>página de bugs do "
+#~ "   Consulte a <ulink url='https://bugs.debian.org/apt'>página de bugs do "
 #~ "APT</>.\n"
 #~ "   Caso você queira relatar um bug no APT, por favor consulte o arquivo\n"
 #~ "   <filename>/usr/share/doc/debian/bug-reporting.txt</> ou o comando "
@@ -10256,10 +10257,6 @@ msgstr ""
 #~ "<programlisting>\n"
 #~ "apt-get install <replaceable>pacote</replaceable>/testing\n"
 
-#, fuzzy
-#~ msgid "&apt-get;,&aptitude;,&apt-conf;"
-#~ msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
-
 #, fuzzy
 #~ msgid "&file-preferences;"
 #~ msgstr "apt_preferences"
diff --git a/doc/po4a.conf b/doc/po4a.conf
index 0798eac..3cf4d5e 100644
--- a/doc/po4a.conf
+++ b/doc/po4a.conf
@@ -15,7 +15,6 @@
 [type: manpage] apt.8.xml $lang:$lang/apt.$lang.8.xml add_$lang:xml.add
 [type: manpage] apt-get.8.xml $lang:$lang/apt-get.$lang.8.xml add_$lang:xml.add
 [type: manpage] apt-cache.8.xml $lang:$lang/apt-cache.$lang.8.xml add_$lang:xml.add
-[type: manpage] apt-key.8.xml $lang:$lang/apt-key.$lang.8.xml add_$lang:xml.add
 [type: manpage] apt-mark.8.xml $lang:$lang/apt-mark.$lang.8.xml add_$lang:xml.add
 [type: manpage] apt-secure.8.xml $lang:$lang/apt-secure.$lang.8.xml add_$lang:xml.add
 [type: manpage] apt-cdrom.8.xml $lang:$lang/apt-cdrom.$lang.8.xml add_$lang:xml.add
diff --git a/doc/progress-reporting.md b/doc/progress-reporting.md
index c4963af..f2d3531 100644
--- a/doc/progress-reporting.md
+++ b/doc/progress-reporting.md
@@ -63,7 +63,7 @@ Example:
 
 dlstatus
 --------
-	dlstatus:AlreadDownloaded:TotalPercentage:action-description
+	dlstatus:AlreadyDownloaded:TotalPercentage:action-description
 
 * AlreadyDownloaded = the number of already downloaded packages
 * TotalPercentage = the total progress between [0..100]
diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml
index 478694c..6153adf 100644
--- a/doc/sources.list.5.xml
+++ b/doc/sources.list.5.xml
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2023-01-29T00:00:00Z</date>
+   <date>2025-01-28T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -54,6 +54,16 @@
        Otherwise APT will print a notice that it has ignored a file, unless that
        file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal>
        configuration list - in which case it will be silently ignored.</para>
+     <para>
+       The suggested filename for new systems is
+       <filename>/etc/apt/sources.list.d/<replaceable>vendor</replaceable>.sources</filename>,
+       where <replaceable>vendor</replaceable> is the result of
+       <command>dpkg-vendor --query Vendor | tr A-Z a-z</command>,
+       in deb822-style format.
+       For example,
+       Ubuntu uses
+       <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>.
+     </para>
  </refsect1>
 
  <refsect1><title>One-Line-Style Format</title>
@@ -83,6 +93,10 @@
        expect to encounter options as they were uncommon before the introduction of
        multi-architecture support.
     </para>
+    <para>
+        This format is deprecated and may eventually be removed, but not before
+        2029.
+    </para>
  </refsect1>
 
  <refsect1><title>deb822-Style Format</title>
@@ -187,7 +201,7 @@ deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [.
    network, followed by distant Internet hosts, for example).</para>
 
    <para>As an example, the sources for your distribution could look like this
-      in one-line-style format:
+      in the deprecated one-line-style format:
       <literallayout>&sourceslist-list-format;</literallayout> or like this in
       deb822 style format:
       <literallayout>&sourceslist-sources-format;</literallayout></para>
@@ -304,8 +318,8 @@ deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [.
 		and <filename>/etc/apt/keyrings</filename> for keyrings managed by the system operator.
 		If no keyring files are specified
 		the default is the <filename>trusted.gpg</filename> keyring and
-		all keyrings in the <filename>trusted.gpg.d/</filename> directory
-		(see <command>apt-key fingerprint</command>). If no fingerprint is
+		all keyrings in the <filename>trusted.gpg.d/</filename> directory.
+		If no fingerprint is
 		specified all keys in the keyrings are selected. A fingerprint will
 		accept also all signatures by a subkey of this key, if this isn't
 		desired an exclamation mark (<literal>!</literal>) can be appended to
@@ -392,6 +406,23 @@ Signed-By:
 		or, if that fails, a <filename>Release</filename> file and its associated <filename>Release.gpg</filename> file. By setting this option,
 		the specified path will be tried instead of the InRelease file,
 		and the fallback to <filename>Release</filename> files will be disabled.
+    </para></listitem>
+
+    <listitem><para><option>Snapshot</option> (<option>snapshot</option>)
+        allows selecting an earlier version of the archive from the snapshot service. Supported
+    values are: </para>
+        <itemizedlist>
+        <listitem>
+            <para><literal>enable</literal> to allow selecting a snapshot with the <option>--snapshot</option> option, or</para>
+        </listitem>
+        <listitem>
+            <para>a snapshot ID to select a specific snapshot.</para>
+        </listitem>
+    </itemizedlist>
+        <para>
+            Snapshot IDs are usually timestamps in the form of <literal>YYYYMMDDTHHMMSSZ</literal>, such as
+            <literal>20220102T030405Z</literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may
+            however support additional types of IDs, and APT does not perform any checks so far.
 	  </para></listitem>
 
        </itemizedlist>
@@ -460,36 +491,12 @@ Signed-By:
     source list.</para></listitem>
     </varlistentry>
 
-    <varlistentry><term><command>ftp</command></term>
-    <listitem><para>
-    The ftp scheme specifies an FTP server for an archive. Use of FTP is on the
-    decline in favour of <literal>http</literal> and <literal>https</literal>
-    and many archives either never offered or are retiring FTP access. If you
-    still need this method many configuration options for it are available in
-    the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;.</para>
-    <para>Please note that an FTP proxy can be specified
-    by using the <envar>ftp_proxy</envar> environment variable. It is possible
-    to specify an HTTP proxy (HTTP proxy servers often understand FTP URLs)
-    using this environment variable and <emphasis>only</emphasis> this
-    environment variable. Proxies using HTTP specified in
-    the configuration file will be ignored.</para></listitem>
-    </varlistentry>
-
     <varlistentry><term><command>copy</command></term>
     <listitem><para>
     The copy scheme is identical to the file scheme except that packages are
     copied into the cache directory instead of used directly at their location.
     This is useful for people using removable media to copy files around with APT.</para></listitem>
     </varlistentry>
-    
-    <varlistentry><term><command>rsh</command></term><term><command>ssh</command></term>
-    <listitem><para>
-    The rsh/ssh method invokes RSH/SSH to connect to a remote host and
-    access the files as a given user. Prior configuration of rhosts or RSA keys
-    is recommended. The standard <command>find</command> and <command>dd</command>
-    commands are used to perform the file transfers from the remote host.
-    </para></listitem>
-    </varlistentry>
 
     <varlistentry><term>adding more recognizable URI types</term>
     <listitem><para>
@@ -550,21 +557,21 @@ URIs: http://archive.debian.org/debian-archive
 Suites: hamm
 Components: main</literallayout>
 
-   <para>Uses FTP to access the archive at ftp.debian.org, under the debian
+   <para>Uses HTTPS to access the archive at deb.debian.org, under the debian
    directory, and uses only the &debian-stable-codename;/contrib area.</para>
-   <literallayout>deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib</literallayout>
+   <literallayout>deb https://deb.debian.org/debian &debian-stable-codename; contrib</literallayout>
    <literallayout>Types: deb
-URIs: ftp://ftp.debian.org/debian
+URIs: https://deb.debian.org/debian
 Suites: &debian-stable-codename;
 Components: contrib</literallayout>
 
-   <para>Uses FTP to access the archive at ftp.debian.org, under the debian
+   <para>Uses HTTPS to access the archive at deb.debian.org, under the debian
    directory, and uses only the unstable/contrib area. If this line appears as
    well as the one in the previous example in <filename>sources.list</filename>
-   a single FTP session will be used for both resource lines.</para>
-   <literallayout>deb ftp://ftp.debian.org/debian unstable contrib</literallayout>
+   a single HTTPS session will be used for both resource lines.</para>
+   <literallayout>deb https://deb.debian.org/debian unstable contrib</literallayout>
    <literallayout>Types: deb
-URIs: ftp://ftp.debian.org/debian
+URIs: https://deb.debian.org/debian
 Suites: unstable
 Components: contrib</literallayout>
 
diff --git a/dselect/setup b/dselect/setup
index 58eecfc..522362e 100755
--- a/dselect/setup
+++ b/dselect/setup
@@ -231,8 +231,8 @@ sub get_sources {
   print "\n";
   print " For example:\n";
   print "              file:/mnt/debian,\n";
-  print "              ftp://ftp.debian.org/debian,\n";
-  print "              http://ftp.de.debian.org/debian,\n";
+  print "              ftp://ftp.example.org/debian,\n";
+  print "              http://deb.debian.org/debian,\n";
 #  print " and the special mirror scheme,\n";
 #  print "              mirror:http://www.debian.org/archivemirrors \n";
   print "\n";
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
index 0f65872..9c86d18 100644
--- a/ftparchive/apt-ftparchive.cc
+++ b/ftparchive/apt-ftparchive.cc
@@ -25,16 +25,16 @@
 #include <algorithm>
 #include <chrono>
 #include <climits>
+#include <clocale>
+#include <cmath>
+#include <cstdio>
+#include <ctime>
 #include <functional>
 #include <iostream>
 #include <string>
 #include <vector>
-#include <locale.h>
-#include <stdio.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-#include <time.h>
-#include <math.h>
 
 #include "apt-ftparchive.h"
 #include "cachedb.h"
@@ -387,17 +387,15 @@ bool PackageMap::GenContents(Configuration &Setup,
 	 return false;
 
       unsigned long long Size = Head.Size();
-      unsigned char Buf[4096];
+      std::array<unsigned char, APT_BUFFER_SIZE> Buf;
       while (Size != 0)
       {
-	 unsigned long long ToRead = Size;
-	 if (Size > sizeof(Buf))
-	    ToRead = sizeof(Buf);
+	 auto ToRead = std::min<unsigned long long>(Size, Buf.size());
 
-	 if (Head.Read(Buf,ToRead) == false)
+	 if (Head.Read(Buf.data(),ToRead) == false)
 	    return false;
 
-	 if (Comp.Input.Write(Buf, ToRead) == false)
+	 if (Comp.Input.Write(Buf.data(), ToRead) == false)
 	    return _error->Errno("fwrite",_("Error writing header to contents file"));
 
 	 Size -= ToRead;
diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc
index dedb01e..7ad2873 100644
--- a/ftparchive/cachedb.cc
+++ b/ftparchive/cachedb.cc
@@ -19,9 +19,9 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/strutl.h>
 
-#include <ctype.h>
+#include <cctype>
+#include <cstddef>
 #include <netinet/in.h> // htonl, etc
-#include <stddef.h>
 #include <strings.h>
 #include <sys/stat.h>
 
diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h
index 399e1f1..0002c60 100644
--- a/ftparchive/cachedb.h
+++ b/ftparchive/cachedb.h
@@ -15,11 +15,11 @@
 #include <apt-pkg/hashes.h>
 
 #include <db.h>
+#include <cerrno>
+#include <cstdint>
+#include <cstdio>
+#include <cstring>
 #include <string>
-#include <errno.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
 
 #include "contents.h"
 #include "sources.h"
@@ -34,7 +34,7 @@ class CacheDB
    // Database state/access
    DBT Key;
    DBT Data;
-   char TmpKey[600];
+   std::string TmpKey;
    DB *Dbp;
    bool DBLoaded;
    bool ReadOnly;
@@ -45,8 +45,9 @@ class CacheDB
    {
       memset(&Key,0,sizeof(Key));
       memset(&Data,0,sizeof(Data));
-      Key.data = TmpKey;
-      Key.size = snprintf(TmpKey,sizeof(TmpKey),"%s:%s",FileName.c_str(), Type);
+      TmpKey.assign(FileName).append(":").append(Type);
+      Key.data = TmpKey.data();
+      Key.size = TmpKey.size();
    }
    
    void InitQueryStats() {
diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc
index 8a7adfd..1813a94 100644
--- a/ftparchive/contents.cc
+++ b/ftparchive/contents.cc
@@ -1,34 +1,20 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 /* ######################################################################
-   
+
    contents - Archive contents generator
-   
-   The GenContents class is a back end for an archive contents generator. 
-   It takes a list of per-deb file name and merges it into a memory 
-   database of all previous output. This database is stored as a set
-   of binary trees linked across directories to form a tree of all files+dirs
-   given to it. The tree will also be sorted as it is built up thus 
-   removing the massive sort time overhead.
-   
-   By breaking all the pathnames into components and storing them 
-   separately a space saving is realized by not duplicating the string
-   over and over again. Ultimately this saving is sacrificed to storage of
-   the tree structure itself but the tree structure yields a speed gain
-   in the sorting and processing. Ultimately it takes about 5 seconds to
-   do 141000 nodes and about 5 meg of ram.
 
-   The tree looks something like:
-   
-     usr/
-      / \             / libslang
-   bin/ lib/ --> libc6
-        /   \         \ libfoo
-   games/  sbin/
-   
-   The ---> is the DirDown link
-   
-   
+   The GenContents class is a back end for an archive contents generator.
+   It takes a list of per-deb file name and merges it into a memory
+   database of all previous output. This database is stored as a set of
+   pairs (path, package).
+
+   This may be very inefficient since it does duplicate all path components,
+   whereas most are shared. A previous implementation used a tree structure
+   with a binary tree for entries in a directory, which was significantly
+   more space-efficient but it did not do rebalancing and implementing custom
+   self-balancing trees here seems a waste of effort.
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -39,9 +25,9 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 
 #include "contents.h"
 
@@ -67,12 +53,14 @@ GenContents::~GenContents()
 // ---------------------------------------------------------------------
 /* This strdup also uses a large block allocator to eliminate glibc
    overhead */
-char *GenContents::Mystrdup(const char *From)
+GenContents::StringInBlock GenContents::Mystrdup(const char *From)
 {
    unsigned int Len = strlen(From) + 1;
    if (StrLeft <= Len)
    {
-      StrLeft = 4096*10;
+      StrLeft = 4 * 1024 * 1024;
+      if (unlikely(StrLeft <= Len))
+	 abort();
       StrPool = (char *)malloc(StrLeft);
       
       BigBlock *Block = new BigBlock;
@@ -86,112 +74,7 @@ char *GenContents::Mystrdup(const char *From)
    
    char *Res = StrPool;
    StrPool += Len;
-   return Res;
-}
-									/*}}}*/
-// GenContents::Node::operator new - Big block allocator		/*{{{*/
-// ---------------------------------------------------------------------
-/* This eliminates glibc's malloc overhead by allocating large blocks and
-   having a continuous set of Nodes. This takes about 8 bytes off each nodes
-   space needs. Freeing is not supported. */
-void *GenContents::Node::operator new(size_t Amount,GenContents *Owner)
-{
-   if (Owner->NodeLeft == 0)
-   {
-      Owner->NodeLeft = 10000;
-      Owner->NodePool = static_cast<Node *>(malloc(Amount*Owner->NodeLeft));
-      BigBlock *Block = new BigBlock;
-      Block->Block = Owner->NodePool;
-      Block->Next = Owner->BlockList;
-      Owner->BlockList = Block;
-   }
-   
-   Owner->NodeLeft--;
-   return Owner->NodePool++;
-}
-									/*}}}*/
-// GenContents::Grab - Grab a new node representing Name under Top	/*{{{*/
-// ---------------------------------------------------------------------
-/* This grabs a new node representing the pathname component Name under
-   the node Top. The node is given the name Package. It is assumed that Name
-   is inside of top. If a duplicate already entered name is found then 
-   a note is made on the Dup list and the previous in-tree node is returned. */
-GenContents::Node *GenContents::Grab(GenContents::Node *Top,const char *Name,
-			const char *Package)
-{
-   /* We drop down to the next dir level each call. This simplifies
-      the calling routine */
-   if (Top->DirDown == 0)
-   {
-      Node *Item = new(this) Node;
-      Item->Path = Mystrdup(Name);
-      Item->Package = Package;
-      Top->DirDown = Item;
-      return Item;
-   }
-   Top = Top->DirDown;
-   
-   int Res;
-   while (1)
-   {
-      Res = strcmp(Name,Top->Path);
-      
-      // Collision!
-      if (Res == 0)
-      {
-	 // See if this is the same package (multi-version dup)
-	 if (Top->Package == Package ||
-	     strcasecmp(Top->Package,Package) == 0)
-	    return Top;
-	 
-	 // Look for an already existing Dup
-	 for (Node *I = Top->Dups; I != 0; I = I->Dups)
-	    if (I->Package == Package || 
-		strcasecmp(I->Package,Package) == 0)
-	       return Top;
-
-	 // Add the dup in
-	 Node *Item = new(this) Node;
-	 Item->Path = Top->Path;
-	 Item->Package = Package;
-	 Item->Dups = Top->Dups;
-	 Top->Dups = Item;
-	 return Top;
-      }
-      
-      // Continue to traverse the tree
-      if (Res < 0)
-      {
-	 if (Top->BTreeLeft == 0)
-	    break;
-	 Top = Top->BTreeLeft;
-      }      
-      else
-      {
-	 if (Top->BTreeRight == 0)
-	    break;
-	 Top = Top->BTreeRight;
-      }      
-   }
-
-   // The item was not found in the tree
-   Node *Item = new(this) Node;
-   Item->Path = Mystrdup(Name);
-   Item->Package = Package;
-   
-   // Link it into the tree
-   if (Res < 0)
-   {
-      Item->BTreeLeft = Top->BTreeLeft;
-      Top->BTreeLeft = Item;
-   }
-   else
-   {
-      Item->BTreeRight = Top->BTreeRight;
-      Top->BTreeRight = Item;
-   }
-   
-   return Item;
+   return StringInBlock{Res};
 }
 									/*}}}*/
 // GenContents::Add - Add a path to the tree				/*{{{*/
@@ -199,40 +82,18 @@ GenContents::Node *GenContents::Grab(GenContents::Node *Top,const char *Name,
 /* This takes a full pathname and adds it into the tree. We split the
    pathname into directory fragments adding each one as we go. Technically
    in output from tar this should result in hitting previous items. */
-void GenContents::Add(const char *Dir,const char *Package)
+void GenContents::Add(const char *Dir, StringInBlock Package)
 {
-   Node *Root = &this->Root;
-   
+   // Do not add directories. We do not print out directories!
+   if (APT::String::Endswith(Dir, "/"))
+      return;
    // Drop leading slashes
    while (*Dir == '/')
       Dir++;
-   
-   // Run over the string and grab out each bit up to and including a /
-   const char *Start = Dir;
-   const char *I = Dir;
-   while (*I != 0)
-   {
-      if (*I != '/' || I - Start <= 1)
-      {
-	 I++;
-	 continue;
-      }      
-      I++;
-      
-      // Copy the path fragment over
-      char Tmp[1024];
-      strncpy(Tmp,Start,I - Start);
-      Tmp[I - Start] = 0;
-      
-      // Grab a node for it
-      Root = Grab(Root,Tmp,Package);
-      
-      Start = I;
-   }
-   
-   // The final component if it does not have a trailing /
-   if (I - Start >= 1)
-      Grab(Root,Start,Package);
+
+   // We used to add all parents directories here too, but we never printed
+   // them, so just add the file directly.
+   Entries.emplace(Mystrdup(Dir), Package);
 }
 									/*}}}*/
 // GenContents::WriteSpace - Write a given number of white space chars	/*{{{*/
@@ -261,46 +122,40 @@ void GenContents::WriteSpace(std::string &out, size_t Current, size_t Target)
    summed over all the directory parents of this node. */
 void GenContents::Print(FileFd &Out)
 {
-   char Buffer[1024];
-   Buffer[0] = 0;
-   DoPrint(Out,&Root,Buffer);
-}
-void GenContents::DoPrint(FileFd &Out,GenContents::Node *Top, char *Buf)
-{
-   if (Top == 0)
-      return;
-
-   // Go left
-   DoPrint(Out,Top->BTreeLeft,Buf);
-
-   // Print the current dir location and then descend to lower dirs
-   char *OldEnd = Buf + strlen(Buf);
-   if (Top->Path != 0)
+   const char *last = nullptr;
+   std::string line;
+   for (auto &entry : Entries)
    {
-      strcat(Buf,Top->Path);
-
-      // Do not show the item if it is a directory with dups
-      if (Top->Path[strlen(Top->Path)-1] != '/' /*|| Top->Dups == 0*/)
+      // Do not show the item if it is a directory
+      if (not APT::String::Endswith(entry.first.c_str(), "/"))
       {
-	 std::string out = Buf;
-	 WriteSpace(out, out.length(), 60);
-	 for (Node *I = Top; I != 0; I = I->Dups)
+	 // We are still appending to the same file path
+	 if (last != nullptr && strcmp(entry.first.c_str(), last) == 0)
+	 {
+	    line.append(",");
+	    line.append(entry.second.c_str());
+	    continue;
+	 }
+	 // New file. If we saw a file before, write out its line
+	 if (last != nullptr)
 	 {
-	    if (I != Top)
-	       out.append(",");
-	    out.append(I->Package);
+	    line.append("\n", 1);
+	    Out.Write(line.data(), line.length());
 	 }
-         out.append("\n");
-	 Out.Write(out.c_str(), out.length());
+
+	 // Append the package name, tab(s), and first to the line
+	 line.assign(entry.first.c_str());
+	 WriteSpace(line, line.length(), 60);
+	 line.append(entry.second.c_str());
+	 last = entry.first.c_str();
       }
    }
-
-   // Go along the directory link
-   DoPrint(Out,Top->DirDown,Buf);
-   *OldEnd = 0;
-
-   // Go right
-   DoPrint(Out,Top->BTreeRight,Buf);  
+   // Print the trailing line
+   if (last != nullptr)
+   {
+      line.append("\n", 1);
+      Out.Write(line.c_str(), line.length());
+   }
 }
 									/*}}}*/
 // ContentsExtract Constructor						/*{{{*/
@@ -396,7 +251,7 @@ bool ContentsExtract::TakeContents(const void *NewData,unsigned long long Length
 void ContentsExtract::Add(GenContents &Contents,std::string const &Package)
 {
    const char *Start = Data;
-   char *Pkg = Contents.Mystrdup(Package.c_str());
+   auto Pkg = Contents.Mystrdup(Package.c_str());
    for (const char *I = Data; I < Data + CurSize; I++)
    {
       if (*I == 0)
diff --git a/ftparchive/contents.h b/ftparchive/contents.h
index 7460705..e23191c 100644
--- a/ftparchive/contents.h
+++ b/ftparchive/contents.h
@@ -10,61 +10,46 @@
 #define CONTENTS_H
 
 #include <apt-pkg/dirstream.h>
+#include <apt-pkg/strutl.h>
 
+#include <cstddef>
+#include <cstdio>
+#include <set>
 #include <string>
-#include <stddef.h>
-#include <stdio.h>
 
 class debDebFile;
 class FileFd;
 
 class GenContents
 {
-   struct Node
+   /// \brief zero-terminated strings inside a BigBlock with minimal C++ accessor and comparison operator
+   struct StringInBlock
    {
-      // Binary Tree links
-      Node *BTreeLeft;
-      Node *BTreeRight;
-      Node *DirDown;
-      Node *Dups;
-      const char *Path;
-      const char *Package;
-      
-      void *operator new(size_t Amount,GenContents *Owner);
-      void operator delete(void *) {};
-      
-      Node() : BTreeLeft(0), BTreeRight(0), DirDown(0), Dups(0), 
-               Path(0), Package(0) {};
+      const char *data;
+      const char *c_str() const { return data; }
+      bool operator<(const StringInBlock &other) const { return strcmp(data, other.data) < 0; }
    };
-   friend struct Node;
-   
    struct BigBlock
    {
       void *Block;
       BigBlock *Next;
    };
-   
-   Node Root;
-   
+
+   std::set<std::pair<StringInBlock, StringInBlock>> Entries;
+
    // Big block allocation pools
    BigBlock *BlockList;   
    char *StrPool;
    unsigned long StrLeft;
-   Node *NodePool;
-   unsigned long NodeLeft;
-   
-   Node *Grab(Node *Top,const char *Name,const char *Package);
+
    void WriteSpace(std::string &out, size_t Current, size_t Target);
-   void DoPrint(FileFd &Out,Node *Top, char *Buf);
-   
+
    public:
-   
-   char *Mystrdup(const char *From);
-   void Add(const char *Dir,const char *Package);   
+   StringInBlock Mystrdup(const char *From);
+   void Add(const char *Dir, StringInBlock Package);
    void Print(FileFd &Out);
 
-   GenContents() : BlockList(0), StrPool(0), StrLeft(0), 
-                   NodePool(0), NodeLeft(0) {};
+   GenContents() : BlockList(0), StrPool(0), StrLeft(0) {};
    ~GenContents();
 };
 
@@ -80,7 +65,7 @@ class ContentsExtract : public pkgDirStream
    
    bool Read(debDebFile &Deb);
    
-   virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;      
+   bool DoItem(Item &Itm,int &Fd) override;
    void Reset() {CurSize = 0;};
    bool TakeContents(const void *Data,unsigned long long Length);
    void Add(GenContents &Contents,std::string const &Package);
diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc
index cdaa7a6..cbbbe35 100644
--- a/ftparchive/multicompress.cc
+++ b/ftparchive/multicompress.cc
@@ -21,7 +21,8 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/strutl.h>
 
-#include <ctype.h>
+#include <array>
+#include <cctype>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/types.h>
@@ -264,23 +265,23 @@ bool MultiCompress::Child(int const &FD)
    /* Okay, now we just feed data from FD to all the other FDs. Also
       stash a hash of the data to use later. */
    SetNonBlock(FD,false);
-   unsigned char Buffer[32*1024];
+   std::array<unsigned char, APT_BUFFER_SIZE> Buffer;
    unsigned long long FileSize = 0;
    Hashes MD5(Hashes::MD5SUM);
    while (1)
    {
       WaitFd(FD,false);
-      int Res = read(FD,Buffer,sizeof(Buffer));
+      int Res = read(FD,Buffer.data(),Buffer.size());
       if (Res == 0)
 	 break;
       if (Res < 0)
 	 continue;
 
-      MD5.Add(Buffer,Res);
+      MD5.Add(Buffer.data(),Res);
       FileSize += Res;
       for (Files *I = Outputs; I != 0; I = I->Next)
       {
-	 if (I->TmpFile.Write(Buffer, Res) == false)
+	 if (I->TmpFile.Write(Buffer.data(), Res) == false)
 	 {
 	    _error->Errno("write",_("IO to subprocess/file failed"));
 	    break;
@@ -319,12 +320,12 @@ bool MultiCompress::Child(int const &FD)
       while (1)
       {
 	 unsigned long long Res = 0;
-	 if (CompFd.Read(Buffer,sizeof(Buffer), &Res) == false)
+	 if (CompFd.Read(Buffer.data(),Buffer.size(), &Res) == false)
 	    return _error->Errno("read",_("Failed to read while computing MD5"));
 	 if (Res == 0)
 	    break;
 	 NewFileSize += Res;
-	 OldMD5.Add(Buffer,Res);
+	 OldMD5.Add(Buffer.data(),Res);
       }
       CompFd.Close();
 
diff --git a/ftparchive/multicompress.h b/ftparchive/multicompress.h
index c237269..198a696 100644
--- a/ftparchive/multicompress.h
+++ b/ftparchive/multicompress.h
@@ -18,10 +18,10 @@
 #include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/fileutl.h>
 
+#include <cstdio>
+#include <ctime>
 #include <string>
-#include <stdio.h>
 #include <sys/types.h>
-#include <time.h>
 
 class MultiCompress
 {
diff --git a/ftparchive/override.cc b/ftparchive/override.cc
index 16fefec..a6768d9 100644
--- a/ftparchive/override.cc
+++ b/ftparchive/override.cc
@@ -3,9 +3,9 @@
 /* ######################################################################
 
    Override
-   
+
    Store the override file.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -14,10 +14,10 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/strutl.h>
 
+#include <cctype>
+#include <cstdio>
+#include <cstring>
 #include <utility>
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
 
 #include "override.h"
 
@@ -31,19 +31,20 @@ bool Override::ReadOverride(string const &File,bool const &Source)
 {
    if (File.empty() == true)
       return true;
-   
+
    FILE *F = fopen(File.c_str(),"r");
    if (F == 0)
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
-   
-   char Line[1000];
+
+   char *Line = nullptr;
+   size_t LineSize = 0;
    unsigned long long Counter = 0;
-   while (fgets(Line,sizeof(Line),F) != 0)
+   while (getline(&Line, &LineSize, F) != -1)
    {
       Counter++;
       Item Itm;
 
-      // Silence 
+      // Silence
       for (char *I = Line; *I != 0; I++)
 	 if (*I == '#')
 	    *I = 0;
@@ -113,10 +114,10 @@ bool Override::ReadOverride(string const &File,bool const &Source)
 	 {
 	    *End = 0;
 	    Itm.OldMaint = _strstrip(Start);
-	    
+
 	    End += 3;
 	    Itm.NewMaint = _strstrip(End);
-	 }	 
+	 }
       }
 
       Mapping[Pkg] = Itm;
@@ -124,6 +125,7 @@ bool Override::ReadOverride(string const &File,bool const &Source)
 
    if (ferror(F))
       _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str());
+   free(Line);
    fclose(F);
    return true;
 }
@@ -135,18 +137,19 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 {
    if (File.empty() == true)
       return true;
-   
+
    FILE *F = fopen(File.c_str(),"r");
    if (F == 0)
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
-  
-   char Line[1000];
+
+   char *Line = nullptr;
+   size_t LineSize = 0;
    unsigned long long Counter = 0;
-   while (fgets(Line,sizeof(Line),F) != 0)
+   while (getline(&Line, &LineSize, F) != -1)
    {
       Counter++;
 
-      // Silence 
+      // Silence
       for (char *I = Line; *I != 0; I++)
 	 if (*I == '#')
 	    *I = 0;
@@ -165,7 +168,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 	 _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(),
 			 Counter);
 	 continue;
-      }      
+      }
       *End = 0;
 
       // Find the field
@@ -179,8 +182,8 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 	 continue;
       }
       *End = 0;
-      
-      // Find the field value 
+
+      // Find the field value
       for (End++; isspace(*End) != 0 && *End != 0; End++);
       char *Value = End;
       for (; *End != 0; End++);
@@ -190,7 +193,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 	 _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(),
 			 Counter);
 	 continue;
-      }      
+      }
       *End = 0;
 
       Mapping[Pkg].FieldOverride[Field] = Value;
@@ -198,6 +201,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 
    if (ferror(F))
       _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str());
+   free(Line);
    fclose(F);
    return true;
 }
@@ -208,10 +212,10 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 /* Returns a override item for the given package and the given architecture.
  * Treats "all" special
  */
-Override::Item* Override::GetItem(string const &Package, string const &Architecture)
+Override::Item* Override::GetItem(std::string_view Package, std::string_view Architecture)
 {
    map<string,Item>::const_iterator I = Mapping.find(Package);
-   map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
+   map<string,Item>::iterator J = Mapping.find(std::string{Package}.append("/").append(Architecture));
 
    if (I == Mapping.end() && J == Mapping.end())
    {
@@ -246,17 +250,17 @@ Override::Item* Override::GetItem(string const &Package, string const &Architect
    there is a rule but it does not match then the empty string is returned,
    also if there was no rewrite rule the empty string is returned. Failed
    indicates if there was some kind of problem while rewriting. */
-string Override::Item::SwapMaint(string const &Orig,bool &Failed)
+string Override::Item::SwapMaint(std::string_view Orig,bool &Failed)
 {
    Failed = false;
-   
+
    // Degenerate case..
    if (NewMaint.empty() == true)
 	 return OldMaint;
-   
+
    if (OldMaint == "*")
       return NewMaint;
-   
+
    /* James: ancient, eliminate it, however it is still being used in the main
       override file. Thus it persists.*/
 #if 1
@@ -264,13 +268,13 @@ string Override::Item::SwapMaint(string const &Orig,bool &Failed)
    string::const_iterator End = OldMaint.begin();
    while (1)
    {
-      string::const_iterator Start = End;      
+      string::const_iterator Start = End;
       for (; End < OldMaint.end() &&
-	   (End + 3 >= OldMaint.end() || End[0] != ' ' || 
+	   (End + 3 >= OldMaint.end() || End[0] != ' ' ||
 	    End[1] != '/' || End[2] != '/'); ++End);
       if (stringcasecmp(Start,End,Orig.begin(),Orig.end()) == 0)
 	 return NewMaint;
-      
+
       if (End >= OldMaint.end())
 	 break;
 
@@ -279,9 +283,9 @@ string Override::Item::SwapMaint(string const &Orig,bool &Failed)
    }
 #else
    if (stringcasecmp(OldMaint.begin(),OldMaint.end(),Orig.begin(),Orig.end()) == 0)
-      return NewMaint;   
+      return NewMaint;
 #endif
-   
+
    Failed = true;
    return string();
 }
diff --git a/ftparchive/override.h b/ftparchive/override.h
index af62a04..ea3b5b9 100644
--- a/ftparchive/override.h
+++ b/ftparchive/override.h
@@ -3,9 +3,9 @@
 /* ######################################################################
 
    Override
-   
+
    Store the override file.
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef OVERRIDE_H
@@ -16,11 +16,11 @@
 
 using std::string;
 using std::map;
-    
+
 class Override
 {
    public:
-   
+
    struct Item
    {
       string Priority;
@@ -28,21 +28,21 @@ class Override
       string NewMaint;
 
       map<string,string> FieldOverride;
-      string SwapMaint(string const &Orig,bool &Failed);
+      string SwapMaint(std::string_view Orig,bool &Failed);
       ~Item() {};
    };
-   
-   map<string,Item> Mapping;
-   
-   inline Item *GetItem(string const &Package) 
+
+   map<string,Item,std::less<>> Mapping;
+
+   inline Item *GetItem(std::string_view Package)
    {
       return GetItem(Package, "");
    }
-   Item *GetItem(string const &Package, string const &Architecture);
-   
+   Item *GetItem(std::string_view Package, std::string_view Architecture);
+
    bool ReadOverride(string const &File,bool const &Source = false);
    bool ReadExtraOverride(string const &File,bool const &Source = false);
 };
 
 #endif
-    
+
diff --git a/ftparchive/sources.cc b/ftparchive/sources.cc
index a592243..4c7a51d 100644
--- a/ftparchive/sources.cc
+++ b/ftparchive/sources.cc
@@ -3,7 +3,7 @@
 #include <sstream>
 #include <string>
 
-// for memcpy
+#include <array>
 #include <cstring>
 
 #include <apt-pkg/error.h>
@@ -42,16 +42,16 @@ bool DscExtract::Read(std::string FileName)
    IsClearSigned = (FileName != F.Name());
 
    std::ostringstream data;
-   char buffer[1024];
+   std::array<char, APT_BUFFER_SIZE> buffer;
    do {
       unsigned long long actual = 0;
-      if (F.Read(buffer, sizeof(buffer)-1, &actual) == false)
+      if (F.Read(buffer.data(), buffer.size()-1, &actual) == false)
 	 return _error->Errno("read", "Failed to read dsc file %s", FileName.c_str());
       if (actual == 0)
 	 break;
       Length += actual;
       buffer[actual] = '\0';
-      data << buffer;
+      data << buffer.data();
    } while(true);
 
    // adding two newlines 'off record' for pkgTagSection.Scan() calls
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
index ae427b1..a0319ca 100644
--- a/ftparchive/writer.cc
+++ b/ftparchive/writer.cc
@@ -2,11 +2,11 @@
 // Description								/*{{{*/
 /* ######################################################################
 
-   Writer 
-   
+   Writer
+
    The file writer classes. These write various types of output, sources,
    packages and contents.
-   
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -25,17 +25,17 @@
 #include <apt-pkg/tagfile.h>
 
 #include <algorithm>
+#include <cctype>
+#include <clocale>
+#include <cstring>
 #include <ctime>
 #include <iomanip>
 #include <iostream>
 #include <memory>
 #include <sstream>
 #include <utility>
-#include <ctype.h>
 #include <fnmatch.h>
 #include <ftw.h>
-#include <locale.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -103,12 +103,12 @@ int FTWScanner::ScannerFTW(const char *File,const struct stat * /*sb*/,int Flag)
    {
       Owner->NewLine(1);
       ioprintf(c1out, _("W: Unable to read directory %s\n"), File);
-   }   
+   }
    if (Flag == FTW_NS)
    {
       Owner->NewLine(1);
       ioprintf(c1out, _("W: Unable to stat %s\n"), File);
-   }   
+   }
    if (Flag != FTW_F)
       return 0;
 
@@ -154,7 +154,7 @@ int FTWScanner::ProcessFile(const char *const File, bool const ReadLink) /*{{{*/
    }
    else
       Owner->DoPackage(File);
-   
+
    if (_error->empty() == false)
    {
       // Print any errors or warnings found
@@ -163,22 +163,22 @@ int FTWScanner::ProcessFile(const char *const File, bool const ReadLink) /*{{{*/
       while (_error->empty() == false)
       {
 	 Owner->NewLine(1);
-	 
+
 	 bool const Type = _error->PopMessage(Err);
 	 if (Type == true)
 	    cerr << _("E: ") << Err << endl;
 	 else
 	    cerr << _("W: ") << Err << endl;
-	 
+
 	 if (Err.find(File) != string::npos)
 	    SeenPath = true;
-      }      
-      
+      }
+
       if (SeenPath == false)
 	 cerr << _("E: Errors apply to file ") << "'" << File << "'" << endl;
       return 0;
    }
-   
+
    return 0;
 }
 									/*}}}*/
@@ -197,11 +197,11 @@ bool FTWScanner::RecursiveScan(string const &Dir)
       InternalPrefix = RealPath;
       free(RealPath);
    }
-   
+
    // Do recursive directory searching
    Owner = this;
    int const Res = ftw(Dir.c_str(),ScannerFTW,30);
-   
+
    // Error treewalking?
    if (Res != 0)
    {
@@ -236,47 +236,40 @@ bool FTWScanner::LoadFileList(string const &Dir, string const &File)
       InternalPrefix = RealPath;
       free(RealPath);
    }
-   
+
    Owner = this;
    FILE *List = fopen(File.c_str(),"r");
    if (List == 0)
       return _error->Errno("fopen",_("Failed to open %s"),File.c_str());
-   
-   /* We are a tad tricky here.. We prefix the buffer with the directory
-      name, that way if we need a full path with just use line.. Sneaky and
-      fully evil. */
-   char Line[1000];
-   char *FileStart;
-   if (Dir.empty() == true || Dir.end()[-1] != '/')
-      FileStart = Line + snprintf(Line,sizeof(Line),"%s/",Dir.c_str());
-   else
-      FileStart = Line + snprintf(Line,sizeof(Line),"%s",Dir.c_str());   
-   while (fgets(FileStart,sizeof(Line) - (FileStart - Line),List) != 0)
+
+   std::string FilePathBuf;
+   char *Line = nullptr;
+   size_t LineLength = 0;
+   while (getline(&Line, &LineLength, List) != -1)
    {
-      char *FileName = _strstrip(FileStart);
+      const char *FileName = _strstrip(Line);
       if (FileName[0] == 0)
 	 continue;
-	 
+
+      // Relative path, prepend directory to make absolute
       if (FileName[0] != '/')
       {
-	 if (FileName != FileStart)
-	    memmove(FileStart,FileName,strlen(FileStart));
-	 FileName = Line;
+	 if (Dir.empty() == true || Dir.end()[-1] != '/')
+	    strprintf(FilePathBuf, "%s/%s", Dir.c_str(), FileName);
+	 else
+	    strprintf(FilePathBuf, "%s%s", Dir.c_str(), FileName);
+
+	 FileName = FilePathBuf.c_str();
       }
-      
-#if 0
-      struct stat St;
-      int Flag = FTW_F;
-      if (stat(FileName,&St) != 0)
-	 Flag = FTW_NS;
-#endif
+
       if (FileMatchesPatterns(FileName, Patterns) == false)
 	 continue;
 
       if (ProcessFile(FileName, false) != 0)
 	 break;
    }
-  
+
+   free(Line);
    fclose(List);
    return true;
 }
@@ -290,7 +283,7 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 {
    // See if this isn't an internally prefix'd file name.
    if (InternalPrefix.empty() == false &&
-       InternalPrefix.length() < FileName.length() && 
+       InternalPrefix.length() < FileName.length() &&
        stringcmp(FileName.begin(),FileName.begin() + InternalPrefix.length(),
 		 InternalPrefix.begin(),InternalPrefix.end()) != 0)
    {
@@ -299,12 +292,12 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 	 // Tidy up the display
 	 if (DeLinkBytes == 0)
 	    cout << endl;
-	 
+
 	 NewLine(1);
 	 ioprintf(c1out, _(" DeLink %s [%s]\n"), (OriginalPath + InternalPrefix.length()),
 		    SizeToStr(FileSize).c_str());
 	 c1out << flush;
-	 
+
 	 if (NoLinkAct == false)
 	 {
 	    char OldLink[400];
@@ -322,19 +315,19 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 		     return _error->Errno("link",_("*** Failed to link %s to %s"),
 					  FileName.c_str(),
 					  OriginalPath);
-		  }	       
+		  }
 	       }
-	    }	    
+	    }
 	 }
-	 
+
 	 DeLinkBytes += FileSize;
 	 if (DeLinkBytes/1024 >= DeLinkLimit)
-	    ioprintf(c1out, _(" DeLink limit of %sB hit.\n"), SizeToStr(DeLinkBytes).c_str());      
+	    ioprintf(c1out, _(" DeLink limit of %sB hit.\n"), SizeToStr(DeLinkBytes).c_str());
       }
-      
+
       FileName = OriginalPath;
    }
-   
+
    return true;
 }
 									/*}}}*/
@@ -400,11 +393,11 @@ PackagesWriter::PackagesWriter(FileFd * const GivenOutput, TranslationWriter * c
                                                                         /*}}}*/
 // PackagesWriter::DoPackage - Process a single package			/*{{{*/
 // ---------------------------------------------------------------------
-/* This method takes a package and gets its control information and 
-   MD5, SHA1 and SHA256 then writes out a control record with the proper fields 
+/* This method takes a package and gets its control information and
+   MD5, SHA1 and SHA256 then writes out a control record with the proper fields
    rewritten and the path/size/hash appended. */
 bool PackagesWriter::DoPackage(string FileName)
-{      
+{
    // Pull all the data we need form the DB
    if (Db.GetFileInfo(FileName,
 	    true, /* DoControl */
@@ -419,19 +412,19 @@ bool PackagesWriter::DoPackage(string FileName)
    unsigned long long FileSize = Db.GetFileSize();
    if (Delink(FileName,OriginalPath,Stats.DeLinkBytes,FileSize) == false)
       return false;
-   
+
    // Lookup the override information
    pkgTagSection &Tags = Db.Control.Section;
-   auto const Package = Tags.Find(pkgTagSection::Key::Package).to_string();
-   string Architecture;
+   auto const Package = Tags.Find(pkgTagSection::Key::Package);
+   string_view Architecture;
    // if we generate a Packages file for a given arch, we use it to
-   // look for overrides. if we run in "simple" mode without the 
+   // look for overrides. if we run in "simple" mode without the
    // "Architectures" variable in the config we use the architecture value
    // from the deb file
    if(Arch != "")
       Architecture = Arch;
    else
-      Architecture = Tags.Find(pkgTagSection::Key::Architecture).to_string();
+      Architecture = Tags.Find(pkgTagSection::Key::Architecture);
    unique_ptr<Override::Item> OverItem(Over.GetItem(Package, Architecture));
 
    if (Package.empty() == true)
@@ -443,12 +436,12 @@ bool PackagesWriter::DoPackage(string FileName)
       if (NoOverride == false)
       {
 	 NewLine(1);
-	 ioprintf(c1out, _("  %s has no override entry\n"), Package.c_str());
+	 ioprintf(c1out, _("  %.*s has no override entry\n"), (int)Package.size(), Package.data());
       }
 
       OverItem = unique_ptr<Override::Item>(new Override::Item);
-      OverItem->FieldOverride["Section"] = Tags.Find(pkgTagSection::Key::Section).to_string();
-      OverItem->Priority = Tags.Find(pkgTagSection::Key::Priority).to_string();
+      OverItem->FieldOverride["Section"] = Tags.Find(pkgTagSection::Key::Section);
+      OverItem->Priority = Tags.Find(pkgTagSection::Key::Priority);
    }
 
    // Strip the DirStrip prefix from the FileName and add the PathPrefix
@@ -458,7 +451,7 @@ bool PackagesWriter::DoPackage(string FileName)
        stringcmp(FileName.begin(),FileName.begin() + DirStrip.length(),
 		 DirStrip.begin(),DirStrip.end()) == 0)
       NewFileName = string(FileName.begin() + DirStrip.length(),FileName.end());
-   else 
+   else
       NewFileName = FileName;
    if (PathPrefix.empty() == false)
       NewFileName = flCombine(PathPrefix,NewFileName);
@@ -467,8 +460,9 @@ bool PackagesWriter::DoPackage(string FileName)
       in the package file - instead we want to ship a separated file */
    string desc;
    if (LongDescription == false) {
-      desc = Tags.Find(pkgTagSection::Key::Description).to_string().append("\n");
-      OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n')).c_str();
+      desc = Tags.Find(pkgTagSection::Key::Description);
+      desc += '\n';
+      OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n'));
    }
 
    // This lists all the changes to the fields we are going to make.
@@ -500,14 +494,15 @@ bool PackagesWriter::DoPackage(string FileName)
 
    // Rewrite the maintainer field if necessary
    bool MaintFailed;
-   string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer).to_string(), MaintFailed);
+   string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer), MaintFailed);
    if (MaintFailed == true)
    {
       if (NoOverride == false)
       {
-	 NewLine(1);
-	 ioprintf(c1out, _("  %s maintainer is %s not %s\n"),
-	       Package.c_str(), Tags.Find(pkgTagSection::Key::Maintainer).to_string().c_str(), OverItem->OldMaint.c_str());
+	 const auto Maint = Tags.Find(pkgTagSection::Key::Maintainer);
+         NewLine(1);
+	 ioprintf(c1out, _("  %.*s maintainer is %.*s not %s\n"),
+	       (int)Package.size(), Package.data(), (int)Maint.size(), Maint.data(), OverItem->OldMaint.c_str());
       }
    }
 
@@ -547,7 +542,7 @@ TranslationWriter::TranslationWriter(string const &File, string const &TransComp
 // TranslationWriter::DoPackage - Process a single package		/*{{{*/
 // ---------------------------------------------------------------------
 /* Create a Translation-Master file for this Packages file */
-bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc,
+bool TranslationWriter::DoPackage(string_view Pkg, string const &Desc,
 				  string const &MD5)
 {
    if (Output == NULL)
@@ -555,14 +550,14 @@ bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc,
 
    // Different archs can include different versions and therefore
    // different descriptions - so we need to check for both name and md5.
-   string const Record = Pkg + ":" + MD5;
+   string const Record = string{Pkg} + ":" + MD5;
 
    if (Included.find(Record) != Included.end())
       return true;
 
    std::string out;
-   strprintf(out, "Package: %s\nDescription-md5: %s\nDescription-en: %s\n",
-	   Pkg.c_str(), MD5.c_str(), Desc.c_str());
+   strprintf(out, "Package: %.*s\nDescription-md5: %s\nDescription-en: %s\n",
+	   (int)Pkg.size(), Pkg.data(), MD5.c_str(), Desc.c_str());
    Output->Write(out.c_str(), out.length());
 
    Included.insert(Record);
@@ -590,7 +585,7 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin
    DeLinkLimit = 0;
    Buffer = 0;
    BufSize = 0;
-   
+
    // Process the command line options
    ConfigToDoHashes(DoHashes, "APT::FTPArchive::Sources");
    NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false);
@@ -608,7 +603,7 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin
 
    if (ExtOverrides.empty() == false)
       SOver.ReadExtraOverride(ExtOverrides);
-   
+
    if (SOverrides.empty() == false && FileExists(SOverrides) == true)
       SOver.ReadOverride(SOverrides,true);
 }
@@ -616,13 +611,13 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin
 // SourcesWriter::DoPackage - Process a single package			/*{{{*/
 static std::string getDscHash(unsigned int const DoHashes,
       Hashes::SupportedHashes const DoIt, pkgTagSection &Tags, pkgTagSection::Key const FieldKey,
-      HashString const * const Hash, unsigned long long Size, std::string const &FileName)
+      HashString const * const Hash, unsigned long long Size, std::string_view const &FileName)
 {
    if ((DoHashes & DoIt) != DoIt || not Tags.Exists(FieldKey) || Hash == nullptr)
       return "";
    std::ostringstream out;
-   out << "\n " << Hash->HashValue() << " " << std::to_string(Size) << " " << FileName
-      << "\n " << Tags.Find(FieldKey).to_string();
+   out << "\n " << Hash->HashValue() << " " << Size << " " << FileName
+      << "\n " << Tags.Find(FieldKey);
    return out.str();
 }
 bool SourcesWriter::DoPackage(string FileName)
@@ -664,7 +659,7 @@ bool SourcesWriter::DoPackage(string FileName)
       // Ignore too-long errors.
       char *BinList[400];
       TokSplitString(',',Buffer,BinList,sizeof(BinList)/sizeof(BinList[0]));
-      
+
       // Look at all the binaries
       unsigned char BestPrioV = pkgCache::State::Extra;
       for (unsigned I = 0; BinList[I] != 0; I++)
@@ -678,46 +673,47 @@ bool SourcesWriter::DoPackage(string FileName)
 	 {
 	    BestPrioV = NewPrioV;
 	    BestPrio = Itm->Priority;
-	 }	 
+	 }
 
 	 if (OverItem.get() == 0)
 	    OverItem = std::move(Itm);
       }
    }
-   
+
    // If we need to do any rewriting of the header do it now..
    if (OverItem.get() == 0)
    {
       if (NoOverride == false)
       {
+         const auto Source = Tags.Find(pkgTagSection::Key::Source);
 	 NewLine(1);
-	 ioprintf(c1out, _("  %s has no override entry\n"), Tags.Find(pkgTagSection::Key::Source).to_string().c_str());
+	 ioprintf(c1out, _("  %.*s has no override entry\n"), (int)Source.size(), Source.data());
       }
-      
+
       OverItem.reset(new Override::Item);
    }
-   
+
    struct stat St;
    if (stat(FileName.c_str(), &St) != 0)
       return _error->Errno("fstat","Failed to stat %s",FileName.c_str());
 
-   auto const Package = Tags.Find(pkgTagSection::Key::Source).to_string();
+   auto const Package = Tags.Find(pkgTagSection::Key::Source);
    unique_ptr<Override::Item> SOverItem(SOver.GetItem(Package));
    // const unique_ptr<Override::Item> autoSOverItem(SOverItem);
    if (SOverItem.get() == 0)
    {
-      ioprintf(c1out, _("  %s has no source override entry\n"), Package.c_str());
+      ioprintf(c1out, _("  %.*s has no source override entry\n"), (int)Package.size(), Package.data());
       SOverItem = unique_ptr<Override::Item>(BOver.GetItem(Package));
       if (SOverItem.get() == 0)
       {
-        ioprintf(c1out, _("  %s has no binary override entry either\n"), Package.c_str());
+        ioprintf(c1out, _("  %.*s has no binary override entry either\n"), (int)Package.size(), Package.data());
 	 SOverItem = unique_ptr<Override::Item>(new Override::Item);
 	 *SOverItem = *OverItem;
       }
    }
 
    // Add the dsc to the files hash list
-   string const strippedName = flNotDir(FileName);
+   auto const strippedName = flNotDir(FileName);
    std::string const Files = getDscHash(DoHashes, Hashes::MD5SUM, Tags, pkgTagSection::Key::Files, Db.HashesList.find("MD5Sum"), St.st_size, strippedName);
    std::string ChecksumsSha1 = getDscHash(DoHashes, Hashes::SHA1SUM, Tags, pkgTagSection::Key::Checksums_Sha1, Db.HashesList.find("SHA1"), St.st_size, strippedName);
    std::string ChecksumsSha256 = getDscHash(DoHashes, Hashes::SHA256SUM, Tags, pkgTagSection::Key::Checksums_Sha256, Db.HashesList.find("SHA256"), St.st_size, strippedName);
@@ -729,7 +725,7 @@ bool SourcesWriter::DoPackage(string FileName)
        FileName.length() > DirStrip.length() &&
        stringcmp(DirStrip,OriginalPath,OriginalPath + DirStrip.length()) == 0)
       NewFileName = string(OriginalPath + DirStrip.length());
-   else 
+   else
       NewFileName = OriginalPath;
    if (PathPrefix.empty() == false)
       NewFileName = flCombine(PathPrefix,NewFileName);
@@ -850,14 +846,15 @@ bool SourcesWriter::DoPackage(string FileName)
 
    // Rewrite the maintainer field if necessary
    bool MaintFailed;
-   string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer).to_string(), MaintFailed);
+   string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer), MaintFailed);
    if (MaintFailed == true)
    {
       if (NoOverride == false)
       {
-	 NewLine(1);
-	 ioprintf(c1out, _("  %s maintainer is %s not %s\n"), Package.c_str(),
-	       Tags.Find(pkgTagSection::Key::Maintainer).to_string().c_str(), OverItem->OldMaint.c_str());
+	 const auto Maint = Tags.Find(pkgTagSection::Key::Maintainer);
+         NewLine(1);
+	 ioprintf(c1out, _("  %.*s maintainer is %.*s not %s\n"), (int)Package.size(), Package.data(),
+	       (int)Maint.size(), Maint.data(), OverItem->OldMaint.c_str());
       }
    }
    if (NewMaint.empty() == false)
@@ -873,7 +870,7 @@ bool SourcesWriter::DoPackage(string FileName)
       return false;
 
    Stats.Packages++;
-   
+
    return true;
 }
 									/*}}}*/
@@ -909,11 +906,11 @@ bool ContentsWriter::DoPackage(string FileName, string Package)
    // Parse the package name
    if (Package.empty() == true)
    {
-      Package = Db.Control.Section.Find(pkgTagSection::Key::Package).to_string();
+      Package = Db.Control.Section.Find(pkgTagSection::Key::Package);
    }
 
-   Db.Contents.Add(Gen,Package);
-   
+   Db.Contents.Add(Gen,std::move(Package));
+
    return Db.Finish();
 }
 									/*}}}*/
@@ -939,8 +936,8 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres
    pkgTagSection Section;
    while (Tags.Step(Section) == true)
    {
-      auto File = flCombine(Prefix, Section.Find(pkgTagSection::Key::Filename).to_string());
-      auto Package = flCombine(Section.Find(pkgTagSection::Key::Section).to_string(), Section.Find(pkgTagSection::Key::Package).to_string());
+      auto File = flCombine(Prefix, string{Section.Find(pkgTagSection::Key::Filename)});
+      auto Package = flCombine(string{Section.Find(pkgTagSection::Key::Section)}, string{Section.Find(pkgTagSection::Key::Package)});
       DoPackage(std::move(File), std::move(Package));
       if (_error->empty() == false)
       {
@@ -1058,7 +1055,7 @@ bool ReleaseWriter::DoPackage(string FileName)
       while (NewFileName[0] == '/')
          NewFileName = string(NewFileName.begin() + 1,NewFileName.end());
    }
-   else 
+   else
       NewFileName = FileName;
 
    if (PathPrefix.empty() == false)
diff --git a/ftparchive/writer.h b/ftparchive/writer.h
index 9aa2168..c9b07c1 100644
--- a/ftparchive/writer.h
+++ b/ftparchive/writer.h
@@ -2,11 +2,11 @@
 // Description								/*{{{*/
 /* ######################################################################
 
-   Writer 
-   
+   Writer
+
    The file writer classes. These write various types of output, sources,
    packages and contents.
-   
+
    ##################################################################### */
 									/*}}}*/
 #ifndef WRITER_H
@@ -14,14 +14,14 @@
 
 #include <apt-pkg/hashes.h>
 
+#include <cstdio>
+#include <cstdlib>
 #include <iostream>
 #include <map>
 #include <set>
 #include <string>
 #include <utility>
 #include <vector>
-#include <stdio.h>
-#include <stdlib.h>
 #include <sys/types.h>
 
 #include "apt-ftparchive.h"
@@ -95,7 +95,7 @@ class TranslationWriter
    FileFd *Output;
 
    public:
-   bool DoPackage(string const &Pkg, string const &Desc, string const &MD5);
+   bool DoPackage(std::string_view Pkg, string const &Desc, string const &MD5);
 
    TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions);
    ~TranslationWriter();
@@ -121,9 +121,9 @@ class PackagesWriter : public FTWScanner
    TranslationWriter * const TransWriter;
 
    inline bool ReadOverride(string const &File) {return Over.ReadOverride(File);};
-   inline bool ReadExtraOverride(string const &File) 
+   inline bool ReadExtraOverride(string const &File)
       {return Over.ReadExtraOverride(File);};
-   virtual bool DoPackage(string FileName) APT_OVERRIDE;
+   bool DoPackage(string FileName) override;
 
    PackagesWriter(FileFd * const Output, TranslationWriter * const TransWriter, string const &DB,
                   string const &Overrides,
@@ -146,7 +146,7 @@ class ContentsWriter : public FTWScanner
    string Prefix;
 
    bool DoPackage(string FileName,string Package);
-   virtual bool DoPackage(string FileName) APT_OVERRIDE 
+   bool DoPackage(string FileName) override
              {return DoPackage(FileName,string());};
    bool ReadFromPkgs(string const &PkgFile,string const &PkgCompress);
 
@@ -176,7 +176,7 @@ class SourcesWriter : public FTWScanner
    string DirStrip;
    struct CacheDB::Stats &Stats;
 
-   virtual bool DoPackage(string FileName) APT_OVERRIDE;
+   bool DoPackage(string FileName) override;
 
    SourcesWriter(FileFd * const Output, string const &DB,string const &BOverrides,string const &SOverrides,
 		 string const &ExtOverrides=string());
@@ -187,7 +187,7 @@ class ReleaseWriter : public FTWScanner
 {
 public:
    ReleaseWriter(FileFd * const Output, string const &DB);
-   virtual bool DoPackage(string FileName) APT_OVERRIDE;
+   bool DoPackage(string FileName) override;
    void Finish();
 
    // General options
diff --git a/git-clang-format.sh b/git-clang-format.sh
index 6348652..da6e6d8 100755
--- a/git-clang-format.sh
+++ b/git-clang-format.sh
@@ -7,4 +7,6 @@ if [ -z "$CLANG_FORMAT" ]; then
 fi
 git "$(basename "$CLANG_FORMAT" | cut -d'-' -f 2-)" --diff "$@" | \
    sed "s#+/\*\}\}\}\*/#+									/*}}}*/#" | \
+   grep -v '^clang-format did not modify any files$' | \
+   grep -v '^no modified files to format$' | \
    patch -p1
diff --git a/methods/CMakeLists.txt b/methods/CMakeLists.txt
index a5a3602..161cd91 100644
--- a/methods/CMakeLists.txt
+++ b/methods/CMakeLists.txt
@@ -8,29 +8,30 @@ add_executable(file file.cc)
 add_executable(copy copy.cc)
 add_executable(store store.cc)
 add_executable(gpgv gpgv.cc)
+if (SQV_EXECUTABLE)
+add_executable(sqv sqv.cc)
+install(TARGETS sqv
+        RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods)
+endif()
 add_executable(cdrom cdrom.cc)
 add_executable(http http.cc basehttp.cc $<TARGET_OBJECTS:connectlib>)
 add_executable(mirror mirror.cc)
-add_executable(ftp ftp.cc $<TARGET_OBJECTS:connectlib>)
 add_executable(rred rred.cc)
-add_executable(rsh rsh.cc)
 
-target_compile_definitions(connectlib PRIVATE ${GNUTLS_DEFINITIONS})
-target_include_directories(connectlib PRIVATE ${GNUTLS_INCLUDE_DIR})
+target_compile_definitions(connectlib PRIVATE ${OPENSSL_DEFINITIONS})
+target_include_directories(connectlib PRIVATE ${OPENSSL_INCLUDE_DIR})
 target_include_directories(http PRIVATE $<$<BOOL:${SYSTEMD_FOUND}>:${SYSTEMD_INCLUDE_DIRS}>)
 
 # Additional libraries to link against for networked stuff
-target_link_libraries(http ${GNUTLS_LIBRARIES} $<$<BOOL:${SYSTEMD_FOUND}>:${SYSTEMD_LIBRARIES}>)
-target_link_libraries(ftp ${GNUTLS_LIBRARIES})
+target_link_libraries(http OpenSSL::SSL $<$<BOOL:${SYSTEMD_FOUND}>:${SYSTEMD_LIBRARIES}>)
 
 target_link_libraries(rred apt-private)
 
 # Install the library
-install(TARGETS file copy store gpgv cdrom http ftp rred rsh mirror
+install(TARGETS file copy store cdrom gpgv http rred mirror
         RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods)
 
-add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods mirror mirror+ftp mirror+http mirror+https mirror+file mirror+copy)
-add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods rsh ssh)
+add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods mirror mirror+http mirror+https mirror+file mirror+copy)
 
 
 add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods http https)
diff --git a/methods/aptmethod.h b/methods/aptmethod.h
index afc761c..f564499 100644
--- a/methods/aptmethod.h
+++ b/methods/aptmethod.h
@@ -16,7 +16,7 @@
 #include <string>
 #include <vector>
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/types.h>
@@ -26,7 +26,7 @@
 #include <apti18n.h>
 
 #ifdef HAVE_SECCOMP
-#include <signal.h>
+#include <csignal>
 
 #include <seccomp.h>
 #endif
@@ -120,7 +120,7 @@ protected:
    };
 
    public:
-   virtual bool Configuration(std::string Message) APT_OVERRIDE
+   bool Configuration(std::string Message) override
    {
       if (pkgAcqMethod::Configuration(Message) == false)
 	 return false;
@@ -448,7 +448,7 @@ protected:
       return true;
    }
 
-   void Warning(std::string &&msg)
+   void Message(std::string &&msg, std::string code)
    {
       std::unordered_map<std::string, std::string> fields;
       if (Queue != 0)
@@ -458,7 +458,15 @@ protected:
       if (not UsedMirror.empty())
 	 fields.emplace("UsedMirror", UsedMirror);
       fields.emplace("Message", std::move(msg));
-      SendMessage("104 Warning", std::move(fields));
+      SendMessage(code, std::move(fields));
+   }
+   void Warning(std::string &&msg)
+   {
+      return Message(std::move(msg), "104 Warning");
+   }
+   void Audit(std::string &&msg)
+   {
+      return Message(std::move(msg), "105 Audit");
    }
 
    bool TransferModificationTimes(char const * const From, char const * const To, time_t &LastModified) APT_NONNULL(2, 3)
@@ -506,6 +514,17 @@ protected:
       return part;
    }
 
+   static std::string CombineWithAlternatePath(std::string Path, std::string Change)
+   {
+      while (APT::String::Startswith(Change, "../"))
+      {
+	 Path.erase(Path.find_last_not_of('/'));
+	 Path = flNotFile(Path);
+	 Change.erase(0, 3);
+      }
+      return flCombine(Path, Change);
+   }
+
    aptMethod(std::string &&Binary, char const *const Ver, unsigned long const Flags) APT_NONNULL(3)
        : pkgAcqMethod(Ver, Flags), aptConfigWrapperForMethods(Binary), Binary(std::move(Binary)), SeccompFlags(0)
    {
@@ -521,7 +540,7 @@ class aptAuthConfMethod : public aptMethod
    std::vector<std::unique_ptr<FileFd>> authconfs;
 
    public:
-   virtual bool Configuration(std::string Message) APT_OVERRIDE
+   bool Configuration(std::string Message) override
    {
       if (pkgAcqMethod::Configuration(Message) == false)
 	 return false;
diff --git a/methods/basehttp.cc b/methods/basehttp.cc
index 9ed3081..d335e6f 100644
--- a/methods/basehttp.cc
+++ b/methods/basehttp.cc
@@ -16,19 +16,19 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/strutl.h>
 
+#include <cctype>
+#include <csignal>
+#include <cstdio>
+#include <cstdlib>
+#include <ctime>
 #include <iostream>
 #include <limits>
 #include <map>
 #include <string>
 #include <string_view>
 #include <vector>
-#include <ctype.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-#include <time.h>
 #include <unistd.h>
 
 #include "basehttp.h"
@@ -263,6 +263,21 @@ bool RequestState::HeaderLine(string const &Line)			/*{{{*/
       return true;
    }
 
+   if (stringcasecmp(Tag, "Retry-After:") == 0)
+   {
+      unsigned long _retry_after_s;
+      if (RFC1123StrToTime(Val, RetryAfter))
+      {
+	 return true;
+      }
+      if (StrToNum(Val.c_str(), _retry_after_s, 4, 10) == 1)
+      {
+	 RetryAfter = time(nullptr) + _retry_after_s;
+	 return true;
+      }
+      return _error->Error(_("Unknown date format"));
+   }
+
    if (Server->RangesAllowed && stringcasecmp(Tag, "Via:") == 0)
    {
       auto const parts = VectorizeString(Val, ' ');
@@ -884,7 +899,19 @@ int BaseHttpMethod::Loop()
 	       599, // Network Connect Timeout Error
 	    };
 	    if (std::find(std::begin(TransientCodes), std::end(TransientCodes), Req.Result) != std::end(TransientCodes))
-	       Fail(true);
+	    {
+	       if (Req.RetryAfter)
+	       {
+		  std::unordered_map<std::string, std::string> fields;
+		  fields["Retry-After"] = std::to_string(Req.RetryAfter);
+		  SetFailReason("TooManyRequests");
+		  FailWithContext(std::string("TooManyRequests"), true, fields);
+	       }
+	       else
+	       {
+		  Fail(true);
+	       }
+	    }
 	    else
 	       Fail();
 	    break;
diff --git a/methods/basehttp.h b/methods/basehttp.h
index 0f776b0..31a7a6b 100644
--- a/methods/basehttp.h
+++ b/methods/basehttp.h
@@ -15,10 +15,10 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/strutl.h>
 
+#include <ctime>
 #include <iostream>
 #include <memory>
 #include <string>
-#include <time.h>
 
 using std::cout;
 using std::endl;
@@ -54,9 +54,10 @@ struct RequestState
    time_t Date;
    HaveContent haveContent = HaveContent::TRI_UNKNOWN;
 
-   enum {Chunked,Stream,Closes} Encoding = Closes;
+   enum {Closes,Chunked,Stream} Encoding = Closes;
    enum {Header, Data} State = Header;
    std::string Location;
+   time_t RetryAfter = 0;
 
    FileFd File;
 
@@ -125,7 +126,7 @@ struct ServerState
 class BaseHttpMethod : public aptAuthConfMethod
 {
    protected:
-   virtual bool Fetch(FetchItem *) APT_OVERRIDE;
+   bool Fetch(FetchItem *) override;
 
    std::unique_ptr<ServerState> Server;
    std::string NextURI;
@@ -162,14 +163,14 @@ class BaseHttpMethod : public aptAuthConfMethod
    static std::string FailFile;
    static int FailFd;
    static time_t FailTime;
-   static APT_NORETURN void SigTerm(int);
+   [[noreturn]] static void SigTerm(int);
 
    int Loop();
 
    virtual void SendReq(FetchItem *Itm) = 0;
    virtual std::unique_ptr<ServerState> CreateServerState(URI const &uri) = 0;
    virtual void RotateDNS() = 0;
-   virtual bool Configuration(std::string Message) APT_OVERRIDE;
+   bool Configuration(std::string Message) override;
 
    bool AddProxyAuth(URI &Proxy, URI const &Server);
 
diff --git a/methods/cdrom.cc b/methods/cdrom.cc
index f534a06..88a10c0 100644
--- a/methods/cdrom.cc
+++ b/methods/cdrom.cc
@@ -42,10 +42,10 @@ class CDROMMethod : public aptMethod
  
    bool IsCorrectCD(URI want, string MountPath, string& NewID);
    bool AutoDetectAndMount(const URI, string &NewID);
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   bool Fetch(FetchItem *Itm) override;
    std::string GetID(std::string const &Name);
-   virtual void Exit() APT_OVERRIDE;
-   virtual bool Configuration(std::string Message) APT_OVERRIDE;
+   void Exit() override;
+   bool Configuration(std::string Message) override;
 
    public:
    
diff --git a/methods/connect.cc b/methods/connect.cc
index bc2fe1d..96c169e 100644
--- a/methods/connect.cc
+++ b/methods/connect.cc
@@ -1,12 +1,14 @@
 // -*- mode: cpp; mode: fold -*-
+// SPDX-License-Identifier: GPL-2.0+ and curl
 // Description								/*{{{*/
 /* ######################################################################
 
    Connect - Replacement connect call
 
    This was originally authored by Jason Gunthorpe <jgg@debian.org>
-   and is placed in the Public Domain, do with it what you will.
-      
+   and is placed in the Public Domain, do with it what you will. It
+   is now GPL-2.0+. See COPYING for details.
+
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
@@ -19,16 +21,17 @@
 #include <apt-pkg/srvrec.h>
 #include <apt-pkg/strutl.h>
 
-#include <gnutls/gnutls.h>
-#include <gnutls/x509.h>
+#include <openssl/err.h>
+#include <openssl/ssl.h>
 
+#include <cassert>
+#include <cerrno>
+#include <cstdio>
+#include <cstring>
 #include <list>
 #include <set>
 #include <sstream>
 #include <string>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
 #include <unistd.h>
 
 // Internet stuff
@@ -83,13 +86,13 @@ static bool ConnectionAllowed(char const * const Service, std::string const &Hos
 									/*}}}*/
 
 // File Descriptor based Fd /*{{{*/
-struct FdFd : public MethodFd
+struct FdFd final : public MethodFd
 {
    int fd = -1;
-   int Fd() APT_OVERRIDE { return fd; }
-   ssize_t Read(void *buf, size_t count) APT_OVERRIDE { return ::read(fd, buf, count); }
-   ssize_t Write(void *buf, size_t count) APT_OVERRIDE { return ::write(fd, buf, count); }
-   int Close() APT_OVERRIDE
+   int Fd() override { return fd; }
+   ssize_t Read(void *buf, size_t count) override { return ::read(fd, buf, count); }
+   ssize_t Write(void *buf, size_t count) override { return ::write(fd, buf, count); }
+   int Close() override
    {
       int result = 0;
       if (fd != -1)
@@ -798,229 +801,248 @@ ResultState UnwrapSocks(std::string Host, int Port, URI Proxy, std::unique_ptr<M
 
    return ResultState::SUCCESSFUL;
 }
-									/*}}}*/
+
 // UnwrapTLS - Handle TLS connections 					/*{{{*/
 // ---------------------------------------------------------------------
 /* Performs a TLS handshake on the socket */
-struct TlsFd : public MethodFd
+#define null_error(...) (_error->Error(__VA_ARGS__), nullptr)
+#define ssl_strerr() ERR_error_string(ERR_get_error(), nullptr)
+struct TlsFd final : public MethodFd
 {
-   std::unique_ptr<MethodFd> UnderlyingFd;
-   gnutls_session_t session;
-   gnutls_certificate_credentials_t credentials;
-   std::string hostname;
-   unsigned long Timeout;
+   std::unique_ptr<MethodFd> UnderlyingFd{};
 
-   int Fd() APT_OVERRIDE { return UnderlyingFd->Fd(); }
+   SSL *ssl{};
 
-   ssize_t Read(void *buf, size_t count) APT_OVERRIDE
+   std::string hostname{};
+   unsigned long Timeout{};
+   bool broken{false};
+
+   int Fd() override { return UnderlyingFd ? UnderlyingFd->Fd() : -1; }
+
+   ssize_t Read(void *buf, size_t count) override
    {
-      return HandleError(gnutls_record_recv(session, buf, count));
+      assert(ssl);
+      return HandleError(SSL_read(ssl, buf, count));
    }
-   ssize_t Write(void *buf, size_t count) APT_OVERRIDE
+   ssize_t Write(void *buf, size_t count) override
    {
-      return HandleError(gnutls_record_send(session, buf, count));
+      assert(ssl);
+      return HandleError(SSL_write(ssl, buf, count));
    }
 
-   ssize_t DoTLSHandshake()
+   ssize_t HandleError(ssize_t r)
    {
-      int err;
-      // Do the handshake. Our socket is non-blocking, so we need to call WaitFd()
-      // accordingly.
-      do
-      {
-         err = gnutls_handshake(session);
-         if ((err == GNUTLS_E_INTERRUPTED || err == GNUTLS_E_AGAIN) &&
-             WaitFd(this->Fd(), gnutls_record_get_direction(session) == 1, Timeout) == false)
-         {
-            _error->Errno("select", "Could not wait for server fd");
-            return err;
-         }
-      } while (err < 0 && gnutls_error_is_fatal(err) == 0);
-
-      if (err < 0)
+      assert(ssl);
+      if (r > 0)
+	 return r;
+
+      auto err = SSL_get_error(ssl, r);
+      switch (err)
       {
-         // Print reason why validation failed.
-         if (err == GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR)
-         {
-            gnutls_datum_t txt;
-            auto type = gnutls_certificate_type_get(session);
-            auto status = gnutls_session_get_verify_cert_status(session);
-            if (gnutls_certificate_verification_status_print(status, type, &txt, 0) == 0)
-            {
-               _error->Error("Certificate verification failed: %s", txt.data);
-            }
-            gnutls_free(txt.data);
-         }
-         _error->Error("Could not handshake: %s", gnutls_strerror(err));
+      case SSL_ERROR_WANT_READ:
+      case SSL_ERROR_WANT_WRITE:
+	 errno = EAGAIN;
+	 return -1;
+      case SSL_ERROR_ZERO_RETURN:
+	 // Remote host has closed connection
+	 errno = 0;
+	 return 0;
+      case SSL_ERROR_SYSCALL:
+	 broken = true;
+	 _error->Errno("openssl", "OpenSSL system call error: %s\n", ssl_strerr());
+	 return -1;
+      case SSL_ERROR_SSL:
+	 broken = true;
+	 errno = EIO;
+	 _error->Error("OpenSSL error: %s\n", ssl_strerr());
+	 return -1;
+      default:
+	 broken = true;
+	 errno = EIO;
+	 _error->Error("Unexpected OpenSSL error: %s\n", ssl_strerr());
+	 return -1;
       }
-      return err;
    }
 
-   template <typename T>
-   T HandleError(T err)
+   int Close() override
    {
-      // Server may request re-handshake if client certificates need to be provided
-      // based on resource requested
-      if (err == GNUTLS_E_REHANDSHAKE)
+      int res = 0;   // 0 or 1 are success
+      int lower = 0; // 0 is success
+
+      if (ssl)
       {
-        int rc = DoTLSHandshake();
-	// Only reset err if DoTLSHandshake() fails.
-        // Otherwise, we want to follow the original error path and set errno to EAGAIN
-        // so that the request is retried.
-        if (rc < 0)
-          err = rc;
+	 if (not broken && res)
+	    res = SSL_shutdown(ssl);
+	 if (res < 0)
+	    HandleError(res);
+	 SSL_free(ssl);
       }
+      ssl = nullptr;
 
-      if (err < 0 && gnutls_error_is_fatal(err))
-	 errno = EIO;
-      else if (err < 0)
-	 errno = EAGAIN;
-      else
-	 errno = 0;
-      return err;
-   }
+      if (UnderlyingFd)
+	 lower = UnderlyingFd->Close();
+      UnderlyingFd = nullptr;
 
-   int Close() APT_OVERRIDE
-   {
-      auto err = HandleError(gnutls_bye(session, GNUTLS_SHUT_RDWR));
-      auto lower = UnderlyingFd->Close();
-      return err < 0 ? HandleError(err) : lower;
+      // Return -1 on failure, 0 on success
+      return res < 0 || lower < 0 ? -1 : 0;
    }
 
-   bool HasPending() APT_OVERRIDE
+   bool HasPending() override
    {
-      return gnutls_record_check_pending(session) > 0;
+      assert(ssl);
+      // SSL_has_pending() can return 1 even if there are no actual bytes to read
+      // post decoding, so we need to SSL_peek() too to see if there are actual
+      // bytes as otherwise we end up busy looping (tested by DE -> AU https connection)
+      char buf;
+      return SSL_has_pending(ssl) && SSL_peek(ssl, &buf, 1) > 0;
    }
 };
 
-ResultState UnwrapTLS(std::string const &Host, std::unique_ptr<MethodFd> &Fd,
-		      unsigned long const Timeout, aptMethod * const Owner,
-		      aptConfigWrapperForMethods const * const OwnerConf)
+static BIO_METHOD *NewBioMethod()
 {
-   if (_config->FindB("Acquire::AllowTLS", true) == false)
+   BIO_METHOD *m = BIO_meth_new(BIO_TYPE_MEM, "OpenSSL APT BIO method");
+   if (not m)
    {
-      _error->Error("TLS support has been disabled: Acquire::AllowTLS is false.");
-      return ResultState::FATAL_ERROR;
+      _error->Error("SSL connection failed: %s - %s", ssl_strerr(), strerror(errno));
+      return nullptr;
    }
 
-   int err;
-   TlsFd *tlsFd = new TlsFd();
+   BIO_meth_set_ctrl(m, [](BIO *, int, long, void *) -> long
+		     { return 1; });
+   BIO_meth_set_write(m, [](BIO *bio, const char *buf, int size) -> int
+		      {
+      auto p = BIO_get_data(bio);
+      auto res = reinterpret_cast<MethodFd *>(p)->Write((void*)buf, size);
+      if (errno == EAGAIN)
+	 BIO_set_retry_write(bio);
+      return res; });
+   BIO_meth_set_read(m, [](BIO *bio, char *buf, int size) -> int
+		     {
+      auto p = BIO_get_data(bio);
+      auto res = reinterpret_cast<MethodFd *>(p)->Read(buf, size);
+      if (errno == EAGAIN)
+	 BIO_set_retry_read(bio);
+      return res; });
+
+   return m;
+}
 
-   tlsFd->hostname = Host;
-   tlsFd->UnderlyingFd = MethodFd::FromFd(-1); // For now
-   tlsFd->Timeout = Timeout;
+static SSL_CTX *GetContextForHost(std::string const &host, aptConfigWrapperForMethods const *const OwnerConf)
+{
+   static std::string lastHost;
+   static SSL_CTX *ctx;
+   auto Debug = OwnerConf->DebugEnabled();
 
-   if ((err = gnutls_init(&tlsFd->session, GNUTLS_CLIENT | GNUTLS_NONBLOCK)) < 0)
+   if (lastHost == host)
    {
-      _error->Error("Internal error: could not allocate credentials: %s", gnutls_strerror(err));
-      return ResultState::FATAL_ERROR;
+      if (Debug)
+	 std::clog << "Reusing context for " << host << std::endl;
+      return ctx;
    }
+   if (Debug)
+      std::clog << "Creating context for " << host << std::endl;
 
-   FdFd *fdfd = dynamic_cast<FdFd *>(Fd.get());
-   if (fdfd != nullptr)
-   {
-      gnutls_transport_set_int(tlsFd->session, fdfd->fd);
-   }
-   else
-   {
-      gnutls_transport_set_ptr(tlsFd->session, Fd.get());
-      gnutls_transport_set_pull_function(tlsFd->session,
-					 [](gnutls_transport_ptr_t p, void *buf, size_t size) -> ssize_t {
-					    return reinterpret_cast<MethodFd *>(p)->Read(buf, size);
-					 });
-      gnutls_transport_set_push_function(tlsFd->session,
-					 [](gnutls_transport_ptr_t p, const void *buf, size_t size) -> ssize_t {
-					    return reinterpret_cast<MethodFd *>(p)->Write((void *)buf, size);
-					 });
-   }
+   // Check unsupported options first, maybe we reuse the host context later, who knows
+   if (not OwnerConf->ConfigFind("IssuerCert", "").empty())
+      return null_error("The option '%s' is not supported anymore", "IssuerCert");
+   if (not OwnerConf->ConfigFind("SslForceVersion", "").empty())
+      return null_error("The option '%s' is not supported anymore", "SslForceVersion");
 
-   if ((err = gnutls_certificate_allocate_credentials(&tlsFd->credentials)) < 0)
-   {
-      _error->Error("Internal error: could not allocate credentials: %s", gnutls_strerror(err));
-      return ResultState::FATAL_ERROR;
-   }
+   // Delete the existing context and render it unusable
+   lastHost = "";
+   SSL_CTX_free(ctx);
 
-   // Credential setup
-   std::string fileinfo = OwnerConf->ConfigFind("CaInfo", "");
-   if (fileinfo.empty())
+   // We set the context here, but lastHost at the end to only allow reuse of fully initialized contexts
+   ctx = SSL_CTX_new(TLS_client_method());
+   if (ctx == nullptr)
+      return null_error("Could not create new SSL context: %s", ssl_strerr());
+
+   // Load the certificate authorities, either custom or default ones
+   if (auto const fileinfo = OwnerConf->ConfigFind("CaInfo", ""); not fileinfo.empty())
    {
-      // No CaInfo specified, use system trust store.
-      err = gnutls_certificate_set_x509_system_trust(tlsFd->credentials);
-      if (err == 0)
-	 Owner->Warning("No system certificates available. Try installing ca-certificates.");
-      else if (err < 0)
-      {
-	 _error->Error("Could not load system TLS certificates: %s", gnutls_strerror(err));
-	 return ResultState::FATAL_ERROR;
-      }
+      if (auto res = SSL_CTX_load_verify_file(ctx, fileinfo.c_str()); res != 1)
+	 return null_error("Could not load certificates from %s (CaInfo option): %s", fileinfo.c_str(), ssl_strerr());
    }
-   else
+   else if (auto err = SSL_CTX_set_default_verify_paths(ctx); err != 1)
+      return null_error("Could not load certificates: %s", ssl_strerr());
+
+   // Client certificate setup, such that clients can authenticate to the server
+   if (auto const cert = OwnerConf->ConfigFind("SslCert", ""); not cert.empty())
+      if (auto res = SSL_CTX_use_certificate_chain_file(ctx, cert.c_str()); res != 1)
+	 return null_error("Could not load client certificate (%s, SslCert option): %s", cert.c_str(), ssl_strerr());
+   if (auto const key = OwnerConf->ConfigFind("SslKey", ""); not key.empty())
+      if (auto res = SSL_CTX_use_PrivateKey_file(ctx, key.c_str(), SSL_FILETYPE_PEM); res != 1)
+	 return null_error("Could not load client or key (%s, SslKey option): %s", key.c_str(), ssl_strerr()), nullptr;
+
+   // Custom certificate revocation lists. We surely support all the niche cases.
+   if (auto const crlfile = OwnerConf->ConfigFind("CrlFile", ""); not crlfile.empty())
    {
-      // CA location has been set, use the specified one instead
-      gnutls_certificate_set_verify_flags(tlsFd->credentials, GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT);
-      err = gnutls_certificate_set_x509_trust_file(tlsFd->credentials, fileinfo.c_str(), GNUTLS_X509_FMT_PEM);
-      if (err < 0)
-      {
-	 _error->Error("Could not load certificates from %s (CaInfo option): %s", fileinfo.c_str(), gnutls_strerror(err));
-	 return ResultState::FATAL_ERROR;
-      }
+      // tell OpenSSL where to find CRL file that is used to check certificate  revocation.
+      // lifted from curl:
+      // Copyright (c) 1996 - 2023, Daniel Stenberg, <daniel@haxx.se>, and many
+      // contributors, see the THANKS file.
+      auto lookup = X509_STORE_add_lookup(SSL_CTX_get_cert_store(ctx),
+					  X509_LOOKUP_file());
+      if (not lookup || not X509_load_crl_file(lookup, crlfile.c_str(), X509_FILETYPE_PEM))
+	 return null_error("Could not load custom certificate revocation list %s (CrlFile option): %s", crlfile.c_str(), ssl_strerr());
+      /* Everything is fine. */
+      X509_STORE_set_flags(SSL_CTX_get_cert_store(ctx),
+			   X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL);
    }
 
-   if (not OwnerConf->ConfigFind("IssuerCert", "").empty())
+   lastHost = host;
+   return ctx;
+}
+
+ResultState UnwrapTLS(std::string const &Host, std::unique_ptr<MethodFd> &Fd,
+		      unsigned long const Timeout, aptMethod *const /*Owner*/,
+		      aptConfigWrapperForMethods const *const OwnerConf)
+{
+   if (_config->FindB("Acquire::AllowTLS", true) == false)
    {
-      _error->Error("The option '%s' is not supported anymore", "IssuerCert");
+      _error->Error("TLS support has been disabled: Acquire::AllowTLS is false.");
       return ResultState::FATAL_ERROR;
    }
-   if (not OwnerConf->ConfigFind("SslForceVersion", "").empty())
-   {
-      _error->Error("The option '%s' is not supported anymore", "SslForceVersion");
+
+   TlsFd *tlsFd = new TlsFd();
+
+   tlsFd->hostname = Host;
+   tlsFd->Timeout = Timeout;
+
+   if (auto ctx = GetContextForHost(Host, OwnerConf))
+      tlsFd->ssl = SSL_new(ctx);
+   else
       return ResultState::FATAL_ERROR;
-   }
 
-   // For client authentication, certificate file ...
-   std::string const cert = OwnerConf->ConfigFind("SslCert", "");
-   std::string const key = OwnerConf->ConfigFind("SslKey", "");
-   if (cert.empty() == false)
+   FdFd *fdfd = dynamic_cast<FdFd *>(Fd.get());
+   if (fdfd != nullptr)
    {
-      if ((err = gnutls_certificate_set_x509_key_file(
-	       tlsFd->credentials,
-	       cert.c_str(),
-	       key.empty() ? cert.c_str() : key.c_str(),
-	       GNUTLS_X509_FMT_PEM)) < 0)
-      {
-	 _error->Error("Could not load client certificate (%s, SslCert option) or key (%s, SslKey option): %s", cert.c_str(), key.c_str(), gnutls_strerror(err));
-	 return ResultState::FATAL_ERROR;
-      }
+      SSL_set_fd(tlsFd->ssl, fdfd->fd);
    }
-
-   // CRL file
-   std::string const crlfile = OwnerConf->ConfigFind("CrlFile", "");
-   if (crlfile.empty() == false)
+   else
    {
-      if ((err = gnutls_certificate_set_x509_crl_file(tlsFd->credentials,
-						      crlfile.c_str(),
-						      GNUTLS_X509_FMT_PEM)) < 0)
-      {
-	 _error->Error("Could not load custom certificate revocation list %s (CrlFile option): %s", crlfile.c_str(), gnutls_strerror(err));
+      static auto m = NewBioMethod();
+      if (m == nullptr)
 	 return ResultState::FATAL_ERROR;
-      }
-   }
 
-   if ((err = gnutls_credentials_set(tlsFd->session, GNUTLS_CRD_CERTIFICATE, tlsFd->credentials)) < 0)
-   {
-      _error->Error("Internal error: Could not add certificates to session: %s", gnutls_strerror(err));
-      return ResultState::FATAL_ERROR;
-   }
+      auto bio = BIO_new(m);
+      if (bio == nullptr)
+	 return ResultState::FATAL_ERROR;
 
-   if ((err = gnutls_set_default_priority(tlsFd->session)) < 0)
-   {
-      _error->Error("Internal error: Could not set algorithm preferences: %s", gnutls_strerror(err));
-      return ResultState::FATAL_ERROR;
+      BIO_set_data(bio, Fd.get());
+      BIO_up_ref(bio); // the following take one reference each
+      SSL_set0_rbio(tlsFd->ssl, bio);
+      SSL_set0_wbio(tlsFd->ssl, bio);
    }
 
    if (OwnerConf->ConfigFindB("Verify-Peer", true))
    {
-      gnutls_session_set_verify_cert(tlsFd->session, OwnerConf->ConfigFindB("Verify-Host", true) ? tlsFd->hostname.c_str() : nullptr, 0);
+      SSL_set_verify(tlsFd->ssl, SSL_VERIFY_PEER, nullptr);
+      if (auto res = SSL_set1_host(tlsFd->ssl, OwnerConf->ConfigFindB("Verify-Host", true) ? tlsFd->hostname.c_str() : nullptr); res != 1)
+      {
+	 _error->Error("Could not set hostname: %s", ssl_strerr());
+	 return ResultState::FATAL_ERROR;
+      }
    }
 
    // set SNI only if the hostname is really a name and not an address
@@ -1031,23 +1053,37 @@ ResultState UnwrapTLS(std::string const &Host, std::unique_ptr<MethodFd> &Fd,
       if (inet_pton(AF_INET, tlsFd->hostname.c_str(), &addr4) == 1 ||
 	  inet_pton(AF_INET6, tlsFd->hostname.c_str(), &addr6) == 1)
 	 /* not a host name */;
-      else if ((err = gnutls_server_name_set(tlsFd->session, GNUTLS_NAME_DNS, tlsFd->hostname.c_str(), tlsFd->hostname.length())) < 0)
+      else if (auto res = SSL_set_tlsext_host_name(tlsFd->ssl, tlsFd->hostname.c_str()); res != 1)
       {
-	 _error->Error("Could not set host name %s to indicate to server: %s", tlsFd->hostname.c_str(), gnutls_strerror(err));
+	 _error->Error("Could not set host name %s to indicate to server: %s", tlsFd->hostname.c_str(), ssl_strerr());
 	 return ResultState::FATAL_ERROR;
       }
    }
 
+   while (true)
+   {
+      auto res = SSL_connect(tlsFd->ssl);
+      if (res == 1)
+	 break;
+      switch (auto error = SSL_get_error(tlsFd->ssl, res))
+      {
+      case SSL_ERROR_WANT_READ:
+      case SSL_ERROR_WANT_WRITE:
+	 if (not WaitFd(Fd->Fd(), error == SSL_ERROR_WANT_WRITE, Timeout))
+	 {
+	    _error->Errno("select", "Could not wait for server fd");
+	    return ResultState::TRANSIENT_ERROR;
+	 }
+	 break;
+      default:
+	 _error->Error("SSL connection failed: %s / %s", ssl_strerr(), strerror(errno));
+	 return ResultState::TRANSIENT_ERROR;
+      }
+   }
+
    // Set the FD now, so closing it works reliably.
    tlsFd->UnderlyingFd = std::move(Fd);
    Fd.reset(tlsFd);
 
-   // Do the handshake.
-   err = tlsFd->DoTLSHandshake();
-
-   if (err < 0)
-      return ResultState::TRANSIENT_ERROR;
-
    return ResultState::SUCCESSFUL;
 }
-									/*}}}*/
diff --git a/methods/connect.h b/methods/connect.h
index 413484a..5c79049 100644
--- a/methods/connect.h
+++ b/methods/connect.h
@@ -9,9 +9,9 @@
 #ifndef CONNECT_H
 #define CONNECT_H
 
+#include <cstddef>
 #include <memory>
 #include <string>
-#include <stddef.h>
 
 #include "aptmethod.h"
 
diff --git a/methods/copy.cc b/methods/copy.cc
index 82eed15..e3f2a29 100644
--- a/methods/copy.cc
+++ b/methods/copy.cc
@@ -24,9 +24,9 @@
 #include <apti18n.h>
 									/*}}}*/
 
-class CopyMethod : public aptMethod
+class CopyMethod final : public aptMethod
 {
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   bool URIAcquire(std::string const &Message, FetchItem *Itm) override;
 
    public:
    CopyMethod() : aptMethod("copy", "1.0", SingleInstance | SendConfig | SendURIEncoded)
@@ -36,55 +36,71 @@ class CopyMethod : public aptMethod
 };
 
 // CopyMethod::Fetch - Fetch a file					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool CopyMethod::Fetch(FetchItem *Itm)
+bool CopyMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
 {
-   // this ensures that relative paths work in copy
-   std::string const File = DecodeSendURI(Itm->Uri.substr(Itm->Uri.find(':')+1));
-
-   // Stat the file and send a start message
-   struct stat Buf;
-   if (stat(File.c_str(),&Buf) != 0)
-      return _error->Errno("stat",_("Failed to stat"));
+   struct FileCopyType {
+      std::string name;
+      struct stat stat{};
+      explicit FileCopyType(std::string &&file) : name{std::move(file)} {}
+   };
+   std::vector<FileCopyType> files;
+   // this ensures that relative paths work
+   files.emplace_back(DecodeSendURI(Itm->Uri.substr(Itm->Uri.find(':')+1)));
+   for (auto const &AltPath : VectorizeString(LookupTag(Message, "Alternate-Paths"), '\n'))
+      files.emplace_back(CombineWithAlternatePath(flNotFile(files[0].name), DecodeSendURI(AltPath)));
+   files.erase(std::remove_if(files.begin(), files.end(), [](auto &file)
+			      { return stat(file.name.c_str(), &file.stat) != 0; }),
+	       files.end());
+   if (files.empty())
+      return _error->Errno("copy-stat", _("Failed to stat"));
 
    // Forumulate a result and send a start message
    FetchResult Res;
-   Res.Size = Buf.st_size;
    Res.Filename = Itm->DestFile;
-   Res.LastModified = Buf.st_mtime;
    Res.IMSHit = false;
-   URIStart(Res);
 
-   // just calc the hashes if the source and destination are identical
-   if (File == Itm->DestFile || Itm->DestFile == "/dev/null")
+   for (auto const &File : files)
    {
+      Res.Size = File.stat.st_size;
+      Res.LastModified = File.stat.st_mtime;
+
+      // just calc the hashes if the source and destination are identical
+      if (Itm->DestFile == "/dev/null" || File.name == Itm->DestFile)
+      {
+	 URIStart(Res);
+	 CalculateHashes(Itm, Res);
+	 URIDone(Res);
+	 return true;
+      }
+
+      FileFd From(File.name, FileFd::ReadOnly);
+      FileFd To(Itm->DestFile, FileFd::WriteAtomic);
+      To.EraseOnFailure();
+      if (not From.IsOpen() || not To.IsOpen())
+	 continue;
+
+      // Copy the file
+      URIStart(Res);
+      if (not CopyFile(From, To))
+      {
+	 To.OpFail();
+	 continue;
+      }
+      From.Close();
+      To.Close();
+
       CalculateHashes(Itm, Res);
-      URIDone(Res);
-      return true;
-   }
+      if (not Itm->ExpectedHashes.empty() && Itm->ExpectedHashes != Res.Hashes)
+	 continue;
 
-   // See if the file exists
-   FileFd From(File,FileFd::ReadOnly);
-   FileFd To(Itm->DestFile,FileFd::WriteAtomic);
-   To.EraseOnFailure();
+      if (not TransferModificationTimes(File.name.c_str(), Res.Filename.c_str(), Res.LastModified))
+	 continue;
 
-   // Copy the file
-   if (CopyFile(From,To) == false)
-   {
-      To.OpFail();
-      return false;
+      URIDone(Res);
+      return true;
    }
 
-   From.Close();
-   To.Close();
-
-   if (TransferModificationTimes(File.c_str(), Res.Filename.c_str(), Res.LastModified) == false)
-      return false;
-
-   CalculateHashes(Itm, Res);
-   URIDone(Res);
-   return true;
+   return false;
 }
 									/*}}}*/
 
diff --git a/methods/file.cc b/methods/file.cc
index b2fe133..2a17336 100644
--- a/methods/file.cc
+++ b/methods/file.cc
@@ -27,9 +27,9 @@
 #include <apti18n.h>
 									/*}}}*/
 
-class FileMethod : public aptMethod
+class FileMethod final : public aptMethod
 {
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   bool URIAcquire(std::string const &Message, FetchItem *Itm) override;
 
    public:
    FileMethod() : aptMethod("file", "1.0", SingleInstance | SendConfig | LocalOnly | SendURIEncoded)
@@ -41,86 +41,101 @@ class FileMethod : public aptMethod
 // FileMethod::Fetch - Fetch a file					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool FileMethod::Fetch(FetchItem *Itm)
+bool FileMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
 {
    URI Get(Itm->Uri);
-   std::string const File = DecodeSendURI(Get.Path);
-   FetchResult Res;
    if (Get.Host.empty() == false)
       return _error->Error(_("Invalid URI, local URIS must not start with //"));
 
-   struct stat Buf;
+   std::vector<std::string> Files;
+   Files.emplace_back(DecodeSendURI(Get.Path));
+   for (auto const &AltPath : VectorizeString(LookupTag(Message, "Alternate-Paths"), '\n'))
+      Files.emplace_back(CombineWithAlternatePath(flNotFile(Files[0]), DecodeSendURI(AltPath)));
+
+   FetchResult Res;
    // deal with destination files which might linger around
-   if (lstat(Itm->DestFile.c_str(), &Buf) == 0)
+   struct stat Buf;
+   if (lstat(Itm->DestFile.c_str(), &Buf) == 0 && S_ISLNK(Buf.st_mode) && Buf.st_size > 0)
+   {
+      char name[Buf.st_size + 1];
+      if (ssize_t const sp = readlink(Itm->DestFile.c_str(), name, Buf.st_size); sp == -1)
+      {
+	 Itm->LastModified = 0;
+	 RemoveFile("file", Itm->DestFile);
+      }
+   }
+
+   int olderrno = 0;
+   // See if the file exists
+   for (auto const &File : Files)
    {
-      if ((Buf.st_mode & S_IFREG) != 0)
+      if (stat(File.c_str(), &Buf) == 0)
       {
+	 Res.Size = Buf.st_size;
+	 Res.Filename = File;
+	 Res.LastModified = Buf.st_mtime;
+	 Res.IMSHit = false;
 	 if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
 	 {
-	    if (Itm->ExpectedHashes.VerifyFile(File))
-	    {
-	       Res.Filename = Itm->DestFile;
+	    auto const filesize = Itm->ExpectedHashes.FileSize();
+	    if (filesize != 0 && filesize == Res.Size)
 	       Res.IMSHit = true;
-	    }
 	 }
+	 break;
       }
+      if (olderrno == 0)
+	 olderrno = errno;
    }
-   if (Res.IMSHit != true)
-      RemoveFile("file", Itm->DestFile);
 
-   int olderrno = 0;
-   // See if the file exists
-   if (stat(File.c_str(),&Buf) == 0)
+   if (not Res.IMSHit)
    {
-      Res.Size = Buf.st_size;
-      Res.Filename = File;
-      Res.LastModified = Buf.st_mtime;
-      Res.IMSHit = false;
-      if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
+      RemoveFile("file", Itm->DestFile);
+      if (not Res.Filename.empty())
       {
-	 unsigned long long const filesize = Itm->ExpectedHashes.FileSize();
-	 if (filesize != 0 && filesize == Res.Size)
-	    Res.IMSHit = true;
+	 URIStart(Res);
+	 CalculateHashes(Itm, Res);
       }
-
-      CalculateHashes(Itm, Res);
    }
-   else
-      olderrno = errno;
-   if (Res.IMSHit == false)
-      URIStart(Res);
 
    // See if the uncompressed file exists and reuse it
    FetchResult AltRes;
-   AltRes.Filename.clear();
-   std::vector<std::string> extensions = APT::Configuration::getCompressorExtensions();
-   for (std::vector<std::string>::const_iterator ext = extensions.begin(); ext != extensions.end(); ++ext)
+   for (auto const &File : Files)
    {
-      if (APT::String::Endswith(File, *ext) == true)
+      for (const auto &ext : APT::Configuration::getCompressorExtensions())
       {
-	 std::string const unfile = File.substr(0, File.length() - ext->length());
-	 if (stat(unfile.c_str(),&Buf) == 0)
+	 if (APT::String::Endswith(File, ext))
 	 {
-	    AltRes.Size = Buf.st_size;
-	    AltRes.Filename = unfile;
-	    AltRes.LastModified = Buf.st_mtime;
-	    AltRes.IMSHit = false;
-	    if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
-	       AltRes.IMSHit = true;
-	    break;
+	    std::string const unfile = File.substr(0, File.length() - ext.length());
+	    if (stat(unfile.c_str(), &Buf) == 0)
+	    {
+	       AltRes.Size = Buf.st_size;
+	       AltRes.Filename = unfile;
+	       AltRes.LastModified = Buf.st_mtime;
+	       AltRes.IMSHit = false;
+	       if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
+		  AltRes.IMSHit = true;
+	       if (Res.Filename.empty())
+	       {
+		  URIStart(Res);
+		  CalculateHashes(Itm, AltRes);
+	       }
+	       break;
+	    }
+	    // no break here as we could have situations similar to '.gz' vs '.tar.gz' here
 	 }
-	 // no break here as we could have situations similar to '.gz' vs '.tar.gz' here
       }
+      if (not AltRes.Filename.empty())
+	 break;
    }
 
-   if (AltRes.Filename.empty() == false)
+   if (not AltRes.Filename.empty())
       URIDone(Res,&AltRes);
-   else if (Res.Filename.empty() == false)
+   else if (not Res.Filename.empty())
       URIDone(Res);
    else
    {
       errno = olderrno;
-      return _error->Errno(File.c_str(), _("File not found"));
+      return _error->Errno(Files[0].c_str(), _("File not found"));
    }
 
    return true;
diff --git a/methods/ftp.cc b/methods/ftp.cc
deleted file mode 100644
index aa0c069..0000000
--- a/methods/ftp.cc
+++ /dev/null
@@ -1,1188 +0,0 @@
-// -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/
-/* ######################################################################
-
-   FTP Acquire Method - This is the FTP acquire method for APT.
-
-   This is a very simple implementation that does not try to optimize
-   at all. Commands are sent synchronously with the FTP server (as the
-   rfc recommends, but it is not really necessary..) and no tricks are
-   done to speed things along.
-			
-   RFC 2428 describes the IPv6 FTP behavior
-   
-   ##################################################################### */
-									/*}}}*/
-// Include Files							/*{{{*/
-#include <config.h>
-
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-#include <apt-pkg/fileutl.h>
-#include <apt-pkg/hashes.h>
-#include <apt-pkg/strutl.h>
-
-#include <iostream>
-#include <ctype.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <unistd.h>
-
-// Internet stuff
-#include <netdb.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-
-#include "connect.h"
-#include "ftp.h"
-#include "rfc2553emu.h"
-
-#include <apti18n.h>
-									/*}}}*/
-
-using namespace std;
-
-/* This table is for the EPRT and EPSV commands, it maps the OS address
-   family to the IETF address families */
-struct AFMap
-{
-   unsigned long Family;
-   unsigned long IETFFamily;
-};
-
-#ifndef AF_INET6
-struct AFMap AFMap[] = {{AF_INET,1},{0, 0}};
-#else
-struct AFMap AFMap[] = {{AF_INET,1},{AF_INET6,2},{0, 0}};
-#endif
-
-unsigned long TimeOut = 30;
-URI Proxy;
-string FtpMethod::FailFile;
-int FtpMethod::FailFd = -1;
-time_t FtpMethod::FailTime = 0;
-
-// FTPConn::FTPConn - Constructor					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-FTPConn::FTPConn(URI Srv) : Len(0), ServerFd(MethodFd::FromFd(-1)), DataFd(-1),
-			    DataListenFd(-1), ServerName(Srv),
-			    ForceExtended(false), TryPassive(true),
-			    PeerAddrLen(0), ServerAddrLen(0)
-{
-   Debug = _config->FindB("Debug::Acquire::Ftp",false);
-   PasvAddr = 0;
-   Buffer[0] = '\0';
-}
-									/*}}}*/
-// FTPConn::~FTPConn - Destructor					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-FTPConn::~FTPConn()
-{
-   Close();
-}
-									/*}}}*/
-// FTPConn::Close - Close down the connection				/*{{{*/
-// ---------------------------------------------------------------------
-/* Just tear down the socket and data socket */
-void FTPConn::Close()
-{
-   ServerFd->Close();
-   close(DataFd);
-   DataFd = -1;
-   close(DataListenFd);
-   DataListenFd = -1;
-   
-   if (PasvAddr != 0)
-      freeaddrinfo(PasvAddr);
-   PasvAddr = 0;
-}
-									/*}}}*/
-// FTPConn::Open - Open a new connection				/*{{{*/
-// ---------------------------------------------------------------------
-/* Connect to the server using a non-blocking connection and perform a 
-   login. */
-ResultState FTPConn::Open(aptMethod *Owner)
-{
-   // Use the already open connection if possible.
-   if (ServerFd->Fd() != -1)
-      return ResultState::SUCCESSFUL;
-
-   Close();
-   
-   // Determine the proxy setting
-   string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host);
-   if (!SpecificProxy.empty())
-   {
-	   if (SpecificProxy == "DIRECT")
-		   Proxy = "";
-	   else
-		   Proxy = SpecificProxy;
-   }
-   else
-   {
-	   string DefProxy = _config->Find("Acquire::ftp::Proxy");
-	   if (!DefProxy.empty())
-	   {
-		   Proxy = DefProxy;
-	   }
-	   else
-	   {
-		   char* result = getenv("ftp_proxy");
-		   Proxy = result ? result : "";
-	   }
-   }
-
-   // Parse no_proxy, a , separated list of domains
-   if (getenv("no_proxy") != 0)
-   {
-      if (CheckDomainList(ServerName.Host,getenv("no_proxy")) == true)
-	 Proxy = "";
-   }
-   
-   // Determine what host and port to use based on the proxy settings
-   int Port = 0;
-   string Host;   
-   if (Proxy.empty() == true)
-   {
-      if (ServerName.Port != 0)
-	 Port = ServerName.Port;
-      Host = ServerName.Host;
-   }
-   else
-   {
-      if (Proxy.Port != 0)
-	 Port = Proxy.Port;
-      Host = Proxy.Host;
-   }
-
-   /* Connect to the remote server. Since FTP is connection oriented we
-      want to make sure we get a new server every time we reconnect */
-   RotateDNS();
-   auto result = Connect(Host, Port, "ftp", 21, ServerFd, TimeOut, Owner);
-   if (result != ResultState::SUCCESSFUL)
-      return result;
-
-   // Login must be before getpeername otherwise dante won't work.
-   Owner->Status(_("Logging in"));
-   result = Login();
-   if (result != ResultState::SUCCESSFUL)
-      return result;
-
-   // Get the remote server's address
-   PeerAddrLen = sizeof(PeerAddr);
-   if (getpeername(ServerFd->Fd(), (sockaddr *)&PeerAddr, &PeerAddrLen) != 0)
-   {
-      _error->Errno("getpeername", _("Unable to determine the peer name"));
-      return ResultState::TRANSIENT_ERROR;
-   }
-
-   // Get the local machine's address
-   ServerAddrLen = sizeof(ServerAddr);
-   if (getsockname(ServerFd->Fd(), (sockaddr *)&ServerAddr, &ServerAddrLen) != 0)
-   {
-      _error->Errno("getsockname", _("Unable to determine the local name"));
-      return ResultState::TRANSIENT_ERROR;
-   }
-
-   return ResultState::SUCCESSFUL;
-}
-									/*}}}*/
-// FTPConn::Login - Login to the remote server				/*{{{*/
-// ---------------------------------------------------------------------
-/* This performs both normal login and proxy login using a simples script
-   stored in the config file. */
-ResultState FTPConn::Login()
-{
-   unsigned int Tag;
-   string Msg;
-   
-   // Setup the variables needed for authentication
-   string User = "anonymous";
-   string Pass = "apt_get_ftp_2.1@debian.linux.user";
-
-   // Fill in the user/pass
-   if (ServerName.User.empty() == false)
-      User = ServerName.User;
-   if (ServerName.Password.empty() == false)
-      Pass = ServerName.Password;
-       
-   // Perform simple login
-   if (Proxy.empty() == true)
-   {
-      // Read the initial response
-      if (ReadResp(Tag,Msg) == false)
-	 return ResultState::TRANSIENT_ERROR;
-      if (Tag >= 400)
-      {
-	 _error->Error(_("The server refused the connection and said: %s"), Msg.c_str());
-	 return ResultState::FATAL_ERROR;
-      }
-
-      // Send the user
-      if (WriteMsg(Tag,Msg,"USER %s",User.c_str()) == false)
-	 return ResultState::TRANSIENT_ERROR;
-      if (Tag >= 400)
-      {
-	 _error->Error(_("USER failed, server said: %s"), Msg.c_str());
-	 return ResultState::FATAL_ERROR;
-      }
-
-      if (Tag == 331) { // 331 User name okay, need password.
-         // Send the Password
-         if (WriteMsg(Tag,Msg,"PASS %s",Pass.c_str()) == false)
-	    return ResultState::TRANSIENT_ERROR;
-	 if (Tag >= 400)
-	 {
-	    _error->Error(_("PASS failed, server said: %s"), Msg.c_str());
-	    return ResultState::FATAL_ERROR;
-	 }
-      }
-      
-      // Enter passive mode
-      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
-	 TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
-      else
-	 TryPassive = _config->FindB("Acquire::FTP::Passive",true);      
-   }
-   else
-   {      
-      // Read the initial response
-      if (ReadResp(Tag,Msg) == false)
-	 return ResultState::TRANSIENT_ERROR;
-      if (Tag >= 400)
-      {
-	 _error->Error(_("The server refused the connection and said: %s"), Msg.c_str());
-	 return ResultState::TRANSIENT_ERROR;
-      }
-
-      // Perform proxy script execution
-      Configuration::Item const *Opts = _config->Tree("Acquire::ftp::ProxyLogin");
-      if (Opts == 0 || Opts->Child == 0)
-      {
-	 _error->Error(_("A proxy server was specified but no login "
-			 "script, Acquire::ftp::ProxyLogin is empty."));
-	 return ResultState::FATAL_ERROR;
-      }
-      Opts = Opts->Child;
-
-      // Iterate over the entire login script
-      for (; Opts != 0; Opts = Opts->Next)
-      {
-	 if (Opts->Value.empty() == true)
-	    continue;
-
-	 // Substitute the variables into the command
-	 string Tmp = Opts->Value;
-	 Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
-	 Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
-	 Tmp = SubstVar(Tmp,"$(SITE_USER)",User);
-	 Tmp = SubstVar(Tmp,"$(SITE_PASS)",Pass);
-	 if (ServerName.Port != 0)
-	 {
-	    std::string SitePort;
-	    strprintf(SitePort, "%u", ServerName.Port);
-	    Tmp = SubstVar(Tmp,"$(SITE_PORT)", SitePort);
-	 }
-	 else
-	    Tmp = SubstVar(Tmp,"$(SITE_PORT)", "21");
-	 Tmp = SubstVar(Tmp,"$(SITE)",ServerName.Host);
-
-	 // Send the command
-	 if (WriteMsg(Tag,Msg,"%s",Tmp.c_str()) == false)
-	    return ResultState::TRANSIENT_ERROR;
-	 if (Tag >= 400)
-	 {
-	    _error->Error(_("Login script command '%s' failed, server said: %s"), Tmp.c_str(), Msg.c_str());
-	    return ResultState::FATAL_ERROR;
-	 }
-      }
-      
-      // Enter passive mode
-      TryPassive = false;
-      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
-	 TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
-      else
-      {
-	 if (_config->Exists("Acquire::FTP::Proxy::Passive") == true)
-	    TryPassive = _config->FindB("Acquire::FTP::Proxy::Passive",true);
-	 else
-	    TryPassive = _config->FindB("Acquire::FTP::Passive",true);
-      }            
-   }
-
-   // Force the use of extended commands
-   if (_config->Exists("Acquire::FTP::ForceExtended::" + ServerName.Host) == true)
-      ForceExtended = _config->FindB("Acquire::FTP::ForceExtended::" + ServerName.Host,true);
-   else
-      ForceExtended = _config->FindB("Acquire::FTP::ForceExtended",false);
-   
-   // Binary mode
-   if (WriteMsg(Tag,Msg,"TYPE I") == false)
-      return ResultState::TRANSIENT_ERROR;
-   if (Tag >= 400)
-   {
-      _error->Error(_("TYPE failed, server said: %s"), Msg.c_str());
-      return ResultState::FATAL_ERROR;
-   }
-   return ResultState::SUCCESSFUL;
-}
-									/*}}}*/
-// FTPConn::ReadLine - Read a line from the server			/*{{{*/
-// ---------------------------------------------------------------------
-/* This performs a very simple buffered read. */
-bool FTPConn::ReadLine(string &Text)
-{
-   if (ServerFd->Fd() == -1)
-      return false;
-   
-   // Suck in a line
-   while (Len < sizeof(Buffer))
-   {
-      // Scan the buffer for a new line
-      for (unsigned int I = 0; I != Len; I++)
-      {
-	 // Escape some special chars
-	 if (Buffer[I] == 0)
-	    Buffer[I] = '?';
-	 
-	 // End of line?
-	 if (Buffer[I] != '\n')
-	    continue;
-	 
-	 I++;
-	 Text = string(Buffer,I);
-	 memmove(Buffer,Buffer+I,Len - I);
-	 Len -= I;	 
-	 return true;
-      }
-
-      // Wait for some data..
-      if (WaitFd(ServerFd->Fd(), false, TimeOut) == false)
-      {
-	 Close();
-	 return _error->Error(_("Connection timeout"));
-      }
-      
-      // Suck it back
-      int Res = ServerFd->Read(Buffer + Len, sizeof(Buffer) - Len);
-      if (Res == 0)
-	 _error->Error(_("Server closed the connection"));
-      if (Res <= 0)
-      {
-	 _error->Errno("read",_("Read error"));
-	 Close();
-	 return false;
-      }      
-      Len += Res;
-   }
-
-   return _error->Error(_("A response overflowed the buffer."));
-}
-									/*}}}*/
-// FTPConn::ReadResp - Read a full response from the server		/*{{{*/
-// ---------------------------------------------------------------------
-/* This reads a reply code from the server, it handles both p */
-bool FTPConn::ReadResp(unsigned int &Ret,string &Text)
-{
-   // Grab the first line of the response
-   string Msg;
-   if (ReadLine(Msg) == false)
-       return false;
-   
-   // Get the ID code
-   char *End;   
-   Ret = strtol(Msg.c_str(),&End,10);
-   if (End - Msg.c_str() != 3)
-      return _error->Error(_("Protocol corruption"));
-
-   // All done ?
-   Text = Msg.c_str()+4;
-   if (*End == ' ')
-   {
-      if (Debug == true)
-	 cerr << "<- '" << QuoteString(Text,"") << "'" << endl;
-      return true;
-   }
-   
-   if (*End != '-')
-      return _error->Error(_("Protocol corruption"));
-   
-   /* Okay, here we do the continued message trick. This is foolish, but
-      proftpd follows the protocol as specified and wu-ftpd doesn't, so 
-      we filter. I wonder how many clients break if you use proftpd and
-      put a '- in the 3rd spot in the message? */
-   char Leader[4];
-   strncpy(Leader,Msg.c_str(),3);
-   Leader[3] = 0;
-   while (ReadLine(Msg) == true)
-   {
-      // Short, it must be using RFC continuation..
-      if (Msg.length() < 4)
-      {
-	 Text += Msg;
-	 continue;
-      }
-      
-      // Oops, finished
-      if (strncmp(Msg.c_str(),Leader,3) == 0 && Msg[3] == ' ')
-      {
-	 Text += Msg.c_str()+4;
-	 break;
-      }
-      
-      // This message has the wu-ftpd style reply code prefixed
-      if (strncmp(Msg.c_str(),Leader,3) == 0 && Msg[3] == '-')
-      {
-	 Text += Msg.c_str()+4;
-	 continue;
-      }
-      
-      // Must be RFC style prefixing
-      Text += Msg;
-   }	   
-
-   if (Debug == true && _error->PendingError() == false)
-      cerr << "<- '" << QuoteString(Text,"") << "'" << endl;
-      
-   return !_error->PendingError();
-}
-									/*}}}*/
-// FTPConn::WriteMsg - Send a message to the server			/*{{{*/
-// ---------------------------------------------------------------------
-/* Simple printf like function.. */
-bool FTPConn::WriteMsg(unsigned int &Ret,string &Text,const char *Fmt,...)
-{
-   va_list args;
-   va_start(args,Fmt);
-
-   // sprintf the description
-   char S[400];
-   vsnprintf(S,sizeof(S) - 4,Fmt,args);
-   strcat(S,"\r\n");
-   va_end(args);
- 
-   if (Debug == true)
-      cerr << "-> '" << QuoteString(S,"") << "'" << endl;
-
-   // Send it off
-   unsigned long Len = strlen(S);
-   unsigned long Start = 0;
-   while (Len != 0)
-   {
-      if (WaitFd(ServerFd->Fd(), true, TimeOut) == false)
-      {
-	 Close();
-	 return _error->Error(_("Connection timeout"));
-      }
-
-      int Res = ServerFd->Write(S + Start, Len);
-      if (Res <= 0)
-      {
-	 _error->Errno("write",_("Write error"));
-	 Close();
-	 return false;
-      }
-      
-      Len -= Res;
-      Start += Res;
-   }
-   
-   return ReadResp(Ret,Text);
-}
-									/*}}}*/
-// FTPConn::GoPasv - Enter Passive mode					/*{{{*/
-// ---------------------------------------------------------------------
-/* Try to enter passive mode, the return code does not indicate if passive
-   mode could or could not be established, only if there was a fatal error. 
-   We have to enter passive mode every time we make a data connection :| */
-bool FTPConn::GoPasv()
-{
-   /* The PASV command only works on IPv4 sockets, even though it could
-      in theory suppory IPv6 via an all zeros reply */
-   if (((struct sockaddr *)&PeerAddr)->sa_family != AF_INET || 
-       ForceExtended == true)
-      return ExtGoPasv();
-   
-   if (PasvAddr != 0)
-      freeaddrinfo(PasvAddr);
-   PasvAddr = 0;
-   
-   // Try to enable pasv mode
-   unsigned int Tag;
-   string Msg;
-   if (WriteMsg(Tag,Msg,"PASV") == false)
-      return false;
-   
-   // Unsupported function
-   string::size_type Pos = Msg.find('(');
-   if (Tag >= 400)
-      return true;
-
-   //wu-2.6.2(1) ftp server, returns
-   //227 Entering Passive Mode 193,219,28,140,150,111
-   //without parentheses, let's try to cope with it.
-   //wget(1) and ftp(1) can.
-   if (Pos == string::npos)
-      Pos = Msg.rfind(' ');
-   else
-      ++Pos;
-
-   // Still unsupported function
-   if (Pos == string::npos)
-      return true;
-
-   // Scan it
-   unsigned a0,a1,a2,a3,p0,p1;
-   if (sscanf(Msg.c_str() + Pos,"%u,%u,%u,%u,%u,%u",&a0,&a1,&a2,&a3,&p0,&p1) != 6)
-      return true;
-   
-   /* Some evil servers return 0 to mean their addr. We can actually speak
-      to these servers natively using IPv6 */
-   if (a0 == 0 && a1 == 0 && a2 == 0 && a3 == 0)
-   {
-      // Get the IP in text form
-      char Name[NI_MAXHOST];
-      char Service[NI_MAXSERV];
-      getnameinfo((struct sockaddr *)&PeerAddr,PeerAddrLen,
-		  Name,sizeof(Name),Service,sizeof(Service),
-		  NI_NUMERICHOST|NI_NUMERICSERV);
-      
-      struct addrinfo Hints;
-      memset(&Hints,0,sizeof(Hints));
-      Hints.ai_socktype = SOCK_STREAM;
-      Hints.ai_family = ((struct sockaddr *)&PeerAddr)->sa_family;
-      Hints.ai_flags |= AI_NUMERICHOST;
-      
-      // Get a new passive address.
-      char Port[100];
-      snprintf(Port,sizeof(Port),"%u",(p0 << 8) + p1);
-      if (getaddrinfo(Name,Port,&Hints,&PasvAddr) != 0)
-	 return true;
-      return true;
-   }
-   
-   struct addrinfo Hints;
-   memset(&Hints,0,sizeof(Hints));
-   Hints.ai_socktype = SOCK_STREAM;
-   Hints.ai_family = AF_INET;
-   Hints.ai_flags |= AI_NUMERICHOST;
-   
-   // Get a new passive address.
-   char Port[100];
-   snprintf(Port,sizeof(Port),"%u",(p0 << 8) + p1);
-   char Name[100];
-   snprintf(Name,sizeof(Name),"%u.%u.%u.%u",a0,a1,a2,a3);
-   if (getaddrinfo(Name,Port,&Hints,&PasvAddr) != 0)
-      return true;
-   return true;
-}
-									/*}}}*/
-// FTPConn::ExtGoPasv - Enter Extended Passive mode			/*{{{*/
-// ---------------------------------------------------------------------
-/* Try to enter extended passive mode. See GoPasv above and RFC 2428 */
-bool FTPConn::ExtGoPasv()
-{
-   if (PasvAddr != 0)
-      freeaddrinfo(PasvAddr);
-   PasvAddr = 0;
-   
-   // Try to enable pasv mode
-   unsigned int Tag;
-   string Msg;
-   if (WriteMsg(Tag,Msg,"EPSV") == false)
-      return false;
-   
-   // Unsupported function
-   string::size_type Pos = Msg.find('(');
-   if (Tag >= 400 || Pos == string::npos)
-      return true;
-
-   // Scan it   
-   string::const_iterator List[4];
-   unsigned Count = 0;
-   Pos++;
-   for (string::const_iterator I = Msg.begin() + Pos; I < Msg.end(); ++I)
-   {
-      if (*I != Msg[Pos])
-	 continue;
-      if (Count >= 4)
-	 return true;
-      List[Count++] = I;
-   }
-   if (Count != 4)
-      return true;
-   
-   // Break it up ..
-   unsigned long Proto = 0;
-   unsigned long Port = 0;
-   string IP;
-   IP = string(List[1]+1,List[2]);
-   Port = atoi(string(List[2]+1,List[3]).c_str());
-   if (IP.empty() == false)
-      Proto = atoi(string(List[0]+1,List[1]).c_str());
-   
-   if (Port == 0)
-      return false;
-
-   // String version of the port
-   char PStr[100];
-   snprintf(PStr,sizeof(PStr),"%lu",Port);
-
-   // Get the IP in text form
-   struct addrinfo Hints;
-   memset(&Hints,0,sizeof(Hints));
-   Hints.ai_socktype = SOCK_STREAM;
-   Hints.ai_flags |= AI_NUMERICHOST;
-   
-   /* The RFC defined case, connect to the old IP/protocol using the
-      new port. */
-   if (IP.empty() == true)
-   {
-      // Get the IP in text form
-      char Name[NI_MAXHOST];
-      char Service[NI_MAXSERV];
-      getnameinfo((struct sockaddr *)&PeerAddr,PeerAddrLen,
-		  Name,sizeof(Name),Service,sizeof(Service),
-		  NI_NUMERICHOST|NI_NUMERICSERV);
-      IP = Name;
-      Hints.ai_family = ((struct sockaddr *)&PeerAddr)->sa_family;
-   }
-   else
-   {
-      // Get the family..
-      Hints.ai_family = 0;
-      for (unsigned J = 0; AFMap[J].Family != 0; J++)
-	 if (AFMap[J].IETFFamily == Proto)
-	    Hints.ai_family = AFMap[J].Family;
-      if (Hints.ai_family == 0)
-	 return true;
-   }
-   
-   // Get a new passive address.
-   if (getaddrinfo(IP.c_str(),PStr,&Hints,&PasvAddr) != 0)
-      return true;
-   
-   return true;
-}
-									/*}}}*/
-// FTPConn::Size - Return the size of a file				/*{{{*/
-// ---------------------------------------------------------------------
-/* Grab the file size from the server, 0 means no size or empty file */
-bool FTPConn::Size(const char *Path,unsigned long long &Size)
-{
-   // Query the size
-   unsigned int Tag;
-   string Msg;
-   Size = 0;
-   if (WriteMsg(Tag,Msg,"SIZE %s",Path) == false)
-      return false;
-   
-   char *End;
-   Size = strtoull(Msg.c_str(),&End,10);
-   if (Tag >= 400 || End == Msg.c_str())
-      Size = 0;
-   return true;
-}
-									/*}}}*/
-// FTPConn::ModTime - Return the modification time of the file		/*{{{*/
-// ---------------------------------------------------------------------
-/* Like Size no error is returned if the command is not supported. If the
-   command fails then time is set to the current time of day to fool 
-   date checks. */
-bool FTPConn::ModTime(const char *Path, time_t &Time)
-{
-   Time = time(&Time);
-   
-   // Query the mod time
-   unsigned int Tag;
-   string Msg;
-   if (WriteMsg(Tag,Msg,"MDTM %s",Path) == false)
-      return false;
-   if (Tag >= 400 || Msg.empty() == true || isdigit(Msg[0]) == 0)
-      return true;
-   
-   // Parse it
-   return FTPMDTMStrToTime(Msg.c_str(), Time);
-}
-									/*}}}*/
-// FTPConn::CreateDataFd - Get a data connection			/*{{{*/
-// ---------------------------------------------------------------------
-/* Create the data connection. Call FinalizeDataFd after this though.. */
-bool FTPConn::CreateDataFd()
-{
-   close(DataFd);
-   DataFd = -1;
-   
-   // Attempt to enter passive mode.
-   if (TryPassive == true)
-   {
-      if (GoPasv() == false)
-	 return false;
-      
-      // Oops, didn't work out, don't bother trying again.
-      if (PasvAddr == 0)
-	 TryPassive = false;
-   }
-   
-   // Passive mode?
-   if (PasvAddr != 0)
-   {
-      // Get a socket
-      if ((DataFd = socket(PasvAddr->ai_family,PasvAddr->ai_socktype,
-			   PasvAddr->ai_protocol)) < 0)
-	 return _error->Errno("socket",_("Could not create a socket"));
-      
-      // Connect to the server
-      SetNonBlock(DataFd,true);
-      if (connect(DataFd,PasvAddr->ai_addr,PasvAddr->ai_addrlen) < 0 &&
-	  errno != EINPROGRESS)
-	 return _error->Errno("socket",_("Could not create a socket"));
-   
-      /* This implements a timeout for connect by opening the connection
-         nonblocking */
-      if (WaitFd(DataFd,true,TimeOut) == false)
-	 return _error->Error(_("Could not connect data socket, connection timed out"));
-      unsigned int Err;
-      unsigned int Len = sizeof(Err);
-      if (getsockopt(DataFd,SOL_SOCKET,SO_ERROR,&Err,&Len) != 0)
-	 return _error->Errno("getsockopt",_("Failed"));
-      if (Err != 0)
-	 return _error->Error(_("Could not connect passive socket."));
-
-      return true;
-   }
-   
-   // Port mode :<
-   close(DataListenFd);
-   DataListenFd = -1;
-
-   // Get the information for a listening socket.
-   struct addrinfo *BindAddr = NULL;
-   struct addrinfo Hints;
-   memset(&Hints,0,sizeof(Hints));
-   Hints.ai_socktype = SOCK_STREAM;
-   Hints.ai_flags |= AI_PASSIVE;
-   Hints.ai_family = ((struct sockaddr *)&ServerAddr)->sa_family;
-   if (getaddrinfo(0,"0",&Hints,&BindAddr) != 0 || BindAddr == NULL)
-      return _error->Error(_("getaddrinfo was unable to get a listening socket"));
-   
-   // Construct the socket
-   if ((DataListenFd = socket(BindAddr->ai_family,BindAddr->ai_socktype,
-			      BindAddr->ai_protocol)) < 0)
-   {
-      freeaddrinfo(BindAddr);
-      return _error->Errno("socket",_("Could not create a socket"));
-   }
-   
-   // Bind and listen
-   if (::bind(DataListenFd,BindAddr->ai_addr,BindAddr->ai_addrlen) < 0)
-   {
-      freeaddrinfo(BindAddr);
-      return _error->Errno("bind",_("Could not bind a socket"));
-   }
-   freeaddrinfo(BindAddr);   
-   if (listen(DataListenFd,1) < 0)
-      return _error->Errno("listen",_("Could not listen on the socket"));
-   SetNonBlock(DataListenFd,true);
-   
-   // Determine the name to send to the remote
-   struct sockaddr_storage Addr;
-   socklen_t AddrLen = sizeof(Addr);
-   if (getsockname(DataListenFd,(sockaddr *)&Addr,&AddrLen) < 0)
-      return _error->Errno("getsockname",_("Could not determine the socket's name"));
-
-
-   // Reverse the address. We need the server address and the data port.
-   char Name[NI_MAXHOST];
-   char Service[NI_MAXSERV];
-   char Service2[NI_MAXSERV];
-   getnameinfo((struct sockaddr *)&Addr,AddrLen,
-	       Name,sizeof(Name),Service,sizeof(Service),
-	       NI_NUMERICHOST|NI_NUMERICSERV);
-   getnameinfo((struct sockaddr *)&ServerAddr,ServerAddrLen,
-	       Name,sizeof(Name),Service2,sizeof(Service2),
-	       NI_NUMERICHOST|NI_NUMERICSERV);
-
-   // Send off an IPv4 address in the old port format
-   if (((struct sockaddr *)&Addr)->sa_family == AF_INET && 
-       ForceExtended == false)
-   {
-      // Convert the dots in the quad into commas
-      for (char *I = Name; *I != 0; I++)
-	 if (*I == '.')
-	    *I = ',';
-      unsigned long Port = atoi(Service);
-      
-      // Send the port command
-      unsigned int Tag;
-      string Msg;
-      if (WriteMsg(Tag,Msg,"PORT %s,%d,%d",
-		   Name,
-		   (int)(Port >> 8) & 0xff, (int)(Port & 0xff)) == false)
-	 return false;
-      if (Tag >= 400)
-	 return _error->Error(_("Unable to send PORT command"));
-      return true;
-   }
-
-   // Construct an EPRT command
-   unsigned Proto = 0;
-   for (unsigned J = 0; AFMap[J].Family != 0; J++)
-      if (AFMap[J].Family == ((struct sockaddr *)&Addr)->sa_family)
-	 Proto = AFMap[J].IETFFamily;
-   if (Proto == 0)
-      return _error->Error(_("Unknown address family %u (AF_*)"),
-			   ((struct sockaddr *)&Addr)->sa_family);
-   
-   // Send the EPRT command
-   unsigned int Tag;
-   string Msg;
-   if (WriteMsg(Tag,Msg,"EPRT |%u|%s|%s|",Proto,Name,Service) == false)
-      return false;
-   if (Tag >= 400)
-      return _error->Error(_("EPRT failed, server said: %s"),Msg.c_str());
-   return true;
-}
-									/*}}}*/
-// FTPConn::Finalize - Complete the Data connection			/*{{{*/
-// ---------------------------------------------------------------------
-/* If the connection is in port mode this waits for the other end to hook
-   up to us. */
-bool FTPConn::Finalize()
-{
-   // Passive mode? Do nothing
-   if (PasvAddr != 0)
-      return true;
-   
-   // Close any old socket..
-   close(DataFd);
-   DataFd = -1;
-   
-   // Wait for someone to connect..
-   if (WaitFd(DataListenFd,false,TimeOut) == false)
-      return _error->Error(_("Data socket connect timed out"));
-      
-   // Accept the connection
-   struct sockaddr_in Addr;
-   socklen_t Len = sizeof(Addr);
-   DataFd = accept(DataListenFd,(struct sockaddr *)&Addr,&Len);
-   if (DataFd < 0)
-      return _error->Errno("accept",_("Unable to accept connection"));
-
-   close(DataListenFd);
-   DataListenFd = -1;
-   
-   return true;
-}
-									/*}}}*/
-// FTPConn::Get - Get a file						/*{{{*/
-// ---------------------------------------------------------------------
-/* This opens a data connection, sends REST and RETR and then
-   transfers the file over. */
-bool FTPConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
-		  Hashes &Hash,bool &Missing, unsigned long long MaximumSize,
-                  pkgAcqMethod *Owner)
-{
-   Missing = false;
-   if (CreateDataFd() == false)
-      return false;
-
-   unsigned int Tag;
-   string Msg;   
-   if (Resume != 0)
-   {      
-      if (WriteMsg(Tag,Msg,"REST %u",Resume) == false)
-	 return false;
-      if (Tag >= 400)
-	 Resume = 0;
-   }
-   
-   if (To.Truncate(Resume) == false)
-      return false;
-
-   if (To.Seek(0) == false)
-      return false;
-   
-   if (Resume != 0)
-   {
-      if (Hash.AddFD(To,Resume) == false)
-      {
-	 _error->Errno("read",_("Problem hashing file"));
-	 return false;
-      }
-   }
-   
-   // Send the get command
-   if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
-      return false;
-   
-   if (Tag >= 400)
-   {
-      if (Tag == 550)
-	 Missing = true;
-      return _error->Error(_("Unable to fetch file, server said '%s'"),Msg.c_str());
-   }
-   
-   // Finish off the data connection
-   if (Finalize() == false)
-      return false;
-   
-   // Copy loop
-   unsigned char Buffer[4096];
-   while (1)
-   {
-      // Wait for some data..
-      if (WaitFd(DataFd,false,TimeOut) == false)
-      {
-	 Close();
-	 return _error->Error(_("Data socket timed out"));
-      }
-      
-      // Read the data..
-      int Res = read(DataFd,Buffer,sizeof(Buffer));
-      if (Res == 0)
-	 break;
-      if (Res < 0)
-      {
-	 if (errno == EAGAIN)
-	    continue;
-	 break;
-      }
-   
-      Hash.Add(Buffer,Res);
-      if (To.Write(Buffer,Res) == false)
-      {
-	 Close();
-	 return false;
-      }
-
-      if (MaximumSize > 0 && To.Tell() > MaximumSize)
-      {
-         Owner->SetFailReason("MaximumSizeExceeded");
-	 return _error->Error(_("File has unexpected size (%llu != %llu). Mirror sync in progress?"),
-			      To.Tell(), MaximumSize);
-      }
-   }
-
-   // All done
-   close(DataFd);
-   DataFd = -1;
-   
-   // Read the closing message from the server
-   if (ReadResp(Tag,Msg) == false)
-      return false;
-   if (Tag >= 400)
-      return _error->Error(_("Data transfer failed, server said '%s'"),Msg.c_str());
-   return true;
-}
-									/*}}}*/
-
-// FtpMethod::FtpMethod - Constructor					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-FtpMethod::FtpMethod() : aptAuthConfMethod("ftp", "1.0", SendConfig | SendURIEncoded)
-{
-   SeccompFlags = aptMethod::BASE | aptMethod::NETWORK;
-   signal(SIGTERM,SigTerm);
-   signal(SIGINT,SigTerm);
-   
-   Server = 0;
-   FailFd = -1;
-}
-									/*}}}*/
-// FtpMethod::SigTerm - Handle a fatal signal				/*{{{*/
-// ---------------------------------------------------------------------
-/* This closes and timestamps the open file. This is necessary to get
-   resume behavior on user abort */
-void FtpMethod::SigTerm(int)
-{
-   if (FailFd == -1)
-      _exit(100);
-
-   // Timestamp
-   struct timeval times[2];
-   times[0].tv_sec = FailTime;
-   times[1].tv_sec = FailTime;
-   times[0].tv_usec = times[1].tv_usec = 0;
-   utimes(FailFile.c_str(), times);
-
-   close(FailFd);
-
-   _exit(100);
-}
-									/*}}}*/
-// FtpMethod::Configuration - Handle a configuration message		/*{{{*/
-// ---------------------------------------------------------------------
-/* We stash the desired pipeline depth */
-bool FtpMethod::Configuration(string Message)
-{
-   if (aptAuthConfMethod::Configuration(Message) == false)
-      return false;
-
-   TimeOut = _config->FindI("Acquire::Ftp::Timeout",TimeOut);
-
-   return true;
-}
-									/*}}}*/
-// FtpMethod::Fetch - Fetch a file					/*{{{*/
-// ---------------------------------------------------------------------
-/* Fetch a single file, called by the base class..  */
-bool FtpMethod::Fetch(FetchItem *Itm)
-{
-   URI Get(Itm->Uri);
-   auto const File = DecodeSendURI(Get.Path);
-   FetchResult Res;
-   Res.Filename = Itm->DestFile;
-   Res.IMSHit = false;
-
-   MaybeAddAuthTo(Get);
-
-   // Connect to the server
-   if (Server == 0 || Server->Comp(Get) == false)
-   {
-      delete Server;
-      Server = new FTPConn(Get);
-   }
-
-   // Could not connect is a transient error..
-   switch (Server->Open(this))
-   {
-   case ResultState::TRANSIENT_ERROR:
-      Server->Close();
-      Fail(true);
-      return true;
-   case ResultState::FATAL_ERROR:
-      Server->Close();
-      Fail(false);
-      return true;
-   case ResultState::SUCCESSFUL:
-      break;
-   }
-
-   // Get the files information
-   Status(_("Query"));
-   unsigned long long Size;
-   if (not Server->Size(File.c_str(), Size) ||
-       not Server->ModTime(File.c_str(), FailTime))
-   {
-      Fail(true);
-      return true;
-   }
-   Res.Size = Size;
-
-   // See if it is an IMS hit
-   if (Itm->LastModified == FailTime)
-   {
-      Res.Size = 0;
-      Res.IMSHit = true;
-      URIDone(Res);
-      return true;
-   }
-   
-   // See if the file exists
-   struct stat Buf;
-   if (stat(Itm->DestFile.c_str(),&Buf) == 0)
-   {
-      if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime)
-      {
-	 Res.Size = Buf.st_size;
-	 Res.LastModified = Buf.st_mtime;
-	 Res.ResumePoint = Buf.st_size;
-	 URIDone(Res);
-	 return true;
-      }
-      
-      // Resume?
-      if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size)
-	 Res.ResumePoint = Buf.st_size;
-   }
-   
-   // Open the file
-   Hashes Hash(Itm->ExpectedHashes);
-   {
-      FileFd Fd(Itm->DestFile,FileFd::WriteAny);
-      if (_error->PendingError() == true)
-	 return false;
-      
-      URIStart(Res);
-      
-      FailFile = Itm->DestFile;
-      (void)(FailFile.c_str()); // Make sure we don't do a malloc in the signal handler
-      FailFd = Fd.Fd();
-      
-      bool Missing;
-      if (not Server->Get(File.c_str(), Fd, Res.ResumePoint, Hash, Missing, Itm->MaximumSize, this))
-      {
-	 Fd.Close();
-
-	 // Timestamp
-	 struct timeval times[2];
-	 times[0].tv_sec = FailTime;
-	 times[1].tv_sec = FailTime;
-	 times[0].tv_usec = times[1].tv_usec = 0;
-	 utimes(FailFile.c_str(), times);
-
-	 // If the file is missing we hard fail and delete the destfile
-	 // otherwise transient fail
-	 if (Missing == true) {
-	    RemoveFile("ftp", FailFile);
-	    return false;
-	 }
-	 Fail(true);
-	 return true;
-      }
-
-      Res.Size = Fd.Size();
-
-      // Timestamp
-      struct timeval times[2];
-      times[0].tv_sec = FailTime;
-      times[1].tv_sec = FailTime;
-      times[0].tv_usec = times[1].tv_usec = 0;
-      utimes(Fd.Name().c_str(), times);
-      FailFd = -1;
-   }
-
-   Res.LastModified = FailTime;
-   Res.TakeHashes(Hash);
-
-   URIDone(Res);
-
-   return true;
-}
-									/*}}}*/
-
-int main(int, const char *argv[])
-{
-   /* See if we should be come the http client - we do this for http
-      proxy urls */
-   if (getenv("ftp_proxy") != 0)
-   {
-      URI Proxy(string(getenv("ftp_proxy")));
-
-      // Run the HTTP method
-      if (Proxy.Access == "http")
-      {
-	 // Copy over the environment setting
-	 char S[300];
-	 snprintf(S,sizeof(S),"http_proxy=%s",getenv("ftp_proxy"));
-	 putenv(S);
-	 putenv((char *)"no_proxy=");
-	 
-	 // Run the http method
-	 string Path = flNotFile(argv[0]) + "http";
-	 execl(Path.c_str(),Path.c_str(),(char *)NULL);
-	 cerr << _("Unable to invoke ") << Path << endl;
-	 exit(100);
-      }      
-   }
-   return FtpMethod().Run();
-}
diff --git a/methods/ftp.h b/methods/ftp.h
deleted file mode 100644
index da9887b..0000000
--- a/methods/ftp.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/
-/* ######################################################################
-
-   FTP Acquire Method - This is the FTP acquire method for APT.
-
-   ##################################################################### */
-									/*}}}*/
-#ifndef APT_FTP_H
-#define APT_FTP_H
-
-#include "aptmethod.h"
-#include "connect.h"
-#include <apt-pkg/strutl.h>
-
-#include <string>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <time.h>
-
-class FTPConn
-{
-   char Buffer[1024*10];
-   unsigned long Len;
-   std::unique_ptr<MethodFd> ServerFd;
-   int DataFd;
-   int DataListenFd;
-   URI ServerName;
-   bool ForceExtended;
-   bool TryPassive;
-   bool Debug;
-
-   struct addrinfo *PasvAddr;
-   
-   // Generic Peer Address
-   struct sockaddr_storage PeerAddr;
-   socklen_t PeerAddrLen;
-   
-   // Generic Server Address (us)
-   struct sockaddr_storage ServerAddr;
-   socklen_t ServerAddrLen;
-   
-   // Private helper functions
-   bool ReadLine(std::string &Text);
-   ResultState Login();
-   bool CreateDataFd();
-   bool Finalize();
-   
-   public:
-
-   bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port && Other.User == ServerName.User && Other.Password == ServerName.Password; };
-   
-   // Raw connection IO
-   bool ReadResp(unsigned int &Ret,std::string &Text);
-   bool WriteMsg(unsigned int &Ret,std::string &Text,const char *Fmt,...);
-   
-   // Connection control
-   ResultState Open(aptMethod *Owner);
-   void Close();   
-   bool GoPasv();
-   bool ExtGoPasv();
-   
-   // Query
-   bool Size(const char *Path,unsigned long long &Size);
-   bool ModTime(const char *Path, time_t &Time);
-   bool Get(const char *Path,FileFd &To,unsigned long long Resume,
-	    Hashes &MD5,bool &Missing, unsigned long long MaximumSize,
-            pkgAcqMethod *Owner);
-   
-   explicit FTPConn(URI Srv);
-   ~FTPConn();
-};
-
-class FtpMethod : public aptAuthConfMethod
-{
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
-   virtual bool Configuration(std::string Message) APT_OVERRIDE;
-   
-   FTPConn *Server;
-   
-   static std::string FailFile;
-   static int FailFd;
-   static time_t FailTime;
-   static APT_NORETURN void SigTerm(int);
-   
-   public:
-   
-   FtpMethod();
-};
-
-#endif
diff --git a/methods/gpgv.cc b/methods/gpgv.cc
index 267b43e..ecdbe58 100644
--- a/methods/gpgv.cc
+++ b/methods/gpgv.cc
@@ -7,12 +7,12 @@
 #include <apt-pkg/gpgv.h>
 #include <apt-pkg/strutl.h>
 
-#include <ctype.h>
-#include <errno.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cctype>
+#include <cerrno>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <sys/wait.h>
 #include <unistd.h>
 
@@ -40,6 +40,9 @@ using std::vector;
 #define GNUPGEXPSIG "[GNUPG:] EXPSIG"
 #define GNUPGREVKEYSIG "[GNUPG:] REVKEYSIG"
 #define GNUPGNODATA "[GNUPG:] NODATA"
+#define GNUPGWARNING "[GNUPG:] WARNING"
+#define GNUPGERROR "[GNUPG:] ERROR"
+#define GNUPGASSERT_PUBKEY_ALGO "[GNUPG:] ASSERT_PUBKEY_ALGO"
 #define APTKEYWARNING "[APTKEY:] WARNING"
 #define APTKEYERROR "[APTKEY:] ERROR"
 
@@ -65,7 +68,7 @@ struct Digest {
    }
 };
 
-static constexpr Digest Digests[] = {
+static constexpr std::array<Digest,12> Digests = {{
    {Digest::State::Untrusted, "Invalid digest"},
    {Digest::State::Untrusted, "MD5"},
    {Digest::State::Untrusted, "SHA1"},
@@ -78,17 +81,14 @@ static constexpr Digest Digests[] = {
    {Digest::State::Trusted, "SHA384"},
    {Digest::State::Trusted, "SHA512"},
    {Digest::State::Trusted, "SHA224"},
-};
+}};
 
-static Digest FindDigest(std::string const & Digest)
+static Digest FindDigest(std::string const &Digest)
 {
    int id = atoi(Digest.c_str());
-   if (id >= 0 && static_cast<unsigned>(id) < APT_ARRAY_SIZE(Digests))
-   {
+   if (id >= 0 && static_cast<unsigned>(id) < Digests.size())
       return Digests[id];
-   } else {
-      return Digests[0];
-   }
+   return Digests[0];
 }
 
 struct Signer {
@@ -106,9 +106,10 @@ static bool IsTheSameKey(std::string const &validsig, std::string const &goodsig
 struct APT_HIDDEN SignersStorage {
    std::vector<std::string> Good;
    std::vector<std::string> Bad;
-   std::vector<std::string> Worthless;
+   std::vector<Signer> Worthless;
    // a worthless signature is a expired or revoked one
    std::vector<Signer> SoonWorthless;
+   std::vector<Signer> LaterWorthless;
    std::vector<std::string> NoPubKey;
    std::vector<std::string> Valid;
    std::vector<std::string> SignedBy;
@@ -120,13 +121,9 @@ class GPGVMethod : public aptMethod
 				vector<string> const &keyFpts,
 				vector<string> const &keyFiles,
 				SignersStorage &Signers);
-   string VerifyGetSignersWithLegacy(const char *file, const char *outfile,
-				     vector<string> const &keyFpts,
-				     vector<string> const &keyFiles,
-				     SignersStorage &Signers);
 
    protected:
-   virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE;
+   bool URIAcquire(std::string const &Message, FetchItem *Itm) override;
    public:
    GPGVMethod() : aptMethod("gpgv", "1.1", SingleInstance | SendConfig | SendURIEncoded){};
 };
@@ -158,6 +155,16 @@ static void PushEntryWithUID(std::vector<std::string> &Signers, char * const buf
       std::clog << "Got " << msg << " !" << std::endl;
    Signers.push_back(msg);
 }
+static void PushEntryWithUID(std::vector<Signer> &Signers, char * const buffer, bool const Debug)
+{
+   std::string msg = buffer + sizeof(GNUPGPREFIX);
+   auto const nuke = msg.find_last_not_of("\n\t\r");
+   if (nuke != std::string::npos)
+      msg.erase(nuke + 1);
+   if (Debug == true)
+      std::clog << "Got " << msg << " !" << std::endl;
+   Signers.push_back({msg, ""});
+}
 static void implodeVector(std::vector<std::string> const &vec, std::ostream &out, char const * const sep)
 {
    if (vec.empty())
@@ -176,6 +183,12 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    if (Debug == true)
       std::clog << "inside VerifyGetSigners" << std::endl;
 
+   // Abort early if we can't find gpgv, before forking further. This also
+   // caches the invocation of --dump-options to find the working gpgv across
+   // our fork() below.
+   if (APT::Internal::FindGPGV(Debug).first.empty())
+      return "Internal error: Cannot find gpgv";
+
    int fd[2];
 
    if (pipe(fd) < 0)
@@ -187,15 +200,14 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    else if (pid == 0)
    {
       std::ostringstream keys;
-      implodeVector(keyFiles, keys, ",");
       setenv("APT_KEY_NO_LEGACY_KEYRING", "1", true);
-      ExecGPGV(outfile, file, 3, fd, keys.str());
+      ExecGPGV(outfile, file, 3, fd, keyFiles);
    }
    close(fd[1]);
 
    FILE *pipein = fdopen(fd[0], "r");
 
-   // Loop over the output of apt-key (which really is gnupg), and check the signatures.
+   // Loop over the output of gpgv, and check the signatures.
    std::vector<std::string> ErrSigners;
    std::map<std::string, std::vector<std::string>> SubKeyMapping;
    size_t buffersize = 0;
@@ -230,6 +242,36 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
 	 PushEntryWithUID(Signers.Worthless, buffer, Debug);
       else if (strncmp(buffer, GNUPGREVKEYSIG, sizeof(GNUPGREVKEYSIG)-1) == 0)
 	 PushEntryWithUID(Signers.Worthless, buffer, Debug);
+      else if (strncmp(buffer, GNUPGASSERT_PUBKEY_ALGO, sizeof(GNUPGASSERT_PUBKEY_ALGO) - 1) == 0)
+      {
+	 std::istringstream iss(buffer + sizeof(GNUPGASSERT_PUBKEY_ALGO));
+	 vector<string> tokens{std::istream_iterator<string>{iss},
+			       std::istream_iterator<string>{}};
+
+	 auto const fpr = tokens[0];
+	 auto const asserted = atoi(tokens[1].c_str());
+	 auto const pkstr = tokens[2];
+	 if (not asserted)
+	 {
+	    std::string reason;
+	    strprintf(reason, _("untrusted public key algorithm: %s"), pkstr.c_str());
+	    Signers.Worthless.push_back({fpr, reason});
+	    Signers.Good.erase(std::remove_if(Signers.Good.begin(), Signers.Good.end(), [&](std::string const &goodsig)
+					      { return IsTheSameKey(fpr, goodsig); }),
+			       Signers.Good.end());
+	 }
+	 else if (not IsAssertedPubKeyAlgo(pkstr, "APT::Key::Assert-Pubkey-Algo::Next"))
+	 {
+	    std::string reason;
+	    Signers.SoonWorthless.push_back({fpr, pkstr});
+	 }
+	 else if (not IsAssertedPubKeyAlgo(pkstr, "APT::Key::Assert-Pubkey-Algo::Future"))
+	 {
+	    std::string reason;
+	    strprintf(reason, _("%s will be deprecated in a future release"), pkstr.c_str());
+	    Signers.LaterWorthless.push_back({fpr, reason});
+	 }
+      }
       else if (strncmp(buffer, GNUPGGOODSIG, sizeof(GNUPGGOODSIG)-1) == 0)
 	 PushEntryWithKeyID(Signers.Good, buffer, Debug);
       else if (strncmp(buffer, GNUPGVALIDSIG, sizeof(GNUPGVALIDSIG)-1) == 0)
@@ -251,7 +293,11 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
          case Digest::State::Untrusted:
             // Treat them like an expired key: For that a message about expiry
             // is emitted, a VALIDSIG, but no GOODSIG.
-            Signers.Worthless.push_back(sig);
+	    {
+	       std::string note;
+	       strprintf(note, "untrusted digest algorithm: %s", digest.name);
+	       Signers.Worthless.push_back({sig, note});
+	    }
             Signers.Good.erase(std::remove_if(Signers.Good.begin(), Signers.Good.end(), [&](std::string const &goodsig) {
 		     return IsTheSameKey(sig, goodsig); }), Signers.Good.end());
 	    if (Debug == true)
@@ -269,6 +315,13 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
 	 if (tokens.size() > 9 && sig != tokens[9])
 	    SubKeyMapping[tokens[9]].emplace_back(sig);
       }
+      else if (strncmp(buffer, GNUPGWARNING, sizeof(GNUPGWARNING)-1) == 0) {
+	 std::string warning;
+	 strprintf(warning, "GPG: %s", buffer + sizeof(GNUPGWARNING));
+	 Warning(std::move(warning));
+      }
+      else if (strncmp(buffer, GNUPGERROR, sizeof(GNUPGERROR)-1) == 0)
+	 _error->Error("GPG: %s", buffer + sizeof(GNUPGERROR));
       else if (strncmp(buffer, APTKEYWARNING, sizeof(APTKEYWARNING)-1) == 0)
          Warning(buffer + sizeof(APTKEYWARNING));
       else if (strncmp(buffer, APTKEYERROR, sizeof(APTKEYERROR)-1) == 0)
@@ -276,9 +329,11 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    }
    fclose(pipein);
    free(buffer);
-   std::move(ErrSigners.begin(), ErrSigners.end(), std::back_inserter(Signers.Worthless));
 
-   // apt-key has a --keyid parameter, but this requires gpg, so we call it without it
+   for (auto errSigner : ErrSigners)
+      Signers.Worthless.push_back({errSigner, ""});
+
+   // gpgv has no --keyid parameter, so we call it without it
    // and instead check after the fact which keyids where used for verification
    if (keyFpts.empty() == false)
    {
@@ -372,9 +427,11 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
       std::cerr << "\n  Bad: ";
       implodeVector(Signers.Bad, std::cerr, ", ");
       std::cerr << "\n  Worthless: ";
-      implodeVector(Signers.Worthless, std::cerr, ", ");
+      std::for_each(Signers.Worthless.begin(), Signers.Worthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; });
       std::cerr << "\n  SoonWorthless: ";
       std::for_each(Signers.SoonWorthless.begin(), Signers.SoonWorthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; });
+      std::cerr << "\n  LaterWorthless: ";
+      std::for_each(Signers.LaterWorthless.begin(), Signers.LaterWorthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; });
       std::cerr << "\n  NoPubKey: ";
       implodeVector(Signers.NoPubKey, std::cerr, ", ");
       std::cerr << "\n  Signed-By: ";
@@ -417,52 +474,9 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    else if (WEXITSTATUS(status) == 1)
       return _("At least one invalid signature was encountered.");
    else if (WEXITSTATUS(status) == 111)
-      return _("Could not execute 'apt-key' to verify signature (is gnupg installed?)");
+      return _("Could not execute 'gpgv' to verify signature (is gnupg installed?)");
    else
-      return _("Unknown error executing apt-key");
-}
-string GPGVMethod::VerifyGetSignersWithLegacy(const char *file, const char *outfile,
-					      vector<string> const &keyFpts,
-					      vector<string> const &keyFiles,
-					      SignersStorage &Signers)
-{
-   string const msg = VerifyGetSigners(file, outfile, keyFpts, keyFiles, Signers);
-   if (_error->PendingError())
-      return msg;
-
-   // Bad signature always remains bad, no need to retry against trusted.gpg
-   if (!Signers.Bad.empty())
-      return msg;
-
-   // We do not have a key file pinned, did not find a good signature, but found
-   // missing keys - let's retry with trusted.gpg
-   if (keyFiles.empty() && Signers.Valid.empty() && !Signers.NoPubKey.empty())
-   {
-      std::vector<std::string> legacyKeyFiles{_config->FindFile("Dir::Etc::trusted")};
-      if (legacyKeyFiles[0].empty())
-	 return msg;
-      if (DebugEnabled())
-	 std::clog << "Retrying against " << legacyKeyFiles[0] << "\n";
-
-      SignersStorage legacySigners;
-
-      string const legacyMsg = VerifyGetSigners(file, outfile, keyFpts, legacyKeyFiles, legacySigners);
-      if (_error->PendingError())
-	 return legacyMsg;
-      // Hooray, we found a key apparently, something verified as good or bad
-      if (!legacySigners.Valid.empty() || !legacySigners.Bad.empty())
-      {
-	 std::string warning;
-	 strprintf(warning,
-		   _("Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION section in apt-key(8) for details."),
-		   legacyKeyFiles[0].c_str());
-	 Warning(std::move(warning));
-	 Signers = std::move(legacySigners);
-	 return legacyMsg;
-      }
-
-   }
-   return msg;
+      return _("Unknown error executing gpgv");
 }
 static std::string GenerateKeyFile(std::string const key)
 {
@@ -501,8 +515,8 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
 	    keyFpts.emplace_back(std::move(key));
    }
 
-   // Run apt-key on file, extract contents and get the key ID of the signer
-   string const msg = VerifyGetSignersWithLegacy(Path.c_str(), Itm->DestFile.c_str(), keyFpts, keyFiles, Signers);
+   // Run gpgv on file, extract contents and get the key ID of the signer
+   string const msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(), keyFpts, keyFiles, Signers);
    if (_error->PendingError())
       return false;
 
@@ -517,9 +531,16 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
       {
 	 std::string msg;
          // TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
-	 strprintf(msg, _("Signature by key %s uses weak digest algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str());
+	 strprintf(msg, _("Signature by key %s uses weak algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str());
          Warning(std::move(msg));
       }
+      for (auto const &Signer : Signers.LaterWorthless)
+      {
+	 std::string msg;
+	 // TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+	 strprintf(msg, _("Signature by key %s uses weak algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str());
+	 Audit(std::move(msg));
+      }
    }
 
    if (Signers.Good.empty() || !Signers.Bad.empty() || !Signers.NoPubKey.empty())
@@ -540,8 +561,12 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
          if (!Signers.Worthless.empty())
          {
             errmsg += _("The following signatures were invalid:\n");
-            for (auto const &I : Signers.Worthless)
-               errmsg.append(I).append("\n");
+            for (auto const &[key, reason] : Signers.Worthless) {
+               errmsg.append(key);
+	       if (not reason.empty())
+		  errmsg.append(" (").append(reason).append(")");
+	       errmsg.append("\n");
+	    }
          }
          if (!Signers.NoPubKey.empty())
          {
@@ -585,7 +610,7 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
    Dequeue();
 
    if (DebugEnabled())
-      std::clog << "apt-key succeeded\n";
+      std::clog << "gpgv succeeded\n";
 
    return true;
 }
diff --git a/methods/http.cc b/methods/http.cc
index b4519a8..a6d7511 100644
--- a/methods/http.cc
+++ b/methods/http.cc
@@ -23,19 +23,18 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/proxy.h>
-#include <apt-pkg/string_view.h>
 #include <apt-pkg/strutl.h>
 
+#include <cerrno>
 #include <chrono>
+#include <csignal>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
 #include <cstring>
 #include <iostream>
 #include <sstream>
 #include <arpa/inet.h>
-#include <errno.h>
-#include <signal.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <sys/select.h>
 #include <sys/stat.h>
 #include <sys/time.h>
@@ -280,14 +279,14 @@ CircleBuf::~CircleBuf()							/*{{{*/
 // UnwrapHTTPConnect - Does the HTTP CONNECT handshake			/*{{{*/
 // ---------------------------------------------------------------------
 /* Performs a TLS handshake on the socket */
-struct HttpConnectFd : public MethodFd
+struct HttpConnectFd final : public MethodFd
 {
    std::unique_ptr<MethodFd> UnderlyingFd;
    std::string Buffer;
 
-   int Fd() APT_OVERRIDE { return UnderlyingFd->Fd(); }
+   int Fd() override { return UnderlyingFd->Fd(); }
 
-   ssize_t Read(void *buf, size_t count) APT_OVERRIDE
+   ssize_t Read(void *buf, size_t count) override
    {
       if (!Buffer.empty())
       {
@@ -300,17 +299,17 @@ struct HttpConnectFd : public MethodFd
 
       return UnderlyingFd->Read(buf, count);
    }
-   ssize_t Write(void *buf, size_t count) APT_OVERRIDE
+   ssize_t Write(void *buf, size_t count) override
    {
       return UnderlyingFd->Write(buf, count);
    }
 
-   int Close() APT_OVERRIDE
+   int Close() override
    {
       return UnderlyingFd->Close();
    }
 
-   bool HasPending() APT_OVERRIDE
+   bool HasPending() override
    {
       return !Buffer.empty();
    }
@@ -962,12 +961,12 @@ void HttpMethod::SendReq(FetchItem *Itm)
 #ifdef HAVE_SYSTEMD
    if (ConfigFindB("User-Agent-Non-Interactive", false))
    {
-      using APT::operator""_sv;
+      using std::literals::operator""sv;
       char *unit = nullptr;
       sd_pid_get_unit(getpid(), &unit);
       if (unit != nullptr && *unit != '\0' && not APT::String::Startswith(unit, "user@") // user@ _is_ interactive
-	  && "packagekit.service"_sv != unit						 // packagekit likely is interactive
-	  && "dbus.service"_sv != unit)							 // aptdaemon and qapt don't have systemd services
+	  && "packagekit.service"sv != unit						 // packagekit likely is interactive
+	  && "dbus.service"sv != unit)							 // aptdaemon and qapt don't have systemd services
 	 Req << " non-interactive";
 
       free(unit);
@@ -1025,7 +1024,7 @@ BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &R
 									/*}}}*/
 HttpMethod::HttpMethod(std::string &&pProg) : BaseHttpMethod(std::move(pProg), "1.2", Pipeline | SendConfig | SendURIEncoded) /*{{{*/
 {
-   SeccompFlags = aptMethod::BASE | aptMethod::NETWORK;
+   SeccompFlags = aptMethod::BASE | aptMethod::NETWORK | aptMethod::DIRECTORY;
 
    auto addName = std::inserter(methodNames, methodNames.begin());
    if (Binary != "http")
@@ -1046,7 +1045,7 @@ int main(int, const char *argv[])
    // ignore SIGPIPE, this can happen on write() if the socket
    // closes the connection (this is dealt with via ServerDie())
    signal(SIGPIPE, SIG_IGN);
-   std::string Binary = flNotDir(argv[0]);
+   std::string Binary{flNotDir(argv[0])};
    if (Binary.find('+') == std::string::npos && Binary != "https" && Binary != "http")
       Binary.append("+http");
    return HttpMethod(std::move(Binary)).Loop();
diff --git a/methods/http.h b/methods/http.h
index cae579a..5d6a8aa 100644
--- a/methods/http.h
+++ b/methods/http.h
@@ -90,7 +90,7 @@ class CircleBuf
    ~CircleBuf();
 };
 
-struct HttpServerState: public ServerState
+struct HttpServerState final : public ServerState
 {
    // This is the connection itself. Output is data FROM the server
    CircleBuf In;
@@ -98,37 +98,37 @@ struct HttpServerState: public ServerState
    std::unique_ptr<MethodFd> ServerFd;
 
    protected:
-   virtual bool ReadHeaderLines(std::string &Data) APT_OVERRIDE;
-   virtual ResultState LoadNextResponse(bool const ToFile, RequestState &Req) APT_OVERRIDE;
-   virtual bool WriteResponse(std::string const &Data) APT_OVERRIDE;
+   bool ReadHeaderLines(std::string &Data) override;
+   ResultState LoadNextResponse(bool ToFile, RequestState &Req) override;
+   bool WriteResponse(std::string const &Data) override;
 
    public:
-   virtual void Reset() APT_OVERRIDE;
+   void Reset() override;
 
-   virtual ResultState RunData(RequestState &Req) APT_OVERRIDE;
-   virtual ResultState RunDataToDevNull(RequestState &Req) APT_OVERRIDE;
+   ResultState RunData(RequestState &Req) override;
+   ResultState RunDataToDevNull(RequestState &Req) override;
 
-   virtual ResultState Open() APT_OVERRIDE;
-   virtual bool IsOpen() APT_OVERRIDE;
-   virtual bool Close() APT_OVERRIDE;
-   virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
-   virtual Hashes * GetHashes() APT_OVERRIDE;
-   virtual ResultState Die(RequestState &Req) APT_OVERRIDE;
-   virtual bool Flush(FileFd *const File, bool MustComplete = true) APT_OVERRIDE;
-   virtual ResultState Go(bool ToFile, RequestState &Req) APT_OVERRIDE;
+   ResultState Open() override;
+   bool IsOpen() override;
+   bool Close() override;
+   bool InitHashes(HashStringList const &ExpectedHashes) override;
+   Hashes * GetHashes() override;
+   ResultState Die(RequestState &Req) override;
+   bool Flush(FileFd *File, bool MustComplete = true) override;
+   ResultState Go(bool ToFile, RequestState &Req) override;
 
    HttpServerState(URI Srv, HttpMethod *Owner);
-   virtual ~HttpServerState() {Close();};
+   ~HttpServerState() override {Close();};
 };
 
-class HttpMethod : public BaseHttpMethod
+class HttpMethod final : public BaseHttpMethod
 {
    public:
-   virtual void SendReq(FetchItem *Itm) APT_OVERRIDE;
+   void SendReq(FetchItem *Itm) override;
 
-   virtual std::unique_ptr<ServerState> CreateServerState(URI const &uri) APT_OVERRIDE;
-   virtual void RotateDNS() APT_OVERRIDE;
-   virtual DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req) APT_OVERRIDE;
+   std::unique_ptr<ServerState> CreateServerState(URI const &uri) override;
+   void RotateDNS() override;
+   DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req) override;
 
    protected:
    std::string AutoDetectProxyCmd;
diff --git a/methods/mirror.cc b/methods/mirror.cc
index 787e4c7..6da0b42 100644
--- a/methods/mirror.cc
+++ b/methods/mirror.cc
@@ -89,15 +89,15 @@ class MirrorMethod : public aptMethod /*{{{*/
    };
    std::unordered_map<std::string, MirrorListInfo> mirrorfilestate;
 
-   virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE;
+   bool URIAcquire(std::string const &Message, FetchItem *Itm) override;
 
-   void RedirectItem(MirrorListInfo const &info, FetchItem *const Itm, std::string const &Message);
-   bool MirrorListFileReceived(MirrorListInfo &info, FetchItem *const Itm);
-   std::string GetMirrorFileURI(std::string const &Message, FetchItem *const Itm);
-   void DealWithPendingItems(std::vector<std::string> const &baseuris, MirrorListInfo const &info, FetchItem *const Itm, std::function<void()> handler);
+   void RedirectItem(MirrorListInfo const &info, FetchItem *Itm, std::string const &Message);
+   bool MirrorListFileReceived(MirrorListInfo &info, FetchItem *Itm);
+   std::string GetMirrorFileURI(std::string const &Message, FetchItem *Itm);
+   void DealWithPendingItems(std::vector<std::string> const &baseuris, MirrorListInfo const &info, FetchItem *Itm, std::function<void()> handler);
 
    public:
-   explicit MirrorMethod(std::string &&pProg) : aptMethod(std::move(pProg), "2.0", SingleInstance | Pipeline | SendConfig | AuxRequests | SendURIEncoded), genrng(clock())
+   explicit MirrorMethod(std::string pProg) : aptMethod(std::move(pProg), "2.0", SingleInstance | Pipeline | SendConfig | AuxRequests | SendURIEncoded), genrng(clock())
    {
       SeccompFlags = aptMethod::BASE | aptMethod::DIRECTORY;
    }
@@ -326,7 +326,11 @@ std::string MirrorMethod::GetMirrorFileURI(std::string const &Message, FetchItem
    {
       if (APT::String::Startswith(Itm->Uri, uristr))
       {
-	 uristr.erase(uristr.length() - 1); // remove the ending '/'
+	 if (::URI uri{uristr}; uri.Path.length() > 1 && APT::String::Endswith(uri.Path, "/"))
+	 {
+	    uri.Path.erase(uri.Path.length() - 1); // remove the ending '/'
+	    uristr = uri;
+	 }
 	 auto const colon = uristr.find(':');
 	 if (unlikely(colon == std::string::npos))
 	    continue;
@@ -375,7 +379,10 @@ bool MirrorMethod::URIAcquire(std::string const &Message, FetchItem *Itm) /*{{{*
       msgCache[Itm->Uri] = Message;
       MirrorListInfo info;
       info.state = REQUESTED;
-      info.baseuri = mirrorfileuri + '/';
+      if (not APT::String::Endswith(mirrorfileuri, "/"))
+	 info.baseuri = mirrorfileuri + '/';
+      else
+	 info.baseuri = mirrorfileuri;
       auto const colon = info.baseuri.find(':');
       if (unlikely(colon == std::string::npos))
 	 return false;
@@ -410,5 +417,5 @@ bool MirrorMethod::URIAcquire(std::string const &Message, FetchItem *Itm) /*{{{*
 
 int main(int, const char *argv[])
 {
-   return MirrorMethod(flNotDir(argv[0])).Run();
+   return MirrorMethod(std::string{flNotDir(argv[0])}).Run();
 }
diff --git a/methods/rfc2553emu.cc b/methods/rfc2553emu.cc
index 41aa747..f5a3fc9 100644
--- a/methods/rfc2553emu.cc
+++ b/methods/rfc2553emu.cc
@@ -16,11 +16,11 @@
 #include <config.h>
 
 #include "rfc2553emu.h"
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <arpa/inet.h>
 #include <netinet/in.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 
 #ifndef HAVE_GETADDRINFO
 // getaddrinfo - Resolve a hostname					/*{{{*/
diff --git a/methods/rred.cc b/methods/rred.cc
index 3453bd3..836697a 100644
--- a/methods/rred.cc
+++ b/methods/rred.cc
@@ -20,17 +20,17 @@
 
 #include <apt-private/private-cmndline.h>
 
+#include <cstddef>
 #include <iostream>
 #include <list>
 #include <string>
 #include <vector>
-#include <stddef.h>
 
 #include <cassert>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cerrno>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <sys/stat.h>
 #include <sys/time.h>
 
@@ -598,7 +598,7 @@ class Patch {
 };
 
 #ifndef APT_EXCLUDE_RRED_METHOD_CODE
-class RredMethod : public aptMethod {
+class RredMethod final : public aptMethod {
    private:
       bool Debug;
 
@@ -624,7 +624,7 @@ class RredMethod : public aptMethod {
       }
 
    protected:
-      virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE {
+      bool URIAcquire(std::string const &Message, FetchItem *Itm) override {
 	 Debug = DebugEnabled();
 	 URI Get(Itm->Uri);
 	 std::string Path = DecodeSendURI(Get.Host + Get.Path); // rred:/path - no host
diff --git a/methods/rsh.cc b/methods/rsh.cc
deleted file mode 100644
index f5e1279..0000000
--- a/methods/rsh.cc
+++ /dev/null
@@ -1,561 +0,0 @@
-// -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/
-/* ######################################################################
-
-   RSH method - Transfer files via rsh compatible program
-
-   Written by Ben Collins <bcollins@debian.org>, Copyright (c) 2000
-
-   This file stated:
-   Licensed under the GNU General Public License v2 [no exception clauses]
-
-   We believe that this was intended to be not a statement against future
-   versions of the GPL, but meant to exclude the Qt license exception in
-   place in APT until that time.
-
-   We received permission from Ben in 2021 to relicense under GPL-2+,
-   contributions from Adam Heath and Daniel Hartwig may still have to
-   be considered GPL-2 for the time being.
-
-   Other contributions are GPL-2+
-
-   See https://lists.debian.org/deity/2021/04/msg00013.html for details
-
-   ##################################################################### */
-									/*}}}*/
-// Include Files							/*{{{*/
-#include <config.h>
-
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-#include <apt-pkg/fileutl.h>
-#include <apt-pkg/hashes.h>
-#include <apt-pkg/strutl.h>
-
-#include "rsh.h"
-#include <errno.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <unistd.h>
-
-#include <apti18n.h>
-									/*}}}*/
-
-unsigned long TimeOut = 30;
-Configuration::Item const *RshOptions = 0;
-time_t RSHMethod::FailTime = 0;
-std::string RSHMethod::FailFile;
-int RSHMethod::FailFd = -1;
-
-// RSHConn::RSHConn - Constructor					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-RSHConn::RSHConn(std::string const &pProg, URI Srv) : Len(0), WriteFd(-1), ReadFd(-1),
-                            ServerName(Srv), Prog(pProg), Process(-1) {
-   Buffer[0] = '\0';
-}
-									/*}}}*/
-// RSHConn::RSHConn - Destructor					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-RSHConn::~RSHConn()
-{
-   Close();
-}
-									/*}}}*/
-// RSHConn::Close - Forcibly terminate the connection			/*{{{*/
-// ---------------------------------------------------------------------
-/* Often this is called when things have gone wrong to indicate that the
-   connection is no longer usable. */
-void RSHConn::Close()
-{
-   if (Process == -1)
-      return;
-   
-   close(WriteFd);
-   close(ReadFd);
-   kill(Process,SIGINT);
-   ExecWait(Process,"",true);
-   WriteFd = -1;
-   ReadFd = -1;
-   Process = -1;
-}
-									/*}}}*/
-// RSHConn::Open - Connect to a host					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHConn::Open()
-{
-   // Use the already open connection if possible.
-   if (Process != -1)
-      return true;
-
-   if (Connect(ServerName.Host,ServerName.Port,ServerName.User) == false)
-      return false;
-
-   return true;
-}
-									/*}}}*/
-// RSHConn::Connect - Fire up rsh and connect				/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHConn::Connect(std::string const &Host, unsigned int Port, std::string const &User)
-{
-   char *PortStr = NULL;
-   if (Port != 0)
-   {
-      if (asprintf (&PortStr, "%d", Port) == -1 || PortStr == NULL)
-         return _error->Errno("asprintf", _("Failed"));
-   }
-
-   // Create the pipes
-   int Pipes[4] = {-1,-1,-1,-1};
-   if (pipe(Pipes) != 0 || pipe(Pipes+2) != 0)
-   {
-      _error->Errno("pipe",_("Failed to create IPC pipe to subprocess"));
-      for (int I = 0; I != 4; I++)
-	 close(Pipes[I]);
-      return false;
-   }
-   for (int I = 0; I != 4; I++)
-      SetCloseExec(Pipes[I],true);
-   
-   Process = ExecFork();
-
-   // The child
-   if (Process == 0)
-   {
-      const char *Args[400];
-      unsigned int i = 0;
-
-      dup2(Pipes[1],STDOUT_FILENO);
-      dup2(Pipes[2],STDIN_FILENO);
-
-      // Probably should do
-      // dup2(open("/dev/null",O_RDONLY),STDERR_FILENO);
-
-      Args[i++] = Prog.c_str();
-
-      // Insert user-supplied command line options
-      Configuration::Item const *Opts = RshOptions;
-      if (Opts != 0)
-      {
-         Opts = Opts->Child;
-	 for (; Opts != 0; Opts = Opts->Next)
-         {
-            if (Opts->Value.empty() == true)
-               continue;
-            Args[i++] = Opts->Value.c_str();
-         }
-      }
-
-      if (User.empty() == false) {
-         Args[i++] = "-l";
-	 Args[i++] = User.c_str();
-      }
-      if (PortStr != NULL) {
-         Args[i++] = "-p";
-         Args[i++] = PortStr;
-      }
-      if (Host.empty() == false) {
-         Args[i++] = Host.c_str();
-      }
-      Args[i++] = "/bin/sh";
-      Args[i] = 0;
-      execvp(Args[0],(char **)Args);
-      exit(100);
-   }
-
-   if (PortStr != NULL)
-      free(PortStr);
-
-   ReadFd = Pipes[0];
-   WriteFd = Pipes[3];
-   SetNonBlock(Pipes[0],true);
-   SetNonBlock(Pipes[3],true);
-   close(Pipes[1]);
-   close(Pipes[2]);
-   
-   return true;
-}
-bool RSHConn::Connect(std::string const &Host, std::string const &User)
-{
-   return Connect(Host, 0, User);
-}
-									/*}}}*/
-// RSHConn::ReadLine - Very simple buffered read with timeout		/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHConn::ReadLine(std::string &Text)
-{
-   if (Process == -1 || ReadFd == -1)
-      return false;
-   
-   // Suck in a line
-   while (Len < sizeof(Buffer))
-   {
-      // Scan the buffer for a new line
-      for (unsigned int I = 0; I != Len; I++)
-      {
-         // Escape some special chars
-         if (Buffer[I] == 0)
-            Buffer[I] = '?';
-
-         // End of line?
-         if (Buffer[I] != '\n')
-            continue;
-
-         I++;
-         Text = std::string(Buffer,I);
-         memmove(Buffer,Buffer+I,Len - I);
-         Len -= I;
-         return true;
-      }
-
-      // Wait for some data..
-      if (WaitFd(ReadFd,false,TimeOut) == false)
-      {
-         Close();
-         return _error->Error(_("Connection timeout"));
-      }
-
-      // Suck it back
-      int Res = read(ReadFd,Buffer + Len,sizeof(Buffer) - Len);
-      if (Res <= 0)
-      {
-         _error->Errno("read",_("Read error"));
-         Close();
-         return false;
-      }
-      Len += Res;
-   }
-
-   return _error->Error(_("A response overflowed the buffer."));
-}
-									/*}}}*/
-// RSHConn::WriteMsg - Send a message with optional remote sync.	/*{{{*/
-// ---------------------------------------------------------------------
-/* The remote sync flag appends a || echo which will insert blank line
-   once the command completes. */
-bool RSHConn::WriteMsg(std::string &Text,bool Sync,const char *Fmt,...)
-{
-   va_list args;
-   va_start(args,Fmt);
-
-   // sprintf into a buffer
-   char Tmp[1024];
-   vsnprintf(Tmp,sizeof(Tmp),Fmt,args);
-   va_end(args);
-
-   // concat to create the real msg
-   std::string Msg;
-   if (Sync == true)
-      Msg = std::string(Tmp) + " 2> /dev/null || echo\n";
-   else
-      Msg = std::string(Tmp) + " 2> /dev/null\n";
-
-   // Send it off
-   const char *S = Msg.c_str();
-   unsigned long Len = strlen(S);
-   unsigned long Start = 0;
-   while (Len != 0)
-   {
-      if (WaitFd(WriteFd,true,TimeOut) == false)
-      {
-	 
-	 Close();
-	 return _error->Error(_("Connection timeout"));
-      }      
-      
-      int Res = write(WriteFd,S + Start,Len);
-      if (Res <= 0)
-      {
-         _error->Errno("write",_("Write error"));
-         Close();
-         return false;
-      }
-
-      Len -= Res;
-      Start += Res;
-   }
-
-   if (Sync == true)
-      return ReadLine(Text);
-   return true;
-}
-									/*}}}*/
-// RSHConn::Size - Return the size of the file				/*{{{*/
-// ---------------------------------------------------------------------
-/* Right now for successful transfer the file size must be known in
-   advance. */
-bool RSHConn::Size(const char *Path,unsigned long long &Size)
-{
-   // Query the size
-	std::string Msg;
-   Size = 0;
-
-   if (WriteMsg(Msg,true,"find %s -follow -printf '%%s\\n'",Path) == false)
-      return false;
-   
-   // FIXME: Sense if the bad reply is due to a File Not Found. 
-   
-   char *End;
-   Size = strtoull(Msg.c_str(),&End,10);
-   if (End == Msg.c_str())
-      return _error->Error(_("File not found"));
-   return true;
-}
-									/*}}}*/
-// RSHConn::ModTime - Get the modification time in UTC			/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHConn::ModTime(const char *Path, time_t &Time)
-{
-   Time = time(&Time);
-   // Query the mod time
-   std::string Msg;
-
-   if (WriteMsg(Msg,true,"TZ=UTC find %s -follow -printf '%%TY%%Tm%%Td%%TH%%TM%%TS\\n'",Path) == false)
-      return false;
-
-   // Parse it
-   return FTPMDTMStrToTime(Msg.c_str(), Time);
-}
-									/*}}}*/
-// RSHConn::Get - Get a file						/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
-                  Hashes &Hash,bool &Missing, unsigned long long Size)
-{
-   Missing = false;
-
-   // Round to a 2048 byte block
-   Resume = Resume - (Resume % 2048);
-
-   if (To.Truncate(Resume) == false)
-      return false;
-   if (To.Seek(0) == false)
-      return false;
-
-   if (Resume != 0) {
-      if (Hash.AddFD(To,Resume) == false) {
-	 _error->Errno("read",_("Problem hashing file"));
-	 return false;
-      }
-   }
-   
-   // FIXME: Detect file-not openable type errors.
-   std::string Jnk;
-   if (WriteMsg(Jnk,false,"dd if=%s bs=2048 skip=%u", Path, Resume / 2048) == false)
-      return false;
-
-   // Copy loop
-   unsigned long long MyLen = Resume;
-   unsigned char Buffer[4096];
-   while (MyLen < Size)
-   {
-      // Wait for some data..
-      if (WaitFd(ReadFd,false,TimeOut) == false)
-      {
-         Close();
-         return _error->Error(_("Data socket timed out"));
-      }
-
-      // Read the data..
-      int Res = read(ReadFd,Buffer,sizeof(Buffer));
-      if (Res == 0)
-      {
-	 Close();
-	 return _error->Error(_("Connection closed prematurely"));
-      }
-      
-      if (Res < 0)
-      {
-         if (errno == EAGAIN)
-            continue;
-         break;
-      }
-      MyLen += Res;
-
-      Hash.Add(Buffer,Res);
-      if (To.Write(Buffer,Res) == false)
-      {
-         Close();
-         return false;
-      }
-   }
-
-   return true;
-}
-									/*}}}*/
-
-// RSHMethod::RSHMethod - Constructor					/*{{{*/
-RSHMethod::RSHMethod(std::string &&pProg) : aptMethod(std::move(pProg),"1.0",SendConfig | SendURIEncoded)
-{
-   signal(SIGTERM,SigTerm);
-   signal(SIGINT,SigTerm);
-   Server = 0;
-   FailFd = -1;
-}
-									/*}}}*/
-// RSHMethod::Configuration - Handle a configuration message		/*{{{*/
-// ---------------------------------------------------------------------
-bool RSHMethod::Configuration(std::string Message)
-{
-   // enabling privilege dropping for this method requires configuration…
-   // … which is otherwise lifted straight from root, so use it by default.
-   _config->Set(std::string("Binary::") + Binary + "::APT::Sandbox::User", "");
-
-   if (aptMethod::Configuration(Message) == false)
-      return false;
-
-   std::string const timeconf = std::string("Acquire::") + Binary + "::Timeout";
-   TimeOut = _config->FindI(timeconf, TimeOut);
-   std::string const optsconf = std::string("Acquire::") + Binary + "::Options";
-   RshOptions = _config->Tree(optsconf.c_str());
-
-   return true;
-}
-									/*}}}*/
-// RSHMethod::SigTerm - Clean up and timestamp the files on exit	/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-void RSHMethod::SigTerm(int)
-{
-   if (FailFd == -1)
-      _exit(100);
-
-   // Transfer the modification times
-   struct timeval times[2];
-   times[0].tv_sec = FailTime;
-   times[1].tv_sec = FailTime;
-   times[0].tv_usec = times[1].tv_usec = 0;
-   utimes(FailFile.c_str(), times);
-   close(FailFd);
-
-   _exit(100);
-}
-									/*}}}*/
-// RSHMethod::Fetch - Fetch a URI					/*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool RSHMethod::Fetch(FetchItem *Itm)
-{
-   URI Get(Itm->Uri);
-   auto const File = DecodeSendURI(Get.Path);
-   FetchResult Res;
-   Res.Filename = Itm->DestFile;
-   Res.IMSHit = false;
-
-   // Connect to the server
-   if (Server == 0 || Server->Comp(Get) == false) {
-      delete Server;
-      Server = new RSHConn(Binary, Get);
-   }
-
-   // Could not connect is a transient error..
-   if (Server->Open() == false) {
-      Server->Close();
-      Fail(true);
-      return true;
-   }
-
-   // We say this mainly because the pause here is for the
-   // ssh connection that is still going
-   Status(_("Connecting to %s"), Get.Host.c_str());
-
-   // Get the files information
-   unsigned long long Size;
-   if (not Server->Size(File.c_str(), Size) ||
-       not Server->ModTime(File.c_str(), FailTime))
-   {
-      //Fail(true);
-      //_error->Error(_("File not found")); // Will be handled by Size
-      return false;
-   }
-   Res.Size = Size;
-
-   // See if it is an IMS hit
-   if (Itm->LastModified == FailTime) {
-      Res.Size = 0;
-      Res.IMSHit = true;
-      URIDone(Res);
-      return true;
-   }
-
-   // See if the file exists
-   struct stat Buf;
-   if (stat(Itm->DestFile.c_str(),&Buf) == 0) {
-      if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime) {
-	 Res.Size = Buf.st_size;
-	 Res.LastModified = Buf.st_mtime;
-	 Res.ResumePoint = Buf.st_size;
-	 URIDone(Res);
-	 return true;
-      }
-
-      // Resume?
-      if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size)
-	 Res.ResumePoint = Buf.st_size;
-   }
-
-   // Open the file
-   Hashes Hash(Itm->ExpectedHashes);
-   {
-      FileFd Fd(Itm->DestFile,FileFd::WriteAny);
-      if (_error->PendingError() == true)
-	 return false;
-      
-      URIStart(Res);
-
-      FailFile = Itm->DestFile;
-      (void)(FailFile.c_str()); // Make sure we don't do a malloc in the signal handler
-      FailFd = Fd.Fd();
-
-      bool Missing;
-      if (not Server->Get(File.c_str(), Fd, Res.ResumePoint, Hash, Missing, Res.Size))
-      {
-	 Fd.Close();
-
-	 // Timestamp
-	 struct timeval times[2];
-	 times[0].tv_sec = FailTime;
-	 times[1].tv_sec = FailTime;
-	 times[0].tv_usec = times[1].tv_usec = 0;
-	 utimes(FailFile.c_str(), times);
-
-	 // If the file is missing we hard fail otherwise transient fail
-	 if (Missing == true)
-	    return false;
-	 Fail(true);
-	 return true;
-      }
-
-      Res.Size = Fd.Size();
-      struct timeval times[2];
-      times[0].tv_sec = FailTime;
-      times[1].tv_sec = FailTime;
-      times[0].tv_usec = times[1].tv_usec = 0;
-      utimes(Fd.Name().c_str(), times);
-      FailFd = -1;
-   }
-
-   Res.LastModified = FailTime;
-   Res.TakeHashes(Hash);
-
-   URIDone(Res);
-
-   return true;
-}
-									/*}}}*/
-
-int main(int, const char *argv[])
-{
-   return RSHMethod(flNotDir(argv[0])).Run();
-}
diff --git a/methods/rsh.h b/methods/rsh.h
deleted file mode 100644
index 7545d58..0000000
--- a/methods/rsh.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/
-/* ######################################################################
-
-   RSH method - Transfer files via rsh compatible program
-
-   ##################################################################### */
-									/*}}}*/
-#ifndef APT_RSH_H
-#define APT_RSH_H
-
-#include <string>
-#include <time.h>
-
-#include <apt-pkg/strutl.h>
-
-class Hashes;
-class FileFd;
-
-class RSHConn
-{
-   char Buffer[1024*10];
-   unsigned long Len;
-   int WriteFd;
-   int ReadFd;
-   URI ServerName;
-   std::string const Prog;
-
-   // Private helper functions
-   bool ReadLine(std::string &Text);
-
-   public:
-
-   pid_t Process;
-
-   // Raw connection IO
-   bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...);
-   bool Connect(std::string const &Host, std::string const &User);
-   bool Connect(std::string const &Host, unsigned int Port, std::string const &User);
-   bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
-
-   // Connection control
-   bool Open();
-   void Close();
-
-   // Query
-   bool Size(const char *Path,unsigned long long &Size);
-   bool ModTime(const char *Path, time_t &Time);
-   bool Get(const char *Path,FileFd &To,unsigned long long Resume,
-            Hashes &Hash,bool &Missing, unsigned long long Size);
-
-   RSHConn(std::string const &Prog, URI Srv);
-   ~RSHConn();
-};
-
-#include "aptmethod.h"
-
-class RSHMethod : public aptMethod
-{
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
-   virtual bool Configuration(std::string Message) APT_OVERRIDE;
-
-   RSHConn *Server;
-
-   static std::string FailFile;
-   static int FailFd;
-   static time_t FailTime;
-   static APT_NORETURN void SigTerm(int);
-
-   public:
-
-   explicit RSHMethod(std::string &&Prog);
-};
-
-#endif
diff --git a/methods/sqv.cc b/methods/sqv.cc
new file mode 100644
index 0000000..3191752
--- /dev/null
+++ b/methods/sqv.cc
@@ -0,0 +1,351 @@
+#include <config.h>
+
+#include "aptmethod.h"
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/strutl.h>
+#include <iterator>
+#include <optional>
+#include <ostream>
+#include <sstream>
+
+using std::string;
+using std::vector;
+
+class SQVMethod : public aptMethod
+{
+   private:
+   std::optional<std::string> policy{};
+   void SetPolicy();
+   bool VerifyGetSigners(const char *file, const char *outfile,
+			 vector<string> keyFiles,
+			 vector<string> &signers);
+
+   protected:
+   bool URIAcquire(std::string const &Message, FetchItem *Itm) override;
+
+   public:
+   SQVMethod();
+};
+
+SQVMethod::SQVMethod() : aptMethod("sqv", "1.1", SingleInstance | SendConfig | SendURIEncoded)
+{
+}
+
+void SQVMethod::SetPolicy()
+{
+   constexpr const char *policies[] = {
+      // APT overrides
+      "APT_SEQUOIA_CRYPTO_POLICY",
+      "/etc/crypto-policies/back-ends/apt-sequoia.config",
+      "/var/lib/crypto-config/profiles/current/apt-sequoia.config",
+      // Sequoia overrides
+      "SEQUOIA_CRYPTO_POLICY",
+      "/etc/crypto-policies/back-ends/sequoia.config",
+      "/var/lib/crypto-config/profiles/current/sequoia.config",
+      // Fallback APT defaults
+      "/usr/share/apt/default-sequoia.config",
+   };
+
+   if (policy)
+      return;
+
+   policy = "";
+
+   for (auto policy : policies)
+   {
+      if (not strchr(policy, '/'))
+      {
+	 if (auto value = getenv(policy))
+	 {
+	    this->policy = value;
+	    break;
+	 }
+      }
+      else if (FileExists(policy))
+      {
+	 this->policy = policy;
+	 break;
+      }
+   }
+
+   if (not policy->empty())
+   {
+      if (DebugEnabled())
+	 std::clog << "Setting SEQUOIA_CRYPTO_POLICY=" << *policy << std::endl;
+      setenv("SEQUOIA_CRYPTO_POLICY", policy->c_str(), 1);
+   }
+}
+bool SQVMethod::VerifyGetSigners(const char *file, const char *outfile,
+				 vector<string> keyFiles,
+				 vector<string> &signers)
+{
+   bool const Debug = DebugEnabled();
+
+   std::vector<std::string> args;
+
+   SetPolicy();
+
+   args.push_back(SQV_EXECUTABLE);
+   auto dearmorKeyOrCheckFormat = [&](std::string const &k) -> bool
+   {
+      _error->PushToStack();
+      FileFd keyFd(k, FileFd::ReadOnly);
+      _error->RevertToStack();
+      if (not keyFd.IsOpen())
+	 return _error->Warning("The key(s) in the keyring %s are ignored as the file is not readable by user executing gpgv.\n", k.c_str());
+      else if (APT::String::Endswith(k, ".asc"))
+      {
+	 std::string b64msg;
+	 int state = 0;
+	 for (std::string line; keyFd.ReadLine(line);)
+	 {
+	    line = APT::String::Strip(line);
+	    if (APT::String::Startswith(line, "-----BEGIN PGP PUBLIC KEY BLOCK-----"))
+	       state = 1;
+	    else if (state == 1 && line == "")
+	       state = 2;
+	    else if (state == 2 && line != "" && line[0] != '=' && line[0] != '-')
+	       b64msg += line;
+	    else if (APT::String::Startswith(line, "-----END"))
+	       state = 3;
+	 }
+	 if (state != 3)
+	    goto err;
+
+	 return true;
+      }
+      else
+      {
+	 unsigned char c;
+	 if (not keyFd.Read(&c, sizeof(c)))
+	    goto err;
+	 // Identify the leading byte of an OpenPGP public key packet
+	 // 0x98 -- old-format OpenPGP public key packet, up to 255 octets
+	 // 0x99 -- old-format OpenPGP public key packet, 256-65535 octets
+	 // 0xc6 -- new-format OpenPGP public key packet, any length
+	 if (c != 0x98 && c != 0x99 && c != 0xc6)
+	    goto err;
+	 return true;
+      }
+   err:
+      return _error->Warning("The key(s) in the keyring %s are ignored as the file has an unsupported filetype.", k.c_str());
+   };
+   if (keyFiles.empty())
+   {
+      // Either trusted or trustedparts must exist
+      _error->PushToStack();
+      auto Parts = GetListOfFilesInDir(_config->FindDir("Dir::Etc::TrustedParts"), std::vector<std::string>{"gpg", "asc"}, true);
+      if (auto trusted = _config->FindFile("Dir::Etc::Trusted"); not trusted.empty())
+      {
+	 std::string s;
+	 strprintf(s, "Loading %s from deprecated option Dir::Etc::Trusted\n", trusted.c_str());
+	 Warning(std::move(s));
+	 Parts.push_back(trusted);
+      }
+      if (Parts.empty())
+	 _error->MergeWithStack();
+      else
+	 _error->RevertToStack();
+      for (auto &Part : Parts)
+      {
+	 if (Debug)
+	    std::clog << "Trying TrustedPart: " << Part << std::endl;
+	 if (struct stat st; stat(Part.c_str(), &st) != 0 || st.st_size == 0)
+	    continue;
+	 if (not dearmorKeyOrCheckFormat(Part))
+	 {
+	    std::string msg;
+	    _error->PopMessage(msg);
+	    if (not msg.empty())
+	       Warning(std::move(msg));
+	    continue;
+	 }
+	 keyFiles.push_back(Part);
+      }
+   }
+
+   if (keyFiles.empty())
+      return _error->Error("The signatures couldn't be verified because no keyring is specified");
+
+   for (auto const &keyring : keyFiles)
+   {
+      args.push_back("--keyring");
+      args.push_back(keyring);
+   }
+
+   FileFd signatureFd;
+   FileFd messageFd;
+   DEFER([&]
+	 {
+	 if (signatureFd.IsOpen()) RemoveFile("RemoveSignature", signatureFd.Name());
+	 if (messageFd.IsOpen()) RemoveFile("RemoveMessage", messageFd.Name()); });
+
+   if (strcmp(file, outfile) == 0)
+   {
+      if (GetTempFile("apt.sig", false, &signatureFd) == nullptr)
+	 return false;
+      if (GetTempFile("apt.data", false, &messageFd) == nullptr)
+	 return false;
+
+      // FIXME: The test suite only expects the final message.
+      _error->PushToStack();
+      if (signatureFd.Failed() || messageFd.Failed() ||
+	  not SplitClearSignedFile(file, &messageFd, nullptr, &signatureFd))
+	 return _error->RevertToStack(), _error->Error("Splitting up %s into data and signature failed", file);
+      _error->RevertToStack();
+
+      args.push_back(signatureFd.Name());
+      args.push_back(messageFd.Name());
+   }
+   else
+   {
+      if (not VerifyDetachedSignatureFile(file))
+	 return false;
+      args.push_back(file);
+      args.push_back(outfile);
+   }
+
+   // FIXME: Use a select() loop
+   FileFd sqvout;
+   FileFd sqverr;
+   if (GetTempFile("apt.sqvout", false, &sqvout) == nullptr)
+      return "Internal error: Cannot create temporary file";
+
+   DEFER([&]
+	 { RemoveFile("CleanSQVOut", sqvout.Name()); });
+
+   if (GetTempFile("apt.sqverr", false, &sqverr) == nullptr)
+      return "Internal error: Cannot create temporary file";
+
+   DEFER([&]
+	 { RemoveFile("CleanSQVErr", sqverr.Name()); });
+
+   // Translate the argument list to a C array. This should happen before
+   // the fork so we don't allocate money between fork() and execvp().
+   if (Debug)
+      std::clog << "Executing " << APT::String::Join(args, " ") << std::endl;
+   std::vector<const char *> cArgs;
+   cArgs.reserve(args.size() + 1);
+   for (auto const &arg : args)
+      cArgs.push_back(arg.c_str());
+   cArgs.push_back(nullptr);
+   pid_t pid = ExecFork({sqvout.Fd(), sqverr.Fd()});
+   if (pid < 0)
+      return _error->Errno("VerifyGetSigners", "Couldn't spawn new process");
+   else if (pid == 0)
+   {
+      dup2(sqvout.Fd(), STDOUT_FILENO);
+      dup2(sqverr.Fd(), STDERR_FILENO);
+      execvp(cArgs[0], (char **)&cArgs[0]);
+      _exit(123);
+   }
+
+   int status;
+   waitpid(pid, &status, 0);
+   sqverr.Seek(0);
+   sqvout.Seek(0);
+
+   if (Debug == true)
+      ioprintf(std::clog, "sqv exited with status %i\n", WEXITSTATUS(status));
+   if (WEXITSTATUS(status) != 0)
+   {
+      std::string msg;
+      for (std::string err; sqverr.ReadLine(err);)
+	 msg.append(err).append("\n");
+      return _error->Error(_("Sub-process %s returned an error code (%u), error message is:\n%s"), cArgs[0], WEXITSTATUS(status), msg.c_str());
+   }
+
+   for (std::string signer; sqvout.ReadLine(signer);)
+   {
+      if (Debug)
+	 std::clog << "Got GOODSIG " << signer << std::endl;
+      signers.push_back(signer);
+   }
+
+   return true;
+}
+
+static std::string GenerateKeyFile(std::string const key)
+{
+   FileFd fd;
+   GetTempFile("apt-key.XXXXXX.asc", false, &fd);
+   fd.Write(key.data(), key.size());
+   return fd.Name();
+}
+
+bool SQVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
+{
+   // Quick safety check: do we have left-over errors from a previous URL?
+   if (unlikely(_error->PendingError()))
+      return _error->Error("Internal error: Error set at start of verification");
+
+   URI const Get(Itm->Uri);
+   std::string const Path = DecodeSendURI(Get.Host + Get.Path); // To account for relative paths
+
+   std::vector<std::string> Signers, keyFpts, keyFiles;
+   struct TemporaryFile
+   {
+      std::string name = "";
+      ~TemporaryFile() { RemoveFile("~TemporaryFile", name); }
+   } tmpKey;
+
+   std::string SignedBy = DeQuoteString(LookupTag(Message, "Signed-By"));
+
+   if (SignedBy.find("-----BEGIN PGP PUBLIC KEY BLOCK-----") != std::string::npos)
+   {
+      tmpKey.name = GenerateKeyFile(SignedBy);
+      keyFiles.emplace_back(tmpKey.name);
+   }
+   else
+   {
+      for (auto &&key : VectorizeString(SignedBy, ','))
+	 if (key.empty() == false && key[0] == '/')
+	    keyFiles.emplace_back(std::move(key));
+	 else
+	    keyFpts.emplace_back(std::move(key));
+   }
+
+   // Nothing should have failed here in the setup, if it did, don't bother verifying
+   if (_error->PendingError())
+      return false;
+
+   // Run sqv on file, extract contents and get the key ID of the signer
+   VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(), keyFiles, Signers);
+   if (Signers.empty())
+      return _error->PendingError() ? false : _error->Error("No good signature");
+
+   if (not keyFpts.empty())
+   {
+      Signers.erase(std::remove_if(Signers.begin(), Signers.end(), [&](std::string const &signer)
+				   {
+	 bool allowedSigner = std::find(keyFpts.begin(), keyFpts.end(), signer) != keyFpts.end();
+	 if (not allowedSigner && DebugEnabled())
+	       std::cerr << "NoPubKey: GOODSIG " << signer << "\n";
+	 return not allowedSigner; }),
+		    Signers.end());
+
+      if (Signers.empty())
+      {
+	 if (keyFpts.size() > 1)
+	    return _error->Error(_("No good signature from required signers: %s"), APT::String::Join(keyFpts, ", ").c_str());
+	 return _error->Error(_("No good signature from required signer: %s"), APT::String::Join(keyFpts, ", ").c_str());
+      }
+   }
+   std::unordered_map<std::string, std::string> fields;
+   fields.emplace("URI", Itm->Uri);
+   fields.emplace("Filename", Itm->DestFile);
+   fields.emplace("Signed-By", APT::String::Join(Signers, "\n"));
+   SendMessage("201 URI Done", std::move(fields));
+   Dequeue();
+
+   if (DebugEnabled())
+      std::clog << "sqv succeeded\n";
+
+   // If we have a pending error somehow, we should still fail here...
+   return not _error->PendingError();
+}
+
+int main()
+{
+   return SQVMethod().Run();
+}
diff --git a/methods/store.cc b/methods/store.cc
index 8ffc7b9..14fadab 100644
--- a/methods/store.cc
+++ b/methods/store.cc
@@ -21,22 +21,23 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/strutl.h>
 
+#include <array>
+#include <cstring>
 #include <string>
 #include <vector>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 
 #include <apti18n.h>
 									/*}}}*/
 
-class StoreMethod : public aptMethod
+class StoreMethod final : public aptMethod
 {
-   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   bool Fetch(FetchItem *Itm) override;
 
    public:
 
-   explicit StoreMethod(std::string &&pProg) : aptMethod(std::move(pProg),"1.2",SingleInstance | SendConfig | SendURIEncoded)
+   explicit StoreMethod(std::string pProg) : aptMethod(std::move(pProg),"1.2",SingleInstance | SendConfig | SendURIEncoded)
    {
       SeccompFlags = aptMethod::BASE;
       if (Binary != "store")
@@ -103,10 +104,10 @@ bool StoreMethod::Fetch(FetchItem *Itm)					/*{{{*/
    Res.Size = 0;
    while (1)
    {
-      unsigned char Buffer[4*1024];
+      std::array<unsigned char, APT_BUFFER_SIZE> Buffer;
       unsigned long long Count = 0;
 
-      if (!From.Read(Buffer,sizeof(Buffer),&Count))
+      if (!From.Read(Buffer.data(),Buffer.size(),&Count))
       {
 	 if (To.IsOpen())
 	    To.OpFail();
@@ -116,8 +117,8 @@ bool StoreMethod::Fetch(FetchItem *Itm)					/*{{{*/
 	 break;
       Res.Size += Count;
 
-      Hash.Add(Buffer,Count);
-      if (To.IsOpen() && To.Write(Buffer,Count) == false)
+      Hash.Add(Buffer.data(),Count);
+      if (To.IsOpen() && To.Write(Buffer.data(),Count) == false)
       {
 	 Failed = true;
 	 break;
@@ -143,5 +144,5 @@ bool StoreMethod::Fetch(FetchItem *Itm)					/*{{{*/
 
 int main(int, char *argv[])
 {
-   return StoreMethod(flNotDir(argv[0])).Run();
+   return StoreMethod(std::string{flNotDir(argv[0])}).Run();
 }
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index 73d5ddd..1984cd6 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -18,7 +18,7 @@ apt_add_translation_domain(
     TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-helper apt-mark
             apt-private
             # Methods
-            connectlib file copy store gpgv cdrom http ftp rred rsh mirror
+            connectlib file copy store gpgv cdrom http rred mirror
     SCRIPTS ../dselect/install ../dselect/update
     EXCLUDE_LANGUAGES ${languages_excluded}
 )
diff --git a/po/apt-all.pot b/po/apt-all.pot
index c73a5d2..8fcbb64 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.6.1\n"
+"Project-Id-Version: apt 2.9.30\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-05-25 14:17+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -46,8 +46,8 @@ msgstr ""
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -174,8 +174,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -186,7 +185,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -205,6 +204,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr ""
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -223,13 +229,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr ""
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -607,6 +606,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -714,11 +737,11 @@ msgstr ""
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr ""
 
@@ -1021,6 +1044,12 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1201,6 +1230,14 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr ""
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1490,10 +1527,6 @@ msgid ""
 "used instead."
 msgstr ""
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr ""
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1746,6 +1779,18 @@ msgstr ""
 msgid "Broken packages"
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1784,6 +1829,11 @@ msgstr ""
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1791,6 +1841,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1798,11 +1853,52 @@ msgstr ""
 msgid "Need to get %sB of archives.\n"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
-msgid "After this operation, %sB of additional disk space will be used.\n"
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
 msgstr ""
 
 #. TRANSLATOR: The required space between number and unit is already included
@@ -1822,6 +1918,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr ""
@@ -1878,6 +1982,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1896,22 +2007,15 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
+msgid "Suggested packages:"
 msgstr ""
 
 #: apt-private/private-install.cc
-msgid "Suggested packages:"
+msgid "Recommended packages:"
 msgstr ""
 
 #: apt-private/private-install.cc
-msgid "Recommended packages:"
+msgid "The following additional packages will be installed:"
 msgstr ""
 
 #: apt-private/private-install.cc
@@ -2040,14 +2144,42 @@ msgstr ""
 msgid "The following packages have unmet dependencies:"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr ""
@@ -2056,10 +2188,22 @@ msgstr ""
 msgid "The following packages will be upgraded:"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr ""
@@ -2075,26 +2219,50 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2122,7 +2290,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2295,8 +2463,8 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2333,6 +2501,11 @@ msgstr ""
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2350,6 +2523,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2395,6 +2599,10 @@ msgstr ""
 msgid "  Missing: "
 msgstr ""
 
+#: cmdline/apt-cache.cc
+msgid "Total distinct source versions: "
+msgstr ""
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr ""
@@ -2694,6 +2902,10 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr ""
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -2904,6 +3116,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr ""
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr ""
@@ -3061,7 +3277,7 @@ msgstr ""
 msgid "Compressed output %s needs a compression set"
 msgstr ""
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr ""
 
@@ -3180,22 +3396,22 @@ msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: methods/basehttp.cc
@@ -3234,7 +3450,7 @@ msgstr ""
 msgid "Connection failed"
 msgstr ""
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3274,7 +3490,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr ""
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr ""
 
@@ -3309,7 +3525,7 @@ msgstr ""
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr ""
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr ""
 
@@ -3323,9 +3539,7 @@ msgstr ""
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr ""
@@ -3363,141 +3577,14 @@ msgstr ""
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
 
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr ""
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
+msgid "%s will be deprecated in a future release"
 msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
@@ -3517,24 +3604,17 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr ""
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
+msgid "Unknown error executing gpgv"
 msgstr ""
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3567,12 +3647,12 @@ msgstr ""
 msgid "Connection timed out"
 msgstr ""
 
-#: methods/rred.cc
-msgid "Failed to set modification time"
+#: methods/http.cc
+msgid "Problem hashing file"
 msgstr ""
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
+#: methods/rred.cc
+msgid "Failed to set modification time"
 msgstr ""
 
 #: methods/store.cc
diff --git a/po/ar.po b/po/ar.po
index 03b6731..c7da680 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2006-10-20 21:28+0300\n"
 "Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
 "Language-Team: Arabic <support@arabeyes.org>\n"
@@ -56,8 +56,8 @@ msgstr "المسار %s طويل جداً"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -187,8 +187,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -199,7 +198,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -218,6 +217,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "فشل إحضار %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -236,13 +242,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "الاتصال بـ%s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -622,6 +621,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -729,11 +752,11 @@ msgstr ""
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "خطأ في القراءة"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "خطأ في الكتابة"
 
@@ -1041,6 +1064,12 @@ msgstr "تعذر قفل دليل القائمة"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1222,6 +1251,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "حساب الترقية"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "مجموع المعتمدات:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1511,10 +1550,6 @@ msgid ""
 "used instead."
 msgstr ""
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "حساب الترقية"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1774,6 +1809,18 @@ msgstr "قد تساعد المعلومات التالية في حل المشكل
 msgid "Broken packages"
 msgstr "حزم معطوبة"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1816,6 +1863,12 @@ msgstr "خطأ داخلي، لم تنته عملية الترتيب"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "يا للغرابة... لم تتطابق الأحجام، الرجاء مراسلة apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr " مُثبّت:"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1823,6 +1876,11 @@ msgstr "يا للغرابة... لم تتطابق الأحجام، الرجاء 
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "بحاجة إلى جلب %sب/%sب من الأرشيف.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1830,13 +1888,54 @@ msgstr "بحاجة إلى جلب %sب/%sب من الأرشيف.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "بحاجة إلى جلب %sب من الأرشيف.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "بعد الاستخراج %sب من المساحة الإضافيّة سيتمّ استخدامها.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1854,6 +1953,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "هل تريد الاستمرار؟"
@@ -1911,6 +2018,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1929,18 +2043,6 @@ msgid_plural ""
 msgstr[0] "سيتم تثبيت الحزم الجديدة التالية:"
 msgstr[1] "سيتم تثبيت الحزم الجديدة التالية:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "سيتم تثبيت الحزم الإضافيّة التالية:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "الحزم المقترحة:"
@@ -1949,6 +2051,11 @@ msgstr "الحزم المقترحة:"
 msgid "Recommended packages:"
 msgstr "الحزم المستحسنة:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "سيتم تثبيت الحزم الإضافيّة التالية:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2078,14 +2185,51 @@ msgstr " أو"
 msgid "The following packages have unmet dependencies:"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Unsatisfied dependencies:"
+msgstr "مجموع المعتمدات:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "سيتم تثبيت الحزم الجديدة التالية:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "تم تثبيت %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "مجموع المعتمدات:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "سيتم إزالة الحزم التالية:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "سيتم الإبقاء على الحزم التالية:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "سيتم الإبقاء على الحزم التالية:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "سيتم الإبقاء على الحزم التالية:"
@@ -2094,10 +2238,24 @@ msgstr "سيتم الإبقاء على الحزم التالية:"
 msgid "The following packages will be upgraded:"
 msgstr "ستتم ترقية الحزم التالية:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "سيتم تثبيط الحزم التالية:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "الحزم المُدبّسة:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "سيتم تغيير الحزم المبقاة التالية:"
@@ -2115,26 +2273,50 @@ msgstr ""
 "تحذير: ستتم إزالة الحزم الأساسية التالية.\n"
 "لا يجب أن تقوم بهذا إلى إن كنت تعرف تماماً ما تقوم به!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu سيتم ترقيتها، %lu مثبتة حديثاً،  "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "تم تثبيت %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu أعيد تثبيتها، "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "تم تثبيت %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu مثبطة، "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu لإزالتها و %lu لم يتم ترقيتها.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2162,7 +2344,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2336,8 +2518,8 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2374,6 +2556,11 @@ msgstr "فشل تغيير اسم %s إلى %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2391,6 +2578,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2437,6 +2655,12 @@ msgstr " الحزم الوهمية المختلطة:"
 msgid "  Missing: "
 msgstr " مفقودة:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "مجموع النسخ الفريدة:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "مجموع النسخ الفريدة:"
@@ -2745,6 +2969,10 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr ""
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -2969,6 +3197,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "دمج المعلومات المتوفرة"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr ""
@@ -3130,7 +3362,7 @@ msgstr ""
 msgid "Compressed output %s needs a compression set"
 msgstr ""
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr ""
 
@@ -3249,22 +3481,22 @@ msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: methods/basehttp.cc
@@ -3303,7 +3535,7 @@ msgstr "بيانات ترويسة سيئة"
 msgid "Connection failed"
 msgstr "فشل الاتصال"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3345,7 +3577,7 @@ msgstr "تعذر فكّ القرص المدمج من %s، إذ قد يكون ل
 msgid "Disk not found."
 msgstr "لم يُعثر على القرص."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "لم يُعثر على الملف"
 
@@ -3381,7 +3613,7 @@ msgstr ""
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "تعذر تمهيد الاتصال بـ%s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "فشل"
 
@@ -3395,9 +3627,7 @@ msgstr "تعذر الاتصال بـ%s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "تعذر الاتصال بـ%s:%s (%s)، انتهى وقت الاتصال"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "الاتصال بـ%s"
@@ -3435,143 +3665,14 @@ msgstr "فشيل تنفيذ stat"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "تسجيل الدخول"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "رفض الخادم اتصالنا بالرد: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "فشل USER، ردّ الخادم: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "فشل PASS، ردّ الخادم: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"تم تحديد خادم بروكسي ولكن دون نص تسجيل دخول برمجي،  Acquire::ftp::ProxyLogin "
-"فارغ."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "فشل أمر نص تسجيل الدخول البرمجي '%s'، ردّ الخادم: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "فشل TYPE، ردّ الخادم: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "انتهى وقت الاتصال"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "أغلق الخادم الاتصال"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "تعذر إرسال الأمر PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "فشل EPRT، ردّ الخادم: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "تعذر قبول الاتصال"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "تعذر إحضار الملف، ردّ الخادم '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "فشل نقل البيانات، ردّ الخادم '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "استعلام"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
+msgid "%s will be deprecated in a future release"
 msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
@@ -3591,24 +3692,17 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr ""
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
+msgid "Unknown error executing gpgv"
 msgstr ""
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3641,18 +3735,80 @@ msgstr "فشل التحديد"
 msgid "Connection timed out"
 msgstr "انتهى وقت الاتصال"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr ""
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "فشل تعيين وقت التعديل"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr ""
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "تسجيل الدخول"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "رفض الخادم اتصالنا بالرد: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "فشل USER، ردّ الخادم: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "فشل PASS، ردّ الخادم: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "تم تحديد خادم بروكسي ولكن دون نص تسجيل دخول برمجي،  "
+#~ "Acquire::ftp::ProxyLogin فارغ."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "فشل أمر نص تسجيل الدخول البرمجي '%s'، ردّ الخادم: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "فشل TYPE، ردّ الخادم: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "انتهى وقت الاتصال"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "أغلق الخادم الاتصال"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "تعذر إرسال الأمر PORT"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "فشل EPRT، ردّ الخادم: %s"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "تعذر قبول الاتصال"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "تعذر إحضار الملف، ردّ الخادم '%s'"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "فشل نقل البيانات، ردّ الخادم '%s'"
+
+#~ msgid "Query"
+#~ msgstr "استعلام"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "سيتم تغيير الحزم المبقاة التالية:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "نعم، افعل ما أقوله!"
 
diff --git a/po/ast.po b/po/ast.po
index 7a40ee2..a943286 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.7.18\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2010-10-02 23:35+0100\n"
 "Last-Translator: Iñigo Varela <ivarela@softastur.org>\n"
 "Language-Team: Asturian (ast)\n"
@@ -49,8 +49,8 @@ msgstr "El direutorio %s ta desviáu"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -181,8 +181,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Conflictu de distribución: %s (esperábase %s pero obtúvose %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -193,7 +192,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -212,6 +211,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Falló algamar %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -232,13 +238,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Coneutando a %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -637,6 +636,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Fallu de sintaxis %s:%u: Puxarra extra al final del ficheru"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -746,11 +769,11 @@ msgstr "El subprocesu %s devolvió un códigu d'error (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "El subprocesu %s terminó de manera inesperada"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Fallu de llectura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Fallu d'escritura"
 
@@ -1070,6 +1093,12 @@ msgstr "Nun pudo bloquiase'l direutoriu d'alministración (%s), ¿yes root?"
 msgid "Not locked"
 msgstr "Non bloquiáu"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1261,6 +1290,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando l'anovamientu"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependencies totales: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1565,10 +1604,6 @@ msgstr ""
 "Nun pudieron descargase dellos ficheros d'índiz; inoráronse o usáronse los "
 "antiguos nel so llugar."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando l'anovamientu"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1835,6 +1870,18 @@ msgstr "La siguiente información pue aidar a resolver la situación:"
 msgid "Broken packages"
 msgstr "Paquetes frañaos"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1878,6 +1925,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Que raro... Los tamaños nun concasen, escribe a apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Instaláu: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1885,6 +1938,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Hai que descargar %sB/%sB d'archivos.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1892,13 +1950,55 @@ msgstr "Hai que descargar %sB/%sB d'archivos.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Hai que descargar %sB d'archivos.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Tres d'esta operación, van usase %sB d'espaciu de discu adicional.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Etiqueta guardada: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1916,6 +2016,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "¿Quies continuar?"
@@ -1978,6 +2086,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Error internu, AutoRemover rompió coses"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Usa '%s' pa desinstalalos."
+msgstr[1] "Usa '%s' pa desinstalalos."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1998,18 +2113,6 @@ msgstr[0] "El paquete %lu instalóse de mou automáticu y yá nun se necesita.\n
 msgstr[1] ""
 "Los paquetes %lu instaláronse de manera automática y ya nun se necesiten\n"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Usa '%s' pa desinstalalos."
-msgstr[1] "Usa '%s' pa desinstalalos."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Instalaránse los siguientes paquetes extra:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paquetes afalaos:"
@@ -2018,6 +2121,11 @@ msgstr "Paquetes afalaos:"
 msgid "Recommended packages:"
 msgstr "Paquetes encamentaos"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Instalaránse los siguientes paquetes extra:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2152,14 +2260,52 @@ msgstr " o"
 msgid "The following packages have unmet dependencies:"
 msgstr "Los siguientes paquetes nun cumplen dependencies:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Fallu pa satisfacer la dependencia %s pa %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Van instalase los siguientes paquetes NUEVOS:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Instalando %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Dependencies totales: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Los siguientes paquetes van DESANICIASE:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Los siguientes paquetes tan reteníos:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Los siguientes paquetes tan reteníos:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Los siguientes paquetes tan reteníos:"
@@ -2168,10 +2314,24 @@ msgstr "Los siguientes paquetes tan reteníos:"
 msgid "The following packages will be upgraded:"
 msgstr "Los siguientes paquetes van actualizase:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Los siguientes paquetes van DESACTUALIZASE:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Paquetes na chincheta:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Van camudase los siguientes paquetes reteníos:"
@@ -2189,26 +2349,52 @@ msgstr ""
 "AVISU: Los siguientes paquetes esenciales van desaniciase.\n"
 "¡Esto NUN hai que facelo si nun sabes esautamente lo que faes!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu actualizaos, %lu nuevos instalaos, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstalaos, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu desactualizaos, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu para desaniciar y %lu nun actualizaos.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2236,7 +2422,7 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2416,8 +2602,8 @@ msgstr "%s nun tien dependencies de construcción.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2456,6 +2642,11 @@ msgstr "Nun pudo renomase %s como %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2473,6 +2664,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2518,6 +2740,12 @@ msgstr "  Paquetes virtuales amestaos: "
 msgid "  Missing: "
 msgstr "  Falten: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Versiones distintes en total: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Versiones distintes en total: "
@@ -2847,6 +3075,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Hebo un problema al xenerar el hash del ficheru"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3096,6 +3330,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Lleendo información d'estáu"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3303,7 +3541,7 @@ msgstr "Algoritmu de compresión desconocíu '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "La salida comprimida %s necesita un xuegu de compresión"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Falló criar un tubu IPC al soprocesu"
 
@@ -3422,23 +3660,23 @@ msgstr "L'archivu nun tien el campu paquetes"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s nun tien la entrada saltos\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s nun tien la entrada saltos\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  el curiador de %s ye %s y non %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  el curiador de %.*s ye %.*s y non %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s nun tien la entrada saltos de fonte\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s nun tien la entrada saltos de fonte\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s tampoco nun tiene una entrada binaria de saltos\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s tampoco nun tiene una entrada binaria de saltos\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3476,7 +3714,7 @@ msgstr "Datos de testera incorreutos"
 msgid "Connection failed"
 msgstr "Fallo la conexón"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3518,7 +3756,7 @@ msgstr "Nun se pudo desmontar el CD-ROM de %s; puede que se tea usando entá."
 msgid "Disk not found."
 msgstr "Nun s'atopa'l discu."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Nun s'atopa'l ficheru."
 
@@ -3554,7 +3792,7 @@ msgstr "Nun se pudo crear un socket pa %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Nun se pudo coneutar a %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Falló"
 
@@ -3568,9 +3806,7 @@ msgstr "Nun se pudo coneutar a %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nun se pudo coneutar a %s:%s (%s); expiró'l tiempu de conexón"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Coneutando a %s"
@@ -3608,144 +3844,15 @@ msgstr "Falló al lleer"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI malu, los URIS llocales nun pueden entamar por //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Entrando"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nun se pudo determinar el nome del par"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nun se pudo determinar el nome llocal"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "El sirvidor refugó la conexón, y dixo: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "L'usuariu (USER) falló; el sirvidor dixo: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "La contraseña (PASS) falló; el sirvidor dixo: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Especificóse un sirvidor proxy pero non un script d'entrada, Acquire::ftp::"
-"ProxyLogin ta baleru."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Falló la orde '%s' del guión d'entrada; el sirvidor dixo: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "La triba (TYPE) falló; el sirvidor dixo: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Gandió'l tiempu de conexón"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "El sirvidor zarró la conexón"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Una rempuesta revirtió'l buffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Corrupción del protocolu"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nun se pudo crear un socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Nun se pudo coneutar el zócalu de datos; gandió'l tiempu de conexón"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nun se pudo coneutar un socket pasivu."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo nun pudo obtener un zócalu oyente"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nun se pudo enllazar con un socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Nun se pudo escuchar nel socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Nun se pudo determinar el nome del socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Nun se pudo mandar la orde PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Direición de familia %u desconocida (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT falló; el sirvidor dixo: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Gandió'l tiempu de conexón col zócalu de datos"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Nun se pudo aceptar la conexón"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Hebo un problema al xenerar el hash del ficheru"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nun se pudo descargar el ficheru; el sirvidor dixo '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Gandió'l tiempu del zócalu de datos"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Falló la tresferencia de datos; el sirvidor dixo '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Consulta"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nun se pudo invocar "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3765,25 +3872,23 @@ msgstr ""
 "Fallu internu: Robla bona, pero nun se pudo determinar la so buelga dixital?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Nun pudo executase 'apt-key' pa verificar la robla (¿ta instaláu gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Fallu desconocíu al executar apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3818,18 +3923,129 @@ msgstr "Falló la escoyeta"
 msgid "Connection timed out"
 msgstr "Gandió'l tiempu de conexón"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Hebo un problema al xenerar el hash del ficheru"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Nun se pudo afitar la hora de modificación"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Conexón encaboxada prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Entrando"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nun se pudo determinar el nome del par"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nun se pudo determinar el nome llocal"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "El sirvidor refugó la conexón, y dixo: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "L'usuariu (USER) falló; el sirvidor dixo: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "La contraseña (PASS) falló; el sirvidor dixo: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Especificóse un sirvidor proxy pero non un script d'entrada, "
+#~ "Acquire::ftp::ProxyLogin ta baleru."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Falló la orde '%s' del guión d'entrada; el sirvidor dixo: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "La triba (TYPE) falló; el sirvidor dixo: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Gandió'l tiempu de conexón"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "El sirvidor zarró la conexón"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Una rempuesta revirtió'l buffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Corrupción del protocolu"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Nun se pudo crear un socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Nun se pudo coneutar el zócalu de datos; gandió'l tiempu de conexón"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nun se pudo coneutar un socket pasivu."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo nun pudo obtener un zócalu oyente"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nun se pudo enllazar con un socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Nun se pudo escuchar nel socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Nun se pudo determinar el nome del socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Nun se pudo mandar la orde PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Direición de familia %u desconocida (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT falló; el sirvidor dixo: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Gandió'l tiempu de conexón col zócalu de datos"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Nun se pudo aceptar la conexón"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nun se pudo descargar el ficheru; el sirvidor dixo '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Gandió'l tiempu del zócalu de datos"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Falló la tresferencia de datos; el sirvidor dixo '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Consulta"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Nun se pudo invocar "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Conexón encaboxada prematuramente"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Van camudase los siguientes paquetes reteníos:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sí, ¡facer lo que digo!"
 
diff --git a/po/bg.po b/po/bg.po
index fc80e1e..a138425 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.7.21\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2012-06-25 17:23+0300\n"
 "Last-Translator: Damyan Ivanov <dmn@debian.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -55,8 +55,8 @@ msgstr "Директорията %s е отклонена"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -194,8 +194,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Конфликт в дистрибуцията: %s (очаквана: %s, намерена: %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -206,7 +205,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -225,6 +224,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Неуспех при изтеглянето на %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -245,13 +251,6 @@ msgstr "Не е открит източник, от който да се изт
 msgid "Changelog unavailable for %s=%s"
 msgstr "Журнал на промените в %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -654,6 +653,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Синтактична грешка %s:%u: Излишни символи в края на файла"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -766,11 +789,11 @@ msgstr "Подпроцесът %s върна код за грешка (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Подпроцесът %s завърши неочаквано"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Грешка при четене"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Грешка при запис"
 
@@ -1096,6 +1119,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Без заключване"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1290,6 +1319,16 @@ msgstr ""
 "Външната програма за удовлетворяване на зависимости се провали без да изведе "
 "съобщение за грешка"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Изчисляване на актуализацията"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Общо зависимости: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Изпълняване на външна програма за удовлетворяване на зависимости"
@@ -1602,10 +1641,6 @@ msgstr ""
 "Някои индексни файлове не можаха да бъдат изтеглени. Те са пренебрегнати или "
 "са използвани по-стари."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Изчисляване на актуализацията"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1877,6 +1912,18 @@ msgstr ""
 msgid "Broken packages"
 msgstr "Счупени пакети"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1920,6 +1967,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Странно... Размерите не съвпадат, изпратете е-поща на apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Изтегляне на %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1927,6 +1980,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Необходимо е да се изтеглят %sB/%sB архиви.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Изтегляне на %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1934,8 +1993,6 @@ msgstr "Необходимо е да се изтеглят %sB/%sB архиви.
 msgid "Need to get %sB of archives.\n"
 msgstr "Необходимо е да се изтеглят %sB архиви.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
@@ -1943,6 +2000,50 @@ msgstr ""
 "След тази операция ще бъде използвано %sB допълнително дисково "
 "пространство.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Запазен етикет: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1960,6 +2061,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Искате ли да продължите?"
@@ -2022,6 +2131,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Вътрешна грешка, AutoRemover счупи нещо в системата"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Използвайте „%s“ за да го премахнете."
+msgstr[1] "Използвайте „%s“ за да ги премахнете."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2041,18 +2157,6 @@ msgstr[0] "%lu пакет е бил инсталиран автоматично
 msgstr[1] ""
 "%lu пакета са били инсталирани автоматично и вече не са необходими:\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Използвайте „%s“ за да го премахнете."
-msgstr[1] "Използвайте „%s“ за да ги премахнете."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Следните допълнителни пакети ще бъдат инсталирани:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Предложени пакети:"
@@ -2061,6 +2165,11 @@ msgstr "Предложени пакети:"
 msgid "Recommended packages:"
 msgstr "Препоръчвани пакети:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Следните допълнителни пакети ще бъдат инсталирани:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2195,14 +2304,52 @@ msgstr " или"
 msgid "The following packages have unmet dependencies:"
 msgstr "Следните пакети имат неудовлетворени зависимости:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Неуспех при удовлетворяването на зависимост %s за пакета %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Следните НОВИ пакети ще бъдат инсталирани:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Инсталиране на %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Общо зависимости: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Следните пакети ще бъдат ПРЕМАХНАТИ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Следните пакети няма да бъдат променени:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Следните пакети няма да бъдат променени:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Следните пакети няма да бъдат променени:"
@@ -2211,10 +2358,24 @@ msgstr "Следните пакети няма да бъдат променен
 msgid "The following packages will be upgraded:"
 msgstr "Следните пакети ще бъдат актуализирани:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Следните пакети ще бъдат ВЪРНАТИ КЪМ ПО-СТАРА ВЕРСИЯ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Отбити пакети:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Следните задържани пакети ще бъдат променени:"
@@ -2232,26 +2393,53 @@ msgstr ""
 "ПРЕДУПРЕЖДЕНИЕ: Следните необходими пакети ще бъдат премахнати.\n"
 "Това НЕ би трябвало да става освен ако знаете точно какво правите!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu актуализирани, %lu нови инсталирани, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Инсталиране на %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu преинсталирани, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Инсталиране на %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu върнати към по-стара версия, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Изтегляне на %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu за премахване и %lu без промяна.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2279,7 +2467,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2462,11 +2650,11 @@ msgstr "%s няма зависимости за компилиране.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Липсва информация за архитектурата %s. Прегледайте информацията за APT::"
-"Architectures в apt.conf(5)."
+"Липсва информация за архитектурата %s. Прегледайте информацията за "
+"APT::Architectures в apt.conf(5)."
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2503,6 +2691,11 @@ msgstr "Неуспех при преименуването на %s на %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2520,6 +2713,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2565,6 +2789,12 @@ msgstr "  Смесени виртуални пакети: "
 msgid "  Missing: "
 msgstr "  Липсващи: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Общо уникални версии: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Общо уникални версии: "
@@ -2897,6 +3127,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Проблем при хеширане на файла"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3147,6 +3383,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Четене на информацията за състоянието"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3355,7 +3595,7 @@ msgstr "Непознат алгоритъм за компресия „%s“"
 msgid "Compressed output %s needs a compression set"
 msgstr "Компресираният изход %s изисква настройка за компресирането"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Неуспех при създаването на IPC pipe към подпроцеса"
 
@@ -3474,23 +3714,23 @@ msgstr "Архивът няма поле „package“"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s няма запис „override“\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s няма запис „override“\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  поддържащия пакета %s е %s, а не %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  поддържащия пакета %.*s е %.*s, а не %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s няма запис „source override“\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s няма запис „source override“\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s няма също и запис „binary override“\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s няма също и запис „binary override“\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3528,7 +3768,7 @@ msgstr "Невалидни данни на заглавната част"
 msgid "Connection failed"
 msgstr "Неуспех при свързването"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3570,7 +3810,7 @@ msgstr "Неуспех при демонтирането на CD-ROM в %s, мо
 msgid "Disk not found."
 msgstr "Дискът не е намерен."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Файлът не е намерен"
 
@@ -3606,7 +3846,7 @@ msgstr "Неуспех при създаването на гнездо за %s (
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Не може да се започне свързване с %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Неуспех"
 
@@ -3620,9 +3860,7 @@ msgstr "Неуспех при свързване с %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Неуспех при свързване с %s:%s (%s), допустимото време изтече"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Свързване с %s"
@@ -3660,146 +3898,15 @@ msgstr "Неуспех при получаването на атрибути"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Невалиден адрес-URI, локалните адреси-URI не трябва да започват с „//“"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Влизане"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Неуспех при установяването на името на отдалечения сървър"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Неуспех при установяването на локалното име"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Сървърът отказа свързване и съобщи: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER се провали, сървърът съобщи: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS се провали, сървърът съобщи: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Беше указан сървър-посредник, но няма скрипт за влизане, Acquire::ftp::"
-"ProxyLogin е празен."
 
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Командата „%s“ на скрипта за влизане се провали, сървърът съобщи: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE се провали, сървърът съобщи: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Допустимото време за свързването изтече"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Сървърът разпадна връзката"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Отговорът препълни буфера."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Развален протокол"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Неуспех при създаването на гнездо"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Неуспех при свързването на гнездо за данни, допустимото време за свързване "
-"изтече"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Неуспех при свързването на пасивно гнездо."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo не успя да се добере до слушащо гнездо"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Неуспех при свързването на гнездо"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Неуспех при слушането на гнездото"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Неуспех при определянето на името на гнездото"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Неуспех при изпращането на командата PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Неизвестно семейство адреси %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT се провали, сървърът съобщи: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Времето за установяване на връзка с гнездо за данни изтече"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Невъзможно е да се приеме свързването"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Проблем при хеширане на файла"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Неуспех при изтеглянето на файла, сървърът съобщи „%s“"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Времето за връзка с гнездо за данни изтече"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Неуспех при прехвърлянето на данни, сървърът съобщи: „%s“"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Запитване"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Неуспех при извикването на "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3820,26 +3927,24 @@ msgstr ""
 "ключа?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Неуспех при изпълнение на „apt-key“ за проверка на подписа (инсталиран ли е "
 "gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Неизвестна грешка при изпълнението на apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3874,18 +3979,137 @@ msgstr "Неуспех на избора"
 msgid "Connection timed out"
 msgstr "Допустимото време за свързване изтече"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Проблем при хеширане на файла"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Неуспех при задаването на време на промяна"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Връзката прекъсна преждевременно"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Празни файлове не могат да бъдат валидни архиви"
 
+#~ msgid "Logging in"
+#~ msgstr "Влизане"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Неуспех при установяването на името на отдалечения сървър"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Неуспех при установяването на локалното име"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Сървърът отказа свързване и съобщи: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER се провали, сървърът съобщи: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS се провали, сървърът съобщи: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Беше указан сървър-посредник, но няма скрипт за влизане, "
+#~ "Acquire::ftp::ProxyLogin е празен."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Командата „%s“ на скрипта за влизане се провали, сървърът съобщи: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE се провали, сървърът съобщи: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Допустимото време за свързването изтече"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Сървърът разпадна връзката"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Отговорът препълни буфера."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Развален протокол"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Неуспех при създаването на гнездо"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Неуспех при свързването на гнездо за данни, допустимото време за "
+#~ "свързване изтече"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Неуспех при свързването на пасивно гнездо."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo не успя да се добере до слушащо гнездо"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Неуспех при свързването на гнездо"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Неуспех при слушането на гнездото"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Неуспех при определянето на името на гнездото"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Неуспех при изпращането на командата PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Неизвестно семейство адреси %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT се провали, сървърът съобщи: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Времето за установяване на връзка с гнездо за данни изтече"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Невъзможно е да се приеме свързването"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Неуспех при изтеглянето на файла, сървърът съобщи „%s“"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Времето за връзка с гнездо за данни изтече"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Неуспех при прехвърлянето на данни, сървърът съобщи: „%s“"
+
+#~ msgid "Query"
+#~ msgstr "Запитване"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Неуспех при извикването на "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Връзката прекъсна преждевременно"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Инсталирана: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Следните задържани пакети ще бъдат променени:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Да, прави каквото казвам!"
 
@@ -4106,8 +4330,8 @@ msgstr "Празни файлове не могат да бъдат валидн
 #~ "  -q   Премахване на индикатора за напредък.\n"
 #~ "  -i   Показване само на важни зависимости при командата „unmet“.\n"
 #~ "  -c=? Указване на файл с настройки.\n"
-#~ "  -o=? Настройване на произволна конфигурационна опция, например -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Настройване на произволна конфигурационна опция, например -o "
+#~ "dir::cache=/tmp\n"
 #~ "За повече информация вижте наръчниците apt-cache(8) и apt.conf(5).\n"
 
 #, fuzzy
@@ -4143,8 +4367,8 @@ msgstr "Празни файлове не могат да бъдат валидн
 #~ "Опции:\n"
 #~ "  -h   Този помощен текст.\n"
 #~ "  -c=? Четене на този конфигурационен файл.\n"
-#~ "  -o=? Настройване на произволна конфигурационна опция, т.е. -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Настройване на произволна конфигурационна опция, т.е. -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid ""
 #~ "Options:\n"
@@ -4190,8 +4414,8 @@ msgstr "Празни файлове не могат да бъдат валидн
 #~ "  -h   Този помощен текст.\n"
 #~ "  -s   Използване на сортиране по изходен код.\n"
 #~ "  -c=? Четене на този конфигурационен файл.\n"
-#~ "  -o=? Настройване на произволна конфигурационна опция, т.е. -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Настройване на произволна конфигурационна опция, т.е. -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid "Child process failed"
 #~ msgstr "Процесът-потомък пропадна"
@@ -4321,9 +4545,6 @@ msgstr "Празни файлове не могат да бъдат валидн
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Игнориране на несъществуващо издание „%s“ на пакета „%s“"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Изтегляне на %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "Това не е валиден DEB архив, няма елемент „%s“, „%s“ или „%s“"
 
diff --git a/po/bs.po b/po/bs.po
index a322cca..6c77be8 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.26\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2004-05-06 15:25+0100\n"
 "Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
 "Language-Team: Bosnian <lokal@lugbih.org>\n"
@@ -52,8 +52,8 @@ msgstr ""
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -181,8 +181,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -193,7 +192,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -212,6 +211,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Ne mogu otvoriti %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -230,13 +236,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr ""
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -617,6 +616,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -724,11 +747,11 @@ msgstr ""
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Greška pri čitanju"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Greška pri pisanju"
 
@@ -1035,6 +1058,12 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, fuzzy, c-format
@@ -1216,6 +1245,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Računam nadogradnju"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Ukupno zavisnosti:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1506,10 +1545,6 @@ msgid ""
 "used instead."
 msgstr ""
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Računam nadogradnju"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1765,6 +1800,18 @@ msgstr ""
 msgid "Broken packages"
 msgstr "Oštećeni paketi"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1803,6 +1850,12 @@ msgstr ""
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Instalirano:"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1810,6 +1863,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1817,11 +1875,52 @@ msgstr ""
 msgid "Need to get %sB of archives.\n"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
-msgid "After this operation, %sB of additional disk space will be used.\n"
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
 msgstr ""
 
 #. TRANSLATOR: The required space between number and unit is already included
@@ -1841,6 +1940,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Da li želite nastaviti?"
@@ -1897,6 +2004,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1915,18 +2029,6 @@ msgid_plural ""
 msgstr[0] "Slijedeći NOVI paketi će biti instalirani:"
 msgstr[1] "Slijedeći NOVI paketi će biti instalirani:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Slijedeći dodatni paketi će biti instalirani:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Predloženi paketi:"
@@ -1935,6 +2037,11 @@ msgstr "Predloženi paketi:"
 msgid "Recommended packages:"
 msgstr "Preporučeni paketi:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Slijedeći dodatni paketi će biti instalirani:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2064,14 +2171,49 @@ msgstr " ili"
 msgid "The following packages have unmet dependencies:"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Building dependency tree"
+msgid "Unsatisfied dependencies:"
+msgstr "Gradim stablo zavisnosti"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Slijedeći NOVI paketi će biti instalirani:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "  Instalirano:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Ukupno zavisnosti:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Slijedeći paketi će biti UKLONJENI:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Slijedeći paketi su zadržani:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Not upgrading yet due to phasing:"
+msgstr "Slijedeći paketi su zadržani:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, fuzzy
 msgid "The following packages have been kept back:"
@@ -2081,10 +2223,24 @@ msgstr "Slijedeći paketi su zadržani:"
 msgid "The following packages will be upgraded:"
 msgstr "Slijedeći paketi će biti nadograđeni:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Suggested packages:"
+msgid "Changing held packages:"
+msgstr "Predloženi paketi:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr ""
@@ -2100,26 +2256,50 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "  Instalirano:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "  Instalirano:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2147,7 +2327,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2320,8 +2500,8 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2358,6 +2538,11 @@ msgstr "Ne mogu otvoriti %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2375,6 +2560,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2421,6 +2637,12 @@ msgstr "  Miješani virtuelni paketi:"
 msgid "  Missing: "
 msgstr "  Nedostajući:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Ukupno različitih verzija:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Ukupno različitih verzija:"
@@ -2732,6 +2954,10 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr ""
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -2956,6 +3182,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Sastavljam dostupne informacije"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Building dependency tree"
@@ -3117,7 +3347,7 @@ msgstr ""
 msgid "Compressed output %s needs a compression set"
 msgstr ""
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr ""
 
@@ -3236,22 +3466,22 @@ msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: methods/basehttp.cc
@@ -3290,7 +3520,7 @@ msgstr ""
 msgid "Connection failed"
 msgstr "Povezivanje neuspješno"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3332,7 +3562,7 @@ msgstr "Ne mogu demontirati CD-ROM na %s, moguće je da se još uvijek koristi."
 msgid "Disk not found."
 msgstr "Datoteka nije pronađena"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Datoteka nije pronađena"
 
@@ -3368,7 +3598,7 @@ msgstr ""
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr ""
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Neuspješno"
 
@@ -3382,9 +3612,7 @@ msgstr ""
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Povezujem se sa %s"
@@ -3422,142 +3650,14 @@ msgstr ""
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Prijavljujem se"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Server je zatvorio vezu"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc
-#, fuzzy
-msgid "Protocol corruption"
-msgstr "Oštećenje protokola"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
 
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr ""
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
+msgid "%s will be deprecated in a future release"
 msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
@@ -3577,24 +3677,17 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr ""
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
+msgid "Unknown error executing gpgv"
 msgstr ""
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3628,18 +3721,28 @@ msgstr ""
 msgid "Connection timed out"
 msgstr ""
 
-#: methods/rred.cc
-msgid "Failed to set modification time"
+#: methods/http.cc
+msgid "Problem hashing file"
 msgstr ""
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
+#: methods/rred.cc
+msgid "Failed to set modification time"
 msgstr ""
 
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Prijavljujem se"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Server je zatvorio vezu"
+
+#, fuzzy
+#~ msgid "Protocol corruption"
+#~ msgstr "Oštećenje protokola"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Da, uradi kako kažem!"
 
diff --git a/po/ca.po b/po/ca.po
index 42887b2..44fd87d 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,20 +9,21 @@
 # Jordi Mallach <jordi@debian.org>, 2004, 2005, 2006, 2008, 2009, 2011, 2012.
 # Agustí Grau <fletxa@gmail.com>, 2010.
 # Oriol Debian <oriol.debian@gmail.com>, 2016.
+# Carles Pina i Estany <cpina@debian.org>, 2024
 msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.4~beta1\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2020-08-09 22:43+0200\n"
-"Last-Translator: Aleix Vidal i Gaya <aleix@softcatala.org>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-08-08 22:47+0100\n"
+"Last-Translator: Carles Pina i Estany <cpina@debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
 "Language: ca\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 3.2.2\n"
 "X-Poedit-Bookmarks: 502,178,-1,-1,-1,-1,-1,-1,-1,-1\n"
 
 #: apt-pkg/acquire-item.cc
@@ -61,11 +62,11 @@ msgstr "El dipòsit «%s» ja no té un fitxer Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Això normalment no està permès, però s'ha donat l'opció «Acquire::"
-"AllowDowngradeToInsecureRepositories» per anul·lar-ho."
+"Això normalment no està permès, però s'ha donat l'opció "
+"«Acquire::AllowDowngradeToInsecureRepositories» per anul·lar-ho."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -208,8 +209,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribució conflictiva: %s (s'esperava %s però s'ha obtingut %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "El dipòsit «%s» ha canviat el seu valor «%s» de «%s» a «%s»"
@@ -222,7 +222,7 @@ msgstr ""
 "%hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -243,6 +243,15 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "No s'ha pogut obtenir %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Els repositoris han de tenir un fitxer «InRelease» signat, però no se n'ha "
+"trobat cap a %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -263,15 +272,6 @@ msgstr "No es troba una font per baixar la versió «%s» de «%s»"
 msgid "Changelog unavailable for %s=%s"
 msgstr "El registre de canvis no està disponible per a %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"No s'admet el mètode «%s» i està desactivat per defecte. Considereu canviar "
-"a http(s). Establiu Dir::Bin::Methods::%s a «%s» per tornar-lo a activar."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -681,6 +681,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Error de sintaxi %s:%u: Hi ha brossa extra al final del fitxer"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Error:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Avís:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Notificació:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Auditoria:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Depuració:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -795,11 +819,11 @@ msgstr "El subprocés %s ha retornat un codi d'error (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "El subprocés %s ha sortit inesperadament"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Error de lectura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Error d'escriptura"
 
@@ -1126,6 +1150,12 @@ msgstr "No es pot bloquejar el directori d'administració (%s). Sou root?"
 msgid "Not locked"
 msgstr "No bloquejat"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1316,6 +1346,14 @@ msgstr "Prepara per a rebre una solució"
 msgid "External solver failed without a proper error message"
 msgstr "El solucionador extern ha fallat sense un missatge d'error adequat"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "S'està calculant l'actualització"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "S'està resolent les dependències"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Executa un solucionador extern"
@@ -1393,8 +1431,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"No s'ha pogut realitzar la configuració immediata de «%s». Vegeu man 5 apt."
-"conf dins de APT::Immediate-Configure per a més detalls. (%d)"
+"No s'ha pogut realitzar la configuració immediata de «%s». Vegeu man 5 "
+"apt.conf dins de APT::Immediate-Configure per a més detalls. (%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1632,10 +1670,6 @@ msgstr ""
 "Alguns fitxers d'índex no s'han pogut baixar. S'han omès, o en el seu lloc "
 "s'han emprat els antics."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "S'està calculant l'actualització"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1916,13 +1950,27 @@ msgstr "La informació següent pot ajudar-vos a resoldre la situació:"
 msgid "Broken packages"
 msgstr "Paquets trencats"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Un «usr» no unificat ja no està suportat, useu «usrmerge» per convertir-lo "
+"en un sistema amb l'«usr» unificat."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Per més detalls, vegeu %s."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
 "missing?"
 msgstr ""
-"No es poden obtenir alguns arxius. Proveu a executar apt-get update o "
-"intenteu-ho amb --fix-missing."
+"No es poden obtenir alguns arxius. Voleu provar a executar «apt-get update» "
+"o intentar-ho amb «--fix-missing»?"
 
 #: apt-private/private-install.cc
 msgid "Internal error, InstallPackages was called with broken packages!"
@@ -1965,6 +2013,11 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Que estrany… Les mides no coincideixen, informeu-ho a apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Mida de la descàrrega: %sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1972,6 +2025,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Mida de la descàrrega: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1979,14 +2037,58 @@ msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "S'ha d'obtenir %sB d'arxius.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Després d'aquesta operació s'utilitzaran %sB d'espai en disc addicional.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Espai necessari: %sB / %sB disponible\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Cal més espai del que hi ha disponible: %sB > %sB, la instal·lació pot fallar"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "a %s:  %sB / %sB disponible\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"Cal més espai a %s del que hi ha disponible: %sB > %sB, la instal·lació pot "
+"fallar"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Espai necessari: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Espai recuperat: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2003,6 +2105,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"No està permès eliminar paquets essencials crítics pel sistema. Això podria "
+"inutilitzar el sistema."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Voleu continuar igualment?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Voleu continuar?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -2068,6 +2180,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "S'ha produït un error intern. El supressor automàtic ha trencat coses"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Empreu «%s» per a suprimir-lo."
+msgstr[1] "Empreu «%s» per a suprimir-los."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2089,17 +2208,6 @@ msgstr[0] ""
 msgstr[1] ""
 "Els paquets %lu es van instal·lar automàticament i ja no són necessaris:\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Empreu «%s» per a suprimir-lo."
-msgstr[1] "Empreu «%s» per a suprimir-los."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "S'instal·laran els següents paquets extres:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paquets suggerits:"
@@ -2108,6 +2216,10 @@ msgstr "Paquets suggerits:"
 msgid "Recommended packages:"
 msgstr "Paquets recomanats:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "S'instal·laran els següents paquets extres:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2242,14 +2354,54 @@ msgstr " o"
 msgid "The following packages have unmet dependencies:"
 msgstr "Els següents paquets tenen dependències sense satisfer:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Dependències no satisfetes:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "S'instal·laran els paquets NOUS següents:"
 
+# No es fa servir "S'està instal·lant:" perquè és un títol i després ve una pregunta per veure si s'instal·larà o no. E.g. fent "apt install PAQUET" l'apt ensenya "Instal·lant" (llistat de paquets) i "Instal·lant les dependències:" (llistat de paquets). I a continuació "Voleu continuar?"
+# Amb "S'està instal·lant" ens sembla que l'acció està passant ara, i encara no passa.
+# Una alternativa a considerar és "S'instal·laran" però potser és massa diferent de l'origen.
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Instal·lant:"
+
+# No es fa servir "S'està instal·lant:" perquè és un títol i després ve
+# una pregunta per veure si s'instal·larà o no. E.g. fent "apt install
+# PAQUET" l'apt ensenya "Instal·lant" (llistat de paquets) i "Instal·lant
+# les dependències:" (llistat de paquets). I a continuació "Voleu
+# continuar?"
+# Amb "S'està instal·lant" ens sembla que l'acció està passant ara, i
+# encara no passa.
+# Una alternativa a considerar és "S'instal·laran" però potser és massa
+# diferent de l'origen.
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Instal·lant les dependències:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "S'ESTÀ SUPRIMINT:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Se SUPRIMIRAN els paquets següents:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "S'han ajornat les actualitzacions següents degut a escalonament:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "No s'està actualitzant encara degut a escalonament:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "No s'està actualitzant:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "S'han mantingut els paquets següents:"
@@ -2258,10 +2410,22 @@ msgstr "S'han mantingut els paquets següents:"
 msgid "The following packages will be upgraded:"
 msgstr "S'actualitzaran els paquets següents:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "S'està actualitzant:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "S'ESTÀ DESACTUALITZANT:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Es DESACTUALITZARAN els paquets següents:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "S'està canviant els paquets retinguts:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Es canviaran els paquets retinguts següents:"
@@ -2279,26 +2443,50 @@ msgstr ""
 "AVÍS: Es suprimiran els paquets essencials següents.\n"
 "Això NO s'hauria de fer llevat que sapigueu exactament el que esteu fent!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Resum:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu actualitzats, %lu nous a instal·lar, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "S'està actualitzant: %lu, s'està instal·lant: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstal·lats, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "S'està reinstal·lant: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu desactualitzats, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "S'està desactualitzant: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu a suprimir i %lu no actualitzats.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "S'està suprimint: %lu, no s'està actualitzant: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2326,7 +2514,7 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2390,7 +2578,7 @@ msgstr "  Taula de versions:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "escalonada"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2510,8 +2698,8 @@ msgstr "%s no té dependències de muntatge.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "No hi ha informació d'arquitectura disponible per a %s. Vegeu apt.conf(5) "
 "APT::Architectures per a configurar-ho"
@@ -2557,6 +2745,11 @@ msgstr "No s'ha pogut analitzar %s. Voleu tornar a editar-lo? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "El fitxer «%s» ha canviat, executeu «apt-get update».\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2576,6 +2769,43 @@ msgstr ""
 "És preferible l'ús de %s abans que incrustar la informació d'inici de sessió "
 "directament a l'entrada %s per «%s»"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "No hi ha «Signed-By» a l'entrada %s de «%s»"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Consulteu la pàgina de manual apt-secure(8) per obtenir detalls sobre la "
+"creació de dipòsits i la configuració d'usuaris."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2624,6 +2854,12 @@ msgstr "  Paquets virtuals mixtes: "
 msgid "  Missing: "
 msgstr "  Falten: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Nombre total de versions diferents: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Nombre total de versions diferents: "
@@ -2981,6 +3217,12 @@ msgstr "cerca un registre SRV (per exemple, _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "concatena fitxers, amb descompressió automàtica"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Hi ha hagut un problema calcul·lant la suma «hash» del fitxer"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "detecta el servidor intermediari usant apt.conf"
@@ -3201,10 +3443,8 @@ msgid "remove packages"
 msgstr "elimina paquets"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Suprimeix automàticament tots els paquets no utilitzats"
+msgstr "suprimeix automàticament tots els paquets no utilitzats"
 
 #. system wide stuff
 #: cmdline/apt.cc
@@ -3224,6 +3464,10 @@ msgstr "actualitza el sistema eliminant/instal·lant/actualitzant paquets"
 msgid "edit the source information file"
 msgstr "edita el fitxer d'informació d'origen"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "satisfà cadenes de dependència"
@@ -3428,7 +3672,7 @@ msgstr "Algorisme de compressió desconegut '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "La sortida comprimida %s necessita un conjunt de compressió"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "No s'ha pogut crear el conducte IPC al subprocés"
 
@@ -3547,23 +3791,23 @@ msgstr "L'arxiu no té cap camp paquet"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s no té una entrada dominant\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s no té una entrada dominant\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  el mantenidor de %s és %s, no %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  el mantenidor de %.*s és %.*s, no %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s no té una entrada dominant de font\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s no té una entrada dominant de font\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s tampoc no té una entrada dominant de binari\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s tampoc no té una entrada dominant de binari\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3601,7 +3845,7 @@ msgstr "Capçalera de dades no vàlida"
 msgid "Connection failed"
 msgstr "Ha fallat la connexió"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3647,7 +3891,7 @@ msgstr "No es pot muntar el CD-ROM en %s. Potser s'està utilitzant encara."
 msgid "Disk not found."
 msgstr "No s'ha trobat el disc."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fitxer no trobat"
 
@@ -3682,7 +3926,7 @@ msgstr "No s'ha pogut crear un sòcol per a %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "No es pot iniciar la connexió a %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Ha fallat"
 
@@ -3697,9 +3941,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 "No s'ha pogut connectar a %s:%s (%s). S'ha excedit el temps de connexió"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "S'està connectant a %s"
@@ -3737,147 +3979,15 @@ msgstr "No s'ha pogut fer «stat»"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI no vàlid, els URI locals no poden començar per //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "S'està iniciant sessió"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "No es pot determinar el nom de la màquina distant"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "No es pot determinar el nom local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "El servidor ha rebutjat la connexió i ha dit: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER ha fallat, el servidor ha dit: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS ha fallat, el servidor ha dit: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"S'ha especificat un servidor intermediari però no un script d'accés, "
-"Acquire::ftp::ProxyLogin està buit."
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "L'ordre «%s» de l'script d'accés ha fallat, el servidor ha dit: %s"
+msgid "untrusted public key algorithm: %s"
+msgstr "no es confia en l'algoritme de clau pública: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE ha fallat, el servidor ha dit: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "S'ha esgotat el temps d'espera de la connexió"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "El servidor ha tancat la connexió"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Una resposta ha desbordat la memòria intermèdia."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protocol malmès"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "No s'ha pogut crear un sòcol"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"No s'ha pogut connectar amb el sòcol de dades. El temps de connexió s'ha "
-"excedit"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "No s'ha pogut connectar amb el sòcol passiu."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "gettaddrinfo no ha pogut obtenir un sòcol d'escolta"
-
-# abastar? huh? jm
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "No s'ha pogut vincular a un sòcol"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "No s'ha pogut escoltar al sòcol"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "No s'ha pogut determinar el nom del sòcol"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "No es pot enviar l'ordre PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "La família d'adreces %u és desconeguda (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT ha fallat, el servidor ha dit: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "S'ha esgotat el temps de connexió al sòcol de dades"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "No es pot acceptar la connexió"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Hi ha hagut un problema calcul·lant la suma «hash» del fitxer"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "No és possible obtenir el fitxer, el servidor ha dit «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "S'ha esgotat el temps d'espera per al sòcol de dades"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Ha fallat la transferència de dades, el servidor ha dit '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Consulta"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "No es pot invocar "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3900,28 +4010,25 @@ msgstr ""
 "l'empremta digital de la clau?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "No s'ha pogut executar «apt-key» per a verificar la signatura (està "
 "instal·lat el gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "S'ha produït un error desconegut en executar apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
-"La signatura per la clau %s usa un algoritme de resum «hash» dèbil (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "La signatura amb la clau %s usa un algoritme dèbil (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3957,18 +4064,159 @@ msgstr "Ha fallat la selecció"
 msgid "Connection timed out"
 msgstr "S'ha esgotat el temps d'espera de la connexió"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Hi ha hagut un problema calcul·lant la suma «hash» del fitxer"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "No s'ha pogut establir l'hora de modificació"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "La connexió s'ha tancat prematurament"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Els fitxers buits no poden ser arxius vàlids"
 
+# Si mai es tradueix el «apt-key»(8) canviar de DEPRECATION a la paraula feta servir al manual.
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "La clau està desada en un antic anell de claus «trusted.gpg» (%s); per "
+#~ "més detalls, consulteu la secció DEPRECATION d'«apt-key»(8)."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "No s'admet el mètode «%s» i està desactivat per defecte. Considereu "
+#~ "canviar a http(s). Establiu Dir::Bin::Methods::%s a «%s» per tornar-lo a "
+#~ "activar."
+
+#~ msgid "Logging in"
+#~ msgstr "S'està iniciant sessió"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "No es pot determinar el nom de la màquina distant"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "No es pot determinar el nom local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "El servidor ha rebutjat la connexió i ha dit: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER ha fallat, el servidor ha dit: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS ha fallat, el servidor ha dit: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "S'ha especificat un servidor intermediari però no un script d'accés, "
+#~ "Acquire::ftp::ProxyLogin està buit."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "L'ordre «%s» de l'script d'accés ha fallat, el servidor ha dit: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE ha fallat, el servidor ha dit: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "S'ha esgotat el temps d'espera de la connexió"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "El servidor ha tancat la connexió"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Una resposta ha desbordat la memòria intermèdia."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protocol malmès"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "No s'ha pogut crear un sòcol"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "No s'ha pogut connectar amb el sòcol de dades. El temps de connexió s'ha "
+#~ "excedit"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "No s'ha pogut connectar amb el sòcol passiu."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "gettaddrinfo no ha pogut obtenir un sòcol d'escolta"
+
+# abastar? huh? jm
+#~ msgid "Could not bind a socket"
+#~ msgstr "No s'ha pogut vincular a un sòcol"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "No s'ha pogut escoltar al sòcol"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "No s'ha pogut determinar el nom del sòcol"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "No es pot enviar l'ordre PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "La família d'adreces %u és desconeguda (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT ha fallat, el servidor ha dit: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "S'ha esgotat el temps de connexió al sòcol de dades"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "No es pot acceptar la connexió"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "No és possible obtenir el fitxer, el servidor ha dit «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "S'ha esgotat el temps d'espera per al sòcol de dades"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Ha fallat la transferència de dades, el servidor ha dit '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Consulta"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "No es pot invocar "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "La connexió s'ha tancat prematurament"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Instal·lat: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Es canviaran els paquets retinguts següents:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sí, fes el que et dic!"
 
diff --git a/po/cs.po b/po/cs.po
index 2b0f9f6..b309023 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -5,15 +5,15 @@
 #
 # This file originally stated:
 # This file is put in the public domain.
-# Miroslav Kure <kurem@debian.cz>, 2004-2023.
+# Miroslav Kure <kurem@debian.cz>, 2004-2024.
 #
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.5.6\n"
+"Project-Id-Version: apt 2.9.10\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2023-02-10 12:58+0100\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-11-09 20:38+0100\n"
 "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
 "Language: cs\n"
@@ -27,7 +27,7 @@ msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
-"Aktualizaci z takového repositáře nelze provést zabezpečeně a je proto "
+"Aktualizaci z takového repozitáře nelze provést zabezpečeně a je proto "
 "implicitně zakázána."
 
 #: apt-pkg/acquire-item.cc
@@ -35,7 +35,7 @@ msgid ""
 "Data from such a repository can't be authenticated and is therefore "
 "potentially dangerous to use."
 msgstr ""
-"Data z takového repositáře nelze ověřit a proto je jejich použití "
+"Data z takového repozitáře nelze ověřit a proto je jejich použití "
 "potenciálně nebezpečné."
 
 #: apt-pkg/acquire-item.cc
@@ -43,46 +43,46 @@ msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
-"Podrobnosti o vytváření a nastavení repositářů naleznete v manuálové stránce "
+"Podrobnosti o vytváření a nastavení repozitářů naleznete v manuálové stránce "
 "apt-secure(8)."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' is no longer signed."
-msgstr "Repositář „%s“ již není podepsán."
+msgstr "Repozitář „%s“ již není podepsán."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' no longer has a Release file."
-msgstr "Repositář „%s“ již neobsahuje soubor Release."
+msgstr "Repozitář „%s“ již neobsahuje soubor Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Toto není běžně povoleno, ale bylo to vynuceno volbou Acquire::"
-"AllowDowngradeToInsecureRepositories."
+"Toto není běžně povoleno, ale bylo to vynuceno volbou "
+"Acquire::AllowDowngradeToInsecureRepositories."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' is not signed."
-msgstr "Repositář „%s“ není podepsán."
+msgstr "Repozitář „%s“ není podepsán."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' does not have a Release file."
-msgstr "Repositář „%s“ neobsahuje soubor Release."
+msgstr "Repozitář „%s“ neobsahuje soubor Release."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' provides only weak security information."
-msgstr "Repositář „%s“ nabízí pouze slabé zabezpečení."
+msgstr "Repozitář „%s“ nabízí pouze slabé zabezpečení."
 
 #: apt-pkg/acquire-item.cc ftparchive/writer.cc
 #, c-format
 msgid "Failed to readlink %s"
-msgstr "Nelze přečíst link %s"
+msgstr "Nelze přečíst odkaz %s"
 
 #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc
 #, c-format
@@ -130,7 +130,7 @@ msgid ""
 "An error occurred during the signature verification. The repository is not "
 "updated and the previous index files will be used. GPG error: %s: %s"
 msgstr ""
-"Při ověřování podpisů se objevila chyba. Repositář není aktualizovaný, tudíž "
+"Při ověřování podpisů se objevila chyba. Repozitář není aktualizovaný, tudíž "
 "se použijí předchozí indexové soubory. Chyba GPG: %s: %s"
 
 #. Invalid signature file, reject (LP: #346386) (Closes: #627642)
@@ -145,7 +145,7 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
-"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ neobsahuje "
+"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ neobsahuje "
 "komponentu „%s“ (není v sources.list překlep v názvu?)"
 
 #: apt-pkg/acquire-item.cc
@@ -154,7 +154,7 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
-"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ nepodporuje "
+"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ nepodporuje "
 "architekturu „%s“"
 
 #: apt-pkg/acquire-item.cc
@@ -163,7 +163,7 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
-"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ ho neposkytuje "
+"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ ho neposkytuje "
 "(překlep v sources.list?)"
 
 #: apt-pkg/acquire-item.cc
@@ -172,7 +172,7 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' provides only "
 "weak security information for it"
 msgstr ""
-"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ o něm poskytuje "
+"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ o něm poskytuje "
 "pouze slabé bezpečnostní informace"
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
@@ -185,7 +185,7 @@ msgid ""
 "repository will not be applied."
 msgstr ""
 "Soubor Release pro %s již expiroval (neplatný od %s). Aktualizace z tohoto "
-"repositáře se nepoužijí."
+"repozitáře se nepoužijí."
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time until the file will be valid - formatted in the same way as in
@@ -197,26 +197,25 @@ msgid ""
 "this repository will not be applied."
 msgstr ""
 "Soubor Release pro %s ještě není platný (a nebude po dalších %s). "
-"Aktualizace z tohoto repositáře se nepoužijí."
+"Aktualizace z tohoto repozitáře se nepoužijí."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Konfliktní distribuce: %s (očekáváno %s, obdrženo %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
-msgstr "Repositář „%s“ změnil svou hodnotu „%s“ z „%s“ na „%s“"
+msgstr "Repozitář „%s“ změnil svou hodnotu „%s“ z „%s“ na „%s“"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
-msgstr "Repositář „%s“ změnil svou výchozí prioritu pro %s z %hi na %hi."
+msgstr "Repozitář „%s“ změnil svou výchozí prioritu pro %s z %hi na %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -229,7 +228,7 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
-"Než se začnou používat aktualizace z tohoto repositáře, je nutné to "
+"Než se začnou používat aktualizace z tohoto repozitáře, je nutné to "
 "explicitně akceptovat. Podrobnosti naleznete v manuálové stránce %s."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
@@ -237,6 +236,15 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Selhalo stažení %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Repozitáře by měly poskytovat podepsaný soubor InRelease, ale ten na %s "
+"chybí."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -257,16 +265,6 @@ msgstr "Nelze najít zdroj pro stažení verze „%s“ balíku „%s“"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Seznam změn pro %s=%s není dostupný"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"Metoda „%s“ není podporovaná a je ve výchozím nastavení zakázaná. Zvažte "
-"přechod na http(s). Pro znovupovolení nastavte Dir::Bin::Methods::%s na "
-"\"%s\"."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -663,6 +661,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaktická chyba %s:%u: Na konci souboru je zbytečné smetí"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Chyba:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Varování:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Upozornění:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Audit:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Ladění:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -771,11 +793,11 @@ msgstr "Podproces %s vrátil chybový kód (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Podproces %s neočekávaně skončil"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Chyba čtení"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Chyba zápisu"
 
@@ -1086,6 +1108,12 @@ msgstr "Nelze uzamknout administrační adresář (%s). Jste root?"
 msgid "Not locked"
 msgstr "Není uzamčen"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1277,6 +1305,14 @@ msgstr "Příprava na obdržení řešení"
 msgid "External solver failed without a proper error message"
 msgstr "Externí řešitel selhal, aniž by zanechal rozumnou chybovou hlášku"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Propočítává se aktualizace"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Řešení závislostí"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Spuštění externího řešitele"
@@ -1576,10 +1612,6 @@ msgstr ""
 "Některé indexové soubory se nepodařilo stáhnout. Jsou ignorovány, nebo jsou "
 "použity starší verze."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Propočítává se aktualizace"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1631,7 +1663,7 @@ msgstr ""
 msgid ""
 "Do you want to accept these changes and continue updating from this "
 "repository?"
-msgstr "Chcete přijmout tyto změny a pokračovat v používání tohoto repositáře?"
+msgstr "Chcete přijmout tyto změny a pokračovat v používání tohoto repozitáře?"
 
 #: apt-private/private-cachefile.cc
 msgid "Correcting dependencies..."
@@ -1850,6 +1882,20 @@ msgstr "Následující informace vám mohou pomoci vyřešit tuto situaci:"
 msgid "Broken packages"
 msgstr "Poškozené balíky"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Nesloučený adresář usr již není podporován, převeďte systém na sloučený "
+"nástrojem usrmerge."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Více informací naleznete na %s."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1888,13 +1934,18 @@ msgstr ""
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
-msgstr "Vnitřní chyba, třídění nedoběhlo do konce"
+msgstr "Vnitřní chyba, řazení nedoběhlo do konce"
 
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Jak podivné… velikosti nesouhlasí, ohlaste to na apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Stáhne se: %sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1902,6 +1953,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Nutno stáhnout %sB/%sB archivů.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Stáhne se: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1909,13 +1965,57 @@ msgstr "Nutno stáhnout %sB/%sB archivů.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Nutno stáhnout %sB archivů.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Po této operaci bude na disku použito dalších %sB.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Požadované místo: %sB / %sB volných\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Je vyžadováno více místa, než je volného: %sB > %sB, instalace může selhat"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "v %s:  %sB / %sB volných\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"V %s je vyžadováno více místa, než je volného: %sB > %sB, instalace může "
+"selhat"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Požadované místo: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Uvolněné místo: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1935,6 +2035,14 @@ msgstr ""
 "Odstranění nezbytných systémově-kritických balíků není povoleno. Může to "
 "rozbít systém."
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Přesto pokračovat?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Pokračovat?"
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Chcete pokračovat?"
@@ -2000,6 +2108,14 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Vnitřní chyba, AutoRemover pokazil věci"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Pro jeho odstranění použijte „%s“."
+msgstr[1] "Pro jejich odstranění použijte „%s“."
+msgstr[2] "Pro jejich odstranění použijte „%s“."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2021,18 +2137,6 @@ msgstr[0] "%lu balík byl nainstalován automaticky a již není potřeba.\n"
 msgstr[1] "%lu balíky byly nainstalovány automaticky a již nejsou potřeba.\n"
 msgstr[2] "%lu balíků bylo nainstalováno automaticky a již nejsou potřeba.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Pro jeho odstranění použijte „%s“."
-msgstr[1] "Pro jejich odstranění použijte „%s“."
-msgstr[2] "Pro jejich odstranění použijte „%s“."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Následující dodatečné balíky budou instalovány:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Navrhované balíky:"
@@ -2041,6 +2145,10 @@ msgstr "Navrhované balíky:"
 msgid "Recommended packages:"
 msgstr "Doporučované balíky:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Následující dodatečné balíky budou instalovány:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2174,14 +2282,42 @@ msgstr " nebo"
 msgid "The following packages have unmet dependencies:"
 msgstr "Následující balíky mají nesplněné závislosti:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Nesplněné závislosti:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Následující NOVÉ balíky budou nainstalovány:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "K instalaci:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Instalace závislostí:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "K ODSTRANĚNÍ:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Následující balíky budou ODSTRANĚNY:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Následující aktualizace jsou odloženy kvůli fázování:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Zatím neaktualizováno kvůli fázování:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Neaktualizováno:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Následující balíky jsou podrženy v aktuální verzi:"
@@ -2190,10 +2326,22 @@ msgstr "Následující balíky jsou podrženy v aktuální verzi:"
 msgid "The following packages will be upgraded:"
 msgstr "Následující balíky budou aktualizovány:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "K aktualizaci:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "K DEGRADACI:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Následující balíky budou DEGRADOVÁNY:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Změna podržených balíků:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Následující podržené balíky budou změněny:"
@@ -2211,26 +2359,50 @@ msgstr ""
 "VAROVÁNÍ: Následující nezbytné balíky budou odstraněny.\n"
 "Pokud přesně nevíte, co děláte, NEDĚLEJTE to!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Souhrn:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu aktualizováno, %lu nově instalováno, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Aktualizací: %lu, Instalací: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu přeinstalováno, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Přeinstalací: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu degradováno, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Degradací: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu k odstranění a %lu neaktualizováno.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Odstranění: %lu, Neaktualizovaných: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2258,7 +2430,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2437,8 +2609,8 @@ msgstr "%s nemá žádné závislosti pro sestavení.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "O architektuře %s nejsou známy žádné informace. Pro nastavení si přečtěte "
 "část APT::Architectures v manuálové stránce apt.conf(5)"
@@ -2480,6 +2652,11 @@ msgstr "Nepodařilo se zpracovat %s. Zkusit znovu upravit?"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Soubor „%s“ se změnil, spusťte prosím „apt-get update“.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2499,6 +2676,43 @@ msgstr ""
 "Použití %s je preferováno před zadáním přihlašovacích údajů přímo v %s v "
 "záznamu „%s“"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Chybí Signed-By v %s pro „%s“"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Podrobnosti o vytváření a nastavení repozitářů naleznete v manuálové stránce "
+"apt-secure(8)."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2548,6 +2762,12 @@ msgstr "  Smíšených virtuálních balíků: "
 msgid "  Missing: "
 msgstr "  Chybějících: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Celkem různých verzí: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Celkem různých verzí: "
@@ -2893,6 +3113,12 @@ msgstr "vyhledá SRV záznam (např. _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "spojí soubory, automaticky je rozbalí"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problém s kontrolním součtem souboru"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "detekuje proxy pomocí apt.conf"
@@ -3127,6 +3353,10 @@ msgstr "aktualizuje systém instalací/aktualizací/odstraněním balíků"
 msgid "edit the source information file"
 msgstr "upraví soubor se zdroji balíků"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "splní řetězec závislostí"
@@ -3324,7 +3554,7 @@ msgstr "Neznámý kompresní algoritmus „%s“"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimovaný výstup %s potřebuje kompresní sadu"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Selhalo vytvoření meziprocesové roury k podprocesu"
 
@@ -3443,23 +3673,23 @@ msgstr "Archiv nemá pole Package"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr " %s nemá žádnou položku pro override\n"
+msgid "  %.*s has no override entry\n"
+msgstr " %.*s nemá žádnou položku pro override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  správce %s je %s, ne %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  správce %.*s je %.*s, ne %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr " %s nemá žádnou zdrojovou položku pro override\n"
+msgid "  %.*s has no source override entry\n"
+msgstr " %.*s nemá žádnou zdrojovou položku pro override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr " %s nemá ani žádnou binární položku pro override\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr " %.*s nemá ani žádnou binární položku pro override\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3497,7 +3727,7 @@ msgstr "Špatné datové záhlaví"
 msgid "Connection failed"
 msgstr "Spojení selhalo"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3510,8 +3740,8 @@ msgid ""
 "Automatically disabled %s due to incorrect response from server/proxy. (man "
 "5 apt.conf)"
 msgstr ""
-"Automaticky zakázáno %s kvůli chybné odpovědi od serveru/proxy. (man 5 apt."
-"conf)"
+"Automaticky zakázáno %s kvůli chybné odpovědi od serveru/proxy. (man 5 "
+"apt.conf)"
 
 #: methods/basehttp.cc
 msgid "Internal error"
@@ -3543,7 +3773,7 @@ msgstr "Nelze odpojit CD-ROM v %s - možná se stále používá."
 msgid "Disk not found."
 msgstr "Disk nebyl nalezen."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Soubor nebyl nalezen"
 
@@ -3578,7 +3808,7 @@ msgstr "Nelze vytvořit socket pro %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Nelze navázat spojení na %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Selhalo"
 
@@ -3592,9 +3822,7 @@ msgstr "Nelze se připojit k %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nelze se připojit k %s:%s (%s), čas spojení vypršel"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Připojování k %s"
@@ -3632,144 +3860,15 @@ msgstr "Selhalo vyhodnocení"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Neplatné URI, lokální URI nesmí začínat na //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Přihlašování"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nelze určit jméno druhé strany"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nelze určit lokální jméno"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Server zamítl naše spojení a řekl: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER selhal, server řekl: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS selhal, server řekl: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Byl zadán proxy server, ale ne přihlašovací skript. Acquire::ftp::ProxyLogin "
-"je prázdný."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Příkaz „%s“ přihlašovacího skriptu selhal, server řekl: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE selhal, server řekl: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Čas spojení vypršel"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Server uzavřel spojení"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Odpověď přeplnila buffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Porušení protokolu"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nelze vytvořit socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Nelze připojit datový socket, čas spojení vypršel"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nelze připojit pasivní socket."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo nezískal naslouchající socket"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nelze navázat socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Nelze naslouchat na socketu"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Nelze určit jméno socketu"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Nelze odeslat příkaz PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Neznámá rodina adres %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT selhal, server řekl: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Spojení datového socketu vypršelo"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Nelze přijmout spojení"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problém s kontrolním součtem souboru"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nelze stáhnout soubor, server řekl „%s“"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Datový socket vypršel"
+msgid "untrusted public key algorithm: %s"
+msgstr "nedůvěryhodný algoritmus veřejného klíče: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Přenos dat selhal, server řekl „%s“"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Dotaz"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nelze vyvolat "
+msgid "%s will be deprecated in a future release"
+msgstr "%s bude v budoucím vydání odstraněn"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3790,26 +3889,22 @@ msgid ""
 msgstr "Vnitřní chyba: Dobrý podpis, ale nelze zjistit otisk klíče?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "Nelze spustit „apt-key“ pro ověření podpisu (je gnupg nainstalováno?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Neznámá chyba při spouštění apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-"Klíč je uložen v zastaralé klíčence trusted.gpg (%s), podrobnosti viz část "
-"DEPRECATION v manuálové stránce apt-key(8)."
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "Podpis klíčem %s používá slabý algoritmus (%s)"
 
 #: methods/gpgv.cc
@@ -3844,18 +3939,149 @@ msgstr "Výběr selhal"
 msgid "Connection timed out"
 msgstr "Čas spojení vypršel"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problém s kontrolním součtem souboru"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Nelze nastavit čas modifikace"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Spojení bylo předčasně ukončeno"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Prázdné soubory nejsou platnými archivy"
 
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "Klíč je uložen v zastaralé klíčence trusted.gpg (%s), podrobnosti viz "
+#~ "část DEPRECATION v manuálové stránce apt-key(8)."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Metoda „%s“ není podporovaná a je ve výchozím nastavení zakázaná. Zvažte "
+#~ "přechod na http(s). Pro znovupovolení nastavte Dir::Bin::Methods::%s na "
+#~ "\"%s\"."
+
+#~ msgid "Logging in"
+#~ msgstr "Přihlašování"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nelze určit jméno druhé strany"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nelze určit lokální jméno"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Server zamítl naše spojení a řekl: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER selhal, server řekl: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS selhal, server řekl: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Byl zadán proxy server, ale ne přihlašovací skript. "
+#~ "Acquire::ftp::ProxyLogin je prázdný."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Příkaz „%s“ přihlašovacího skriptu selhal, server řekl: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE selhal, server řekl: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Čas spojení vypršel"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Server uzavřel spojení"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Odpověď přeplnila buffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Porušení protokolu"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Nelze vytvořit socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Nelze připojit datový socket, čas spojení vypršel"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nelze připojit pasivní socket."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo nezískal naslouchající socket"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nelze navázat socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Nelze naslouchat na socketu"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Nelze určit jméno socketu"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Nelze odeslat příkaz PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Neznámá rodina adres %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT selhal, server řekl: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Spojení datového socketu vypršelo"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Nelze přijmout spojení"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nelze stáhnout soubor, server řekl „%s“"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Datový socket vypršel"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Přenos dat selhal, server řekl „%s“"
+
+#~ msgid "Query"
+#~ msgstr "Dotaz"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Nelze vyvolat "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Spojení bylo předčasně ukončeno"
+
+#, c-format
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Velikost po instalaci: %sB\n"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ano, udělej to tak, jak říkám!"
 
@@ -3972,8 +4198,8 @@ msgstr "Prázdné soubory nejsou platnými archivy"
 #~ "Unable to find expected entry '%s' in Release file (Wrong sources.list "
 #~ "entry or malformed file)"
 #~ msgstr ""
-#~ "V souboru Release nelze najít očekávanou položku „%s“ (chybný sources."
-#~ "list nebo porušený soubor)"
+#~ "V souboru Release nelze najít očekávanou položku „%s“ (chybný "
+#~ "sources.list nebo porušený soubor)"
 
 #~ msgid "Unmet dependencies. Try using --fix-broken."
 #~ msgstr "Nesplněné závislosti. Zkuste použít --fix-broken."
@@ -4140,15 +4366,15 @@ msgstr "Prázdné soubory nejsou platnými archivy"
 #~ "The data from '%s' is not signed. Packages from that repository can not "
 #~ "be authenticated."
 #~ msgstr ""
-#~ "Data z „%s“ nejsou podepsaná. Balíky z tohoto repositáře nemohou být "
+#~ "Data z „%s“ nejsou podepsaná. Balíky z tohoto repozitáře nemohou být "
 #~ "ověřeny."
 
 #~ msgid ""
 #~ "The repository '%s' does not have a Release file. This is deprecated, "
 #~ "please contact the owner of the repository."
 #~ msgstr ""
-#~ "Repositář „%s“ neobsahuje soubor Release. To již není podporováno, "
-#~ "kontaktujte prosím správce repositáře."
+#~ "Repozitář „%s“ neobsahuje soubor Release. To již není podporováno, "
+#~ "kontaktujte prosím správce repozitáře."
 
 #~ msgid "Child process failed"
 #~ msgstr "Synovský proces selhal"
@@ -4261,9 +4487,6 @@ msgstr "Prázdné soubory nejsou platnými archivy"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Ignoruje se nedostupné vydání „%s“ balíku „%s“"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Stahuje se %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "Toto není platný DEB archiv, neobsahuje část „%s“, „%s“ ani „%s“"
 
diff --git a/po/cy.po b/po/cy.po
index a7390cb..38de67b 100644
--- a/po/cy.po
+++ b/po/cy.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2005-06-06 13:46+0100\n"
 "Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
 "Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n"
@@ -50,8 +50,8 @@ msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -181,8 +181,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -193,7 +192,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -212,6 +211,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Methwyd cyrchu %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 # FIXME: case
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -233,13 +239,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Yn cysylltu i %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -634,6 +633,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Gwall cystrawen %s:%u: Sbwriel ychwanegol ar ddiwedd y ffeil"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -744,11 +767,11 @@ msgstr "Dychwelodd is-broses %s gôd gwall (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Gorffenodd is-broses %s yn annisgwyl"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Gwall darllen"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Gwall ysgrifennu"
 
@@ -1061,6 +1084,12 @@ msgstr "Ni ellir cloi'r cyfeiriadur rhestr"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, fuzzy, c-format
@@ -1245,6 +1274,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+#, fuzzy
+msgid "Calculating upgrade"
+msgstr "Yn Cyfrifo'r Uwchraddiad"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Solving dependencies"
+msgstr "Cyfanswm Dibyniaethau: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1553,11 +1592,6 @@ msgstr ""
 "Methwodd rhai ffeiliau mynegai lawrlwytho: maent wedi eu anwybyddu, neu hen "
 "rai eu defnyddio yn lle."
 
-#: apt-pkg/upgrade.cc
-#, fuzzy
-msgid "Calculating upgrade"
-msgstr "Yn Cyfrifo'r Uwchraddiad"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1832,6 +1866,18 @@ msgstr "Gall y wybodaeth canlynol gynorthwyo'n datrys y sefyllfa:"
 msgid "Broken packages"
 msgstr "Pecynnau wedi torri"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1876,6 +1922,12 @@ msgstr "Gwall Mewnol wrth ychwanegu dargyfeiriad"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Wedi Sefydlu: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1883,6 +1935,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Mae angeyn cyrchu %sB/%sB o archifau.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1890,13 +1947,54 @@ msgstr "Mae angeyn cyrchu %sB/%sB o archifau.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Mae angen cyrchu %sB o archifau.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Ar ôl dadbacio defnyddir %sB o ofod disg ychwanegol.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1914,6 +2012,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Ydych chi eisiau mynd ymlaen?"
@@ -1972,6 +2078,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Gwall Mewnol, torrodd AllUpgrade bethau"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1990,18 +2103,6 @@ msgid_plural ""
 msgstr[0] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
 msgstr[1] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Caiff y pecynnau canlynol ychwanegol eu sefydlu:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Pecynnau a awgrymmir:"
@@ -2010,6 +2111,11 @@ msgstr "Pecynnau a awgrymmir:"
 msgid "Recommended packages:"
 msgstr "Pecynnau a argymhellir:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Caiff y pecynnau canlynol ychwanegol eu sefydlu:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2139,14 +2245,48 @@ msgstr " neu"
 msgid "The following packages have unmet dependencies:"
 msgstr "Mae gan y pecynnau canlynol ddibyniaethau heb eu bodloni:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Methwyd bodloni dibyniaeth %s am %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "  Wedi Sefydlu: "
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing dependencies:"
+msgstr "Cyfanswm Dibyniaethau: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Caiff y pecynnau canlynol eu TYNNU:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Not upgrading yet due to phasing:"
+msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, fuzzy
 msgid "The following packages have been kept back:"
@@ -2157,11 +2297,24 @@ msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl"
 msgid "The following packages will be upgraded:"
 msgstr "Caiff y pecynnau canlynol eu uwchraddio"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, fuzzy
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Caiff y pecynnau canlynol eu ISRADDIO"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Changing held packages:"
+msgstr "Pecynnau wedi eu Pinio:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:"
@@ -2181,26 +2334,50 @@ msgstr ""
 "NI DDYLIR gwneud hyn os nad ydych chi'n gwybod yn union beth rydych chi'n\n"
 "ei wneud!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu wedi uwchraddio, %lu newydd eu sefydlu, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "  Wedi Sefydlu: "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu wedi ailsefydlu, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "  Wedi Sefydlu: "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu wedi eu israddio, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu i'w tynnu a %lu heb eu uwchraddio.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2228,7 +2405,7 @@ msgid "Y"
 msgstr "I"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2405,8 +2582,8 @@ msgstr "Nid oes dibyniaethau adeiladu gan %s.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2444,6 +2621,11 @@ msgstr "Methwyd ailenwi %s at %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2461,6 +2643,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2512,6 +2725,11 @@ msgstr "  Pecynnau Rhithwir Cymysg: "
 msgid "  Missing: "
 msgstr "  Ar Goll: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct source versions: "
+msgstr "Cyfanswm Fersiynau Gwahanol: "
+
 #: cmdline/apt-cache.cc
 #, fuzzy
 msgid "Total distinct versions: "
@@ -2856,6 +3074,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problem wrth stwnshio ffeil"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3104,6 +3328,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Yn cyfuno manylion Ar Gael"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3311,7 +3539,7 @@ msgstr "Dull Cywasgu Anhysbys '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Mae'r allbwn cywasgiedig %s angen cywasgiad wedi ei osod"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Methwyd creu pibell cyfathrebu at isbroses"
 
@@ -3432,23 +3660,23 @@ msgstr "Doedd dim maes pecyn gan yr archif"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  Does dim cofnod gwrthwneud gan %s\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  Does dim cofnod gwrthwneud gan %.*s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  Cynaliwr %s yw %s nid %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  Cynaliwr %.*s yw %.*s nid %s\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  Does dim cofnod gwrthwneud gan %s\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  Does dim cofnod gwrthwneud gan %.*s\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  Does dim cofnod gwrthwneud gan %s\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  Does dim cofnod gwrthwneud gan %.*s\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3491,7 +3719,7 @@ msgstr "Data pennawd gwael"
 msgid "Connection failed"
 msgstr "Methodd y cysylltiad"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3537,7 +3765,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Ffeil heb ei ganfod"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Ffeil heb ei ganfod"
 
@@ -3573,7 +3801,7 @@ msgstr "Methwyd creu soced ar gyfer %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Ni ellir cychwyn y cysylltiad i %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Methwyd"
 
@@ -3587,9 +3815,7 @@ msgstr "Methwyd cysylltu i %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Methwyd cysylltu i %s:%s (%s), goramserodd y cysylltiad"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Yn cysylltu i %s"
@@ -3627,148 +3853,15 @@ msgstr "Methwyd stat()"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI annilys: rhaid i URIs lleol beidio a cychwyn efo \"//\""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Yn mewngofnodi"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Ni ellir darganfod enw'r cymar"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Ni ellir darganfod yr enw lleol"
-
-#: methods/ftp.cc
-#, fuzzy, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Gwrthodwyd y gweinydd ein cysyllriad, a dwedodd: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Methodd gorchymyn USER; meddai'r gweinydd: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Methodd gorchymyn PASS; meddai'r gweinydd: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Penodwyd gweinydd dirprwy ond dim sgript mengofnodi. (Mae Acquire::ftp::"
-"ProxyLogin yn wag.)"
-
-# FIXME
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Methodd y gorchymyn sgript mewngofnodi '%s'; meddai'r gweinydd: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Methodd gorchymyn TYPE; meddai'r gweinydd: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Goramser cysylltu"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Caeodd y gweinydd y cysylltiad"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Gorlifodd ateb y byffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Llygr protocol"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Methwyd creu soced"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Methwyd cysylltu soced data, goramserodd y cyslltiad"
-
-#: methods/ftp.cc
-#, fuzzy
-msgid "Could not connect passive socket."
-msgstr "Methwyd cysylltu soced goddefol"
-
-# FIXME
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "Methodd getaddrinfo gael soced gwrando"
 
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Methwyd rhwymo soced"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Methwyd gwrando ar y soced"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Methwyd canfod enw'r soced"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Methwyd danfod gorchymyn PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Teulu cyfeiriad anhysbys %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Methodd gorchymyn EPRT; meddai'r gweinydd: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Goramserodd cysylltiad y soced data"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Methwyd derbyn cysylltiad"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem wrth stwnshio ffeil"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Methwyd cyrchu ffeil; meddai'r gweinydd '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Goramserodd soced data"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Methodd trosgludiad data; meddai'r gweinydd '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Ymholiad"
-
-# FIXME
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Methwyd gweithredu "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3787,24 +3880,17 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
-msgstr ""
-
-#: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
+msgid "Unknown error executing gpgv"
 msgstr ""
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3839,18 +3925,133 @@ msgstr "Methwyd dewis"
 msgid "Connection timed out"
 msgstr "Goramserodd y cysylltiad"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem wrth stwnshio ffeil"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Methwyd gosod amser newid"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Caewyd y cysylltiad yn gynnar"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Yn mewngofnodi"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Ni ellir darganfod enw'r cymar"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Ni ellir darganfod yr enw lleol"
+
+#, fuzzy, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Gwrthodwyd y gweinydd ein cysyllriad, a dwedodd: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Methodd gorchymyn USER; meddai'r gweinydd: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Methodd gorchymyn PASS; meddai'r gweinydd: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Penodwyd gweinydd dirprwy ond dim sgript mengofnodi. (Mae "
+#~ "Acquire::ftp::ProxyLogin yn wag.)"
+
+# FIXME
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Methodd y gorchymyn sgript mewngofnodi '%s'; meddai'r gweinydd: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Methodd gorchymyn TYPE; meddai'r gweinydd: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Goramser cysylltu"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Caeodd y gweinydd y cysylltiad"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Gorlifodd ateb y byffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Llygr protocol"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Methwyd creu soced"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Methwyd cysylltu soced data, goramserodd y cyslltiad"
+
+#, fuzzy
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Methwyd cysylltu soced goddefol"
+
+# FIXME
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "Methodd getaddrinfo gael soced gwrando"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Methwyd rhwymo soced"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Methwyd gwrando ar y soced"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Methwyd canfod enw'r soced"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Methwyd danfod gorchymyn PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Teulu cyfeiriad anhysbys %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Methodd gorchymyn EPRT; meddai'r gweinydd: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Goramserodd cysylltiad y soced data"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Methwyd derbyn cysylltiad"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Methwyd cyrchu ffeil; meddai'r gweinydd '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Goramserodd soced data"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Methodd trosgludiad data; meddai'r gweinydd '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Ymholiad"
+
+# FIXME
+#~ msgid "Unable to invoke "
+#~ msgstr "Methwyd gweithredu "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Caewyd y cysylltiad yn gynnar"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ie, gwna fel rydw i'n dweud!"
 
diff --git a/po/da.po b/po/da.po
index 78d6211..49c1425 100644
--- a/po/da.po
+++ b/po/da.po
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.4~rc2\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2017-03-02 23:51+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
@@ -62,11 +62,11 @@ msgstr "Arkivet »%s« har ikke længere en udgivelsesfil."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Dette er normalt ikke tilladt, men tilvalget Acquire::"
-"AllowDowngradeToInsecureRepositories blev angivet for at overskrive."
+"Dette er normalt ikke tilladt, men tilvalget "
+"Acquire::AllowDowngradeToInsecureRepositories blev angivet for at overskrive."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -219,8 +219,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Konfliktdistribution: %s (forventede %s men fik %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -231,7 +230,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -250,6 +249,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Kunne ikke hente %s %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -270,13 +276,6 @@ msgstr "Kan ikke finde en kilde til at hente version »%s« for »%s«"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Ændringslog utilgængelig for %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -673,6 +672,30 @@ msgstr "Syntaksfejl %s:%u: ryd direktiv kræver et tilvalgstræ som argument"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaksfejl %s:%u: Overskydende affald i slutningen af filen"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -782,11 +805,11 @@ msgstr "Underprocessen %s returnerede en fejlkode (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Underprocessen %s afsluttedes uventet"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Læsefejl"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Skrivefejl"
 
@@ -1110,6 +1133,12 @@ msgstr "Kunne ikke låse administrationsmappen (%s), er du rod (root)?"
 msgid "Not locked"
 msgstr "Ikke låst"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1298,6 +1327,16 @@ msgstr "Forbered for modtagelse af løsning"
 msgid "External solver failed without a proper error message"
 msgstr "Ekstern problemløser fejlede uden en korrekt fejlbesked"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner opgraderingen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Sammenlagt afhængigheder: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Kør ekstern problemløser"
@@ -1373,8 +1412,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"Kunne ikke udføre øjeblikkelig konfiguration på »%s«. Se venligst man 5 apt."
-"conf under APT:Immediate-Cinfigure for detaljer. (%d)"
+"Kunne ikke udføre øjeblikkelig konfiguration på »%s«. Se venligst man 5 "
+"apt.conf under APT:Immediate-Cinfigure for detaljer. (%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1603,10 +1642,6 @@ msgstr ""
 "Nogle indeksfiler kunne ikke hentes. De er blevet ignoreret eller de gamle "
 "bruges i stedet."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beregner opgraderingen"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1879,6 +1914,19 @@ msgstr "Følgende oplysninger kan hjælpe dig med at klare situationen:"
 msgid "Broken packages"
 msgstr "Ødelagte pakker"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "Valgte %s for fjernelse.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1924,6 +1972,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Mystisk... Størrelserne passede ikke, skriv til apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Kunne ikke hente pakkerne"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1931,6 +1985,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "%sB/%sB skal hentes fra arkiverne.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB\n"
+msgstr "Kunne ikke hente pakkerne"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1938,13 +1998,55 @@ msgstr "%sB/%sB skal hentes fra arkiverne.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "%sB skal hentes fra arkiverne.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Efter denne handling, vil %sB yderligere diskplads være brugt.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Gemt mærkat: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1962,6 +2064,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Vil du fortsætte?"
@@ -2026,6 +2136,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Intern fejl. AutoRemover ødelagde noget"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Brug »%s« til at fjerne den."
+msgstr[1] "Brug »%s« til at fjerne dem."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2046,17 +2163,6 @@ msgstr[0] "Pakken %lu blev installeret automatisk, og behøves ikke længere.\n"
 msgstr[1] ""
 "Pakkerne %lu blev installeret automatisk, og behøves ikke længere.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Brug »%s« til at fjerne den."
-msgstr[1] "Brug »%s« til at fjerne dem."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "De følgende yderligere pakker vil blive installeret:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Foreslåede pakker:"
@@ -2065,6 +2171,10 @@ msgstr "Foreslåede pakker:"
 msgid "Recommended packages:"
 msgstr "Anbefalede pakker:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "De følgende yderligere pakker vil blive installeret:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2202,14 +2312,52 @@ msgstr " eller"
 msgid "The following packages have unmet dependencies:"
 msgstr "Følgende pakker har uopfyldte afhængigheder:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Building dependency tree"
+msgid "Unsatisfied dependencies:"
+msgstr "Opbygger afhængighedstræ"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Følgende NYE pakker vil blive installeret:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Installerer %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Sammenlagt afhængigheder: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Følgende pakker vil blive AFINSTALLERET:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Følgende pakker er blevet holdt tilbage:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Følgende pakker er blevet holdt tilbage:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Følgende pakker er blevet holdt tilbage:"
@@ -2218,10 +2366,24 @@ msgstr "Følgende pakker er blevet holdt tilbage:"
 msgid "The following packages will be upgraded:"
 msgstr "Følgende pakker vil blive opgraderet:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Følgende pakker vil blive NEDGRADERET:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "»Pinned« pakker:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Følgende tilbageholdte pakker vil blive ændret:"
@@ -2239,26 +2401,52 @@ msgstr ""
 "ADVARSEL: Følgende essentielle pakker vil blive afinstalleret\n"
 "Dette bør IKKE ske medmindre du er helt klar over, hvad du laver!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu opgraderes, %lu nyinstalleres, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Installerer %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu geninstalleres, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Installerer %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu nedgraderes, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu afinstalleres og %lu opgraderes ikke.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2286,7 +2474,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2468,11 +2656,11 @@ msgstr "%s har ingen opbygningsafhængigheder.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Ingen arkitekturinformation tilgængelig for %s. Se apt.conf(5) APT::"
-"Architectures for opsætning"
+"Ingen arkitekturinformation tilgængelig for %s. Se apt.conf(5) "
+"APT::Architectures for opsætning"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2508,6 +2696,11 @@ msgstr "Kunne ikke fortolke %s. Rediger igen? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Din »%s« fil blev ændret, kør venligst »apt-get update«.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2525,6 +2718,43 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Se apt-secure(8)-manualsiden for detaljer om arkivoprettelse og "
+"brugerkonfiguration."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2572,6 +2802,12 @@ msgstr "  Blandede virtuelle pakker: "
 msgid "  Missing: "
 msgstr "  Manglende: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Totale forskellige versioner: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Totale forskellige versioner: "
@@ -2927,6 +3163,12 @@ msgstr "slå en SRV-post op (f.eks. _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "sammenkæd filer, med automatisk dekomprimering"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problem ved \"hashing\" af fil"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "detekter proxy via apt.conf"
@@ -3175,6 +3417,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "rediger source-informationsfilen (kildefilen)"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Building dependency tree"
@@ -3379,7 +3625,7 @@ msgstr "Ukendt komprimeringsalgoritme »%s«"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimerede uddata %s kræver et komprimeringssæt"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Kunne ikke oprette IPC-videreførsel til underproces"
 
@@ -3498,24 +3744,25 @@ msgstr "Arkivet havde intet package-felt"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s har ingen tvangs-post\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s har ingen tvangs-post\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  pakkeansvarlig for %s er %s, ikke %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  pakkeansvarlig for %.*s er %.*s, ikke %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s har ingen linje med tilsidesættelse af standard for kildefiler\n"
+msgid "  %.*s has no source override entry\n"
+msgstr ""
+"  %.*s har ingen linje med tilsidesættelse af standard for kildefiler\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
-"  %s har ingen linje med tilsidesættelse af standard for binøre filer\n"
+"  %.*s har ingen linje med tilsidesættelse af standard for binøre filer\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3554,7 +3801,7 @@ msgstr "Ugyldige hoved-data"
 msgid "Connection failed"
 msgstr "Forbindelsen mislykkedes"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3598,7 +3845,7 @@ msgstr "Kunne ikke afmontere cdrommen i %s, den er muligvis stadig i brug."
 msgid "Disk not found."
 msgstr "Disk blev ikke fundet."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fil blev ikke fundet"
 
@@ -3634,7 +3881,7 @@ msgstr "Kunne ikke oprette sokkel til %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Kan ikke oprette forbindelse til %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Mislykkedes"
 
@@ -3648,9 +3895,7 @@ msgstr "Kunne ikke forbinde til %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Kunne ikke forbinde til %s:%s (%s) grundet tidsudløb"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Forbinder til %s"
@@ -3688,144 +3933,15 @@ msgstr "Kunne ikke finde"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ugyldig URI, lokale URI'er må ikke starte med //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Logget på"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Kunne ikke bestemme serverens navn"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Kunne ikke bestemme det lokale navn"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Serveren nægtede os forbindelse og sagde: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "angivelse af brugernavn mislykkedes, serveren sagde: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "angivelse af adgangskode mislykkedes, serveren sagde: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Der blev angivet en proxyserver men intet logpå-skript; Acquire::ftp::"
-"ProxyLogin er tom."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Logpå-skriptets kommando »%s« mislykkedes. Serveren sagde: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE mislykkedes. Serveren sagde: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Tidsudløb på forbindelsen"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Serveren lukkede forbindelsen"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Mellemlageret blev overfyldt af et svar."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokolfejl"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Kunne ikke oprette sokkel"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Kunne ikke forbinde datasokkel, tidsudløb på forbindelsen"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Kunne ikke forbinde passiv sokkel."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo kunne ikke få en lyttesokkel"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Kunne ikke tilknytte en sokkel"
 
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Kunne ikke lytte på soklen"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Kunne ikke finde soklens navn"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Kunne ikke sende PORT-kommando"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Ukendt adressefamilie %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT mislykkedes. Serveren sagde: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Tidsudløb på datasokkel-forbindelse"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Kunne ikke acceptere forbindelse"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem ved \"hashing\" af fil"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Kunne ikke hente fil. Serveren sagde »%s«"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Tidsudløb ved datasokkel"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Dataoverførsel mislykkedes, serveren sagde »%s«"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Forespørgsel"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Kunne ikke udføre "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3846,26 +3962,25 @@ msgstr ""
 "Intern fejl: Gyldig signatur, men kunne ikke afgøre nøgle-fingeraftryk?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Kunne ikke køre »apt-key« for at verificere signaturen (er gnupg "
 "installeret?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Ukendt fejl ved kørsel af apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "Signaturen med nøglen %s bruger en svag sammendragsalgoritme (%s)"
 
 #: methods/gpgv.cc
@@ -3900,18 +4015,134 @@ msgstr "Valg mislykkedes"
 msgid "Connection timed out"
 msgstr "Tidsudløb på forbindelsen"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem ved \"hashing\" af fil"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Kunne ikke angive ændringstidspunkt"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Forbindelsen lukkedes for hurtigt"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Tomme filer kan ikke være gyldige arkiver"
 
+#~ msgid "Logging in"
+#~ msgstr "Logget på"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Kunne ikke bestemme serverens navn"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Kunne ikke bestemme det lokale navn"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Serveren nægtede os forbindelse og sagde: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "angivelse af brugernavn mislykkedes, serveren sagde: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "angivelse af adgangskode mislykkedes, serveren sagde: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Der blev angivet en proxyserver men intet logpå-skript; "
+#~ "Acquire::ftp::ProxyLogin er tom."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Logpå-skriptets kommando »%s« mislykkedes. Serveren sagde: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE mislykkedes. Serveren sagde: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Tidsudløb på forbindelsen"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Serveren lukkede forbindelsen"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Mellemlageret blev overfyldt af et svar."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokolfejl"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Kunne ikke oprette sokkel"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Kunne ikke forbinde datasokkel, tidsudløb på forbindelsen"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Kunne ikke forbinde passiv sokkel."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo kunne ikke få en lyttesokkel"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Kunne ikke tilknytte en sokkel"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Kunne ikke lytte på soklen"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Kunne ikke finde soklens navn"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Kunne ikke sende PORT-kommando"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Ukendt adressefamilie %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT mislykkedes. Serveren sagde: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Tidsudløb på datasokkel-forbindelse"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Kunne ikke acceptere forbindelse"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Kunne ikke hente fil. Serveren sagde »%s«"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Tidsudløb ved datasokkel"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Dataoverførsel mislykkedes, serveren sagde »%s«"
+
+#~ msgid "Query"
+#~ msgstr "Forespørgsel"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Kunne ikke udføre "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Forbindelsen lukkedes for hurtigt"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installeret: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Følgende tilbageholdte pakker vil blive ændret:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ja, gør som jeg siger!"
 
diff --git a/po/de.po b/po/de.po
index 9488d50..36efeda 100644
--- a/po/de.po
+++ b/po/de.po
@@ -4,7 +4,7 @@
 # Licensing is complex as the msgid come from several files, please see
 # the individual files for licensing information.
 #
-# Helge Kreutzmann <debian@helgefjell.de>, 2020-2023.
+# Helge Kreutzmann <debian@helgefjell.de>, 2020-2023, 2025.
 # Holger Wansing <linux@wansing-online.de>, 2008, 2009, 2010, 2012, 2014, 2017, 2018.
 # Jens Seidel <jensseidel@users.sf.net>, 2008.
 # Michael Piefel <piefel@informatik.hu-berlin.de>, 2001, 2002, 2003, 2004, 2006.
@@ -13,10 +13,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.5.5\n"
+"Project-Id-Version: apt 2.9.27\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2023-01-20 16:58+0100\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2025-02-09 18:21+0100\n"
 "Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
 "Language: de\n"
@@ -61,8 +61,8 @@ msgstr "Das Depot »%s« enthält keine Release-Datei mehr."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 "Dies ist normalerweise nicht erlaubt, was aber wegen der angegebenen Option "
 "»Acquire::AllowDowngradeToInsecureRepositories« unbeachtet blieb."
@@ -213,8 +213,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Konflikt bei Distribution: %s (%s erwartet, aber %s bekommen)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Für das Depot »%s« wurde der »%s«-Wert von »%s« in »%s« geändert."
@@ -227,7 +226,7 @@ msgstr ""
 "geändert."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -251,6 +250,15 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Fehlschlag beim Holen von %s %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Depots sollten eine InRelease-Datei mit Klartextsignatur bereitstellen, aber "
+"unter %s wurde keine gefunden."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -274,16 +282,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Änderungsprotokoll (Changelog) nicht verfügbar für %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"Die Methode »%s« wird nicht unterstützt und ist standardmäßig deaktiviert. "
-"Wechseln Sie, falls möglich, auf http(s). Um sie wieder zu aktivieren, "
-"setzen Sie Dir::Bin::Methods::%s auf »%s«."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -700,6 +698,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaxfehler %s:%u: Zusätzlicher Unsinn am Dateiende"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Fehler:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Warnung:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Hinweis:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Audit:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Fehlersuche:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -816,11 +838,11 @@ msgstr "Unterprozess %s hat Fehlercode zurückgegeben (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Unterprozess %s unerwartet beendet"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Lesefehler"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Schreibfehler"
 
@@ -926,8 +948,8 @@ msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
-"Nicht genügend Platz für »Dynamic MMap«. Bitte erhöhen Sie den Wert von APT::"
-"Cache-Start. Aktueller Wert: %lu. (Siehe auch man 5 apt.conf.)"
+"Nicht genügend Platz für »Dynamic MMap«. Bitte erhöhen Sie den Wert von "
+"APT::Cache-Start. Aktueller Wert: %lu. (Siehe auch man 5 apt.conf.)"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
@@ -1151,6 +1173,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Nicht gesperrt"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+"Das in Dir::Bin::dpkg gesetzte Programm für Dpkg fehlt, es wird auf das "
+"Standard-Dpkg zurückgefallen."
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1343,6 +1373,14 @@ msgstr "Vorbereiten, eine Lösung zu erhalten"
 msgid "External solver failed without a proper error message"
 msgstr "Externer Problemlöser ohne ordnungsgemäße Fehlermeldung fehlgeschlagen"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Paketaktualisierung (Upgrade) wird berechnet"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Auflösen von Abhängigkeiten"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Externen Problemlöser ausführen"
@@ -1420,8 +1458,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"»%s« konnte nicht unmittelbar konfiguriert werden. Lesen Sie »man 5 apt."
-"conf« unter APT::Immediate-Configure bezüglich weiterer Details. (%d)"
+"»%s« konnte nicht unmittelbar konfiguriert werden. Lesen Sie »man 5 "
+"apt.conf« unter APT::Immediate-Configure bezüglich weiterer Details. (%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1662,10 +1700,6 @@ msgstr ""
 "Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden "
 "ignoriert oder alte an ihrer Stelle benutzt."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Paketaktualisierung (Upgrade) wird berechnet"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1947,6 +1981,20 @@ msgstr ""
 msgid "Broken packages"
 msgstr "Beschädigte Pakete"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Nicht zusammengeführtes usr wird nicht mehr unterstützt, verwenden Sie "
+"usrmerge, um auf ein zusammengeführtes-usr-System zu wechseln."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Siehe %s für weitere Details."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1995,6 +2043,11 @@ msgstr ""
 "Wie merkwürdig … die Größen haben nicht übereingestimmt; schreiben Sie eine "
 "E-Mail an apt@packages.debian.org (auf Englisch bitte)."
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Herunterlade-Größe: %sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2002,6 +2055,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Es müssen noch %sB von %sB an Archiven heruntergeladen werden.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Herunterlade-Größe: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2009,13 +2067,57 @@ msgstr "Es müssen noch %sB von %sB an Archiven heruntergeladen werden.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Es müssen %sB an Archiven heruntergeladen werden.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Nach dieser Operation werden %sB Plattenplatz zusätzlich benutzt.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Benötigter Platz: %sB / %sB verfügbar\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Mehr Platz benötigt als verfügbar: %sB > %sB, Installation kann fehlschlagen"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "in %s:  %sB / %sB verfügbar\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"In %s wird mehr Platz als verfügbar benötigt: %sB > %sB, Installation kann "
+"fehlschlagen"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Benötigter Platz: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Freigegebener Platz: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2036,6 +2138,14 @@ msgstr ""
 "Das Entfernen essenzieller, system-kritischer Pakete ist nicht erlaubt. Dies "
 "kann das System beschädigen."
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Trotzdem fortfahren?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Fortfahren?"
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Möchten Sie fortfahren?"
@@ -2100,6 +2210,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Interner Fehler, AutoRemover hat etwas beschädigt."
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Verwenden Sie »%s«, um es zu entfernen."
+msgstr[1] "Verwenden Sie »%s«, um sie zu entfernen."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2123,17 +2240,6 @@ msgstr[0] ""
 msgstr[1] ""
 "%lu Pakete wurden automatisch installiert und werden nicht mehr benötigt.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Verwenden Sie »%s«, um es zu entfernen."
-msgstr[1] "Verwenden Sie »%s«, um sie zu entfernen."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Die folgenden zusätzlichen Pakete werden installiert:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Vorgeschlagene Pakete:"
@@ -2142,6 +2248,10 @@ msgstr "Vorgeschlagene Pakete:"
 msgid "Recommended packages:"
 msgstr "Empfohlene Pakete:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Die folgenden zusätzlichen Pakete werden installiert:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2283,14 +2393,44 @@ msgstr " oder"
 msgid "The following packages have unmet dependencies:"
 msgstr "Die folgenden Pakete haben unerfüllte Abhängigkeiten:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Nichterfüllte Abhängigkeiten:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Die folgenden NEUEN Pakete werden installiert:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Installation:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Abhängigkeiten werden installiert: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "ENTFERNUNG:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Die folgenden Pakete werden ENTFERNT:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+"Die folgenden Aktualisierungen sind wegen Phasenstufung zurückgestellt "
+"worden:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Noch keine Aktualisierung wegen Phasenstufung:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Keine Aktualisierung:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Die folgenden Pakete sind zurückgehalten worden:"
@@ -2299,11 +2439,23 @@ msgstr "Die folgenden Pakete sind zurückgehalten worden:"
 msgid "The following packages will be upgraded:"
 msgstr "Die folgenden Pakete werden aktualisiert (Upgrade):"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Aktualisierung:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "ZURÜCK ZU ÄLTERER VERSION:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr ""
 "Die folgenden Pakete werden durch eine ÄLTERE VERSION ERSETZT (Downgrade):"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Änderung von gehaltenen Paketen:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:"
@@ -2321,26 +2473,50 @@ msgstr ""
 "WARNUNG: Die folgenden essentiellen Pakete werden entfernt.\n"
 "Dies sollte NICHT geschehen, außer Sie wissen genau, was Sie tun!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Zusammenfassung:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu aktualisiert, %lu neu installiert, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Aktualisierung: %lu, Installation: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu erneut installiert, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Erneut installieren: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu durch eine ältere Version ersetzt, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Durch ältere Version ersetzen: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu zu entfernen und %lu nicht aktualisiert.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Entfernen: %lu, nicht aktualisieren: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2368,7 +2544,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2557,8 +2733,8 @@ msgstr "%s hat keine Bauabhängigkeiten.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Keine Architekturinformation für %s verfügbar. Weiteres zur Einrichtung "
 "finden Sie unter apt.conf(5) APT::Architectures."
@@ -2605,6 +2781,12 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 "Ihre »%s«-Datei wurde verändert, bitte führen Sie »apt-get update« aus.\n"
 
+# FIXME a TRANSLATOR note explaining this string would be helpful
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr "%zu an »sources« umschreiben?"
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2624,6 +2806,47 @@ msgstr ""
 "Die Verwendung von %s sollte gegenüber der Methode bevorzugt werden, Login-"
 "Informationen direkt in den %s-Abschnitt für »%s« einzutragen."
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+"Der Eintrag %s für »%s« sollte auf .sources im Format deb822 aktualisiert "
+"werden."
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Fehlendes Signed-By im Eintrag %s für »%s«"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+"Es wird empfohlen, alle sources.list(5)-Einträge in das deb822-Format "
+"für .sources umzuwandeln"
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+"Das deb822-Format für .sources unterstützt sowohl eingebettete als auch "
+"externe OpenPGP-Schlüssel"
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Bewährte Vorgehensweisen zur Konfiguration des Signierens von Depots finden "
+"Sie in apt-secure(8)."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+"Einige Quellen können modernisiert werden. Führen Sie dafür »apt modernize-"
+"sources« aus."
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2673,6 +2896,12 @@ msgstr "  davon gemischte virtuelle Pakete: "
 msgid "  Missing: "
 msgstr "  davon fehlend: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Gesamtzahl an unterschiedlichen Versionen: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Gesamtzahl an unterschiedlichen Versionen: "
@@ -3042,6 +3271,10 @@ msgstr "einen SRV-Eintrag abfragen (z.B. _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "verketten von Dateien, mit automatischer Dekomprimierung"
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr "Hash-Datei"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "erkennen eines Proxy-Servers mittels apt.conf"
@@ -3291,6 +3524,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "die Datei für die Paketquellen bearbeiten"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ".list-Dateien wurden zu .sources-Dateien modernisiert"
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "Abhängigkeitszeichenketten erfüllen"
@@ -3500,7 +3737,7 @@ msgstr "Unbekannter Komprimierungsalgorithmus »%s«"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimierte Ausgabe %s benötigt einen Komprimierungssatz."
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr ""
 "Interprozesskommunikation mit Unterprozess konnte nicht aufgebaut werden."
@@ -3620,23 +3857,23 @@ msgstr "Archiv hatte kein Feld »package«"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s hat keinen Eintrag in der Override-Liste.\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s hat keinen Eintrag in der Override-Liste.\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s-Betreuer ist %s und nicht %s.\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s-Betreuer ist %.*s und nicht %s.\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s hat keinen Eintrag in der Source-Override-Liste.\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s hat keinen Eintrag in der Source-Override-Liste.\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s hat keinen Eintrag in der Binary-Override-Liste.\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s hat keinen Eintrag in der Binary-Override-Liste.\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3677,7 +3914,7 @@ msgstr "Fehlerhafte Kopfzeilendaten"
 msgid "Connection failed"
 msgstr "Verbindung fehlgeschlagen"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3725,7 +3962,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Medium nicht gefunden"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Datei nicht gefunden"
 
@@ -3760,7 +3997,7 @@ msgstr "Socket für %s konnte nicht erzeugt werden (f=%u t=%u p=%u)."
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Verbindung mit %s:%s kann nicht aufgebaut werden (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Fehlgeschlagen"
 
@@ -3776,9 +4013,7 @@ msgstr ""
 "Verbindung mit %s:%s konnte nicht aufgebaut werden (%s), Zeitüberschreitung "
 "aufgetreten"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Verbindung mit %s"
@@ -3817,146 +4052,15 @@ msgstr "Abfrage mit »stat« fehlgeschlagen"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ungültige URI, lokale URIs dürfen nicht mit // beginnen."
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Anmeldung läuft"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Name des Kommunikationspartners kann nicht bestimmt werden."
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Lokaler Name kann nicht bestimmt werden."
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Verbindung durch Server abgelehnt; Server meldet: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Befehl USER fehlgeschlagen, Server meldet: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Befehl PASS fehlgeschlagen, Server meldet: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Es war ein Proxy-Server angegeben, aber kein Login-Skript, Acquire::ftp::"
-"ProxyLogin ist leer."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Befehl »%s« des Login-Skriptes fehlgeschlagen, Server meldet: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Befehl TYPE fehlgeschlagen: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Zeitüberschreitung der Verbindung"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Verbindung durch Server geschlossen"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Durch eine Antwort wurde der Puffer zum Überlaufen gebracht."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokoll beschädigt"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Socket konnte nicht erzeugt werden."
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Daten-Socket konnte wegen Zeitüberschreitung nicht verbunden werden."
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Passiver Socket konnte nicht verbunden werden."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-"Von der Funktion getaddrinfo wurde kein auf Verbindungen wartender Socket "
-"gefunden."
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Verbindung des Sockets nicht möglich"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Warten auf Verbindungen auf dem Socket nicht möglich"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Name des Sockets konnte nicht bestimmt werden."
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "PORT-Befehl konnte nicht gesendet werden."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Unbekannte Adressfamilie %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Befehl EPRT fehlgeschlagen: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Zeitüberschreitung bei Datenverbindungsaufbau"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Verbindung konnte nicht angenommen werden."
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem bei Bestimmung des Hashwertes einer Datei"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Datei konnte nicht heruntergeladen werden; Server meldet: »%s«"
+msgid "untrusted public key algorithm: %s"
+msgstr "nicht vertrauenswürdiger »public key«-Algorithmus: %s"
 
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Zeitüberschreitung bei Datenverbindung"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Datenübertragung fehlgeschlagen; Server meldet: »%s«"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Abfrage"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Aufruf nicht möglich: "
+msgid "%s will be deprecated in a future release"
+msgstr "%s wird in einer zukünftigen Veröffentlichung als veraltet markiert"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3979,30 +4083,20 @@ msgstr ""
 "jedoch nicht ermittelt werden?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
-"»apt-key« konnte zur Überprüfung der Signatur nicht ausgeführt werden (ist "
-"gnupg installiert?)"
-
-#: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "Unbekannter Fehler beim Ausführen von apt-key"
+"»gpgv« konnte zur Überprüfung der Signatur nicht ausgeführt werden (ist "
+"Gnupg installiert?)"
 
 #: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-"Schlüssel ist im veralteten Schlüsselbund trusted.gpg gespeichert (%s), "
-"siehe den Abschnitt MISSBILLIGUNG in apt-key(8) für Details."
+msgid "Unknown error executing gpgv"
+msgstr "Unbekannter Fehler beim Ausführen von gpgv"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
-"Signatur von Schlüssel %s verwendet einen schwachen Hash-Algorithmus (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "Signatur von Schlüssel %s verwendet einen schwachen Algorithmus (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -4039,18 +4133,147 @@ msgstr "Auswahl fehlgeschlagen"
 msgid "Connection timed out"
 msgstr "Zeitüberschreitung bei Verbindung"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem bei Bestimmung des Hashwertes einer Datei"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Änderungszeitpunkt kann nicht gesetzt werden."
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Verbindung vorzeitig beendet"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Leere Dateien können kein gültiges Archiv sein."
 
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Die Methode »%s« wird nicht unterstützt und ist standardmäßig "
+#~ "deaktiviert. Wechseln Sie, falls möglich, auf http(s). Um sie wieder zu "
+#~ "aktivieren, setzen Sie Dir::Bin::Methods::%s auf »%s«."
+
+#~ msgid "Logging in"
+#~ msgstr "Anmeldung läuft"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Name des Kommunikationspartners kann nicht bestimmt werden."
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Lokaler Name kann nicht bestimmt werden."
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Verbindung durch Server abgelehnt; Server meldet: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Befehl USER fehlgeschlagen, Server meldet: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Befehl PASS fehlgeschlagen, Server meldet: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Es war ein Proxy-Server angegeben, aber kein Login-Skript, "
+#~ "Acquire::ftp::ProxyLogin ist leer."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Befehl »%s« des Login-Skriptes fehlgeschlagen, Server meldet: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Befehl TYPE fehlgeschlagen: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Zeitüberschreitung der Verbindung"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Verbindung durch Server geschlossen"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Durch eine Antwort wurde der Puffer zum Überlaufen gebracht."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokoll beschädigt"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Socket konnte nicht erzeugt werden."
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Daten-Socket konnte wegen Zeitüberschreitung nicht verbunden werden."
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Passiver Socket konnte nicht verbunden werden."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr ""
+#~ "Von der Funktion getaddrinfo wurde kein auf Verbindungen wartender Socket "
+#~ "gefunden."
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Verbindung des Sockets nicht möglich"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Warten auf Verbindungen auf dem Socket nicht möglich"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Name des Sockets konnte nicht bestimmt werden."
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "PORT-Befehl konnte nicht gesendet werden."
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Unbekannte Adressfamilie %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Befehl EPRT fehlgeschlagen: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Zeitüberschreitung bei Datenverbindungsaufbau"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Verbindung konnte nicht angenommen werden."
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Datei konnte nicht heruntergeladen werden; Server meldet: »%s«"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Zeitüberschreitung bei Datenverbindung"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Datenübertragung fehlgeschlagen; Server meldet: »%s«"
+
+#~ msgid "Query"
+#~ msgstr "Abfrage"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Aufruf nicht möglich: "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Verbindung vorzeitig beendet"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installiert: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ja, tue was ich sage!"
 
@@ -4460,9 +4683,6 @@ msgstr "Leere Dateien können kein gültiges Archiv sein."
 #~ msgstr ""
 #~ "Nicht verfügbare Veröffentlichung »%s« von Paket »%s« wird ignoriert."
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Herunterladen von %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Dies ist kein gültiges DEB-Archiv, da es weder »%s«, »%s« noch »%s« "
diff --git a/po/dz.po b/po/dz.po
index b48d398..51cc844 100644
--- a/po/dz.po
+++ b/po/dz.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2006-09-19 09:49+0530\n"
 "Last-Translator: Kinley Tshering <gasepkuenden2k3@hotmail.com>\n"
 "Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n"
@@ -52,8 +52,8 @@ msgstr "སྣོད་ཐོ་%s་འདི་ཁ་ཕྱོགས་སྒ
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -183,8 +183,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -195,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -214,6 +213,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s  %s་ ལེན་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད།"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -234,13 +240,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s (%s)་ལུ་མཐུད་དོ།"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -625,6 +624,30 @@ msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:བཀོད་
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: ཡིག་སྣོད་ཀྱི་མཇུག་ལུ་མཁོ་མེད་ཐེབས།"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -735,11 +758,11 @@ msgstr "ཡན་ལག་ལས་སྦྱོར་%s་གིས་འཛོ
 msgid "Sub-process %s exited unexpectedly"
 msgstr "ཡན་ལག་ལས་སྦྱོར་་%s་གིས་རེ་བ་མེད་པར་ཕྱིར་ཐོན་ཡོདཔ་ཨིན།"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "འཛོལ་བ་ལྷབ།"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "འཛོལ་བ་འབྲི།"
 
@@ -1047,6 +1070,12 @@ msgstr "ཐོ་བཀོད་འབད་ཡོད་པའི་སྣོད
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1228,6 +1257,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ཡར་བསྐྱེད་རྩིས་བཏོན་དོ་"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "རྟེན་འབྲེལ་བསྡོམས:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1531,10 +1570,6 @@ msgstr ""
 "ཟུར་ཐོ་ཡིག་སྣོད་ལ་ལུ་ཅིག་ཕབ་ལེན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ནུག་  འདི་ཚུ་སྣང་མེད་སྦེ་བཞགཔ་མ་ཚད་ ཚབ་ལུ་"
 "རྙིངམ་འདི་ཚུ་ལག་ལེན་འཐབ་ནུག"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "ཡར་བསྐྱེད་རྩིས་བཏོན་དོ་"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1803,6 +1838,18 @@ msgstr "འོག་གི་བརྡ་དོན་དེ་གིས་དུ
 msgid "Broken packages"
 msgstr "ཆད་པ་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ།"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1849,6 +1896,12 @@ msgstr ""
 "ག་ཅི་གི་ཡ་མཚན་ཆེ་མི་ཆེ་  ཚད་འདི་གིས་ email apt@packages.debian.org་ལུ་མཐུན་སྒྲིག་མི་འབད་"
 "བས།"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "གཞི་བཙུགས་འབད་ཡོདཔ།"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1856,6 +1909,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "%sBལེན་ནི་ལུ་དགོཔ་པས། ཡིག་མཛོད་ཚི་གི་%sB་\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1863,13 +1921,55 @@ msgstr "%sBལེན་ནི་ལུ་དགོཔ་པས། ཡིག་
 msgid "Need to get %sB of archives.\n"
 msgstr "ཡིག་མཛོད་ཀྱི་%sB་འདི་ལེན་དགོ་པས།\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "ཁ་སྐོང་གི་%sB་འདི་བཤུབ་པའི་ཤུལ་ལས་ཌིཀསི་གི་བར་སྟོང་དེ་ལག་ལེན་འཐབ་འོང་།\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "གསོག་འཇོག་འབད་ཡོད་པའི་ཁ་ཡིག:%s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1887,6 +1987,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 #, fuzzy
 msgid "Do you want to continue?"
@@ -1945,6 +2053,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "ནང་འཁོད་འཛོལ་བ་ དཀའ་ངལ་མོས་མཐུན་འབད་མི་ཅ་ཆས་ཚུ་མེདཔ་ཐལ་ཡོད།"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1963,18 +2078,6 @@ msgid_plural ""
 msgstr[0] "འོག་གི་ཐུམ་སྒྲིས་གསརཔ་འདི་ཚུ་ཁཞི་བཙུགས་འབད་འོང་:"
 msgstr[1] "འོག་གི་ཐུམ་སྒྲིས་གསརཔ་འདི་ཚུ་ཁཞི་བཙུགས་འབད་འོང་:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "འོག་གི་ཐུམ་སྒྲིལ་ཐེབས་ཚུ་གཞི་བཙུགས་འབད་འོང་:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "བསམ་འཆར་བཀོད་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ:"
@@ -1983,6 +2086,11 @@ msgstr "བསམ་འཆར་བཀོད་ཡོད་པའི་ཐུམ
 msgid "Recommended packages:"
 msgstr "འོས་སྦྱོར་འབད་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "འོག་གི་ཐུམ་སྒྲིལ་ཐེབས་ཚུ་གཞི་བཙུགས་འབད་འོང་:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2116,14 +2224,51 @@ msgstr "ཡང་ན།"
 msgid "The following packages have unmet dependencies:"
 msgstr "འོག་གི་ཐུམ་སྒྲིལ་ཚུ་ལུ་རྟེན་འབྲེལ་མ་ཚང་པས:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "%s: %s་གི་དོན་ལུ་་%s་རྟེན་འབྲེལ་འདི་ངལ་རངས་འབད་ནི་འཐུས་ཤོར་བྱུང་ནུག"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "འོག་གི་ཐུམ་སྒྲིས་གསརཔ་འདི་ཚུ་ཁཞི་བཙུགས་འབད་འོང་:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "རྟེན་འབྲེལ་བསྡོམས:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་རྩ བསྐྲད་གཏང་འོང་:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:"
@@ -2132,10 +2277,24 @@ msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་
 msgid "The following packages will be upgraded:"
 msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ཡར་བསྐྱེད་འབད་འོང་:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "འོག་གི་ཐུམ་སྒྲལ་འདི་ཚུ་མར་ཕབ་འབད་འོང་:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "ཁབ་གཟེར་བཏབ་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "འོག་གི་འཆང་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ་བསྒྱུར་བཅོས་འབད་འོང་:"
@@ -2153,26 +2312,50 @@ msgstr ""
 "ཉེན་བརྡ:འོག་གི་ཉོ་མཁོ་བའི་ཐུམ་སྒྲིལ་ཚུ་རྩ་བསྐྲད་གཏང་འོང་།\n"
 "ཁྱོད་ཀྱིས་ཁྱོད་རང་ག་ཅི་འབདཝ་ཨིན་ན་ངེས་སྦེ་མ་ཤེས་ཚུན་འདི་འབད་ནི་མི་འོང་།!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu་ཡར་བསྐྱེད་འབད་ཡོད་ %lu་འདི་གསརཔ་སྦེ་གཞི་བཙུགས་འབད་ཡོད།"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu་འདི་ལོག་གཞི་བཙུགས་འབད་ཡོད།"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu་འདི་མར་ཕབ་འབད་ཡོད།"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "རྩ་བསྐྲད་འབད་ནི་ལུ་%lu་དང་%lu་ཡར་བསྐྱེད་མ་འབད་བས།\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2200,7 +2383,7 @@ msgid "Y"
 msgstr "ཝའི།"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2375,8 +2558,8 @@ msgstr "%s ལུ་བཟོ་བརྩིགས་རྟེན་འབྲེ
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2413,6 +2596,11 @@ msgstr "%s་ལུ་%s་བསྐྱར་མིང་བཏགས་ནི
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2430,6 +2618,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2476,6 +2695,12 @@ msgstr "བར་ཅུ་ཡལ་ཐུམ་སྒྲིལ་སླ་བས
 msgid "  Missing: "
 msgstr "བརླག་སྟོར་ཞུགས་པ:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "ཁྱད་རྟགས་ཅན་གྱི་ཐོན་རིམ་ཚུ་གི་བསྡོམས:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "ཁྱད་རྟགས་ཅན་གྱི་ཐོན་རིམ་ཚུ་གི་བསྡོམས:"
@@ -2809,6 +3034,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "ཡིག་སྣོད་ལུ་་དྲྭ་རྟགས་བཀལ་བའི་བསྒང་དཀའ་ངལ།"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3055,6 +3286,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "འཐོབ་ཚུགས་པའི་བརྡ་དོན་མཉམ་བསྡོམས་འབད་དོ།"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3267,7 +3502,7 @@ msgstr " མ་ཤེས་ཨེབ་བཙུགས་ཨཱལ་གོ་
 msgid "Compressed output %s needs a compression set"
 msgstr "ཨེབ་བཙུགས་འབད་ཡོད་པའི་ཨའུཊི་པུཊི་%sལུ་ཨེབ་བཙུགས་ཆ་ཚན་ཅིག་དགོཔ་འདུག"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "ཡན་ལག་ལས་སྦྱོར་ལུ་ཨའི་པི་སི་རྒྱུད་དུང་གསར་བསྐྲུན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
 
@@ -3386,23 +3621,23 @@ msgstr "ཡིག་མཛོད་ལུ་ཐུམ་སྒྲིལ་ཅི
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %sལུ་ཟུར་བཞག་ཐོ་བཀོད་མེད།\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*sལུ་ཟུར་བཞག་ཐོ་བཀོད་མེད།\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s ་རྒྱུན་སྐྱོང་པ་འདི་  %s ཨིན་   %s མེན།\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s ་རྒྱུན་སྐྱོང་པ་འདི་  %.*s ཨིན་   %s མེན།\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s ལུ་འབྱུང་ཁུངས་མེདཔ་གཏང་ནིའི་ཐོ་བཀོད་འདི་མེད།\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s ལུ་འབྱུང་ཁུངས་མེདཔ་གཏང་ནིའི་ཐོ་བཀོད་འདི་མེད།\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %sལུ་ཟུང་ལྡན་མེདཔ་གཏང་ནིའི་་ཐོ་བཀོད་གང་རུང་ཡང་མིན་འདུག།\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*sལུ་ཟུང་ལྡན་མེདཔ་གཏང་ནིའི་་ཐོ་བཀོད་གང་རུང་ཡང་མིན་འདུག།\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3440,7 +3675,7 @@ msgstr "མགོ་ཡིག་གནད་སྡུད་བྱང་ཉེས
 msgid "Connection failed"
 msgstr "བཐུད་ལམ་འཐུས་ཤོར་བྱུང་ཡོད།"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3483,7 +3718,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "ཌིཀསི་དེ་འཚོལ་མ་ཐོབ།"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "ཡིག་སྣོད་འཚོལ་མ་ཐོབ།"
 
@@ -3519,7 +3754,7 @@ msgstr "%s (f=%u t=%u p=%u)གི་དོན་ལུ་སོ་ཀེཊི
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "%s:%s (%s)ལུ་མཐུད་ལམ་དེ་འགོ་འབྱེད་འབད་མ་ཚུགས།"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "འཐུས་ཤོར་བྱུང་ཡོད།"
 
@@ -3533,9 +3768,7 @@ msgstr " %s:%s (%s)ལུ་མཐུད་མ་ཚུགས།"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr " %s:%s (%s)ལུ་མཐུད་མ་ཚུགས་  མཐུད་ལམ་ངལ་མཚམས།"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "%s་ལུ་མཐུད་དོ།"
@@ -3573,144 +3806,15 @@ msgstr "ངོ་བཤུས་འབད་ནི་ལུ་འཐུས་ཤ
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "ཡུ་ཨར་ཨེལ་ ནུས་མེད་  ཉེ་གནས་ ཡུ་ཨར་ཨེལ་ཨེསི་འདི་གིས་//་དང་གཅིག་ཁར་འགོ་བཙུགས་ནི་མི་འོང་།"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "ནང་བསྐྱོད་འབད་དོ།"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "དོ་བཉམ་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "ཉེ་གནས་མིང་འདི་གཏན་འབེེབས་བཟོ་མ་ཚུགས།"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "སར་བར་འདི་གིས་ མཐུད་ལམ་འདི་ངོས་ལེན་འབད་མ་བཏུབ་པར་སླབ་མས: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "ལག་ལེན་པ་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གྱིས་སླབ་མས་: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "རྩི་སྤྲོད་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གྱིས་སླབ་མས་: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"པོརོ་སི་སར་བར་ཅིག་གསལ་བཀོད་འབད་ཡོད་འདི་འབདཝ་ད་  ནང་བསྐྱོད་ཡིག་ཚུགས་མིན་འདུག་ Acquire::ftp::"
-"ProxyLoginའདི་སྟོངམ་ཨིན་པས།"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "ནང་བསྐྱོད་ཡིག་ཚུགས་ བརྡ་བཀོད་'%s'་འདི་འཐོས་ཤོར་བྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "ཡིག་དཔར་རྐྱབ་མ་བཏུབ་སར་བར་གྱིས་སླབ་མས། %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "མཐུད་ལམ་ངལ་མཚམས"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "སར་བར་གྱིས་མཐུད་ལམ་འདི་ཁ་བསྡམས་ཏེ་ཡོདཔ་ཨིན།"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "ལན་གྱིས་ གནད་ཁོངས་གུར་ལས་ ལུད་སོང་སྟེ་ཡོདཔ་ཨིན།"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "གནད་སྤེལ་ལམ་ལུགས་ ངན་ཅན།"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "སོ་ཀེཊི་ཅིག་གསར་བསྐྲུན་འབད་མ་ཚུགས་པར་ཡོདཔ་ཨིན།"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "གནད་སྡུད་སོ་ཀེཊི་མཐུད་མ་ཚུགས་པར་ཡོདཔ་ཨིན་  མཐུད་ལམ་ངལ་མཚམས།"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "བྱ་ཡུལ་གྱི་སོ་ཀེཊི་མཐུད་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo་འདི་གིས་ཉན་ནིའི་སོ་ཀེཊི་ཅིག་ལེན་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "སོ་ཀེཊི་ཅིག་བསྡམས་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "སོ་ཀེཊི་གུར་ཉེན་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "སོ་ཀེཊི་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "འདྲེན་ལམ་གྱི་བརྡ་བཀོད་འདི་བཏང་མ་ཚུགས།"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "མ་ཤེས་པའི་ཁ་བྱང་གི་རིགས་ཚན་%u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "ཨི་པི་ཨར་ཊི་ འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གིས་སླབ་མས:%s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "གནད་སྡུད་སོ་ཀེཊི་ མཐུད་ནི་ངལ་མཚམས་བྱུང་ནུག"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "མཐུད་ལམ་འདི་དང་ལེན་འབད་མ་ཚུགས།"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "ཡིག་སྣོད་ལུ་་དྲྭ་རྟགས་བཀལ་བའི་བསྒང་དཀའ་ངལ།"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "ཡིག་སྣོད་ལེན་མ་ཚུགས་ སར་བར་'%s'གིས་སླབ་མས"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "གནད་སྡུད་སོ་ཀེཊི་ངལ་མཚམས།"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "གནད་སྡུད་གནས་སོར་དེ་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་'%s'་གིས་སླབ་མས།"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "འདྲི་དཔྱད།"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "ལས་བཀོལ་འབད་མ་ཚུགས།"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3732,26 +3836,21 @@ msgstr ""
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "མིང་རྟགས་བདེན་སྦྱོར་འབད་ནི་ལུ་'%s'འདི་ལག་ལེན་འཐབ་མ་ཚུགས། (gnupg་དེ་ཁཞི་བཙུགས་འབད་ཡོདཔ་ཨིན་"
 "ན།?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key་ལག་ལེན་འཐབ་ནི་ལུ་མ་ཤེས་པའི་འཛོལ་བ་།"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3785,18 +3884,129 @@ msgstr "སེལ་འཐུ་འཐུས་ཤོར་བྱུང་ཡོ
 msgid "Connection timed out"
 msgstr "མཐུད་ལམ་ངལ་མཚམས་འབད་ཡོད།"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "ཡིག་སྣོད་ལུ་་དྲྭ་རྟགས་བཀལ་བའི་བསྒང་དཀའ་ངལ།"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "ཆུ་ཚོད་ལེགས་བཅོས་གཞི་སྒྲིག་འབཐ་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད།"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "དུས་སུ་མ་འབབ་པ་རང་མཐུད་ལམ་འདི་ག་བསྡམས་ཡོད།"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "ནང་བསྐྱོད་འབད་དོ།"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "དོ་བཉམ་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "ཉེ་གནས་མིང་འདི་གཏན་འབེེབས་བཟོ་མ་ཚུགས།"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "སར་བར་འདི་གིས་ མཐུད་ལམ་འདི་ངོས་ལེན་འབད་མ་བཏུབ་པར་སླབ་མས: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "ལག་ལེན་པ་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གྱིས་སླབ་མས་: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "རྩི་སྤྲོད་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གྱིས་སླབ་མས་: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "པོརོ་སི་སར་བར་ཅིག་གསལ་བཀོད་འབད་ཡོད་འདི་འབདཝ་ད་  ནང་བསྐྱོད་ཡིག་ཚུགས་མིན་འདུག་ "
+#~ "Acquire::ftp::ProxyLoginའདི་སྟོངམ་ཨིན་པས།"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "ནང་བསྐྱོད་ཡིག་ཚུགས་ བརྡ་བཀོད་'%s'་འདི་འཐོས་ཤོར་བྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས:%s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "ཡིག་དཔར་རྐྱབ་མ་བཏུབ་སར་བར་གྱིས་སླབ་མས། %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "མཐུད་ལམ་ངལ་མཚམས"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "སར་བར་གྱིས་མཐུད་ལམ་འདི་ཁ་བསྡམས་ཏེ་ཡོདཔ་ཨིན།"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "ལན་གྱིས་ གནད་ཁོངས་གུར་ལས་ ལུད་སོང་སྟེ་ཡོདཔ་ཨིན།"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "གནད་སྤེལ་ལམ་ལུགས་ ངན་ཅན།"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "སོ་ཀེཊི་ཅིག་གསར་བསྐྲུན་འབད་མ་ཚུགས་པར་ཡོདཔ་ཨིན།"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་མཐུད་མ་ཚུགས་པར་ཡོདཔ་ཨིན་  མཐུད་ལམ་ངལ་མཚམས།"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "བྱ་ཡུལ་གྱི་སོ་ཀེཊི་མཐུད་མ་ཚུགས།"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo་འདི་གིས་ཉན་ནིའི་སོ་ཀེཊི་ཅིག་ལེན་མ་ཚུགས།"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "སོ་ཀེཊི་ཅིག་བསྡམས་མ་ཚུགས།"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "སོ་ཀེཊི་གུར་ཉེན་མ་ཚུགས།"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "སོ་ཀེཊི་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "འདྲེན་ལམ་གྱི་བརྡ་བཀོད་འདི་བཏང་མ་ཚུགས།"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "མ་ཤེས་པའི་ཁ་བྱང་གི་རིགས་ཚན་%u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "ཨི་པི་ཨར་ཊི་ འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་གིས་སླབ་མས:%s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་ མཐུད་ནི་ངལ་མཚམས་བྱུང་ནུག"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "མཐུད་ལམ་འདི་དང་ལེན་འབད་མ་ཚུགས།"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "ཡིག་སྣོད་ལེན་མ་ཚུགས་ སར་བར་'%s'གིས་སླབ་མས"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་ངལ་མཚམས།"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "གནད་སྡུད་གནས་སོར་དེ་འཐུས་ཤོར་བྱུང་ཡོད་  སར་བར་'%s'་གིས་སླབ་མས།"
+
+#~ msgid "Query"
+#~ msgstr "འདྲི་དཔྱད།"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "ལས་བཀོལ་འབད་མ་ཚུགས།"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "དུས་སུ་མ་འབབ་པ་རང་མཐུད་ལམ་འདི་ག་བསྡམས་ཡོད།"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "འོག་གི་འཆང་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ་བསྒྱུར་བཅོས་འབད་འོང་:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "ཨིན་ ང་གིས་སླབ་དོ་བཟུམ་སྦེ་རང་འབད!"
 
@@ -3997,8 +4207,8 @@ msgstr ""
 #~ "  -q   འདི་གིས་ ཡར་འཕེལ་བརྡ་སྟོན་པ་འདི་ལྕོགས་མིན་བཟོཝ་ཨིན།.\n"
 #~ "  -i  འདི་གིས་ མ་ཚང་པའི་བརྡ་བཀོད་ཚུ་གི་དོན་ལུ་ གལ་ཅན་གྱི་ཌེཔསི་རྐྱངམ་ཅིག་སྟོན།.\n"
 #~ "  -c=? འདི་གིས་ འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིན།.\n"
-#~ "  -o=? འདི་གིས་ མཐུན་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་ཁ་འདི་གཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་ eg -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? འདི་གིས་ མཐུན་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་ཁ་འདི་གཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་ eg -o "
+#~ "dir::cache=/tmp\n"
 #~ " ཧེང་བཀལ་བརྡ་དོན་གི་དོན་ལུ་ ཨེ་apt-cache(8)དང་apt.conf(5)ལག་ཐོག་ཤོག་ལེབ་ཚུ་བལྟ།.\n"
 
 #~ msgid ""
@@ -4027,16 +4237,16 @@ msgstr ""
 #~ msgstr ""
 #~ "ལག་ལེན: apt-sortpkgs [options] file1 [file2 ...]\n"
 #~ "\n"
-#~ "apt-sortpkgs་ འདི་ཐུམ་སྒྲིལ་གི་ཡིག་སྣོད་ཚུ་དབྱེ་སེལ་འབད་ནི་ལུ་  འཇམ་སམ་གྱི་ལག་ཆས་ཅིག་ཨིན། -"
-#~ "s  གདམ་ཁ་འདི་ ཡིག་སྣོད་ཀྱི་དབྱེ་ཁག་ག་ཅི་བཟུམ་ཅིག་ཨིན་ན\n"
+#~ "apt-sortpkgs་ འདི་ཐུམ་སྒྲིལ་གི་ཡིག་སྣོད་ཚུ་དབྱེ་སེལ་འབད་ནི་ལུ་  འཇམ་སམ་གྱི་ལག་ཆས་ཅིག་ཨིན། "
+#~ "-s  གདམ་ཁ་འདི་ ཡིག་སྣོད་ཀྱི་དབྱེ་ཁག་ག་ཅི་བཟུམ་ཅིག་ཨིན་ན\n"
 #~ "་བརྡ་སྟོན་འབད་ནིའི་དོན་ལུ་ལག་ལེན་འཐབ་སྟེ་ཡོདཔ་ཨིན།\n"
 #~ "\n"
 #~ "གདམ་ཁ་ཚུ:\n"
 #~ "  -h   འ་ནི་འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདཝ་ཨིན།\n"
 #~ "  -s  འདི་གིས་འབྱུང་ཁུངས་ ཡིག་སྣོད་གསོག་འཇོག་འབད་དོན་ལུ་ལག་ལེན་འཐབ་ཨིན།\n"
 #~ "  -c=? འདི་གིས་འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིན།\n"
-#~ "  -o=? འདི་གིས་ མཐུན་སྒྲིག་ རིམ་སྒྲིག་གི་གདམ་ཁ་ཚུ་ཁཞི་སྒྲིག་འབདཝ་ཨིན་   དཔེར་ན་-o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? འདི་གིས་ མཐུན་སྒྲིག་ རིམ་སྒྲིག་གི་གདམ་ཁ་ཚུ་ཁཞི་སྒྲིག་འབདཝ་ཨིན་   དཔེར་ན་-o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid "Child process failed"
 #~ msgstr "ཆ་ལག་ལས་སྦྱོར་དེ་འཐུས་ཤོར་བྱུང་ནུག"
diff --git a/po/el.po b/po/el.po
index 164f5df..2a549e0 100644
--- a/po/el.po
+++ b/po/el.po
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2020-12-30 12:20+0200\n"
 "Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>\n"
 "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"
@@ -67,8 +67,8 @@ msgstr "Το αποθετήριο '%s' δεν έχει πια ένα αρχεί
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -195,8 +195,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -207,7 +206,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -226,6 +225,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Αποτυχία ανάκτησης του %s   %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -246,13 +252,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Το changelog δεν είναι διαθέσιμο για %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -650,6 +649,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Συντακτικό σφάλμα %s:%u: Άχρηστοι χαρακτήρες στο τέλος του αρχείου"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -760,11 +783,11 @@ msgstr "Η υποδιεργασία %s επέστρεψε ένα κωδικός
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Η υποδιεργασία %s εγκατέλειψε απρόσμενα"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Σφάλμα ανάγνωσης"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Σφάλμα εγγραφής"
 
@@ -1067,6 +1090,12 @@ msgstr "Αδύνατο το κλείδωμα του διαχειριστικού
 msgid "Not locked"
 msgstr "Μη κλειδωμένο"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1247,6 +1276,16 @@ msgstr "Προετοιμασία για λήψη λύσης"
 msgid "External solver failed without a proper error message"
 msgstr "Ο εξωτερικός solver απέτυχε χωρίς κανονικό μήνυμα σφάλματος"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Υπολογισμός της αναβάθμισης"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Σύνολο Εξαρτήσεων: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Εκτέλεση εξωτερικού solver"
@@ -1548,10 +1587,6 @@ msgstr ""
 "Μερικά αρχεία index απέτυχαν να ληφθούν. Είτε αγνοήθηκαν ή χρησιμοποιήθηκαν "
 "παλαιότερα στη θέση τους."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Υπολογισμός της αναβάθμισης"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1825,6 +1860,19 @@ msgstr "Οι ακόλουθες πληροφορίες ίσως βοηθήσου
 msgid "Broken packages"
 msgstr "Χαλασμένα πακέτα"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "Επιλέχθηκαν %s για αφαίρεση.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1869,8 +1917,14 @@ msgstr "Εσωτερικό Σφάλμα, η Ταξινόμηση δεν ολοκ
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Πολύ περίεργο! Τα μεγέθη δεν ταιριάζουν, στείλτε μήνυμα στο apt@packages."
-"debian.org"
+"Πολύ περίεργο! Τα μεγέθη δεν ταιριάζουν, στείλτε μήνυμα στο "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Η λήψη απέτυχε"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1879,6 +1933,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Χρειάζεται να μεταφορτωθούν %sB/%sB από αρχεία.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB\n"
+msgstr "Η λήψη απέτυχε"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1886,14 +1946,56 @@ msgstr "Χρειάζεται να μεταφορτωθούν %sB/%sB από αρ
 msgid "Need to get %sB of archives.\n"
 msgstr "Χρειάζεται να μεταφορτωθούν %sB από αρχεία.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Μετά από αυτή τη λειτουργία, θα χρησιμοποιηθούν %sB χώρου από το δίσκο.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Αποθήκευση Ετικέτας: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1912,6 +2014,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Θέλετε να συνεχίσετε;"
@@ -1972,6 +2082,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Εσωτερικό Σφάλμα, το AutoRemover δημιούργησε κάποιο πρόβλημα"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Χρησιμοποιήστε '%s' για να το διαγράψετε."
+msgstr[1] "Χρησιμοποιήστε '%s' για να τα διαγράψετε."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1990,17 +2107,6 @@ msgid_plural ""
 msgstr[0] "%lu πακέτο εγκαταστάθηκε αυτόματα και δεν χρειάζεται πλέον.\n"
 msgstr[1] "%lu πακέτα εγκαταστάθηκαν αυτόματα και δεν χρειάζονται πλέον.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Χρησιμοποιήστε '%s' για να το διαγράψετε."
-msgstr[1] "Χρησιμοποιήστε '%s' για να τα διαγράψετε."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθούν:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Προτεινόμενα πακέτα:"
@@ -2009,6 +2115,10 @@ msgstr "Προτεινόμενα πακέτα:"
 msgid "Recommended packages:"
 msgstr "Συνιστώμενα πακέτα:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθούν:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2139,14 +2249,52 @@ msgstr " η"
 msgid "The following packages have unmet dependencies:"
 msgstr "Τα ακόλουθα πακέτα έχουν ανεπίλυτες εξαρτήσεις:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "satisfy dependency strings"
+msgid "Unsatisfied dependencies:"
+msgstr "εκπλήρωση των συμβολοσειρών εξαρτήσεων"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Τα ακόλουθα ΝΕΑ πακέτα θα εγκατασταθούν:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Εγκατάσταση του %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Σύνολο Εξαρτήσεων: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Τα ακόλουθα πακέτα θα ΑΦΑΙΡΕΘΟΥΝ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:"
@@ -2155,10 +2303,24 @@ msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:"
 msgid "The following packages will be upgraded:"
 msgstr "Τα ακόλουθα πακέτα θα αναβαθμιστούν:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Τα ακόλουθα πακέτα θα ΥΠΟΒΑΘΜΙΣΤΟΥΝ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Καθηλωμένα Πακέτα:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Τα ακόλουθα κρατημένα πακέτα θα αλλαχθούν:"
@@ -2176,26 +2338,52 @@ msgstr ""
 "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα απαραίτητα πακέτα θα αφαιρεθούν\n"
 "Αυτό ΔΕΝ θα έπρεπε να συμβεί, εκτός αν ξέρετε τι ακριβώς κάνετε!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu αναβαθμίστηκαν, %lu νέο εγκατεστημένα, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Εγκατάσταση του %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu επανεγκατεστημένα, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Εγκατάσταση του %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu υποβαθμισμένα, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu θα αφαιρεθούν και %lu δεν αναβαθμίζονται.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2223,7 +2411,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "Ο"
 
@@ -2399,8 +2587,8 @@ msgstr "το %s δεν έχει εξαρτήσεις χτισίματος.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2438,6 +2626,11 @@ msgstr "Αποτυχία ανάλυσης του %s. Επεξεργασία ξα
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Το αρχείο '%s' άλλαξε, παρακαλώ τρέξτε το 'apt-get update'.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2455,6 +2648,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2504,6 +2728,12 @@ msgstr " Μικτά Εικονικά Πακέτα: "
 msgid "  Missing: "
 msgstr " Αγνοούμενα: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Σύνολο Διαφορετικών Εκδόσεων: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Σύνολο Διαφορετικών Εκδόσεων: "
@@ -2826,6 +3056,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Πρόβλημα κατά το hashing του αρχείου"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3050,6 +3286,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "επεξεργασία του αρχείου με τις πληροφορίες πηγής"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "εκπλήρωση των συμβολοσειρών εξαρτήσεων"
@@ -3255,7 +3495,7 @@ msgstr "Άγνωστος Αλγόριθμος Συμπίεσης '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Η συμπιεσμένη έξοδος του %s χρειάζεται καθορισμό συμπίεσης"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Αποτυχία κατά τη δημιουργία διασωλήνωσης IPC στην υποδιεργασία"
 
@@ -3374,23 +3614,23 @@ msgstr "Η αρχειοθήκη δεν περιέχει πεδίο πακέτω
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s δεν περιέχει εγγραφή παράκαμψης\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s δεν περιέχει εγγραφή παράκαμψης\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s συντηρητής είναι ο %s όχι ο %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s συντηρητής είναι ο %.*s όχι ο %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s δεν έχει εγγραφή πηγαίας παράκαμψης\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s δεν έχει εγγραφή πηγαίας παράκαμψης\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s δεν έχει ούτε εγγραφή δυαδικής παράκαμψης\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s δεν έχει ούτε εγγραφή δυαδικής παράκαμψης\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3428,7 +3668,7 @@ msgstr "Ελαττωματικά δεδομένα επικεφαλίδας"
 msgid "Connection failed"
 msgstr "Η σύνδεση απέτυχε"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3470,7 +3710,7 @@ msgstr "Αδυναμία απόσυναρμογής του CD-ROM στο %s, μ
 msgid "Disk not found."
 msgstr "Ο δίσκος δεν βρέθηκε."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Το αρχείο Δε Βρέθηκε"
 
@@ -3505,7 +3745,7 @@ msgstr "Αδύνατη η δημιουργία υποδοχής για το %s (
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Αδύνατη η αρχικοποίηση της σύνδεσης στο %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Απέτυχε"
 
@@ -3519,9 +3759,7 @@ msgstr "Αδύνατη η σύνδεση στο %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Αδύνατη η σύνδεση στο %s:%s (%s), λήξη χρόνου σύνδεσης"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Σύνδεση στο %s"
@@ -3559,144 +3797,15 @@ msgstr "Αποτυχία εύρεσης της κατάστασης"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Μη έγκυρο URI, τα τοπικά URI δεν πρέπει να αρχίζουν με //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Σύνδεση στο σύστημα"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Αδύνατος ο καθορισμός του ονόματος του ομότιμου (peer)"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Αδύνατος ο καθορισμός του τοπικού ονόματος"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Ο διακομιστής αρνήθηκε την σύνδεση με μήνυμα: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Η εντολή USER απέτυχε, ο διακομιστής απάντησε: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Η εντολή PASS απέτυχε, ο διακομιστής απάντησε: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Ο διαμεσολαβητής έχει οριστεί αλλά χωρίς σενάριο εισόδου, το Acquire::ftp::"
-"ProxyLogin είναι άδειο."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Η εντολή '%s' στο σενάριο εισόδου απέτυχε, ο διακομιστής απάντησε: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Η εντολή TYPE απέτυχε, ο διακομιστής απάντησε: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Λήξη χρόνου σύνδεσης"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Ο διακομιστής έκλεισε την σύνδεση"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Το μήνυμα απάντησης υπερχείλισε την ενδιάμεση μνήμη."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Αλλοίωση του πρωτοκόλλου"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Αδύνατη η δημιουργία μιας υποδοχής (socket)"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Αδύνατη η σύνδεση υποδοχής δεδομένων, λήξη χρόνου σύνδεσης"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Αδύνατη η σύνδεση σε παθητική υποδοχή (socket)."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "Το getaddrinfo ήταν αδύνατο να δεσμεύσει υποδοχή παρακολούθησης"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Αδύνατη η πρόσδεση στην υποδοχή (socket)"
 
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Αδύνατη η παρακολούθηση της υποδοχής (socket)"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Αδύνατος ο καθορισμός του ονόματος της υποδοχής (socket)"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Αδύνατη η αποστολή της εντολής PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Άγνωστη οικογένεια διευθύνσεων %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Το EPRT απέτυχε, ο διακομιστής απάντησε: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Λήξη χρόνου σύνδεσης στην υποδοχή δεδομένων"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Αδύνατη η αποδοχή συνδέσεων"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Πρόβλημα κατά το hashing του αρχείου"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Αδυναμία λήψης του αρχείου, ο διακομιστής απάντησε '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Λήξη χρόνου υποδοχής δεδομένων"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Αποτυχία κατά τη μεταφορά δεδομένων, ο διακομιστής απάντησε '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Επερώτηση"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Αδύνατη η επίκληση "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3717,26 +3826,24 @@ msgstr ""
 "αποτυπώματος?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Δεν μπόρεσε να εκτελεστεί το 'apt-key' για επιβεβαίωση της υπογραφής (είναι "
 "εγκατεστημένο το gnupg;)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Άγνωστο σφάλμα κατά την εκτέλεση του apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3772,18 +3879,135 @@ msgstr "Η επιλογή απέτυχε"
 msgid "Connection timed out"
 msgstr "Λήξη χρόνου σύνδεσης"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Πρόβλημα κατά το hashing του αρχείου"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Αποτυχία ορισμού του χρόνου τροποποίησης"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Η σύνδεση έκλεισε πρόωρα"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Σύνδεση στο σύστημα"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Αδύνατος ο καθορισμός του ονόματος του ομότιμου (peer)"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Αδύνατος ο καθορισμός του τοπικού ονόματος"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Ο διακομιστής αρνήθηκε την σύνδεση με μήνυμα: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Η εντολή USER απέτυχε, ο διακομιστής απάντησε: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Η εντολή PASS απέτυχε, ο διακομιστής απάντησε: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Ο διαμεσολαβητής έχει οριστεί αλλά χωρίς σενάριο εισόδου, το "
+#~ "Acquire::ftp::ProxyLogin είναι άδειο."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Η εντολή '%s' στο σενάριο εισόδου απέτυχε, ο διακομιστής απάντησε: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Η εντολή TYPE απέτυχε, ο διακομιστής απάντησε: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Λήξη χρόνου σύνδεσης"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Ο διακομιστής έκλεισε την σύνδεση"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Το μήνυμα απάντησης υπερχείλισε την ενδιάμεση μνήμη."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Αλλοίωση του πρωτοκόλλου"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Αδύνατη η δημιουργία μιας υποδοχής (socket)"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Αδύνατη η σύνδεση υποδοχής δεδομένων, λήξη χρόνου σύνδεσης"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Αδύνατη η σύνδεση σε παθητική υποδοχή (socket)."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "Το getaddrinfo ήταν αδύνατο να δεσμεύσει υποδοχή παρακολούθησης"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Αδύνατη η πρόσδεση στην υποδοχή (socket)"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Αδύνατη η παρακολούθηση της υποδοχής (socket)"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Αδύνατος ο καθορισμός του ονόματος της υποδοχής (socket)"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Αδύνατη η αποστολή της εντολής PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Άγνωστη οικογένεια διευθύνσεων %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Το EPRT απέτυχε, ο διακομιστής απάντησε: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Λήξη χρόνου σύνδεσης στην υποδοχή δεδομένων"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Αδύνατη η αποδοχή συνδέσεων"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Αδυναμία λήψης του αρχείου, ο διακομιστής απάντησε '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Λήξη χρόνου υποδοχής δεδομένων"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Αποτυχία κατά τη μεταφορά δεδομένων, ο διακομιστής απάντησε '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Επερώτηση"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Αδύνατη η επίκληση "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Η σύνδεση έκλεισε πρόωρα"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Εγκατεστημένα: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Τα ακόλουθα κρατημένα πακέτα θα αλλαχθούν:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ναι, κανε ότι λέω!"
 
@@ -4027,8 +4251,8 @@ msgstr ""
 #~ "  -V  Εμφάνισε λεπτομερείς αριθμούς εκδόσεων\n"
 #~ "  -c=? Διάβασε αυτό το αρχείο ρυθμίσεων\n"
 #~ "  -o=? Θέσε μια αυθαίρετη παράμετρο, πχ -o dir::cache=/tmp\n"
-#~ "Δείτε τις σελίδες εγχειριδίου apt-get(8), sources.list(5) και apt."
-#~ "conf(5)\n"
+#~ "Δείτε τις σελίδες εγχειριδίου apt-get(8), sources.list(5) και "
+#~ "apt.conf(5)\n"
 #~ "για περισσότερες πληροφορίες και επιλογές.\n"
 #~ "                       This APT has Super Cow Powers.\n"
 
diff --git a/po/es.po b/po/es.po
index 5899294..c7546e8 100644
--- a/po/es.po
+++ b/po/es.po
@@ -37,10 +37,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.8.10\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2016-01-26 01:51+0100\n"
-"Last-Translator: Manuel \"Venturi\" Porras Peralta <venturi@openmailbox."
-"org>\n"
+"Last-Translator: Manuel \"Venturi\" Porras Peralta "
+"<venturi@openmailbox.org>\n"
 "Language-Team: Español; Castellano <debian-l10n-spanish@lists.debian.org>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
@@ -114,11 +114,11 @@ msgstr "El repositorio «%s» no tiene un fichero de Publicación."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Normalmente no está permitido, pero se ha dado la opción «Acquire::"
-"AllowDowngradeToInsecureRepositories» para anularlo."
+"Normalmente no está permitido, pero se ha dado la opción "
+"«Acquire::AllowDowngradeToInsecureRepositories» para anularlo."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -272,8 +272,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribución conflictiva: %s (se esperaba %s, pero se obtuvo %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -284,7 +283,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -303,6 +302,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Fallo al obtener %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -325,13 +331,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "No está disponible el informe de cambios para %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -750,6 +749,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Error de sintaxis %s:%u: Basura extra al final del archivo"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -865,11 +888,11 @@ msgstr "El subproceso %s devolvió un código de error (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "El subproceso %s terminó de forma inesperada"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Error de lectura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Error de escritura"
 
@@ -1202,6 +1225,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "No bloqueado"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1394,6 +1423,16 @@ msgstr "Preparar para recibir una solución"
 msgid "External solver failed without a proper error message"
 msgstr "Falló solucionador externo sin un mensaje de error apropiado"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando la actualización"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependencias totales: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Ejecutar solucionador externo"
@@ -1492,8 +1531,8 @@ msgid ""
 msgstr ""
 "Esta ejecución de la instalación requiere eliminar temporalmente el paquete "
 "esencial %s debido a un bucle de Conflictos/Pre-Dependencias. Normalmente "
-"esto es malo, pero si quiere hacerlo de todas formas, active la opción |APT::"
-"Force-LoopBreak»."
+"esto es malo, pero si quiere hacerlo de todas formas, active la opción |"
+"APT::Force-LoopBreak»."
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
@@ -1707,10 +1746,6 @@ msgstr ""
 "No se han podido descargar algunos archivos de índice, se han omitido, o se "
 "han utilizado unos antiguos en su lugar."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando la actualización"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1891,8 +1926,8 @@ msgid ""
 "Security details are available in apt-secure(8).\n"
 msgstr ""
 "Las opciones y sintaxis de configuración se detallan en apt.conf(5).\n"
-"Puede encontrar información sobre cómo configurar las fuentes en sources."
-"list(5).\n"
+"Puede encontrar información sobre cómo configurar las fuentes en "
+"sources.list(5).\n"
 "Las elecciones de versión y de paquetes se pueden expresar por medio de "
 "apt_preferences(5).\n"
 "Los detalles de la seguridad están disponibles en apt-secure(8).\n"
@@ -1985,6 +2020,19 @@ msgstr "La siguiente información puede ayudar a resolver la situación:"
 msgid "Broken packages"
 msgstr "Paquetes rotos"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "Seleccionado %s para eliminar.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -2032,8 +2080,14 @@ msgstr "Error interno, no terminó la ordenación"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Qué extraño... Los tamaños no concuerdan, mande un correo a apt@packages."
-"debian.org"
+"Qué extraño... Los tamaños no concuerdan, mande un correo a "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Falló la descarga"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -2042,6 +2096,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Se necesita descargar %sB/%sB de archivos.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB\n"
+msgstr "Falló la descarga"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2049,14 +2109,56 @@ msgstr "Se necesita descargar %sB/%sB de archivos.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Se necesita descargar %sB de archivos.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Se utilizarán %sB de espacio de disco adicional después de esta operación.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Etiqueta guardada: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2074,6 +2176,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "¿Desea continuar?"
@@ -2137,6 +2247,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Error interno, «AutoRemover» rompió cosas"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Utilice «%s» para eliminarlo."
+msgstr[1] "Utilice «%s» para eliminarlos."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2159,17 +2276,6 @@ msgstr[0] "Se instaló  %lu paquete de forma automática y ya no es necesario.\n
 msgstr[1] ""
 "Se instalaron %lu paquetes de forma automática y ya no son necesarios.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Utilice «%s» para eliminarlo."
-msgstr[1] "Utilice «%s» para eliminarlos."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Se instalarán los siguientes paquetes adicionales:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paquetes sugeridos:"
@@ -2178,6 +2284,10 @@ msgstr "Paquetes sugeridos:"
 msgid "Recommended packages:"
 msgstr "Paquetes recomendados:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Se instalarán los siguientes paquetes adicionales:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2310,14 +2420,52 @@ msgstr " o"
 msgid "The following packages have unmet dependencies:"
 msgstr "Los siguientes paquetes tienen dependencias incumplidas:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "No se pudo satisfacer la dependencia %s para %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Se instalarán los siguientes paquetes NUEVOS:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Instalando %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Dependencias totales: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Los siguientes paquetes se ELIMINARÁN:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Los siguientes paquetes se han retenido:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Los siguientes paquetes se han retenido:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Los siguientes paquetes se han retenido:"
@@ -2326,10 +2474,24 @@ msgstr "Los siguientes paquetes se han retenido:"
 msgid "The following packages will be upgraded:"
 msgstr "Se actualizarán los siguientes paquetes:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Se DESACTUALIZARÁN los siguientes paquetes:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Paquetes con pin:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Se cambiarán los siguientes paquetes retenidos:"
@@ -2347,26 +2509,52 @@ msgstr ""
 "ATENCIÓN: Se van a eliminar los siguientes paquetes esenciales.\n"
 "¡NO debe hacerse a menos que sepa exactamente lo que está haciendo!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu actualizados, %lu nuevos se instalarán, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstalados, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu desactualizados, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu para eliminar y %lu no actualizados.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2394,7 +2582,7 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2576,11 +2764,11 @@ msgstr "%s no tiene dependencias de construcción.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"No hay información disponible de arquitectura para %s. Vea apt.conf(5) APT::"
-"Arquitecturas para la configuración"
+"No hay información disponible de arquitectura para %s. Vea apt.conf(5) "
+"APT::Arquitecturas para la configuración"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2621,6 +2809,11 @@ msgstr "Fallo al analizar %s. ¿Editar de nuevo?"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "El fichero «%s» cambió, ejecute «apt-get update».\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2638,6 +2831,43 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Vea la página de manual apt-secure(8) para los detalles sobre la creación de "
+"repositorios y la configuración de usuarios."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2686,6 +2916,12 @@ msgstr "  Paquetes virtuales mixtos: "
 msgid "  Missing: "
 msgstr "  Faltan: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Versiones diferentes totales: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Versiones diferentes totales: "
@@ -3044,6 +3280,12 @@ msgstr "buscar un registro SRV (por ejemplo, _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "concatenar ficheros, con descompresión automática"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid " files "
+msgid "hash file"
+msgstr " archivos "
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "detecta el proxy usando apt.conf"
@@ -3294,6 +3536,10 @@ msgstr "actualiza el sistema eliminando/instalando/actualizando paquetes"
 msgid "edit the source information file"
 msgstr "edita el fichero de información de fuentes"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3504,7 +3750,7 @@ msgstr "Algoritmo desconocido de compresión «%s»"
 msgid "Compressed output %s needs a compression set"
 msgstr "Salida comprimida %s necesita una herramienta de compresión"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Fallo al crear una tubería IPC para el subproceso"
 
@@ -3623,23 +3869,23 @@ msgstr "Archivo no tiene campo de paquetes"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr " %s no tiene entrada de predominio\n"
+msgid "  %.*s has no override entry\n"
+msgstr " %.*s no tiene entrada de predominio\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr " el encargado de %s es %s y no %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr " el encargado de %.*s es %.*s y no %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr " %s no tiene una entrada fuente predominante\n"
+msgid "  %.*s has no source override entry\n"
+msgstr " %.*s no tiene una entrada fuente predominante\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr " %s tampoco tiene una entrada binaria predominante\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr " %.*s tampoco tiene una entrada binaria predominante\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3677,7 +3923,7 @@ msgstr "Datos de cabecera incorrectos"
 msgid "Connection failed"
 msgstr "Falló la conexión"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3721,7 +3967,7 @@ msgstr "No se puede desmontar el CD-ROM de %s, tal vez aún se está utilizando.
 msgid "Disk not found."
 msgstr "Disco no encontrado."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fichero no encontrado"
 
@@ -3757,7 +4003,7 @@ msgstr "No se pudo crear un socket para %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "No se puede iniciar la conexión a %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Falló"
 
@@ -3771,9 +4017,7 @@ msgstr "No se pudo conectar a %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "No se pudo conectar a %s:%s (%s), caducó el tiempo para conexión"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Conectando a %s"
@@ -3811,144 +4055,15 @@ msgstr "Fallo al leer"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI inválido, los URIS locales no deben empezar por //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Ingresando"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "No se pudo determinar el nombre del par"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "No se pudo determinar el nombre local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "El servidor rechazó la conexión y devolvió: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Usuario (USER) falló, el servidor devolvió: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Clave (PASS) falló, el servidor devolvió: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Se especificó un servidor proxy pero no un script de entrada, «Acquire::ftp::"
-"ProxyLogin» está vacío."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Falló la orden «%s» del script de entrada, el servidor devolvió: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Tipo (TYPE) falló, el servidor devolvió: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Caducó la conexión"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "El servidor cerró la conexión"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "La respuesta desbordó la memoria intermedia (buffer)."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Fallo del protocolo"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "No se pudo crear el socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "No se pudo conectar el socket de datos, caducó el tiempo de conexión"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "No se pudo conectar el socket pasivo."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "«getaddrinfo» no pudo obtener un socket pasivo"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "No se pudo asociar el socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "No se pudo escuchar en el socket"
 
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "No se pudo determinar el nombre del socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "No se pudo mandar la orden PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Familia de direcciones %u desconocida (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT falló, el servidor devolvió: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Caducó conexión al socket de datos"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "No se pudo aceptar la conexión"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problema al cifrar el fichero"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "No se pudo obtener el fichero, el servidor devolvió «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Caducó el socket de datos"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Falló transferencia de datos, el servidor devolvió «%s»"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Consulta"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "No se pudo invocar "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3971,26 +4086,24 @@ msgstr ""
 "digital?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "No se pudo ejecutar «apt-key»  para verificar la firma (¿está instalado "
 "gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Error desconocido ejecutando «apt-key»"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -4025,18 +4138,135 @@ msgstr "Falló la selección"
 msgid "Connection timed out"
 msgstr "Caducó la conexión"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problema al cifrar el fichero"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Fallo al establecer el tiempo de modificación"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "La conexión se cerró prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Los ficheros vacíos no pueden ser archivos válidos"
 
+#~ msgid "Logging in"
+#~ msgstr "Ingresando"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "No se pudo determinar el nombre del par"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "No se pudo determinar el nombre local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "El servidor rechazó la conexión y devolvió: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Usuario (USER) falló, el servidor devolvió: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Clave (PASS) falló, el servidor devolvió: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Se especificó un servidor proxy pero no un script de entrada, "
+#~ "«Acquire::ftp::ProxyLogin» está vacío."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Falló la orden «%s» del script de entrada, el servidor devolvió: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Tipo (TYPE) falló, el servidor devolvió: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Caducó la conexión"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "El servidor cerró la conexión"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "La respuesta desbordó la memoria intermedia (buffer)."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Fallo del protocolo"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "No se pudo crear el socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "No se pudo conectar el socket de datos, caducó el tiempo de conexión"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "No se pudo conectar el socket pasivo."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "«getaddrinfo» no pudo obtener un socket pasivo"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "No se pudo asociar el socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "No se pudo escuchar en el socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "No se pudo determinar el nombre del socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "No se pudo mandar la orden PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Familia de direcciones %u desconocida (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT falló, el servidor devolvió: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Caducó conexión al socket de datos"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "No se pudo aceptar la conexión"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "No se pudo obtener el fichero, el servidor devolvió «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Caducó el socket de datos"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Falló transferencia de datos, el servidor devolvió «%s»"
+
+#~ msgid "Query"
+#~ msgstr "Consulta"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "No se pudo invocar "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "La conexión se cerró prematuramente"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Instalados: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Se cambiarán los siguientes paquetes retenidos:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sí, ¡haga lo que le digo!"
 
@@ -4154,8 +4384,8 @@ msgstr "Los ficheros vacíos no pueden ser archivos válidos"
 #~ "Unable to find expected entry '%s' in Release file (Wrong sources.list "
 #~ "entry or malformed file)"
 #~ msgstr ""
-#~ "No se pudo encontrar la entrada esperada «%s» en el archivo "
-#~ "«Release» (entrada incorrecta en «sources.list» o fichero mal formado)"
+#~ "No se pudo encontrar la entrada esperada «%s» en el archivo «Release» "
+#~ "(entrada incorrecta en «sources.list» o fichero mal formado)"
 
 #~ msgid "Unmet dependencies. Try using --fix-broken."
 #~ msgstr "Dependencias incumplidas. Pruebe de nuevo utilizando --fix-broken."
@@ -4255,8 +4485,8 @@ msgstr "Los ficheros vacíos no pueden ser archivos válidos"
 #~ "  -q   Desactiva el indicador de progreso.\n"
 #~ "  -i   Muestra solo dependencias importantes para la orden incumplida.\n"
 #~ "  -c=? Lee este archivo de configuración\n"
-#~ "  -o=? Establece una opción de configuración arbitraria, p.ej. -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Establece una opción de configuración arbitraria, p.ej. -o "
+#~ "dir::cache=/tmp\n"
 #~ "Vea las páginas del manual apt-cache(8) y apt.conf(5) para más "
 #~ "información.\n"
 
@@ -4968,9 +5198,6 @@ msgstr "Los ficheros vacíos no pueden ser archivos válidos"
 #~ msgid "B "
 #~ msgstr "B "
 
-#~ msgid " files "
-#~ msgstr " archivos "
-
 #~ msgid " pkgs in "
 #~ msgstr " paquetes en "
 
diff --git a/po/eu.po b/po/eu.po
index 8429413..eeb83e4 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2009-05-17 00:41+0200\n"
 "Last-Translator: Piarres Beobide <pi@beobide.net>\n"
 "Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
@@ -52,8 +52,8 @@ msgstr "%s direktorioa desbideratuta dago"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -182,8 +182,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -194,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -213,6 +212,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Ezin da lortu %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -233,13 +239,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Konektatzen -> %s.(%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -625,6 +624,30 @@ msgstr "Sintaxi errorea, %s:%u: Direktibak goi-mailan bakarrik egin daitezke"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Sintaxi errorea, %s:%u: Zabor gehigarria fitxategi amaieran"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -737,11 +760,11 @@ msgstr "%s azpiprozesuak errore kode bat itzuli du (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "%s azpiprozesua ustekabean amaitu da"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Irakurketa errorea"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Idazketa errorea"
 
@@ -1050,6 +1073,12 @@ msgstr "Ezin da zerrenda direktorioa blokeatu"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1230,6 +1259,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Berriketak kalkulatzen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependentziak Guztira: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1530,10 +1569,6 @@ msgstr ""
 "Indize fitxategi batzuk ezin izan dira deskargatu; ez ikusi egin zaie, edo "
 "zaharrak erabili dira haien ordez."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Berriketak kalkulatzen"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1801,6 +1836,18 @@ msgstr "Informazio honek arazoa konpontzen lagun dezake:"
 msgid "Broken packages"
 msgstr "Hautsitako paketeak"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1845,6 +1892,12 @@ msgstr ""
 "Hau bitxia... Tamainak ez dira berdina, idatzi apt@packages.debian.org-ra "
 "berri emanez (ingelesez)"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Instalatuta: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1852,6 +1905,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Artxiboetako %sB/%sB eskuratu behar dira.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1859,13 +1917,55 @@ msgstr "Artxiboetako %sB/%sB eskuratu behar dira.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Artxiboetako %sB eskuratu behar dira.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Ekintza honen ondoren, %sB gehiago erabiliko dira diskoan.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Gordetako Etiketa: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1883,6 +1983,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Aurrera jarraitu nahi al duzu?"
@@ -1941,6 +2049,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Barne Errorea, AutoRemover-ek zerbait apurtu du"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "'%s' erabili ezabatzeko."
+msgstr[1] "'%s' erabili ezabatzeko."
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1967,18 +2082,6 @@ msgstr[1] ""
 "Ondorengo pakete automatikoki instalatuak izan ziren eta ez dira luzaroago "
 "behar."
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "'%s' erabili ezabatzeko."
-msgstr[1] "'%s' erabili ezabatzeko."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Ondorengo pakete gehigarriak instalatuko dira:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Iradokitako paketeak:"
@@ -1987,6 +2090,11 @@ msgstr "Iradokitako paketeak:"
 msgid "Recommended packages:"
 msgstr "Gomendatutako paketeak:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ondorengo pakete gehigarriak instalatuko dira:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2116,14 +2224,52 @@ msgstr " edo"
 msgid "The following packages have unmet dependencies:"
 msgstr "Ondorengo paketeetan bete gabeko mendekotasunak daude:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Huts egin du %2$s(r)en %1$s mendekotasuna betetzean: %3$s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Ondorengo pakete BERRIAK instalatuko dira:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s Instalatzen"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Dependentziak Guztira: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Ondorengo paketeak KENDUKO dira:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Ondorengo paketeak mantendu egin dira:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Ondorengo paketeak mantendu egin dira:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Ondorengo paketeak mantendu egin dira:"
@@ -2132,10 +2278,24 @@ msgstr "Ondorengo paketeak mantendu egin dira:"
 msgid "The following packages will be upgraded:"
 msgstr "Ondorengo paketeak bertsio-berrituko dira:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Ondorengo paketeak AURREKO BERTSIORA itzuliko dira:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Pin duten Paketeak:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Ondorengo pakete atxikiak aldatu egingo dira:"
@@ -2153,26 +2313,52 @@ msgstr ""
 "KONTUZ: Ondorengo funtsezko paketeak kendu egingo dira\n"
 "EZ ezazu horrelakorik egin, ez badakizu ondo zertan ari zaren!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu bertsio berritua(k), %lu berriki instalatuta, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s Instalatzen"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu berrinstalatuta, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s Instalatzen"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu aurreko bertsiora itzulita, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu kentzeko, eta %lu bertsio-berritu gabe.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2200,7 +2386,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2377,8 +2563,8 @@ msgstr "%s: ez du eraikitze mendekotasunik.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2416,6 +2602,11 @@ msgstr "Huts egin du %s izenaren ordez %s ipintzean"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2433,6 +2624,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2479,6 +2701,12 @@ msgstr "  Nahastutako pakete birtualak: "
 msgid "  Missing: "
 msgstr "  Falta direnak: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Bertsio Ezberdinak Guztira: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Bertsio Ezberdinak Guztira: "
@@ -2809,6 +3037,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Arazoa fitxategiaren hash egitean"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3056,6 +3290,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Egoera argibideak irakurtzen"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3261,7 +3499,7 @@ msgstr "'%s' Konpresio Algoritmo Ezezaguna"
 msgid "Compressed output %s needs a compression set"
 msgstr "%s irteera konprimituak konpresio-tresna bat behar du"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Huts egin du azpiprozesuarentzako IPC kanalizazio bat sortzean"
 
@@ -3380,23 +3618,23 @@ msgstr "Artxiboak ez du pakete eremurik"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s: ez du override sarrerarik\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s: ez du override sarrerarik\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s mantentzailea %s da, eta ez %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s mantentzailea %.*s da, eta ez %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s: ez du jatorri gainidazketa sarrerarik\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s: ez du jatorri gainidazketa sarrerarik\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s: ez du bitar gainidazketa sarrerarik\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s: ez du bitar gainidazketa sarrerarik\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3434,7 +3672,7 @@ msgstr "Goiburu data gaizki dago"
 msgid "Connection failed"
 msgstr "Konexioak huts egin du"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3477,7 +3715,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Ez da diska aurkitu"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Ez da fitxategia aurkitu"
 
@@ -3513,7 +3751,7 @@ msgstr "Ezin izan da socket-ik sortu honentzat: %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Ezin izan da konexioa hasi -> %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Huts egin du"
 
@@ -3528,9 +3766,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 "Ezin izan da konektatu -> %s:%s (%s). Konexioak denbora muga gainditu du"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Konektatzen -> %s..."
@@ -3568,147 +3804,15 @@ msgstr "Huts egin du atzitzean"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI baliogabea. URI lokalek ezin dute // eduki hasieran"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Sartzen"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Ezin izan da peer edo parekoaren izena zehaztu"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Ezin izan da izen lokala zehaztu"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Zerbitzariak gure konexioa ukatu eta hau esan du: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USERek huts egin du, eta zerbitzariak hau esan du: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASSek huts egin du, eta zerbitzariak hau esan du: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Proxy zerbitzari bat zehaztu da, baina sarrerako script-ik ez. Acquire::ftp::"
-"ProxyLogin hutsik dago."
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Sarrerako script-eko '%s' komandoak huts egin du, eta zerbitzariak hau esan "
-"du: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPEk huts egin du, eta zerbitzariak hau esan du: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Konexioa denboraz kanpo"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Zerbitzariak konexioa itxi du"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Erantzun batek bufferrari gainez eragin dio."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokolo hondatzea"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Ezin izan da socket-a sortu"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Ezin izan da datu-socketa konektatu; konexioak denbora muga gainditu du"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Ezin izan da socket pasibora konektatu."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo-k ezin izan du socket entzule bat eskuratu"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Ezin izan da socket bat lotu"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Ezin izan da socket-ean entzun"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Ezin izan da socket-aren izena zehaztu"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Ezin da PORT komandoa bidali"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Helbide familia ezezagunaa: %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRTek huts egin du, eta zerbitzariak hau esan du: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Datu-socket konexioak denbora muga gainditu du"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Ezin da konexioa onartu"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Arazoa fitxategiaren hash egitean"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Ezin da fitxategia lortu; zerbitzariak hau esan du: '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Datu-socketak denbora muga gainditu du"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Datu transferentziak huts egin du, eta zerbitzariak hau esan du: '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Kontsulta"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Ezin da deitu "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3728,25 +3832,20 @@ msgstr "Barne errorea: Sinadura zuzena, baina ezin da egiaztapen marka zehaztu"
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Ezin da %s abiarazi sinadura egiaztatzeko (gnupg instalaturik al dago?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Errore ezezaguna apt-key exekutatzean"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3781,18 +3880,133 @@ msgstr "Hautapenak huts egin du"
 msgid "Connection timed out"
 msgstr "Konexioaren denbora muga gainditu da"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Arazoa fitxategiaren hash egitean"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Huts egin du aldaketa ordua ezartzean"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Konexioa behar baino lehenago itxi da"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Sartzen"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Ezin izan da peer edo parekoaren izena zehaztu"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Ezin izan da izen lokala zehaztu"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Zerbitzariak gure konexioa ukatu eta hau esan du: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USERek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASSek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Proxy zerbitzari bat zehaztu da, baina sarrerako script-ik ez. "
+#~ "Acquire::ftp::ProxyLogin hutsik dago."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Sarrerako script-eko '%s' komandoak huts egin du, eta zerbitzariak hau "
+#~ "esan du: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPEk huts egin du, eta zerbitzariak hau esan du: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Konexioa denboraz kanpo"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Zerbitzariak konexioa itxi du"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Erantzun batek bufferrari gainez eragin dio."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokolo hondatzea"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Ezin izan da socket-a sortu"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Ezin izan da datu-socketa konektatu; konexioak denbora muga gainditu du"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Ezin izan da socket pasibora konektatu."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo-k ezin izan du socket entzule bat eskuratu"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Ezin izan da socket bat lotu"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Ezin izan da socket-ean entzun"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Ezin izan da socket-aren izena zehaztu"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Ezin da PORT komandoa bidali"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Helbide familia ezezagunaa: %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRTek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Datu-socket konexioak denbora muga gainditu du"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Ezin da konexioa onartu"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Ezin da fitxategia lortu; zerbitzariak hau esan du: '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Datu-socketak denbora muga gainditu du"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr ""
+#~ "Datu transferentziak huts egin du, eta zerbitzariak hau esan du: '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Kontsulta"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Ezin da deitu "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Konexioa behar baino lehenago itxi da"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Ondorengo pakete atxikiak aldatu egingo dira:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Bai, egin esandakoa!"
 
diff --git a/po/fi.po b/po/fi.po
index b7522c8..d97a02c 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.26\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2008-12-11 14:52+0200\n"
 "Last-Translator: Tapio Lehtonen <tale@debian.org>\n"
 "Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
@@ -53,8 +53,8 @@ msgstr "Kansio %s on korvautunut"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -183,8 +183,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -195,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -214,6 +213,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Tiedoston %s nouto ei onnistunut  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -234,13 +240,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Avataan yhteys %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -625,6 +624,30 @@ msgstr "Syntaksivirhe %s: %u: Direktiivejä voi olla vain ylimmällä tasolla"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaksivirhe %s: %u: Ylimääräistä roskaa tiedoston lopussa"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -734,11 +757,11 @@ msgstr "Aliprosessi %s palautti virhekoodin (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Aliprosessi %s lopetti odottamatta"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Lukuvirhe"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Virhe kirjoitettaessa"
 
@@ -1045,6 +1068,12 @@ msgstr "Luettelokansiota ei voitu lukita"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1225,6 +1254,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Käsitellään päivitystä"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Riippuvuuksia yhteensä: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1526,10 +1565,6 @@ msgstr ""
 "Joidenkin hakemistotiedostojen nouto ei onnistunut, ne on ohitettu tai "
 "käytetty vanhoja. "
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Käsitellään päivitystä"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1796,6 +1831,18 @@ msgstr "Seuraavista tiedoista voi olla hyötyä selvitettäessä tilannetta:"
 msgid "Broken packages"
 msgstr "Rikkinäiset paketit"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1839,6 +1886,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "No jo on... Koot eivät täsmää, sähköpostita email apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Asennettu: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1846,6 +1899,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Noudettavaa arkistoa %st/%st.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1853,13 +1911,55 @@ msgstr "Noudettavaa arkistoa %st/%st.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Noudettavaa arkistoa %st.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Toiminnon jälkeen käytetään %s t lisää levytilaa.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Tallennettu nimio: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1878,6 +1978,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Haluatko jatkaa?"
@@ -1937,6 +2045,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Sisäinen virhe, AutoRemover rikkoi jotain"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Poista ne komennolla \"%s\"."
+msgstr[1] "Poista ne komennolla \"%s\"."
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1963,18 +2078,6 @@ msgstr[1] ""
 "Seuraavat paketit asennettiin automaattisesti, eivätkä ne ole enää "
 "vaadittuja:"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Poista ne komennolla \"%s\"."
-msgstr[1] "Poista ne komennolla \"%s\"."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Seuraavat ylimääräiset paketit on merkitty asennettaviksi:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Ehdotetut paketit:"
@@ -1983,6 +2086,11 @@ msgstr "Ehdotetut paketit:"
 msgid "Recommended packages:"
 msgstr "Suositellut paketit:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Seuraavat ylimääräiset paketit on merkitty asennettaviksi:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2112,14 +2220,52 @@ msgstr " tai"
 msgid "The following packages have unmet dependencies:"
 msgstr "Näillä paketeilla on tyydyttämättömiä riippuvuuksia:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Riippuvuutta %s paketille %s ei voi tyydyttää: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Seuraavat UUDET paketit asennetaan:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Asennetaan %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Riippuvuuksia yhteensä: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Seuraavat paketit POISTETAAN:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Nämä paketit on jätetty odottamaan:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Nämä paketit on jätetty odottamaan:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Nämä paketit on jätetty odottamaan:"
@@ -2128,10 +2274,24 @@ msgstr "Nämä paketit on jätetty odottamaan:"
 msgid "The following packages will be upgraded:"
 msgstr "Nämä paketit päivitetään:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Nämä paketit VARHENNETAAN:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Paketit joissa tunniste:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Seuraavat pysytetyt paketit muutetaan:"
@@ -2149,26 +2309,52 @@ msgstr ""
 "VAROITUS: Seuraavat välttämättömät paketit poistetaan.\n"
 "Näin EI PITÄISI tehdä jos ei aivan tarkkaan tiedä mitä tekee!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu päivitetty, %lu uutta asennusta, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Asennetaan %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu uudelleen asennettua, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Asennetaan %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu varhennettua, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu poistettavaa ja %lu päivittämätöntä.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2196,7 +2382,7 @@ msgid "Y"
 msgstr "K"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2370,8 +2556,8 @@ msgstr "Paketille %s ei ole määritetty paketointiriippuvuuksia.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2409,6 +2595,11 @@ msgstr "Nimen muuttaminen %s -> %s ei onnistunut"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2426,6 +2617,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2472,6 +2694,12 @@ msgstr "  Sekanäennäispaketteja: "
 msgid "  Missing: "
 msgstr "  Puuttuu: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Eri versioita yhteensä: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Eri versioita yhteensä: "
@@ -2801,6 +3029,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Pulmia tiedoston hajautuksessa"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3048,6 +3282,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Luetaan tilatiedot"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3258,7 +3496,7 @@ msgstr "Tuntematon pakkausalgoritmi \"%s\""
 msgid "Compressed output %s needs a compression set"
 msgstr "Pakattu tulostus %s tarvitsee pakkausjoukon"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "IPC-putken luominen aliprosessiin ei onnistunut"
 
@@ -3377,23 +3615,23 @@ msgstr "Arkistossa ei ollut pakettikenttää"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s:llä ei ole poikkeustietuetta\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s:llä ei ole poikkeustietuetta\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s ylläpitäjä on %s eikä %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s ylläpitäjä on %.*s eikä %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s:llä ei ole poikkeustietuetta\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s:llä ei ole poikkeustietuetta\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s:llä ei  ole binääristäkään poikkeustietuetta\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s:llä ei  ole binääristäkään poikkeustietuetta\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3431,7 +3669,7 @@ msgstr "Virheellinen otsikkotieto"
 msgid "Connection failed"
 msgstr "Yhteys ei toiminut"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3473,7 +3711,7 @@ msgstr "Rompun %s irrottaminen ei onnistu, se on ehkä käytössä."
 msgid "Disk not found."
 msgstr "Levyä ei löydy"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Tiedostoa ei löydy"
 
@@ -3509,7 +3747,7 @@ msgstr "Pistokeen luonti ei onnistu %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Yhteyden %s avaus ei onnistu: %s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Ei onnistunut"
 
@@ -3523,9 +3761,7 @@ msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s)"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s), yhteys aikakatkaistiin"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Avataan yhteys %s"
@@ -3563,144 +3799,15 @@ msgstr "Komento stat ei toiminut"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI on kelvoton, paikallinen URI ei saa alkaa //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Kirjaudutaan sisään"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Vastapään nimeä ei saa selville"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Paikallista nimeä ei saa selville"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Palvelin ei huolinut yhteyttä ilmoituksella: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER ei onnistunut, palvelimen ilmoitus: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS ei onnistunut, palvelimen ilmoitus: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Määritettiin välipalvelin mutta ei komentotiedostoa kirjautumiseen, Acquire::"
-"ftp::ProxyLogin on tyhjä."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Komentotiedoston rivi \"%s\" ei toiminut, palvelin ilmoitti: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE ei toiminut, palvelin ilmoitti: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Yhteys aikakatkaistiin"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Palvelin sulki yhteyden"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Vastaus aiheutti puskurin ylivuodon."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Yhteyskäytäntö on turmeltunut"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Pistoketta ei voitu luoda"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Pistoketta ei voitu kytkeä, yhteys aikakatkaistiin"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Passiivista pistoketta ei voitu kytkeä."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo ei saanut kuuntelupistoketta"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Pistoketta ei voitu nimetä"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Pistoketta ei voitu kuunnella"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Pistokkeen nimeä ei saatu selville"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Komennon PORT lähetys ei onnistu"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Tuntematon osoiteperhe %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT ei onnistunut, palvelin ilmoitti: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Pistokkeen kytkeminen aikakatkaistiin"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Yhteyttä ei voitu hyväksyä"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Pulmia tiedoston hajautuksessa"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Tiedostoa ei saatu noudettua, palvelin ilmoitti \"%s\""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Pistoke aikakatkaistiin"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Tiedonsiirto ei onnistunut, palvelin ilmoitti \"%s\""
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Kysely"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Käynnistys ei onnistu"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3721,25 +3828,20 @@ msgstr ""
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Ei käynnistynyt \"%s\" allekirjoitusta tarkistamaan (onko gnupg asennettu?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Tapahtui tuntematon virhe suoritettaessa apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3774,18 +3876,129 @@ msgstr "Select ei toiminut"
 msgid "Connection timed out"
 msgstr "Yhteys aikakatkaistiin"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Pulmia tiedoston hajautuksessa"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Tiedoston muutospäivämäärää ei saatu vaihdettua"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Yhteys katkesi ennenaikaisesti"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Kirjaudutaan sisään"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Vastapään nimeä ei saa selville"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Paikallista nimeä ei saa selville"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Palvelin ei huolinut yhteyttä ilmoituksella: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER ei onnistunut, palvelimen ilmoitus: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS ei onnistunut, palvelimen ilmoitus: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Määritettiin välipalvelin mutta ei komentotiedostoa kirjautumiseen, "
+#~ "Acquire::ftp::ProxyLogin on tyhjä."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Komentotiedoston rivi \"%s\" ei toiminut, palvelin ilmoitti: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE ei toiminut, palvelin ilmoitti: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Yhteys aikakatkaistiin"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Palvelin sulki yhteyden"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Vastaus aiheutti puskurin ylivuodon."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Yhteyskäytäntö on turmeltunut"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Pistoketta ei voitu luoda"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Pistoketta ei voitu kytkeä, yhteys aikakatkaistiin"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Passiivista pistoketta ei voitu kytkeä."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo ei saanut kuuntelupistoketta"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Pistoketta ei voitu nimetä"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Pistoketta ei voitu kuunnella"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Pistokkeen nimeä ei saatu selville"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Komennon PORT lähetys ei onnistu"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Tuntematon osoiteperhe %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT ei onnistunut, palvelin ilmoitti: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Pistokkeen kytkeminen aikakatkaistiin"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Yhteyttä ei voitu hyväksyä"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Tiedostoa ei saatu noudettua, palvelin ilmoitti \"%s\""
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Pistoke aikakatkaistiin"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Tiedonsiirto ei onnistunut, palvelin ilmoitti \"%s\""
+
+#~ msgid "Query"
+#~ msgstr "Kysely"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Käynnistys ei onnistu"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Yhteys katkesi ennenaikaisesti"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Seuraavat pysytetyt paketit muutetaan:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Kyllä, tee kuten käsketään!"
 
diff --git a/po/fr.po b/po/fr.po
index 2ff0d9c..996d756 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2019-01-21 09:19+0100\n"
 "Last-Translator: Julien Patriarca <leatherface@debian.org>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -60,11 +60,12 @@ msgstr "Le dépôt %s ne contient plus de fichier Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Ceci n'est généralement pas autorisé, mais l'option Acquire::"
-"AllowDowngradeToInsecureRepositories a été passée pour l'outrepasser."
+"Ceci n'est généralement pas autorisé, mais l'option "
+"Acquire::AllowDowngradeToInsecureRepositories a été passée pour "
+"l'outrepasser."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -209,8 +210,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribution en conflit : %s (%s attendu, mais %s obtenu)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Le dépôt « %s » a modifié sa valeur « %s » de « %s » à « %s »"
@@ -223,7 +223,7 @@ msgstr ""
 "« %hi »."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -245,6 +245,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Impossible de récupérer %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -267,13 +274,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Journal des modifications indisponible pour %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -696,6 +696,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Erreur syntaxique %s:%u : valeur aberrante à la fin du fichier"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -813,11 +837,11 @@ msgstr "Le sous-processus %s a renvoyé un code d'erreur (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Le sous-processus %s s'est arrêté prématurément"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Erreur de lecture"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Erreur d'écriture"
 
@@ -1150,6 +1174,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non verrouillé"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1339,6 +1369,16 @@ msgstr "Préparation à la réception de la solution"
 msgid "External solver failed without a proper error message"
 msgstr "Échec du solveur externe sans message d'erreur adapté"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcul de la mise à jour"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Nombre de dépendances : "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Exécution du solveur externe"
@@ -1663,10 +1703,6 @@ msgstr ""
 "Le téléchargement de quelques fichiers d'index a échoué, ils ont été "
 "ignorés, ou les anciens ont été utilisés à la place."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calcul de la mise à jour"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1854,8 +1890,8 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
-"Les options de configuration ainsi que la syntaxe sont détaillées dans apt."
-"conf(5).\n"
+"Les options de configuration ainsi que la syntaxe sont détaillées dans "
+"apt.conf(5).\n"
 "Des informations sur la configuration des sources sont disponibles dans "
 "sources.list(5).\n"
 "Les choix de paquet ainsi que la version peuvent être renseignés grâce à "
@@ -1953,6 +1989,19 @@ msgstr "L'information suivante devrait vous aider à résoudre la situation : "
 msgid "Broken packages"
 msgstr "Paquets défectueux"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "Sélection de %s pour suppression.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -2001,6 +2050,12 @@ msgstr ""
 "Étrangement, les tailles ne correspondent pas. Veuillez le signaler par "
 "courriel à apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Téléchargement de %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2008,6 +2063,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Il est nécessaire de prendre %so/%so dans les archives.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Téléchargement de %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2015,14 +2076,56 @@ msgstr "Il est nécessaire de prendre %so/%so dans les archives.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Il est nécessaire de prendre %so dans les archives.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Après cette opération, %so d'espace disque supplémentaires seront utilisés.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Étiquette stockée : %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2042,6 +2145,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Souhaitez-vous continuer ?"
@@ -2110,6 +2221,13 @@ msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 "Erreur interne, l'outil de suppression automatique a cassé quelque chose."
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Veuillez utiliser « %s » pour le supprimer."
+msgstr[1] "Veuillez utiliser « %s » pour les supprimer."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2132,17 +2250,6 @@ msgstr[0] ""
 msgstr[1] ""
 "%lu paquets ont été installés automatiquement et ne sont plus nécessaires.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Veuillez utiliser « %s » pour le supprimer."
-msgstr[1] "Veuillez utiliser « %s » pour les supprimer."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Les paquets supplémentaires suivants seront installés : "
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paquets suggérés :"
@@ -2151,6 +2258,10 @@ msgstr "Paquets suggérés :"
 msgid "Recommended packages:"
 msgstr "Paquets recommandés :"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Les paquets supplémentaires suivants seront installés : "
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2290,14 +2401,52 @@ msgstr " ou"
 msgid "The following packages have unmet dependencies:"
 msgstr "Les paquets suivants contiennent des dépendances non satisfaites :"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Impossible de satisfaire les dépendances %s pour %s : %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Les NOUVEAUX paquets suivants seront installés :"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Installation de %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Nombre de dépendances : "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Les paquets suivants seront ENLEVÉS :"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Les paquets suivants ont été conservés :"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Les paquets suivants ont été conservés :"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Les paquets suivants ont été conservés :"
@@ -2306,10 +2455,24 @@ msgstr "Les paquets suivants ont été conservés :"
 msgid "The following packages will be upgraded:"
 msgstr "Les paquets suivants seront mis à jour :"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Les paquets suivants seront mis à une VERSION INFÉRIEURE :"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Paquets épinglés :"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Les paquets retenus suivants seront changés :"
@@ -2328,26 +2491,53 @@ msgstr ""
 "Vous NE devez PAS faire ceci, à moins de savoir exactement ce\n"
 "que vous êtes en train de faire."
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu mis à jour, %lu nouvellement installés, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Installation de %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu réinstallés, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Installation de %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu remis à une version inférieure, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Téléchargement de %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu à enlever et %lu non mis à jour.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2375,7 +2565,7 @@ msgid "Y"
 msgstr "O"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2396,8 +2586,8 @@ msgstr[0] ""
 "Il y a %i enregistrement supplémentaire. Veuillez utiliser l'opérande « -a » "
 "pour le voir"
 msgstr[1] ""
-"Il y a %i enregistrements supplémentaires. Veuillez utiliser l'opérande « -a "
-"» pour les voir."
+"Il y a %i enregistrements supplémentaires. Veuillez utiliser l'opérande "
+"« -a » pour les voir."
 
 #: apt-private/private-show.cc
 msgid "not a real package (virtual)"
@@ -2561,8 +2751,8 @@ msgstr "%s n'a pas de dépendance de construction.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Aucune information sur l'architecture n'est disponible pour %s. Veuillez "
 "consulter la section à propos de APT::Architectures dans la page de manuel "
@@ -2608,6 +2798,11 @@ msgstr "Impossible de lire %s. Faut-il l'éditer à nouveau ?"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Votre fichier « %s » a changé, veuillez lancer « apt-get update ».\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2627,6 +2822,43 @@ msgstr ""
 "L'utilisation de %s devrait être préférée plutôt que d'embarquer les "
 "informations d'identification directement dans %s pour « %s »"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Voir les pages de manuel d'apt-secure(8) pour la création des dépôts et les "
+"détails de configuration d'un utilisateur."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2677,6 +2909,12 @@ msgstr "  Paquets virtuels mixtes : "
 msgid "  Missing: "
 msgstr "  Manquants : "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Nombre de versions distinctes : "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Nombre de versions distinctes : "
@@ -3045,13 +3283,19 @@ msgstr "Télécharger l'adresse uri donnée vers le chemin cible"
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
 msgstr ""
-"Cherche à résoudre l'enregistrement SRV (par exemple : _http._tcp.ftp.debian."
-"org)"
+"Cherche à résoudre l'enregistrement SRV (par exemple : "
+"_http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
 msgstr "Concaténer des fichiers, avec décompression automatique"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problème de hachage du fichier"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "Détecter la configuration proxy en utilisant apt.conf"
@@ -3305,6 +3549,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "édite le fichier d'information source"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3515,7 +3763,7 @@ msgstr "Algorithme de compression « %s » inconnu"
 msgid "Compressed output %s needs a compression set"
 msgstr "La sortie compressée %s a besoin d'un ensemble de compression"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Impossible de créer le tube IPC sur le sous-processus"
 
@@ -3634,23 +3882,23 @@ msgstr "L'archive ne possède pas de champ de paquet"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "%s ne possède pas d'entrée « override »\n"
+msgid "  %.*s has no override entry\n"
+msgstr "%.*s ne possède pas d'entrée « override »\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr " le responsable de %s est %s et non %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr " le responsable de %.*s est %.*s et non %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s ne possède pas d'entrée « source override »\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s ne possède pas d'entrée « source override »\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s ne possède pas également d'entrée « binary override »\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s ne possède pas également d'entrée « binary override »\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3688,7 +3936,7 @@ msgstr "Mauvais en-tête de donnée"
 msgid "Connection failed"
 msgstr "Échec de la connexion"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3736,7 +3984,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Disque non trouvé."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fichier non trouvé"
 
@@ -3771,7 +4019,7 @@ msgstr "Impossible de créer de connexion pour %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Impossible d'initialiser la connexion à %s: %s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Échec"
 
@@ -3785,9 +4033,7 @@ msgstr "Connexion à %s: %s (%s) impossible."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Connexion à %s: %s (%s) impossible, délai de connexion dépassé"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Connexion à %s"
@@ -3827,146 +4073,15 @@ msgstr "Impossible de statuer"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Liens invalides, les liens locaux ne doivent pas débuter par //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Connexion en cours"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Impossible de déterminer le nom de la machine distante"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Impossible de déterminer le nom local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Le serveur a refusé la connexion et a répondu : %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER incorrect, le serveur a répondu : %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS incorrect, le serveur a répondu : %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Un serveur proxy a été spécifié, mais aucun script de connexion, Acquire::"
-"ftp::ProxyLogin est vide."
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"La commande « %s » du script de connexion a échoué, le serveur a répondu : %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Échec de TYPE, le serveur a répondu : %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Dépassement du délai de connexion"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Le serveur a fermé la connexion"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Une réponse a fait déborder le tampon."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Corruption du protocole"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Impossible de créer un connecteur"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Impossible de se connecter sur le port de données, délai de connexion dépassé"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Impossible de se connecter au port en mode passif."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo n'a pu obtenir un port d'écoute"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Impossible de se connecter à un port"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Impossible d'écouter sur le port"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Impossible de déterminer le nom du port"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Impossible d'envoyer la commande PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Famille d'adresses %u inconnue (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT a échoué, le serveur a répondu : %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Délai de connexion au port de données dépassé"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Impossible d'accepter une connexion"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problème de hachage du fichier"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Impossible de récupérer le fichier, le serveur a répondu « %s »"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Pas de réponse du port de données dans les délais"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Le transfert de données a échoué, le serveur a répondu « %s »"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Requête"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Impossible d'invoquer "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3989,26 +4104,25 @@ msgstr ""
 "l'empreinte de la clé."
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Impossible d'exécuter « apt-key » pour contrôler la signature (veuillez "
 "vérifier si gnupg est installé)."
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Erreur inconnue à l'exécution de apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 "la signature par la clé %s utilise des algorithmes « digest » faibles (%s)"
 
@@ -4044,18 +4158,138 @@ msgstr "Sélection défaillante"
 msgid "Connection timed out"
 msgstr "Délai de connexion dépassé"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problème de hachage du fichier"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Impossible de modifier l'heure "
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Connexion fermée prématurément"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Les fichiers vides ne peuvent être des archives valables"
 
+#~ msgid "Logging in"
+#~ msgstr "Connexion en cours"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Impossible de déterminer le nom de la machine distante"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Impossible de déterminer le nom local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Le serveur a refusé la connexion et a répondu : %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER incorrect, le serveur a répondu : %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS incorrect, le serveur a répondu : %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Un serveur proxy a été spécifié, mais aucun script de connexion, "
+#~ "Acquire::ftp::ProxyLogin est vide."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "La commande « %s » du script de connexion a échoué, le serveur a "
+#~ "répondu : %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Échec de TYPE, le serveur a répondu : %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Dépassement du délai de connexion"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Le serveur a fermé la connexion"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Une réponse a fait déborder le tampon."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Corruption du protocole"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Impossible de créer un connecteur"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Impossible de se connecter sur le port de données, délai de connexion "
+#~ "dépassé"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Impossible de se connecter au port en mode passif."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo n'a pu obtenir un port d'écoute"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Impossible de se connecter à un port"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Impossible d'écouter sur le port"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Impossible de déterminer le nom du port"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Impossible d'envoyer la commande PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Famille d'adresses %u inconnue (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT a échoué, le serveur a répondu : %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Délai de connexion au port de données dépassé"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Impossible d'accepter une connexion"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Impossible de récupérer le fichier, le serveur a répondu « %s »"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Pas de réponse du port de données dans les délais"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Le transfert de données a échoué, le serveur a répondu « %s »"
+
+#~ msgid "Query"
+#~ msgstr "Requête"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Impossible d'invoquer "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Connexion fermée prématurément"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installé : "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Les paquets retenus suivants seront changés :"
+
 # The space before the exclamation mark must not be a non-breaking space; this
 # sentence is supposed to be typed by a user who cannot see the difference.
 #~ msgid "Yes, do as I say!"
@@ -4377,8 +4611,8 @@ msgstr "Les fichiers vides ne peuvent être des archives valables"
 #~ "  -h   Ce texte d'aide\n"
 #~ "  -s   Trie le fichier source\n"
 #~ "  -c=? Lit ce fichier de configuration\n"
-#~ "  -o=? Place une option de configuration arbitraire, p. ex. -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Place une option de configuration arbitraire, p. ex. -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid "Child process failed"
 #~ msgstr "Échec du processus fils"
@@ -4519,9 +4753,6 @@ msgstr "Les fichiers vides ne peuvent être des archives valables"
 #~ "La distribution cible « %s » indisponible pour le paquet « %s » est "
 #~ "ignorée"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Téléchargement de %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Ce n'est pas une archive DEB valide, elle n'a pas de membre « %s », "
@@ -4702,8 +4933,8 @@ msgstr "Les fichiers vides ne peuvent être des archives valables"
 #~ "E: liste de paramètres trop longue pour Acquire::gpgv::Options. Abandon."
 
 #~ msgid ""
-#~ "The size of a MMap has already reached the defined limit of %lu bytes,"
-#~ "abort the try to grow the MMap."
+#~ "The size of a MMap has already reached the defined limit of %lu "
+#~ "bytes,abort the try to grow the MMap."
 #~ msgstr ""
 #~ "La taille d'une « MMap » (carte en mémoire) a déjà atteint la limite "
 #~ "définie de %lu octets. Abandon de la tentative d'agrandir la « MMap »."
diff --git a/po/gl.po b/po/gl.po
index 0779e51..36e864c 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -15,7 +15,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2011-05-12 15:28+0100\n"
 "Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
 "Language-Team: galician <proxecto@trasno.net>\n"
@@ -57,8 +57,8 @@ msgstr "O directorio %s está desviado"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -190,8 +190,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Conflito na distribución: %s (agardábase %s mais obtívose %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -202,7 +201,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -221,6 +220,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Non foi posíbel obter %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -241,13 +247,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Rexistro de cambios de %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -652,6 +651,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Produciuse un erro de sintaxe %s:%u: Lixo extra á fin da liña"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -764,11 +787,11 @@ msgstr "O subproceso %s devolveu un código de erro (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "O subproceso %s saíu de xeito inesperado"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Produciuse un erro de lectura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Produciuse un erro de escritura"
 
@@ -1092,6 +1115,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non está bloqueado"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1285,6 +1314,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando a anovación"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Número total de dependencias: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1590,10 +1629,6 @@ msgstr ""
 "Algúns ficheiros de índice fallaron durante a descarga. Ignoráronse, ou "
 "foron utilizados algúns antigos no seu lugar"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando a anovación"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1861,6 +1896,18 @@ msgstr "A seguinte información pode axudar a solucionar a situación:"
 msgid "Broken packages"
 msgstr "Paquetes estragados"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1904,8 +1951,14 @@ msgstr "Produciuse un erro interno; non rematou a ordenación"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Que estraño... Os tamaños non coinciden; envíe un correo-e a apt@packages."
-"debian.org"
+"Que estraño... Os tamaños non coinciden; envíe un correo-e a "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Descargando %s %s"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1914,6 +1967,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Ten que recibir %sB/%sB de arquivos.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Descargando %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1921,13 +1980,55 @@ msgstr "Ten que recibir %sB/%sB de arquivos.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Ten que recibir %sB de arquivos.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Despois desta operación ocuparanse %sB de disco adicionais.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Etiqueta almacenada: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1945,6 +2046,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Quere continuar?"
@@ -2010,6 +2119,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Produciuse un erro interno, o Retirado automático estragou cousas"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Empregue «%s» para eliminalos."
+msgstr[1] "Empregue «%s» para eliminalos."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2031,18 +2147,6 @@ msgstr[0] "%lu paquete foi instalado automaticamente e xa non é necesario.\n"
 msgstr[1] ""
 "%lu paquetes foron instalados automaticamente e xa non son necesarios.\n"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Empregue «%s» para eliminalos."
-msgstr[1] "Empregue «%s» para eliminalos."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Instalaranse os seguintes paquetes extra:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paquetes suxeridos:"
@@ -2051,6 +2155,11 @@ msgstr "Paquetes suxeridos:"
 msgid "Recommended packages:"
 msgstr "Paquetes recomendados:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Instalaranse os seguintes paquetes extra:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2184,14 +2293,52 @@ msgstr " ou"
 msgid "The following packages have unmet dependencies:"
 msgstr "Os seguintes paquetes teñen dependencias sen cumprir:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Non foi posíbel satisfacer a dependencia «%s» de %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Os seguintes paquetes NOVOS hanse instalar:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Instalando %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Número total de dependencias: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Vanse RETIRAR os paquetes seguintes:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Consérvanse os seguintes paquetes:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Consérvanse os seguintes paquetes:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Consérvanse os seguintes paquetes:"
@@ -2200,10 +2347,24 @@ msgstr "Consérvanse os seguintes paquetes:"
 msgid "The following packages will be upgraded:"
 msgstr "Vanse anovar os paquetes seguintes:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Vanse REVERTER os seguintes paquetes :"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Paquetes inmobilizados:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Vanse modificar os paquetes retidos seguintes:"
@@ -2221,26 +2382,53 @@ msgstr ""
 "AVISO: Retiraranse os seguintes paquetes esenciais.\n"
 "Isto NON se debe facer a menos que saiba exactamente o que está a facer!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu anovados, %lu instalados, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstalados, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Instalando %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu revertidos, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Descargando %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "Vanse retirar %lu e deixar %lu sen anovar.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2268,7 +2456,7 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2449,8 +2637,8 @@ msgstr "%s non ten dependencias de compilación.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2489,6 +2677,11 @@ msgstr "Non foi posíbel cambiar o nome de %s a %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2506,6 +2699,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2551,6 +2775,12 @@ msgstr "  Paquetes virtuais mixtos: "
 msgid "  Missing: "
 msgstr "  Non atopados: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Número total de versións distintas: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Número total de versións distintas: "
@@ -2880,6 +3110,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Xurdiu un problema ao calcular o hash do ficheiro"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3129,6 +3365,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Lendo a información do estado"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3336,7 +3576,7 @@ msgstr "Algoritmo de compresión «%s» descoñecido"
 msgid "Compressed output %s needs a compression set"
 msgstr "A saída comprimida %s precisa dun conxunto de compresión"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Non foi posíbel crear a canle IPC ao subproceso"
 
@@ -3455,23 +3695,23 @@ msgstr "O arquivo non tiña un campo Package"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s non ten unha entrada de «override»\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s non ten unha entrada de «override»\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  O mantedor de %s é %s, non %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  O mantedor de %.*s é %.*s, non %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s non ten unha entrada de «override» de código fonte\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s non ten unha entrada de «override» de código fonte\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s tampouco ten unha entrada de «override» de binarios\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s tampouco ten unha entrada de «override» de binarios\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3510,7 +3750,7 @@ msgstr "Datos da cabeceira incorrectos"
 msgid "Connection failed"
 msgstr "Produciuse un fallo na conexión"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3552,7 +3792,7 @@ msgstr "Non é posíbel desmontar o CD-ROM de %s, pode estarse empregando aínda
 msgid "Disk not found."
 msgstr "Non se atopou o disco"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Non se atopou o ficheiro"
 
@@ -3588,7 +3828,7 @@ msgstr "Non foi posíbel crear un socket para %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Non é posíbel iniciar a conexión a %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Fallou"
 
@@ -3602,9 +3842,7 @@ msgstr "Non foi posíbel conectar a %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Non foi posíbel conectar a %s:%s (%s), a conexión esgotou o tempo"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Conectando a %s"
@@ -3642,145 +3880,15 @@ msgstr "Non foi posíbel determinar o estado"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI incorrecto, os URI locais non deben comezar por //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Identificándose"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Non é posíbel determinar o nome do outro extremo"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Non é posíbel determinar o nome local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "O servidor rexeitou a conexión e dixo: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Fallou a orde USER, o servidor dixo: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Fallou a orde PASS, o servidor dixo: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Especificouse un servidor proxy pero non un script de conexión, Acquire::"
-"ftp::ProxyLogin está baleiro."
 
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Fallou a orde do script de acceso «%s», o servidor dixo: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Fallou a orde TYPE, o servidor dixo: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Esgotouse o tempo para a conexión"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "O servidor pechou a conexión"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Unha resposta desbordou o búfer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Dano no protocolo"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Non é posíbel crear un socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Non é posíbel conectar o socket de datos, o tempo esgotouse para a conexión"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Non é posíbel conectar o socket pasivo."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo non puido obter un socket no que atender"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Non é posíbel ligar un socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Non é posíbel escoitar no socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Non é posíbel determinar o nome do socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Non é posíbel enviar a orde PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Familia de enderezos %u (AF_*) descoñecida"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Produciuse un fallou na orde EPRT, o servidor dixo: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "A conexión do socket de datos esgotou o tempo"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Non é posíbel aceptar a conexión"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Xurdiu un problema ao calcular o hash do ficheiro"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Non é posíbel obter o ficheiro, o servidor dixo «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "O socket de datos esgotou o tempo"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Produciuse un fallou na transferencia de datos, o servidor dixo «%s»"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Petición"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Non é posíbel chamar a "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3801,26 +3909,24 @@ msgstr ""
 "dixital da chave"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Non é posíbel executar «apt-key» para verificar a sinatura (Está instalado "
 "gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Produciuse un erro descoñecido ao executar apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3856,18 +3962,137 @@ msgstr "Fallou a chamada a select"
 msgid "Connection timed out"
 msgstr "A conexión esgotou o tempo"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Xurdiu un problema ao calcular o hash do ficheiro"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Non foi posíbel estabelecer a hora de modificación"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "A conexión pechouse prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Os ficheiros baleiros non poden ser arquivadores válidos"
 
+#~ msgid "Logging in"
+#~ msgstr "Identificándose"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Non é posíbel determinar o nome do outro extremo"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Non é posíbel determinar o nome local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "O servidor rexeitou a conexión e dixo: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Fallou a orde USER, o servidor dixo: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Fallou a orde PASS, o servidor dixo: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Especificouse un servidor proxy pero non un script de conexión, "
+#~ "Acquire::ftp::ProxyLogin está baleiro."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Fallou a orde do script de acceso «%s», o servidor dixo: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Fallou a orde TYPE, o servidor dixo: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Esgotouse o tempo para a conexión"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "O servidor pechou a conexión"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Unha resposta desbordou o búfer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Dano no protocolo"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Non é posíbel crear un socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Non é posíbel conectar o socket de datos, o tempo esgotouse para a "
+#~ "conexión"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Non é posíbel conectar o socket pasivo."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo non puido obter un socket no que atender"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Non é posíbel ligar un socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Non é posíbel escoitar no socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Non é posíbel determinar o nome do socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Non é posíbel enviar a orde PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Familia de enderezos %u (AF_*) descoñecida"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Produciuse un fallou na orde EPRT, o servidor dixo: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "A conexión do socket de datos esgotou o tempo"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Non é posíbel aceptar a conexión"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Non é posíbel obter o ficheiro, o servidor dixo «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "O socket de datos esgotou o tempo"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr ""
+#~ "Produciuse un fallou na transferencia de datos, o servidor dixo «%s»"
+
+#~ msgid "Query"
+#~ msgstr "Petición"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Non é posíbel chamar a "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "A conexión pechouse prematuramente"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Instalado: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Vanse modificar os paquetes retidos seguintes:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Si, fai o que digo!"
 
@@ -4101,8 +4326,8 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos"
 #~ "Opcións:\n"
 #~ "  -h   Este texto de axuda.\n"
 #~ "  -c=? Le este ficheiro de configuración\n"
-#~ "  -o=? Estabelece unha opción de configuración, por exemplo: -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Estabelece unha opción de configuración, por exemplo: -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid ""
 #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
@@ -4127,8 +4352,8 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos"
 #~ "  -h   Este texto de axuda\n"
 #~ "  -s   Emprega ordenamento por ficheiros fonte\n"
 #~ "  -c=? Le este ficheiro de configuración\n"
-#~ "  -o=? Estabelece unha opción de configuración; por exemplo, -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Estabelece unha opción de configuración; por exemplo, -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid "Child process failed"
 #~ msgstr "O proceso fillo fallou"
@@ -4250,9 +4475,6 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Ignorase a versión de destino «%s» non dispoñíbel do paquete «%s»"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Descargando %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Este non é un arquivo DEB correcto, non ten un membro «%s», «%s» ou «%s»"
diff --git a/po/he.po b/po/he.po
index 50581bc..27dbacf 100644
--- a/po/he.po
+++ b/po/he.po
@@ -433,22 +433,22 @@ msgstr ""
 
 #: ftparchive/writer.cc:396 ftparchive/writer.cc:627
 #, c-format
-msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc:457 ftparchive/writer.cc:715
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "המתחזק של %s הוא %s ולא %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "המתחזק של %.*s הוא %.*s ולא %s\n"
 
 #: ftparchive/writer.cc:637
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc:641
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: ftparchive/contents.cc:321
diff --git a/po/hu.po b/po/hu.po
index 1e4d085..d27682a 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2016-04-10 19:46+0200\n"
 "Last-Translator: Gabor Kelemen <kelemeng@ubuntu.com>\n"
 "Language-Team: Hungarian <gnome-hu-list@gnome.org>\n"
@@ -58,11 +58,11 @@ msgstr "A(z) „%s” tárolónak nincs Release fájlja."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Ez általában nem engedélyezett, de az Acquire::"
-"AllowDowngradeToInsecureRepositories beállítás meg lett adva a "
+"Ez általában nem engedélyezett, de az "
+"Acquire::AllowDowngradeToInsecureRepositories beállítás meg lett adva a "
 "felülbírálásához."
 
 #: apt-pkg/acquire-item.cc
@@ -216,8 +216,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Ütköző disztribúció: %s (a várt %s helyett %s érkezett)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -228,7 +227,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -247,6 +246,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Sikertelen letöltés: %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -267,13 +273,6 @@ msgstr "Nem található forrás a(z) „%2$s” „%1$s” verziójának letölt
 msgid "Changelog unavailable for %s=%s"
 msgstr "Nem érhető el változásnapló ehhez: %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -681,6 +680,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Szintaktikai hiba %s: %u: fölösleges szemét a fájl végén"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -795,11 +818,11 @@ msgstr "%s alfolyamat hibakóddal tért vissza (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "%s alfolyamat váratlanul kilépett"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Olvasási hiba"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Írási hiba"
 
@@ -1134,6 +1157,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Nincs zárolva"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1323,6 +1352,16 @@ msgstr "Felkészülés megoldás fogadására"
 msgid "External solver failed without a proper error message"
 msgstr "A külső solver megfelelő hibaüzenet nélkül hibázott"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Frissítés kiszámítása"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Függőségek összesen: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Külső solver végrehajtása"
@@ -1629,10 +1668,6 @@ msgstr ""
 "Néhány indexfájlt nem sikerült letölteni. Figyelmen kívül lettek hagyva, "
 "vagy régebbiek lettek felhasználva."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Frissítés kiszámítása"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1907,6 +1942,19 @@ msgstr "Az alábbi információk segíthetnek megoldani a problémát:"
 msgid "Broken packages"
 msgstr "Törött csomagok"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "%s kijelölve eltávolításra.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1953,6 +2001,12 @@ msgstr "Belső hiba, a rendezés nem fejeződött be"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "A méretek nem egyeznek, írjon az apt@packages.debian.org címre"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Letöltés: %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1960,6 +2014,12 @@ msgstr "A méretek nem egyeznek, írjon az apt@packages.debian.org címre"
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Letöltendő adatmennyiség: %sB/%sB.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Letöltés: %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1967,13 +2027,55 @@ msgstr "Letöltendő adatmennyiség: %sB/%sB.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Letöltendő adatmennyiség: %sB.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "A művelet után %sB lemezterület kerül felhasználásra.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Tárolt címke: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1991,6 +2093,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Folytatni akarja?"
@@ -2053,6 +2163,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Belső hiba, az AutoRemover sérült"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Ezt az „%s” paranccsal törölheti."
+msgstr[1] "Ezeket az „%s” paranccsal törölheti."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2074,17 +2191,6 @@ msgstr[0] "%lu csomag automatikusan lett telepítve, és már nincs rá szüksé
 msgstr[1] ""
 "%lu csomag automatikusan lett telepítve, és már nincs rájuk szükség.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Ezt az „%s” paranccsal törölheti."
-msgstr[1] "Ezeket az „%s” paranccsal törölheti."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "A következő további csomagok lesznek telepítve:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Javasolt csomagok:"
@@ -2093,6 +2199,10 @@ msgstr "Javasolt csomagok:"
 msgid "Recommended packages:"
 msgstr "Ajánlott csomagok:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "A következő további csomagok lesznek telepítve:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2225,14 +2335,52 @@ msgstr " vagy"
 msgid "The following packages have unmet dependencies:"
 msgstr "Az alábbi csomagoknak teljesítetlen függőségei vannak:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "%2$s csomag %1$s függősége nem elégíthető ki: %3$s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Az alábbi ÚJ csomagok lesznek telepítve:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s telepítése"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Függőségek összesen: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Az alábbi csomagok el lesznek TÁVOLÍTVA:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Az alábbi csomagok vissza lesznek tartva:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Az alábbi csomagok vissza lesznek tartva:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Az alábbi csomagok vissza lesznek tartva:"
@@ -2241,10 +2389,24 @@ msgstr "Az alábbi csomagok vissza lesznek tartva:"
 msgid "The following packages will be upgraded:"
 msgstr "Az alábbi csomagok frissítve lesznek:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Az alábbi csomagok VISSZAFEJLESZTÉSRE kerülnek:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Rögzített csomagok:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "A következő visszatartott csomagok cseréje:"
@@ -2262,26 +2424,53 @@ msgstr ""
 "FIGYELMEZTETÉS: Az alábbi alapvető csomagok el lesznek távolítva.\n"
 "NE tegye ezt, hacsak nem tudja pontosan, mit csinál!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu frissített, %lu újonnan telepített, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s telepítése"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu újratelepítendő, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s telepítése"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu visszafejlesztendő, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Letöltés: %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu eltávolítandó és %lu nem frissített.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2309,7 +2498,7 @@ msgid "Y"
 msgstr "I"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2492,8 +2681,8 @@ msgstr "Nincs fordítási függősége a következőnek: %s.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Nem érhetők el architektúrainformációk ehhez: %s. A beállításokkal "
 "kapcsolatban lásd az apt.conf(5) APT::Architectures részét."
@@ -2535,6 +2724,11 @@ msgstr "%s feldolgozása sikertelen. Újra szerkeszti? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "A(z) „%s” fájl megváltozott, adja ki az „apt-get update” parancsot.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2552,6 +2746,43 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Lásd az apt-secure(8) kézikönyvoldalt a tárolólétrehozással és felhasználói "
+"beállításokkal kapcsolatos részletekért."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2601,6 +2832,12 @@ msgstr "  Vegyes virtuális csomagok: "
 msgid "  Missing: "
 msgstr "  Hiányzik: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Különböző verziók összesen: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Különböző verziók összesen: "
@@ -2950,6 +3187,12 @@ msgstr "SRV rekord kikeresése (például: _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "fájlok összefűzése, automatikus kibontással"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Probléma a fájl hash értékének meghatározásakor"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "proxyfelismerés az apt-conf használatával"
@@ -3197,6 +3440,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "a forrásinformációs fájl szerkesztése"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3400,7 +3647,7 @@ msgstr "„%s” tömörítési algoritmus ismeretlen"
 msgid "Compressed output %s needs a compression set"
 msgstr "%s tömörített kimenetnek egy tömörítő készletre van szüksége"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Nem sikerült IPC-adatcsatornát létrehozni az alfolyamathoz"
 
@@ -3519,23 +3766,23 @@ msgstr "Az archívumnak nem volt csomag mezője"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s nem rendelkezik felülbíráló bejegyzéssel\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s nem rendelkezik felülbíráló bejegyzéssel\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s karbantartója %s, nem %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s karbantartója %.*s, nem %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s nem rendelkezik forrás-felülbíráló bejegyzéssel\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s nem rendelkezik forrás-felülbíráló bejegyzéssel\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s nem rendelkezik bináris-felülbíráló bejegyzéssel sem\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s nem rendelkezik bináris-felülbíráló bejegyzéssel sem\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3573,7 +3820,7 @@ msgstr "Rossz fejlécadatok"
 msgid "Connection failed"
 msgstr "Sikertelen kapcsolódás"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3618,7 +3865,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "A lemez nem található."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "A fájl nem található"
 
@@ -3654,7 +3901,7 @@ msgstr "Foglalat létrehozása sikertelen ehhez: %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Kapcsolat létrehozása sikertelen ehhez: %s: %s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Sikertelen"
 
@@ -3668,9 +3915,7 @@ msgstr "Nem lehet kapcsolódni ehhez: %s: %s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Időtúllépés miatt nem lehet kapcsolódni a következőhöz: %s: %s (%s)"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Kapcsolódás: %s"
@@ -3708,147 +3953,15 @@ msgstr "Nem érhető el"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Érvénytelen URI, helyi URI-k nem kezdődhetnek //-rel"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Bejelentkezés"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nem lehet a partner nevét megállapítani"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nem lehet a helyi nevet megállapítani"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "A kiszolgáló visszautasította a kapcsolatot: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Hibás USER, a kiszolgáló üzenete: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Hibás PASS, a kiszolgáló üzenete: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Meg lett adva proxy kiszolgáló, de nincs bejelentkezési parancsfájl és az "
-"Acquire::ftp::ProxyLogin üres."
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"A bejelentkezési parancsfájl „%s” parancsa sikertelen, a kiszolgáló üzenete: "
-"%s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Hibás TYPE, a kiszolgáló üzenete: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Időtúllépés a kapcsolatban"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "A kiszolgáló lezárta a kapcsolatot"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "A válasz túlcsordította a puffert."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokollhiba"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nem lehet létrehozni a foglalatot"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Nem lehet kapcsolódni az adatfoglalathoz, a kapcsolat túllépte az időkorlátot"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nem lehet kapcsolódni a passzív foglalathoz."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "A getaddrinfo nem talált figyelőfoglalatot"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nem lehet összekapcsolódni a foglalattal"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Nem lehet figyelni a foglalaton"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Nem lehet megállapítani a foglalat nevét"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Nem lehet PORT parancsot küldeni"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Ismeretlen címcsalád: %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Hibás EPRT, a kiszolgáló üzenete: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Az adatfoglalathoz kapcsolódás túllépte az időkorlátot"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Nem lehet elfogadni a kapcsolatot"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Probléma a fájl hash értékének meghatározásakor"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nem lehet letölteni a fájlt, a kiszolgáló üzenete: „%s”"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Az adatfoglalat túllépte az időkorlátot"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Az adatátvitel sikertelen, a kiszolgáló üzenete: „%s”"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Lekérdezés"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nem lehet meghívni "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3869,26 +3982,25 @@ msgid ""
 msgstr "Belső hiba: Jó aláírás, de nem állapítható meg a kulcs ujjlenyomata."
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Nem indítható el a „apt-key” az aláírás ellenőrzéséhez (telepítve van a "
 "gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Ismeretlen apt-key futtatási hiba"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "%s kulcs aláírása gyenge kivonatoló algoritmust használ (%s)"
 
 #: methods/gpgv.cc
@@ -3923,18 +4035,138 @@ msgstr "A kiválasztás sikertelen"
 msgid "Connection timed out"
 msgstr "Időtúllépés a kapcsolatban"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Probléma a fájl hash értékének meghatározásakor"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "A módosítási idő beállítása sikertelen"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "A kapcsolat idő előtt lezárult"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Az üres fájlok biztosan nem érvényes csomagok"
 
+#~ msgid "Logging in"
+#~ msgstr "Bejelentkezés"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nem lehet a partner nevét megállapítani"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nem lehet a helyi nevet megállapítani"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "A kiszolgáló visszautasította a kapcsolatot: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Hibás USER, a kiszolgáló üzenete: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Hibás PASS, a kiszolgáló üzenete: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Meg lett adva proxy kiszolgáló, de nincs bejelentkezési parancsfájl és az "
+#~ "Acquire::ftp::ProxyLogin üres."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "A bejelentkezési parancsfájl „%s” parancsa sikertelen, a kiszolgáló "
+#~ "üzenete: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Hibás TYPE, a kiszolgáló üzenete: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Időtúllépés a kapcsolatban"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "A kiszolgáló lezárta a kapcsolatot"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "A válasz túlcsordította a puffert."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokollhiba"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Nem lehet létrehozni a foglalatot"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Nem lehet kapcsolódni az adatfoglalathoz, a kapcsolat túllépte az "
+#~ "időkorlátot"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nem lehet kapcsolódni a passzív foglalathoz."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "A getaddrinfo nem talált figyelőfoglalatot"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nem lehet összekapcsolódni a foglalattal"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Nem lehet figyelni a foglalaton"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Nem lehet megállapítani a foglalat nevét"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Nem lehet PORT parancsot küldeni"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Ismeretlen címcsalád: %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Hibás EPRT, a kiszolgáló üzenete: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Az adatfoglalathoz kapcsolódás túllépte az időkorlátot"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Nem lehet elfogadni a kapcsolatot"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nem lehet letölteni a fájlt, a kiszolgáló üzenete: „%s”"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Az adatfoglalat túllépte az időkorlátot"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Az adatátvitel sikertelen, a kiszolgáló üzenete: „%s”"
+
+#~ msgid "Query"
+#~ msgstr "Lekérdezés"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Nem lehet meghívni "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "A kapcsolat idő előtt lezárult"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Telepítve: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "A következő visszatartott csomagok cseréje:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Igen, tedd amit mondok!"
 
@@ -4375,9 +4607,6 @@ msgstr "Az üres fájlok biztosan nem érvényes csomagok"
 #~ "A(z) „%2$s” csomag el nem érhető „%1$s” cél kiadásának figyelmen kívül "
 #~ "hagyása"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Letöltés: %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "Érvénytelen DEB archívum, nincs „%s”, „%s” vagy „%s” tagja"
 
diff --git a/po/it.po b/po/it.po
index 8745996..2a2d7c5 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,5 +1,5 @@
 # Italian translation of apt
-# Copyright (C) 2002-2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2019 The Free Software Foundation, Inc.
+# Copyright (C) 2002-2024 The Free Software Foundation, Inc.
 #
 # Licensing is complex as the msgid come from several files, please see
 # the individual files for licensing information.
@@ -7,15 +7,16 @@
 # This file is distributed under the same license as the apt package.
 # Samuele Giovanni Tonon <samu@debian.org>, 2002.
 # Milo Casagrande <milo@milo.name>, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2019.
+# Luca Vercelli <luca.vercelli.to@gmail.com> 2024
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2019-03-04 11:05+0100\n"
-"Last-Translator: Milo Casagrande <milo@milo.name>\n"
-"Language-Team: Italian <tp@lists.linux.it>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-09-06 10:21+0100\n"
+"Last-Translator: Luca Vercelli <luca.vercelli.to@gmail.com>\n"
+"Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,8 +29,8 @@ msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
-"L'aggiornamento da tale repository non può essere eseguito in modo sicuro ed "
-"è quindi disabilitato come impostazione predefinita."
+"L'aggiornamento da tale repository non può essere eseguito in modo sicuro e "
+"quindi è disabilitato come impostazione predefinita."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
@@ -44,8 +45,8 @@ msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
-"Consultare la pagina man apt-secure(8) per la creazione di un repository e "
-"la configurazione utente."
+"Consultare la pagina man apt-secure(8) per la creazione di repository e la "
+"configurazione utente."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -59,11 +60,11 @@ msgstr "Il repository \"%s\" non ha più un file Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Ciò non è solitamente consentito, ma è stata fornita l'opzione Acquire::"
-"AllowDowngradeToInsecureRepositories per aggirare il problema."
+"Questo normalmente non è consentito, ma è stata impostata l'opzione "
+"Acquire::AllowDowngradeToInsecureRepositories per permetterlo."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -89,7 +90,7 @@ msgstr "Esecuzione di readlink su %s non riuscita"
 #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc
 #, c-format
 msgid "Failed to stat %s"
-msgstr "Impossibile eseguire stat su %s"
+msgstr "Esecuzione di stat su %s non riuscita"
 
 #: apt-pkg/acquire-item.cc
 msgid "Hash Sum mismatch"
@@ -104,7 +105,7 @@ msgstr ""
 #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "rename failed, %s (%s -> %s)."
-msgstr "rename() non riuscita: %s (%s -> %s)."
+msgstr "Comando rename fallito: %s (%s -> %s)."
 
 #: apt-pkg/acquire-item.cc
 msgid "Size mismatch"
@@ -125,7 +126,7 @@ msgid ""
 "Clearsigned file isn't valid, got '%s' (does the network require "
 "authentication?)"
 msgstr ""
-"Il file con la firma in chiaro non è valido, ottenuto \"%s\" (la rete "
+"Il file con la firma in chiaro non è valido, ottenuto \"%s\" (forse la rete "
 "richiede autenticazione?)"
 
 #: apt-pkg/acquire-item.cc
@@ -149,8 +150,9 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
-"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non "
-"presenta il componente \"%s\" (nome del componente errato in sources.list?)"
+"Acquisizione del file configurato \"%s\" saltata in quanto il repository "
+"\"%s\" non presenta il componente \"%s\" (nome del componente errato in "
+"sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -158,8 +160,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
-"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non "
-"supporta l'architettura \"%s\""
+"Acquisizione del file configurato \"%s\" saltata in quanto il repository "
+"\"%s\" non supporta l'architettura \"%s\""
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -167,8 +169,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
-"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non "
-"sembra fornire tale file (voce in sources.list errata?)"
+"Acquisizione del file configurato \"%s\" saltata in quanto il repository "
+"\"%s\" non sembra fornire tale file (voce in sources.list errata?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -188,7 +190,7 @@ msgid ""
 "Release file for %s is expired (invalid since %s). Updates for this "
 "repository will not be applied."
 msgstr ""
-"Il file Release per %s è scaduto (non valido dal %s). Gli aggiornamenti per "
+"Il file Release per %s è scaduto (non valido da %s). Gli aggiornamenti per "
 "questo repository non verranno applicati."
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
@@ -200,16 +202,15 @@ msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
-"Il file Release per %s non è ancora valido (non valido per %s). Gli "
-"aggiornamenti per questo repository non verranno applicati."
+"Il file Release per %s non è ancora valido (mancano %s). Gli aggiornamenti "
+"per questo repository non verranno applicati."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribuzione in conflitto: %s (atteso %s ma ottenuto %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Il repository \"%s\" ha modificato il valore \"%s\" da \"%s\" a \"%s\""
@@ -222,13 +223,13 @@ msgstr ""
 "%hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
 msgstr ""
-"Maggiori informazioni possono essere trovare online nel file Release presso: "
-"%s"
+"Maggiori informazioni possono essere trovate online nelle Note di rilascio "
+"presso: %s"
 
 #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8)
 #: apt-pkg/acquire-item.cc
@@ -237,14 +238,24 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
-"Ciò deve essere accettato prima di poter applicare gli aggiornamenti da "
-"questo repository. Per maggiori informazioni consultare la pagina man %s."
+"Questo deve essere accettato esplicitamente prima di poter applicare gli "
+"aggiornamenti da questo repository. Per maggiori informazioni consultare la "
+"pagina man %s."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
 #, c-format
 msgid "Failed to fetch %s  %s"
 msgstr "Impossibile recuperare %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"I repository dovrebbero fornire un file InRelease con firma in chiaro, ma "
+"non ne è stato trovato alcuno per %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -252,7 +263,8 @@ msgid ""
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 "Impossibile trovare un file per il pacchetto %s. Potrebbe essere necessario "
-"sistemare manualmente questo pacchetto (a causa dell'architettura mancante)."
+"sistemare manualmente questo pacchetto. (Errore dovuto all'architettura "
+"mancante)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -266,19 +278,11 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Changelog per %s=%s non disponibile"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"Il metodo \"%s\" non è supportato ed è disabilitato: passare a http(s). Per "
-"abilitarlo nuovamente, impostare Dir::Bin::Methods::%s a \"%s\"."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
-msgstr "Il metodo \"%s\" è disabilitato tramite la configurazione."
+msgstr ""
+"Il metodo \"%s\" è stato espressamente disabilitato da una configurazione."
 
 #: apt-pkg/acquire-worker.cc methods/connect.cc
 #, c-format
@@ -306,16 +310,15 @@ msgid ""
 "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
 msgstr "Inserire il disco chiamato \"%s\" nell'unità \"%s\" e premere Invio."
 
-# (ndt) sarebbe da controllare meglio assieme a quella dopo
 #: apt-pkg/acquire.cc apt-pkg/cdrom.cc
 #, c-format
 msgid "List directory %s is missing."
-msgstr "Manca la directory di liste %s."
+msgstr "Manca la directory delle liste %s."
 
 #: apt-pkg/acquire.cc
 #, c-format
 msgid "Archives directory %s is missing."
-msgstr "Manca la directory di archivio %s."
+msgstr "Manca la directory degli archivi %s."
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -326,7 +329,8 @@ msgstr "Impossibile bloccare la directory %s"
 #, c-format
 msgid "No sandbox user '%s' on the system, can not drop privileges"
 msgstr ""
-"Nessun utente sandbox \"%s\" sul sistema, impossibile perdere i privilegi"
+"L'utente sandbox \"%s\" non esiste nel sistema, impossibile perdere i "
+"privilegi"
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -366,8 +370,8 @@ msgstr "Scaricamento file %li di %li"
 msgid ""
 "The package %s needs to be reinstalled, but I can't find an archive for it."
 msgstr ""
-"Il pacchetto %s deve essere reinstallato, ma non è possibile trovarne un "
-"archivio."
+"Il pacchetto %s deve essere reinstallato, ma non è possibile trovare un "
+"archivio corrispondente."
 
 #: apt-pkg/algorithms.cc
 msgid ""
@@ -390,11 +394,11 @@ msgstr ""
 #: apt-pkg/cachefile.cc
 msgid "You may want to run apt-get update to correct these problems"
 msgstr ""
-"È consigliato eseguire \"apt-get update\" per correggere questi problemi"
+"Si può provare a eseguire \"apt-get update\" per correggere questi problemi"
 
 #: apt-pkg/cachefile.cc methods/mirror.cc
 msgid "The list of sources could not be read."
-msgstr "Impossibile leggere l'elenco dei sorgenti."
+msgstr "Impossibile leggere l'elenco delle sorgenti."
 
 #: apt-pkg/cachefilter-patterns.cc apt-pkg/cachefilter.cc
 #: apt-private/private-output.cc
@@ -405,36 +409,36 @@ msgstr "Errore di compilazione dell'espressione regolare - %s"
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Couldn't find task '%s'"
-msgstr "Impossibile trovare il task \"%s\""
+msgstr "Task \"%s\" non trovato"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Couldn't find any package by regex '%s'"
-msgstr ""
-"Impossibile trovare alcun pacchetto tramite l'espressione regolare \"%s\""
+msgstr "Nessun pacchetto trovato tramite l'espressione regolare \"%s\""
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Couldn't find any package by glob '%s'"
-msgstr "Impossibile trovare alcun pacchetto tramite il glob \"%s\""
+msgstr "Nessun pacchetto trovato tramite il glob \"%s\""
 
 #: apt-pkg/cacheset.cc apt-private/private-show.cc
 #, c-format
 msgid "Unable to locate package %s"
-msgstr "Impossibile trovare il pacchetto %s"
+msgstr "Pacchetto \"%s\" non trovato"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select versions from package '%s' as it is purely virtual"
 msgstr ""
-"Impossibile selezionare le versioni dal pacchetto \"%s\" poiché è virtuale"
+"Impossibile selezionare versioni dal pacchetto \"%s\" poiché è un pacchetto "
+"virtuale"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select newest version from package '%s' as it is purely virtual"
 msgstr ""
 "Impossibile selezionare la versione più recente dal pacchetto \"%s\" poiché "
-"è virtuale"
+"è un pacchetto virtuale"
 
 #: apt-pkg/cacheset.cc
 #, c-format
@@ -457,7 +461,7 @@ msgid ""
 "neither of them"
 msgstr ""
 "Impossibile selezionare la versione installata o la candidata dal pacchetto "
-"\"%s\" poiché non sono presenti"
+"\"%s\" poiché nessuna delle due è presente"
 
 # (ndt) dovrebbe essere inteso il file Release
 #: apt-pkg/cacheset.cc
@@ -499,7 +503,7 @@ msgstr "Etichetta archiviata: %s\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Scanning disc for index files...\n"
-msgstr "Analisi del disco per file indice...\n"
+msgstr "Ricerca di file indice sul disco...\n"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -507,16 +511,16 @@ msgid ""
 "Found %zu package indexes, %zu source indexes, %zu translation indexes and "
 "%zu signatures\n"
 msgstr ""
-"Trovati %zu indici di pacchetto, %zu indici di sorgente, %zu indici di "
-"traduzione e %zu firme\n"
+"Trovati %zu indici di pacchetti, %zu indici di sorgenti, %zu indici di "
+"traduzioni e %zu firme\n"
 
 #: apt-pkg/cdrom.cc
 msgid ""
 "Unable to locate any package files, perhaps this is not a Debian Disc or the "
 "wrong architecture?"
 msgstr ""
-"Impossibile trovare alcun file di pacchetto. Questo potrebbe non essere un "
-"disco Debian o potrebbe essere l'architettura errata."
+"Impossibile trovare file di pacchetto. Questo disco potrebbe non essere un "
+"disco Debian, oppure potrebbe essere relativo all'architettura errata."
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -525,7 +529,7 @@ msgstr "Trovata l'etichetta \"%s\"\n"
 
 #: apt-pkg/cdrom.cc
 msgid "That is not a valid name, try again.\n"
-msgstr "Questo non è un nome valido, riprovare.\n"
+msgstr "Nome non valido, riprovare.\n"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -559,11 +563,11 @@ msgstr "Firma dell'archivio non valida"
 
 #: apt-pkg/contrib/arfile.cc
 msgid "Error reading archive member header"
-msgstr "Errore nel leggere l'intestazione membro dell'archivio"
+msgstr "Errore nel leggere l'intestazione dell'elemento dell'archivio"
 
 #: apt-pkg/contrib/arfile.cc
 msgid "Invalid archive member header"
-msgstr "Intestazione membro dell'archivio non valida"
+msgstr "Intestazione dell'elemento dell'archivio non valida"
 
 #: apt-pkg/contrib/arfile.cc
 msgid "Archive is too short"
@@ -620,7 +624,7 @@ msgstr ""
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Option %s requires an integer argument, not '%s'"
-msgstr "L'opzione %s richiede un argomento intero, non \"%s\""
+msgstr "L'opzione %s richiede come argomento un numero intero, non \"%s\""
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
@@ -630,7 +634,7 @@ msgstr "Opzione \"%s\" troppo lunga"
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Sense %s is not understood, try true or false."
-msgstr "Il valore %s non è comprensibile, provare \"true\" o \"false\"."
+msgstr "Il valore \"%s\" non è comprensibile, provare \"true\" o \"false\"."
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
@@ -640,7 +644,7 @@ msgstr "Operazione %s non valida"
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Unrecognized type abbreviation: '%c'"
-msgstr "Tipo di abbreviazione non riconosciuto: \"%c\""
+msgstr "Abbreviazione di tipo non riconosciuta: \"%c\""
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
@@ -650,7 +654,7 @@ msgstr "Errore di sintassi %s:%u: il blocco inizia senza nome"
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Malformed tag"
-msgstr "Errore di sintassi %s:%u: tag non corretto"
+msgstr "Errore di sintassi %s:%u: tag malformato"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
@@ -692,6 +696,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Errore di sintassi %s:%u: caratteri extra alla fine del file"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Errore:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Attenzione:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Avviso:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Audit:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Debug:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -703,13 +731,12 @@ msgstr "Archivio danneggiato"
 
 #: apt-pkg/contrib/extracttar.cc
 msgid "Tar checksum failed, archive corrupted"
-msgstr "Checksum di tar non riuscito, archivio danneggiato"
+msgstr "Checksum del file tar non corrispondente, archivio danneggiato"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Intestazione TAR di tipo %u sconosciuta, membro %s"
+msgstr "Intestazione TAR di tipo %u sconosciuta"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -732,15 +759,14 @@ msgid "Not using locking for nfs mounted lock file %s"
 msgstr "Blocco disabilitato per il file di blocco %s montato via nfs"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "Impossibile impostare il blocco %s"
+msgstr "Impossibile impostare il blocco %s. È bloccato dal processo %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
-msgstr ""
+msgstr "Impossibile impostare il blocco %s. È bloccato dal processo %d (%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -752,6 +778,8 @@ msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Si noti che la rimozione del file di blocco non è una soluzione e potrebbe "
+"danneggiare il sistema."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -784,7 +812,7 @@ msgstr ""
 #: cmdline/apt-dump-solver.cc
 #, c-format
 msgid "Waited for %s but it wasn't there"
-msgstr "In attesa di %s ma non era presente"
+msgstr "Si era in attesa di %s ma non era presente"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -807,11 +835,11 @@ msgstr "Il sottoprocesso %s ha restituito un codice d'errore (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Il sottoprocesso %s è uscito inaspettatamente"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Errore di lettura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Errore di scrittura"
 
@@ -830,7 +858,7 @@ msgstr "Creazione di un sottoprocesso IPC non riuscita"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to exec compressor "
-msgstr "Esecuzione non riuscita del compressore "
+msgstr "Esecuzione del compressore non riuscita "
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -840,12 +868,12 @@ msgstr "Impossibile aprire il file %s"
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not open file descriptor %d"
-msgstr "Impossibile aprire il descrittore del file %d"
+msgstr "Impossibile aprire il descrittore di file %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "read, still have %llu to read but none left"
-msgstr "lettura, ancora %llu da leggere, ma non è stato trovato nulla"
+msgstr "lettura, ancora %llu da leggere, ma 0 rimanenti"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -888,7 +916,7 @@ msgstr "Impossibile creare mmap di %llu byte"
 #: apt-pkg/contrib/mmap.cc
 #, c-format
 msgid "Couldn't duplicate file descriptor %i"
-msgstr "Impossibile duplicare il descrittore del file %i"
+msgstr "Impossibile duplicare il descrittore di file %i"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Unable to close mmap"
@@ -901,7 +929,7 @@ msgstr "Impossibile sincronizzare mmap"
 #: apt-pkg/contrib/mmap.cc
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
-msgstr "Impossibile eseguire mmap di %lu byte"
+msgstr "Impossibile creare mmap di %lu byte"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Failed to truncate file"
@@ -922,8 +950,8 @@ msgid ""
 "Unable to increase the size of the MMap as the limit of %lu bytes is already "
 "reached."
 msgstr ""
-"Impossibile incrementare la dimensione della MMap poiché il limite di %lu "
-"byte è stato raggiunto."
+"Impossibile incrementare la dimensione della MMap poiché è già stato "
+"raggiunto il limite di %lu byte."
 
 # (ndt) lunghetta...
 #: apt-pkg/contrib/mmap.cc
@@ -939,6 +967,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: Le credenziali per %s corrispondono, ma il protocollo non è criptato. "
+"Annotare con %s:// per utilizzarlo. "
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -955,16 +985,14 @@ msgid "..."
 msgstr "..."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s... %u%%"
+msgstr "%c%s... %llu/%llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s... %u%%"
+msgstr "%c%s... %llus"
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -1012,13 +1040,12 @@ msgstr "Errore interno, impossibile trovare il membro %s"
 
 #: apt-pkg/deb/debfile.cc
 msgid "Unparsable control file"
-msgstr "File \"control\" non analizzabile"
+msgstr "File \"control\" formalmente scorretto"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "Impossibile impostare il blocco %s"
+msgstr "Impossibile leggere metadati da %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -1035,7 +1062,7 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s (%s) is configured multiple times in %s and %s"
-msgstr "L'obiettivo %s (%s) è configurato molteplici volte in %s e %s"
+msgstr "L'obiettivo %s (%s) è configurato più volte in %s e %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -1064,7 +1091,7 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid '%s' entry in Release file %s"
-msgstr "Voce \"%s\" nel file Release %s non valida"
+msgstr "Voce \"%s\" non valida nel file Release %s"
 
 #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
 #: apt-pkg/deb/debmetaindex.cc
@@ -1090,13 +1117,12 @@ msgstr ""
 #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
 #, c-format
 msgid "Unable to parse package file %s (%d)"
-msgstr "Impossibile analizzare il file di pacchetto %s (%d)"
+msgstr "File di pacchetto formalmente scorretto %s (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "In attesa degli header"
+msgstr "In attesa del blocco della cache: %s"
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
@@ -1110,7 +1136,7 @@ msgstr ""
 #, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
 msgstr ""
-"Impossibile acquisire il blocco sul frontend dpkg (%s). È necessario essere "
+"Impossibile acquisire il blocco sul frontend dpkg (%s). Verificare di essere "
 "root."
 
 #. TRANSLATORS: the %s contains the recovery command, usually
@@ -1129,20 +1155,26 @@ msgid ""
 "Unable to lock the administration directory (%s), is another process using "
 "it?"
 msgstr ""
-"Impossibile acquisire il blocco sulla directory di amministrazione (%s). Un "
+"Impossibile acquisire il blocco sulla directory amministrativa (%s). Un "
 "altro processo potrebbe tenerla occupata."
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
 msgid "Unable to lock the administration directory (%s), are you root?"
 msgstr ""
-"Impossibile acquisire il blocco sulla directory di amministrazione (%s). È "
-"necessario essere root."
+"Impossibile acquisire il blocco sulla directory amministrativa (%s). "
+"Verificare di essere root."
 
 #: apt-pkg/deb/debsystem.cc
 msgid "Not locked"
 msgstr "Non bloccato"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1167,12 +1199,12 @@ msgstr "Preparazione alla rimozione completa di %s"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Noting disappearance of %s"
-msgstr "Notata la sparizione di %s"
+msgstr "Rilevata la sparizione di %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Running post-installation trigger %s"
-msgstr "Esecuzione comando di post installazione %s"
+msgstr "Esecuzione comando di post-installazione %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1223,15 +1255,15 @@ msgstr "Pacchetto %s rimosso completamente"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Can not write log (%s)"
-msgstr "Impossibile scrivere il registro (%s)"
+msgstr "Impossibile scrivere il log (%s)"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Is /dev/pts mounted?"
-msgstr "È /dev/pts montato?"
+msgstr "/dev/pts è montato?"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Operation was interrupted before it could finish"
-msgstr "L'operazione è stata interrotta prima di essere completata"
+msgstr "L'operazione è stata interrotta prima che potesse completare"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "No apport report written because MaxReports is reached already"
@@ -1249,8 +1281,8 @@ msgid ""
 "No apport report written because the error message indicates its a followup "
 "error from a previous failure."
 msgstr ""
-"Segnalazione apport non scritta poiché il messaggio di errore indica la "
-"presenza di un fallimento precedente."
+"Segnalazione apport non scritta poiché il messaggio di errore indica che è "
+"conseguenza di un fallimento precedente."
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
@@ -1307,7 +1339,7 @@ msgstr "Apertura del file di stato %s non riuscita"
 #: apt-pkg/depcache.cc
 #, c-format
 msgid "Failed to write temporary StateFile %s"
-msgstr "Scrittura del file temporaneo di stato %s non riuscita"
+msgstr "Scrittura del file di stato temporaneo %s non riuscita"
 
 #: apt-pkg/dirstream.cc
 #, c-format
@@ -1321,11 +1353,11 @@ msgstr "Chiusura del file %s non riuscita"
 
 #: apt-pkg/edsp.cc
 msgid "Send scenario to solver"
-msgstr "Invia lo scenario al solver"
+msgstr "Invio dello scenario al solver"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to solver"
-msgstr "Invia la richiesta al solver"
+msgstr "Invio della richiesta al solver"
 
 #: apt-pkg/edsp.cc
 msgid "Prepare for receiving solution"
@@ -1333,7 +1365,15 @@ msgstr "Preparazione alla ricezione della soluzione"
 
 #: apt-pkg/edsp.cc
 msgid "External solver failed without a proper error message"
-msgstr "Il solver esterno è terminato senza un messaggio di errore"
+msgstr "Il solver esterno è fallito senza un messaggio di errore"
+
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcolo dell'aggiornamento"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Risoluzione dipendenze"
 
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
@@ -1345,15 +1385,15 @@ msgstr "Esecuzione planner esterno"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to planner"
-msgstr "Invia la richiesta al planner"
+msgstr "Invio della richiesta al planner"
 
 #: apt-pkg/edsp.cc
 msgid "Send scenario to planner"
-msgstr "Invia lo scenario al planner"
+msgstr "Invio dello scenario al planner"
 
 #: apt-pkg/edsp.cc
 msgid "External planner failed without a proper error message"
-msgstr "Il planner esterno è terminato senza un messaggio di errore"
+msgstr "Il planner esterno è fallito senza un messaggio di errore appropriato"
 
 #: apt-pkg/indexcopy.cc
 #, c-format
@@ -1393,7 +1433,7 @@ msgstr "Il sistema di pacchetti \"%s\" non è supportato"
 
 #: apt-pkg/init.cc
 msgid "Unable to determine a suitable packaging system type"
-msgstr "Impossibile determinare un tipo di sistema appropriato di pacchetti"
+msgstr "Impossibile determinare un tipo di sistema di pacchetti idoneo"
 
 #: apt-pkg/install-progress.cc
 #, c-format
@@ -1412,8 +1452,8 @@ msgid ""
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
 "Impossibile eseguire immediatamente la configurazione su \"%s\". Per "
-"maggiori informazioni, consultare \"man 5 apt.conf\" alla sezione \"APT::"
-"Immediate-Configure\" (%d)."
+"maggiori informazioni, consultare \"man 5 apt.conf\" alla sezione "
+"\"APT::Immediate-Configure\" (%d)."
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1428,8 +1468,8 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 "L'installazione necessita della rimozione temporanea del pacchetto "
-"essenziale %s a causa di un ciclo conflitto/pre-dipendenza. Questa è una "
-"situazione critica, ma se si vuole realmente procedere, attivare l'opzione "
+"essenziale %s a causa di un ciclo Conflicts/Pre-Depends. Questo spesso è "
+"pericoloso, ma se si vuole realmente procedere, attivare l'opzione "
 "APT::Force-LoopBreak."
 
 #: apt-pkg/pkgcache.cc
@@ -1447,19 +1487,19 @@ msgstr "La versione del file della cache dei pacchetti è incompatibile"
 #: apt-pkg/pkgcache.cc
 #, c-format
 msgid "This APT does not support the versioning system '%s'"
-msgstr "Questo APT non supporta il sistema di versione \"%s\""
+msgstr "Questo APT non supporta il sistema di gestione delle versioni \"%s\""
 
 #: apt-pkg/pkgcache.cc
 #, c-format
 msgid "The package cache was built for different architectures: %s vs %s"
 msgstr ""
-"Il file della cache dei pacchetti è stato generato per un'altra "
-"architettura: %s vs. %s"
+"La cache dei pacchetti è stata generata per un'altra architettura: %s vs. %s"
 
 #: apt-pkg/pkgcache.cc
 msgid "The package cache file is corrupted, it has the wrong hash"
-msgstr "Il file della cache dei pacchetti è danneggiato, hash non corretto"
+msgstr "Il file della cache dei pacchetti è danneggiato, ha hash errato"
 
+# (ndt) ma Depends/PreDepends/Suggests/... sono da tradurre o no?
 #: apt-pkg/pkgcache.cc
 msgid "Depends"
 msgstr "Dipende"
@@ -1548,14 +1588,15 @@ msgstr "È stato superato il numero di dipendenze che questo APT può gestire."
 msgid "Reading package lists"
 msgstr "Lettura elenco dei pacchetti"
 
+# (ndt) forse si intendeva status cache e non source cache?
 #: apt-pkg/pkgcachegen.cc
 msgid "IO Error saving source cache"
-msgstr "Errore di I/O nel salvare la cache sorgente"
+msgstr "Errore di I/O nel salvare la source cache"
 
 #: apt-pkg/pkgrecords.cc
 #, c-format
 msgid "Index file type '%s' is not supported"
-msgstr "Il file indice di tipo \"%s\" non è supportato"
+msgstr "Il tipo di file indice \"%s\" non è supportato"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1570,13 +1611,13 @@ msgstr ""
 #, c-format
 msgid "Invalid record in the preferences file %s, no Package header"
 msgstr ""
-"Campo non valido nel file delle preferenze %s, manca l'intestazione "
+"Voce non valida nel file delle preferenze %s, manca l'intestazione "
 "\"Package\""
 
 #: apt-pkg/policy.cc
 #, c-format
 msgid "Did not understand pin type %s"
-msgstr "Impossibile comprendere il tipo di gancio %s"
+msgstr "Impossibile comprendere il tipo di pin %s"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1590,39 +1631,40 @@ msgstr ""
 #, c-format
 msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
 msgstr ""
-"%s: il valore %s non rientra nell'intervallo di priorità di gancio valide "
-"(%d - %d)"
+"%s: il valore %s non rientra nell'intervallo di priorità di pin valide (%d - "
+"%d)"
 
 #: apt-pkg/policy.cc
 msgid "No priority (or zero) specified for pin"
-msgstr "Priorità per il gancio non specificata (o zero)"
+msgstr "Priorità per il pin non specificata (o zero)"
 
 #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Malformed entry %u in %s file %s (%s)"
-msgstr "Voce %u non corretta nel file %s (%s %s)"
+msgstr "Voce %u sintatticamente errata nel file %s (%s %s)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Malformed line %u in source list %s (type)"
-msgstr "La riga %u nel file %s non è corretta (type)"
+msgstr "Riga %u sintatticamente errata nel file delle sorgenti %s (type)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
 msgstr "Tipo \"%s\" non riconosciuto alla riga %u nel file delle sorgenti %s"
 
+# (ndt) cos'è una stanza è decisamente da capire
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Malformed stanza %u in source list %s (type)"
-msgstr "La stanza %u nell'elenco delle sorgenti %s non è corretta (type)"
+msgstr "Sezione %u sintatticamente errata nel file delle sorgenti %s (type)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Type '%s' is not known on stanza %u in source list %s"
 msgstr ""
-"Tipo \"%s\" non riconosciuto nella stanza %u nel file delle sorgenti %s"
+"Tipo \"%s\" non riconosciuto nella sezione %u nel file delle sorgenti %s"
 
 #: apt-pkg/sourcelist.cc apt-private/private-install.cc
 #, c-format
@@ -1630,16 +1672,14 @@ msgid "Unsupported file %s given on commandline"
 msgstr "File %s non supportato passato sulla riga di comando"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
 msgstr ""
-"È necessario inserire alcuni URI di tipo \"source\" nel file sources.list"
+"È necessario inserire alcuni URI di tipo \"deb-src\" nel file sources.list"
 
 #: apt-pkg/tagfile.cc
 #, c-format
 msgid "Cannot convert %s to integer: out of range"
-msgstr "Impossibile convertire %s a intero: fuori dall'intervallo"
+msgstr "Impossibile convertire %s in intero: fuori dall'intervallo"
 
 #: apt-pkg/update.cc
 msgid ""
@@ -1649,10 +1689,6 @@ msgstr ""
 "Impossibile scaricare alcuni file di indice: saranno ignorati o verranno "
 "usati quelli vecchi."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calcolo dell'aggiornamento"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1729,7 +1765,7 @@ msgstr " Fatto"
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid "You might want to run 'apt --fix-broken install' to correct these."
-msgstr "È utile eseguire \"apt --fix-broken install\" per correggere ciò."
+msgstr "È possibile eseguire \"apt --fix-broken install\" per correggere."
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid ""
@@ -1773,7 +1809,7 @@ msgstr " [Versione non candidata]"
 
 #: apt-private/private-cacheset.cc
 msgid "You should explicitly select one to install."
-msgstr "È necessario sceglierne uno da installare."
+msgstr "È necessario sceglierne esplicitamente uno da installare."
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1835,9 +1871,9 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
-"Le opzioni di configurazione e la sintassi sono dettagliate in atp.conf(5).\n"
-"Le informazioni per configurare le sorgenti sono dettagliate in sources."
-"list(5).\n"
+"Le opzioni di configurazione e la sintassi sono dettagliate in apt.conf(5).\n"
+"Informazioni per configurare le sorgenti sono dettagliate in "
+"sources.list(5).\n"
 "Scelte di pacchetti e versioni possono essere espresse tramite "
 "apt_preferences(5).\n"
 "Informazioni di sicurezza sono presenti in apt-secure(8).\n"
@@ -1931,6 +1967,20 @@ msgstr "Le seguenti informazioni possono aiutare a risolvere la situazione:"
 msgid "Broken packages"
 msgstr "Pacchetti danneggiati"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Le cartelle usr \"unmerged\" non sono più supportate, usare il comando "
+"usrmerge per trasformarle in cartelle \"merged\""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Si veda %s per dettagli."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1947,8 +1997,7 @@ msgstr ""
 
 #: apt-private/private-install.cc
 msgid "Packages need to be removed but remove is disabled."
-msgstr ""
-"I pacchetti devono essere rimossi, ma l'azione di rimozione è disabilitata."
+msgstr "Occorre rimuovere pacchetti, ma l'azione di rimozione è disabilitata."
 
 #: apt-private/private-install.cc
 msgid ""
@@ -1961,7 +2010,7 @@ msgstr ""
 #: apt-private/private-install.cc
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
 msgstr ""
-"Pacchetti sono stati retrocessi è stata usata -y senza --allow-downgrades."
+"Pacchetti sono stati retrocessi ed è stata usata -y senza --allow-downgrades."
 
 #: apt-private/private-install.cc
 msgid ""
@@ -1973,13 +2022,18 @@ msgstr ""
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
-msgstr "Errore interno, l'ordinamento non è stato terminato"
+msgstr "Errore interno, l'ordinamento non è terminato"
 
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Le dimensioni non corrispondono. Inviare un'email a: apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Dimensione scaricamento: %sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1987,6 +2041,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "È necessario scaricare %sB/%sB di archivi.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Dimensione scaricamento: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1994,12 +2053,58 @@ msgstr "È necessario scaricare %sB/%sB di archivi.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "È necessario scaricare %sB di archivi.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Dopo quest'operazione, verranno occupati %sB di spazio su disco in più.\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
-msgid "After this operation, %sB of additional disk space will be used.\n"
-msgstr "Dopo quest'operazione, verranno occupati %sB di spazio su disco.\n"
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Spazio richiesto: %sB / %sB disponibile\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"È richiesto più spazio di quanto sia disponibile: %sB > %sB, l'installazione "
+"potrebbe fallire"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "in %s:  %sB / %sB disponibile\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"È richiesto più spazio in %s di quanto sia disponibile: %sB > %sB, "
+"l'installazione potrebbe fallire"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Spazio richiesto: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Spazio liberato: %sB\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
@@ -2019,6 +2124,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"Rimuovere pacchetti critici del sistema non è permesso. Questo potrebbe "
+"danneggiare il sistema."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Continuare ugualmente?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Continuare?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -2034,11 +2149,11 @@ msgstr "Scaricamento di alcuni file non riuscito"
 
 #: apt-private/private-install.cc apt-private/private-source.cc
 msgid "Download complete and in download only mode"
-msgstr "Scaricamento completato e in modalità solo scaricamento"
+msgstr "Scaricamento completato e modalità solo scaricamento richiesta"
 
 #: apt-private/private-install.cc
 msgid "--fix-missing and media swapping is not currently supported"
-msgstr "--fix-missing su supporti estraibili non è ancora supportato"
+msgstr "--fix-missing su supporti estraibili non è attualmente supportato"
 
 #: apt-private/private-install.cc
 msgid "Unable to correct missing packages."
@@ -2077,12 +2192,19 @@ msgid ""
 "shouldn't happen. Please file a bug report against apt."
 msgstr ""
 "Sembra che AutoRemover abbia rovinato qualcosa e questo\n"
-"non doveva accadere. Segnalare un bug riguardo apt."
+"non doveva accadere. Si consiglia di segnalare un bug di apt."
 
 #: apt-private/private-install.cc
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Errore interno, AutoRemover ha rovinato qualche cosa"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Usare \"%s\" per rimuoverlo."
+msgstr[1] "Usare \"%s\" per rimuoverli."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2107,17 +2229,6 @@ msgstr[1] ""
 "%lu pacchetti sono stati installati automaticamente e non sono più "
 "richiesti.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Usare \"%s\" per rimuoverlo."
-msgstr[1] "Usare \"%s\" per rimuoverli."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "I seguenti pacchetti aggiuntivi saranno inoltre installati:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Pacchetti suggeriti:"
@@ -2126,11 +2237,16 @@ msgstr "Pacchetti suggeriti:"
 msgid "Recommended packages:"
 msgstr "Pacchetti raccomandati:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "I seguenti pacchetti aggiuntivi saranno inoltre installati:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
 msgstr ""
-"Viene saltato %s poiché è già installato e l'aggiornamento non è impostato.\n"
+"Viene saltato %s poiché è già installato e non è stato richiesto "
+"l'aggiornamento.\n"
 
 #: apt-private/private-install.cc
 #, c-format
@@ -2153,21 +2269,22 @@ msgstr "%s è già alla versione più recente (%s).\n"
 #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
 msgid "%s set to manually installed.\n"
-msgstr "È stato impostato %s per l'installazione manuale.\n"
+msgstr "%s è stato contrassegnato come installato manualmente.\n"
 
 #: apt-private/private-install.cc
 #, c-format
 msgid "Selected version '%s' (%s) for '%s'\n"
-msgstr "Versione \"%s\" (%s) selezionata per \"%s\"\n"
+msgstr "Selezionata la versione \"%s\" (%s) per \"%s\"\n"
 
 #: apt-private/private-install.cc
 #, c-format
 msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
-msgstr "Versione \"%s\" (%s) selezionata per \"%s\" per via di \"%s\"\n"
+msgstr "Selezionata la versione \"%s\" (%s) per \"%s\" per via di \"%s\"\n"
 
+# (ndt) da ricontrollare
 #: apt-private/private-list.cc
 msgid "Listing"
-msgstr "Elencazione"
+msgstr "Elenco"
 
 #: apt-private/private-list.cc
 #, c-format
@@ -2187,9 +2304,9 @@ msgid ""
 "      so don't depend on the relevance to the real current situation!\n"
 msgstr ""
 "Nota: questa è solo una simulazione.\n"
-"      %s necessita dei privilegi di root per la normale esecuzione.\n"
-"      Inoltre, il meccanismo di blocco non è attivato e non è quindi\n"
-"      utile dare importanza a tutto ciò per una situazione reale.\n"
+"      %s necessita dei privilegi di root per l’esecuzione reale.\n"
+"      Tuttavia il meccanismo di blocco non è attivo,\n"
+"      quindi questo non è un problema in questa precisa situazione.\n"
 
 #: apt-private/private-output.cc apt-private/private-show.cc
 msgid "unknown"
@@ -2206,7 +2323,7 @@ msgstr "[installato, locale]"
 
 #: apt-private/private-output.cc
 msgid "[installed,auto-removable]"
-msgstr "[installato, auto-rimovibile]"
+msgstr "[installato, rimovibile automaticamente]"
 
 #: apt-private/private-output.cc
 msgid "[installed,automatic]"
@@ -2259,14 +2376,43 @@ msgstr " oppure"
 msgid "The following packages have unmet dependencies:"
 msgstr "I seguenti pacchetti hanno dipendenze non soddisfatte:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Dipendenze non soddisfatte:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "I seguenti pacchetti NUOVI saranno installati:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Installazione:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Installazione dipendenze: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "RIMOZIONE:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "I seguenti pacchetti saranno RIMOSSI:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+"I seguenti aggiornamenti sono stati posticipati per via dello scaglionamento:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Non ancora aggiornati per via dello scaglionamento:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Non aggiornati:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "I seguenti pacchetti sono stati mantenuti alla versione attuale:"
@@ -2275,10 +2421,22 @@ msgstr "I seguenti pacchetti sono stati mantenuti alla versione attuale:"
 msgid "The following packages will be upgraded:"
 msgstr "I seguenti pacchetti saranno aggiornati:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Aggiornamento:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "RETROCESSIONE:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "I seguenti pacchetti saranno RETROCESSI:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Modifica di pacchetti bloccati:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "I seguenti pacchetti bloccati saranno cambiati:"
@@ -2294,29 +2452,53 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 "ATTENZIONE: i seguenti pacchetti essenziali stanno per essere rimossi.\n"
-"Questo non dovrebbe essere fatto a meno che non si sappia esattamente cosa "
+"Questo NON dovrebbe essere fatto a meno che non si sappia esattamente cosa "
 "si sta facendo."
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Riepilogo:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu aggiornati, %lu installati, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Aggiornamento: %lu, Installazione: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstallati, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Reinstallazione: %lu"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu retrocessi, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Retrocessione: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu da rimuovere e %lu non aggiornati.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Rimozione: %lu, Non aggiornati: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2344,17 +2526,18 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
 #: apt-private/private-search.cc
 msgid "You must give at least one search pattern"
-msgstr "È necessario specificare almeno un modello per la ricerca"
+msgstr "È necessario specificare almeno un criterio di ricerca"
 
+# (ndt) Full Text potrebbe essere da lasciare in inglese?
 #: apt-private/private-search.cc
 msgid "Full Text Search"
-msgstr "Ricerca sul testo"
+msgstr "Ricerca nel testo"
 
 #: apt-private/private-show.cc
 #, c-format
@@ -2380,7 +2563,7 @@ msgstr ""
 #. Show any packages have explicit pins
 #: apt-private/private-show.cc
 msgid "Pinned packages:"
-msgstr "Pacchetti con gancio:"
+msgstr "Pacchetti in evidenza (pin):"
 
 #. Print the package name and the version we are forcing to
 #: apt-private/private-show.cc
@@ -2407,7 +2590,7 @@ msgstr "  Tabella versione:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "scaglionato"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2463,20 +2646,20 @@ msgid ""
 msgstr ""
 "Utilizzare:\n"
 "%s\n"
-"per recuperare gli ultimi (forse non rilasciati) aggiornamenti del "
+"per recuperare gli ultimi aggiornamenti (potenzialmente non rilasciati) del "
 "pacchetto.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "Il pacchetto \"%s\" già scaricato viene saltato\n"
+msgstr "Il file \"%s\" già scaricato viene saltato\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-source.cc
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
-msgstr "È necessario recuperare %sB/%sB di sorgenti.\n"
+msgstr "È necessario scaricare %sB/%sB di sorgenti.\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
@@ -2488,16 +2671,16 @@ msgstr "È necessario scaricare %sB di sorgenti.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid "Fetch source %s\n"
-msgstr "Recupero sorgente %s\n"
+msgstr "Scaricamento sorgente %s\n"
 
 #: apt-private/private-source.cc
 msgid "Failed to fetch some archives."
-msgstr "Recupero di alcuni archivi non riuscito."
+msgstr "Lo scaricamento di alcuni archivi è fallito."
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
-msgstr "Estrazione del pacchetto sorgente già estratto in %s saltata\n"
+msgstr "Saltata l'estrazione del pacchetto sorgente già estratto in %s\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2511,60 +2694,64 @@ msgstr "Verificare che il pacchetto \"dpkg-dev\" sia installato.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid "Build command '%s' failed.\n"
-msgstr "Comando \"%s\" di generazione non riuscito.\n"
+msgstr "Comando \"%s\" di compilazione non riuscito.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unable to get build-dependency information for %s"
-msgstr "Impossibile ottenere informazioni di dipendenza di generazione per %s"
+msgstr ""
+"Impossibile ottenere informazioni sulle dipendenze di compilazione per %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "%s has no build depends.\n"
-msgstr "%s non ha dipendenze di generazione.\n"
+msgstr "%s non ha dipendenze di compilazione.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Informazioni sull'architettura non disponibili per %s. Consultare apt."
-"conf(5) APT::Architectures per l'impostazione"
+"Informazioni sull'architettura non disponibili per %s. Consultare "
+"apt.conf(5) APT::Architectures per l'impostazione"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 "È necessario specificare almeno un pacchetto di cui controllare le "
-"dipendenze di generazione"
+"dipendenze di compilazione"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"Operatore non valido \"%c\" all'offset %d, si intendeva \"%c%c\" oppure "
+"\"%c=\"? - in: %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Note, using directory '%s' to get the build dependencies\n"
 msgstr ""
-"Viene usata la directory \"%s\" per recuperare le dipendenze di generazione\n"
+"Nota, viene usata la directory \"%s\" per recuperare le dipendenze di "
+"compilazione\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Note, using file '%s' to get the build dependencies\n"
 msgstr ""
 "Nota, viene usato il file \"%s\" per recuperare le dipendenze di "
-"generazione\n"
+"compilazione\n"
 
 #: apt-private/private-source.cc
 msgid "Failed to process build dependencies"
-msgstr "Elaborazione delle dipendenze di generazione non riuscita"
+msgstr "Elaborazione delle dipendenze di compilazione non riuscita"
 
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Failed to parse %s. Edit again? "
-msgstr "Analisi di %s non riuscita: modificare nuovamente?"
+msgstr "Analisi di %s non riuscita. Modificare nuovamente?"
 
 #: apt-private/private-sources.cc
 #, c-format
@@ -2572,6 +2759,11 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 "Il proprio file \"%s\" è stato modificato: eseguire \"apt-get update\".\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2591,6 +2783,43 @@ msgstr ""
 "È preferibile usare %s invece di incorporare le informazioni di accesso "
 "direttamente nella voce %s di \"%s\""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Clausola Signed-By mancante nella voce %s per \"%s\""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Consultare la pagina man apt-secure(8) per la creazione di repository e la "
+"configurazione utente."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2638,7 +2867,13 @@ msgstr "  Pacchetti virtuali misti: "
 
 #: cmdline/apt-cache.cc
 msgid "  Missing: "
-msgstr "  Mancante: "
+msgstr "  Mancanti: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Totale versioni distinte: "
 
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
@@ -2662,7 +2897,7 @@ msgstr "Totale relazioni desc/file: "
 
 #: cmdline/apt-cache.cc
 msgid "Total Provides mappings: "
-msgstr "Totale corrispondenze fornite: "
+msgstr "Totale corrispondenze Provides fornite: "
 
 #: cmdline/apt-cache.cc
 msgid "Total globbed strings: "
@@ -2698,21 +2933,19 @@ msgstr ""
 "\n"
 "apt-cache interroga e visualizza informazioni riguardo ai pacchetti "
 "installati\n"
-"e che possono essere installati. Funziona esclusivamente con i dati "
-"acquisiti\n"
-"nella cache locale tramite il comando \"update\" di, per esempio, apt-get. "
-"Le\n"
-"informazioni potrebbero quindi non essere aggiornate in base alla data\n"
+"e installabili. Funziona esclusivamente con i dati acquisiti\n"
+"nella cache locale tramite il comando \"update\" di, per esempio, apt-get.\n"
+"Le informazioni potrebbero quindi non essere aggiornate, in base alla data\n"
 "dell'ultimo aggiornamento, ma apt-cache può funzionare comunque anche in\n"
-"assenza delle sorgenti configurate (mancanza di connessione di rete).\n"
+"assenza delle sorgenti configurate (es. mancanza di connessione di rete).\n"
 
 #: cmdline/apt-cache.cc
 msgid "Show source records"
-msgstr "Mostra i campi dei sorgenti"
+msgstr "Mostra le voci relative alle sorgenti"
 
 #: cmdline/apt-cache.cc
 msgid "Search the package list for a regex pattern"
-msgstr "Cerca nell'elenco dei pacchetti un'espressione regolare"
+msgstr "Cerca nell'elenco dei pacchetti in base a un'espressione regolare"
 
 #: cmdline/apt-cache.cc
 msgid "Show raw dependency information for a package"
@@ -2724,7 +2957,7 @@ msgstr "Mostra informazioni di dipendenza all'incontrario per un pacchetto"
 
 #: cmdline/apt-cache.cc
 msgid "Show a readable record for the package"
-msgstr "Mostra un campo leggibile per il pacchetto specificato"
+msgstr "Mostra una nota leggibile per il pacchetto"
 
 #: cmdline/apt-cache.cc
 msgid "List the names of all packages in the system"
@@ -2846,7 +3079,7 @@ msgstr "Impossibile trovare il pacchetto %s"
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
 msgid "%s set to automatically installed.\n"
-msgstr "È stato impostato %s per l'installazione automatica.\n"
+msgstr "%s è stato contrassegnato come installato automaticamente.\n"
 
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
 msgid ""
@@ -2858,7 +3091,7 @@ msgstr ""
 
 #: cmdline/apt-get.cc
 msgid "Internal error, problem resolver broke stuff"
-msgstr "Errore interno, \"problem resolver\" ha rovinato qualcosa"
+msgstr "Errore interno, il \"problem resolver\" ha rovinato qualcosa"
 
 #: cmdline/apt-get.cc
 msgid "Supported modules:"
@@ -2895,19 +3128,19 @@ msgstr "Esegue un aggiornamento dei pacchetti installati"
 
 #: cmdline/apt-get.cc
 msgid "Install new packages (pkg is libc6 not libc6.deb)"
-msgstr "Installa nuovi pacchetti (PKG è libc6 non libc6.deb)"
+msgstr "Installa nuovi pacchetti (PACCHETTO è libc6 non libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Installa nuovamente pacchetti (PKG è libc6 non libc6.deb)"
+msgstr "Reinstalla pacchetti (PACCHETTO è libc6 non libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
-msgstr "Rimuove i pacchetti"
+msgstr "Rimuove pacchetti"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages and config files"
-msgstr "Rimuove i pacchetti e la loro configurazione"
+msgstr "Rimuove pacchetti e relativi file di configurazione"
 
 #: cmdline/apt-get.cc
 msgid "Remove automatically all unused packages"
@@ -2923,13 +3156,11 @@ msgstr "Segue le selezioni di dselect"
 
 #: cmdline/apt-get.cc
 msgid "Configure build-dependencies for source packages"
-msgstr "Configura le dipendenze di generazione per i pacchetti sorgente"
+msgstr "Configura le dipendenze di compilazione per i pacchetti sorgente"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Generazione albero delle dipendenze"
+msgstr "Risolve stringhe di dipendenze"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
@@ -2945,7 +3176,7 @@ msgstr "Verifica che non ci siano dipendenze insoddisfatte"
 
 #: cmdline/apt-get.cc
 msgid "Download source archives"
-msgstr "Scarica i pacchetti sorgente"
+msgstr "Scarica pacchetti sorgente"
 
 #: cmdline/apt-get.cc
 msgid "Download the binary package into the current directory"
@@ -2983,16 +3214,16 @@ msgid ""
 msgstr ""
 "Uso: apt-helper [OPZIONI] COMANDO\n"
 "     apt-helper [OPZIONI] cat-file FILE ...\n"
-"     apt-helper [OPZIONI] download-file URI PERCORSO\n"
+"     apt-helper [OPZIONI] download-file URI PERCORSO_DESTINAZIONE\n"
 "\n"
 "apt-helper integra una serie di comandi utilizzabili da programmi shell "
 "per,\n"
-"per esempio, sfruttare la stessa configurazione proxy o l'acquisizione del\n"
-"sistema allo stesso modo di APT.\n"
+"per esempio, sfruttare la stessa configurazione proxy o lo stesso sistema\n"
+"di acquisizione  di APT.\n"
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
-msgstr "Scarica l'URI fornito in percorso"
+msgstr "Scarica l'URI fornito in PERCORSO_DESTINAZIONE"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
@@ -3002,6 +3233,12 @@ msgstr "Cerca un record SRV (per es. _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "Concatena i file con decompressione automatica"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Si è verificato un problema nel creare l'hash del file"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "Rileva proxy utilizzando apt.conf"
@@ -3016,7 +3253,7 @@ msgstr "Rilascia i privilegi prima di eseguire il comando fornito"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "Analizza un pattern"
 
 #: cmdline/apt-internal-planner.cc
 msgid ""
@@ -3029,9 +3266,9 @@ msgstr ""
 "Uso: apt-internal-planner\n"
 "\n"
 "apt-internal-planner è un'interfaccia per l'utilizzo del pianificatore di\n"
-"installazione interno come pianificatore esterno per eseguire il debug "
-"degli\n"
-"strumenti APT.\n"
+"installazione interno degli strumenti APT come se fosse un pianificatore "
+"esterno,\n"
+"principalmente a scopo di debug.\n"
 
 #: cmdline/apt-internal-solver.cc
 msgid ""
@@ -3044,23 +3281,23 @@ msgstr ""
 "Uso: apt-internal-solver\n"
 "\n"
 "apt-internal-solver è un'interfaccia per l'utilizzo del resolver interno\n"
-"come resolver esterno per eseguire il debug degli strumenti APT.\n"
-"\n"
+"degli strumenti APT come se fosse un resolver esterno,\n"
+"principalmente a scopo di debug.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "%s can not be marked as it is not installed.\n"
-msgstr "%s non può essere segnato perché non è installato.\n"
+msgstr "%s non può essere contrassegnato perché non è installato.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "%s was already set to manually installed.\n"
-msgstr "%s è già stato impostato come installato manualmente.\n"
+msgstr "%s è già stato contrassegnato come installato manualmente.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "%s was already set to automatically installed.\n"
-msgstr "%s è già stato impostato come installato automaticamente.\n"
+msgstr "%s è già stato contrassegnato come installato automaticamente.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
@@ -3068,12 +3305,13 @@ msgstr "Nessuna modifica necessaria"
 
 #: cmdline/apt-mark.cc
 msgid "The following packages will be marked as automatically installed:"
-msgstr "I seguenti pacchetti verranno segnati come installati automaticamente:"
+msgstr ""
+"I seguenti pacchetti verranno contrassegnati come installati automaticamente:"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "%s was already set on hold.\n"
-msgstr "%s è già stato impostato come bloccato.\n"
+msgstr "%s è già stato contrassegnato come bloccato.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -3087,7 +3325,7 @@ msgstr "Esecuzione di dpkg non riuscita. È stato lanciato come root?"
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "%s set on hold.\n"
-msgstr "%s impostato come bloccato.\n"
+msgstr "%s contrassegnato come bloccato.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -3120,30 +3358,31 @@ msgid ""
 msgstr ""
 "Uso: apt-mark [OPZIONI] {auto|manual} PACCHETTO1 [PACCHETTO2 ...]\n"
 "\n"
-"apt-mark è una semplice interfaccia a riga di comando per segnalare i "
+"apt-mark è una semplice interfaccia a riga di comando per contrassegnare i "
 "pacchetti\n"
 "come installati manualmente o automaticamente. Può essere utilizzato anche "
 "per\n"
 "manipolare gli stati di selezione dei pacchetti tramite dpkg(1) e per "
 "elencare\n"
-"tutti i pacchetti con o senza alcune segnalazioni.\n"
+"tutti i pacchetti con o senza un determinato contrassegno.\n"
 
 #: cmdline/apt-mark.cc
 msgid "Mark the given packages as automatically installed"
-msgstr "Segna i pacchetti forniti come installati automaticamente"
+msgstr "Contrassegna i pacchetti forniti come installati automaticamente"
 
 #: cmdline/apt-mark.cc
 msgid "Mark the given packages as manually installed"
-msgstr "Segna i pacchetti forniti come installati manualmente"
+msgstr "Contrassegna i pacchetti forniti come installati manualmente"
 
 #: cmdline/apt-mark.cc
 msgid "Mark all dependencies of meta packages as automatically installed."
 msgstr ""
-"Segna tutte le dipendenze dei meta pacchetti come installate automaticamente"
+"Contrassegna tutte le dipendenze dei metapacchetti come installate "
+"automaticamente"
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
-msgstr "Segna un pacchetto come bloccato a una vecchia versione"
+msgstr "Contrassegna un pacchetto come bloccato a una vecchia versione"
 
 #: cmdline/apt-mark.cc
 msgid "Unset a package set as held back"
@@ -3197,8 +3436,8 @@ msgstr ""
 "apt è un gestore di pacchetti a riga di comando che fornisce comandi per la\n"
 "gestione, la ricerca e la ricerca di informazioni sui pacchetti. Dispone\n"
 "delle stesse funzionalità degli strumenti APT specifici (come apt-get e\n"
-"apt-cache), abilitando opzioni aggiuntive utili per un utilizzo "
-"interattivo.\n"
+"apt-cache), ma per impostazione predefinita abilita opzioni più adatte\n"
+"ad un utilizzo interattivo.\n"
 
 #. query
 #: cmdline/apt.cc
@@ -3220,15 +3459,13 @@ msgstr "Installa pacchetti"
 
 #: cmdline/apt.cc
 msgid "reinstall packages"
-msgstr "Installa nuovamente pacchetti"
+msgstr "Reinstalla pacchetti"
 
 #: cmdline/apt.cc
 msgid "remove packages"
 msgstr "Rimuove pacchetti"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
 msgstr "Rimuove automaticamente i pacchetti inutilizzati"
 
@@ -3239,15 +3476,11 @@ msgstr "Aggiorna l'elenco dei pacchetti disponibili"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by installing/upgrading packages"
-msgstr ""
-"Esegue l'avanzamento di versione del sistema installando e aggiornando i "
-"pacchetti"
+msgstr "Aggiorna il sistema installando e aggiornando pacchetti"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by removing/installing/upgrading packages"
-msgstr ""
-"Esegue l'avanzamento di versione del sistema rimuovendo, installando e "
-"aggiornando i pacchetti"
+msgstr "Aggiorna il sistema rimuovendo, installando e aggiornando pacchetti"
 
 #. misc
 #: cmdline/apt.cc
@@ -3255,10 +3488,12 @@ msgid "edit the source information file"
 msgstr "Modifica il file sulle informazioni delle sorgenti"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Building dependency tree"
+msgid "modernize .list files to .sources files"
+msgstr ""
+
+#: cmdline/apt.cc
 msgid "satisfy dependency strings"
-msgstr "Generazione albero delle dipendenze"
+msgstr "Risolve stringhe di dipendenze"
 
 #: dselect/install
 msgid "Bad default setting!"
@@ -3277,28 +3512,27 @@ msgstr "Eliminare tutti i file .deb precedentemente scaricati?"
 # at only 80 characters per line, if possible.
 #: dselect/install
 msgid "Some errors occurred while unpacking. Packages that were installed"
-msgstr "Si sono verificati alcuni errori nell'estrazione. Verrà tentata la"
+msgstr ""
+"Si sono verificati alcuni errori nell'estrazione. I pacchetti installati"
 
 #: dselect/install
 msgid "will be configured. This may result in duplicate errors"
-msgstr ""
-"configurazione dei pacchetti installati. Questo potrebbe generare errori"
+msgstr "verranno configurati. Questo potrebbe generare errori duplicati "
 
 #: dselect/install
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
-msgstr ""
-"duplicati o causati da dipendenze mancanti. Ciò non causa problemi, solo gli"
+msgstr "o causati da dipendenze mancanti. Questo non è un problema, solo gli"
 
 #: dselect/install
 msgid ""
 "above this message are important. Please fix them and run [I]nstall again"
 msgstr ""
-"errori precedenti sono importanti. Correggerli e rieseguire l'installazione "
+"errori precedenti sono importanti. Correggerli e rilanciare l'installazione "
 "[I]"
 
 #: dselect/update
 msgid "Merging available information"
-msgstr "Unione delle informazioni disponibili"
+msgstr "Composizione informazioni disponibili"
 
 #: ftparchive/apt-ftparchive.cc
 msgid "Package extension list is too long"
@@ -3461,7 +3695,7 @@ msgstr "Algoritmo di compressione \"%s\" sconosciuto"
 msgid "Compressed output %s needs a compression set"
 msgstr "L'output compresso %s necessita di un insieme di compressione"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Creazione di una pipe IPC verso il sottoprocesso non riuscita"
 
@@ -3581,25 +3815,26 @@ msgstr " Raggiunto il limite di DeLink di %sB.\n"
 msgid "Archive had no package field"
 msgstr "L'archivio non ha un campo \"package\""
 
+# (ndt) non mi è chiaro cosa siano overrride entry, source override entry, binary override entry
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s non ha un campo override\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s non ha un campo override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  il responsabile di %s è %s non %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  il responsabile di %.*s è %.*s non %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s non ha un campo source override\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s non ha un campo sorgente override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s non ha neppure un campo binario override\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s non ha neanche un campo binario override\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3637,12 +3872,12 @@ msgstr "Header dati non corretto"
 msgid "Connection failed"
 msgstr "Connessione non riuscita"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
-"Il file ha una dimensione non attesa (%llu != %llu). Sincronizzazione del "
-"mirror in corso?"
+"Dimensione del file diversa da quella attesa (%llu != %llu). "
+"Sincronizzazione del mirror in corso?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3683,7 +3918,7 @@ msgstr "Impossibile smontare il CD-ROM in %s, potrebbe essere ancora in uso."
 msgid "Disk not found."
 msgstr "Disco non trovato."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "File non trovato"
 
@@ -3719,7 +3954,7 @@ msgstr "Impossibile creare un socket per %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Impossibile iniziare la connessione a %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Non riuscito"
 
@@ -3734,9 +3969,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 "Impossibile connettersi a %s:%s (%s), tempo esaurito per la connessione"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Connessione a %s"
@@ -3775,146 +4008,15 @@ msgstr "Esecuzione di stat non riuscita"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI non valido, gli URI locali non devono iniziare con //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Accesso in corso"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Impossibile determinare il nome del nodo"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Impossibile determinare il nome locale"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Il server ha rifiutato la connessione e riporta: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER non riuscito, il server riporta: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS non riuscito, il server riporta: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"È stato specificato un server proxy, ma nessuno script di accesso: Acquire::"
-"ftp::ProxyLogin è vuoto."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-"Comando dello script di accesso \"%s\" non riuscito, il server riporta: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE non riuscito, il server riporta: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Connessione scaduta"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Il server ha chiuso la connessione"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Una risposta ha superato le dimensioni del buffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protocollo danneggiato"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Impossibile creare un socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-"Impossibile connettersi al socket dati, tempo esaurito per la connessione"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Impossibile connettersi al socket passivo."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "Impossibile ottenere un socket in ascolto con getaddrinfo()"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Impossibile eseguire bind() su un socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Impossibile eseguire listen() su un socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Impossibile determinare il nome del socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Impossibile inviare il comando PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Famiglia di indirizzamento %u (AF_*) sconosciuta"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT non riuscito, il server riporta: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Connessione al socket dati terminata"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Impossibile accettare connessioni"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Si è verificato un problema nel creare l'hash del file"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Impossibile recuperare il file, il server riporta: \"%s\""
+msgid "untrusted public key algorithm: %s"
+msgstr "algoritmo pubblico inaffidabile: %s"
 
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Socket dati terminato"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Trasferimento dati non riuscito, il server riporta: \"%s\""
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Interrogazione"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Impossibile invocare "
+msgid "%s will be deprecated in a future release"
+msgstr "%s verrà deprecato in una futura release"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3937,27 +4039,25 @@ msgstr ""
 "della chiave."
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Impossibile eseguire \"apt-key\" per verificare la firma (forse gnupg non è "
-"installato)"
+"installato?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Errore sconosciuto durante l'esecuzione di apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr "La firma con chiave %s utilizza un algoritmo di digest debole (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "La firma con chiave %s utilizza un algoritmo debole (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3989,20 +4089,155 @@ msgstr "Select non riuscita"
 
 #: methods/http.cc
 msgid "Connection timed out"
-msgstr "Connessione terminata"
+msgstr "Connessione scaduta"
+
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Si è verificato un problema nel creare l'hash del file"
 
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Impostazione della data di modifica non riuscita"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Connessione chiusa prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "File vuoti non possono essere archivi validi"
 
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "La chiave è conservata nel portachiavi obsoleto \"trusted.gpg\" (%s), per "
+#~ "dettagli si veda la sezione DEPRECATO in apt-key(8)"
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Il metodo \"%s\" non è supportato ed è disabilitato per impostazione "
+#~ "predefinita. Valutare se passare a http(s). Per abilitarlo nuovamente, "
+#~ "impostare Dir::Bin::Methods::%s a \"%s\"."
+
+#~ msgid "Logging in"
+#~ msgstr "Accesso in corso"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Impossibile determinare il nome del nodo"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Impossibile determinare il nome locale"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Il server ha rifiutato la connessione e riporta: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER non riuscito, il server riporta: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS non riuscito, il server riporta: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "È stato specificato un server proxy, ma nessuno script di accesso: "
+#~ "Acquire::ftp::ProxyLogin è vuoto."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Comando dello script di accesso \"%s\" non riuscito, il server riporta: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE non riuscito, il server riporta: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Connessione scaduta"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Il server ha chiuso la connessione"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Una risposta ha superato le dimensioni del buffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protocollo danneggiato"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Impossibile creare un socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Impossibile connettersi al socket dati, tempo esaurito per la connessione"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Impossibile connettersi al socket passivo."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "Impossibile ottenere un socket in ascolto con getaddrinfo()"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Impossibile eseguire bind() su un socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Impossibile eseguire listen() su un socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Impossibile determinare il nome del socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Impossibile inviare il comando PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Famiglia di indirizzamento %u (AF_*) sconosciuta"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT non riuscito, il server riporta: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Connessione al socket dati scaduta"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Impossibile accettare connessioni"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Impossibile recuperare il file, il server riporta: \"%s\""
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Socket dati scaduto"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Trasferimento dati non riuscito, il server riporta: \"%s\""
+
+#~ msgid "Query"
+#~ msgstr "Interrogazione"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Impossibile invocare "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Connessione chiusa prematuramente"
+
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installati: %sB\n"
+
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Modifica pacchetti bloccati:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sì, esegui come da richiesta."
 
diff --git a/po/ja.po b/po/ja.po
index 4cc71c8..7ad2000 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 2.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2022-08-14 14:30+0900\n"
 "Last-Translator: Hideki Yamane <henrich@debian.org>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
@@ -60,11 +60,12 @@ msgstr "リポジトリ %s には Release ファイルがなくなっていま
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"通常は許可されませんが、オプション Acquire::"
-"AllowDowngradeToInsecureRepositories が上書きするために指定されました。"
+"通常は許可されませんが、オプション "
+"Acquire::AllowDowngradeToInsecureRepositories が上書きするために指定されまし"
+"た。"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -217,8 +218,7 @@ msgstr ""
 "ディストリビューションが競合しています: %s (%s を期待していたのに %s を取得し"
 "ました)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -229,7 +229,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -248,6 +248,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s の取得に失敗しました  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -268,13 +275,6 @@ msgstr "'%2$s' のバージョン '%1$s' をダウンロードするソースが
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s=%s のため変更履歴が利用できません"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -682,6 +682,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "文法エラー %s:%u: ファイルの最後に余計なゴミがあります"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -794,11 +818,11 @@ msgstr "子プロセス %s がエラーコード (%u) を返しました"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "子プロセス %s が予期せず終了しました"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "読み込みエラー"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "書き込みエラー"
 
@@ -1126,6 +1150,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "ロックされていません"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1316,6 +1346,16 @@ msgstr "解決を受け取る準備"
 msgid "External solver failed without a proper error message"
 msgstr "外部ソルバが適切なエラーメッセージなしに失敗しました"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "アップグレードパッケージを検出しています"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "依存関係総数: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "外部ソルバを実行"
@@ -1393,8 +1433,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"'%s' の即時設定は動作しません。詳細については man 5 apt.conf の APT::"
-"Immediate-Configure の項を参照してください。(%d)"
+"'%s' の即時設定は動作しません。詳細については man 5 apt.conf の "
+"APT::Immediate-Configure の項を参照してください。(%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1621,10 +1661,6 @@ msgstr ""
 "いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視され"
 "るか、古いものが代わりに使われます。"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "アップグレードパッケージを検出しています"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1902,6 +1938,19 @@ msgstr "以下の情報がこの問題を解決するために役立つかもし
 msgid "Broken packages"
 msgstr "壊れたパッケージ"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "%s は削除で選択されました。\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1949,6 +1998,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "おっと、サイズがマッチしません。apt@packages.debian.org にメールしてください"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB / %sB\n"
+msgstr "ダウンロード失敗"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1956,6 +2011,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "%2$sB 中 %1$sB のアーカイブを取得する必要があります。\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB\n"
+msgstr "ダウンロード失敗"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1963,13 +2024,55 @@ msgstr "%2$sB 中 %1$sB のアーカイブを取得する必要があります
 msgid "Need to get %sB of archives.\n"
 msgstr "%sB のアーカイブを取得する必要があります。\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "この操作後に追加で %sB のディスク容量が消費されます。\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "格納されたラベル: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1987,6 +2090,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "続行しますか?"
@@ -2047,6 +2158,12 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "内部エラー、AutoRemover が何かを破壊しました"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "これを削除するには '%s' を利用してください。"
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2065,16 +2182,6 @@ msgstr[0] ""
 "%lu つのパッケージが自動でインストールされましたが、もう必要とされていませ"
 "ã‚“:\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "これを削除するには '%s' を利用してください。"
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "以下の追加パッケージがインストールされます:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "提案パッケージ:"
@@ -2083,6 +2190,10 @@ msgstr "提案パッケージ:"
 msgid "Recommended packages:"
 msgstr "推奨パッケージ:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "以下の追加パッケージがインストールされます:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2217,14 +2328,52 @@ msgstr " または"
 msgid "The following packages have unmet dependencies:"
 msgstr "以下のパッケージには満たせない依存関係があります:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Building dependency tree"
+msgid "Unsatisfied dependencies:"
+msgstr "依存関係ツリーを作成しています"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "以下のパッケージが新たにインストールされます:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s をインストールしています"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "依存関係総数: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "以下のパッケージは「削除」されます:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "以下のパッケージは保留されます:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "以下のパッケージは保留されます:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "以下のパッケージは保留されます:"
@@ -2233,10 +2382,24 @@ msgstr "以下のパッケージは保留されます:"
 msgid "The following packages will be upgraded:"
 msgstr "以下のパッケージはアップグレードされます:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "以下のパッケージは「ダウングレード」されます:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Pin されたパッケージ:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "以下の変更禁止パッケージは変更されます:"
@@ -2254,26 +2417,52 @@ msgstr ""
 "警告: 以下の不可欠パッケージが削除されます。\n"
 "何をしようとしているか本当にわかっていない場合は、実行してはいけません!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "アップグレード: %lu 個、新規インストール: %lu 個、"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s をインストールしています"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "再インストール: %lu 個、"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s をインストールしています"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "ダウングレード: %lu 個、"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "削除: %lu 個、保留: %lu 個。\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2301,7 +2490,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2483,11 +2672,11 @@ msgstr "%s にはビルド依存情報が指定されていません。\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"%s に利用可能なアーキテクチャ情報がありません。セットアップのために apt."
-"conf(5) の APT::Architectures を参照してください。"
+"%s に利用可能なアーキテクチャ情報がありません。セットアップのために "
+"apt.conf(5) の APT::Architectures を参照してください。"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2525,6 +2714,11 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 "'%s' ファイルが変更されています。「apt-get update」を実行してください。\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2542,6 +2736,43 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してくだ"
+"さい。"
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2588,6 +2819,12 @@ msgstr "  複合仮想パッケージ: "
 msgid "  Missing: "
 msgstr "  欠落: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "個別バージョン総数: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "個別バージョン総数: "
@@ -2948,6 +3185,12 @@ msgstr "SRV レコードを検索 (例えば _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "自動解凍とファイル結合"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "ファイルのハッシュでの問題"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "apt.conf を使ってプロキシを検出する"
@@ -3191,6 +3434,10 @@ msgstr "パッケージを削除/インストール/更新してシステムを
 msgid "edit the source information file"
 msgstr "ソース情報ファイルを編集"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Building dependency tree"
@@ -3391,7 +3638,7 @@ msgstr "'%s' は未知の圧縮アルゴリズムです"
 msgid "Compressed output %s needs a compression set"
 msgstr "圧縮出力 %s には圧縮セットが必要です"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "子プロセスへの IPC パイプの作成に失敗しました"
 
@@ -3510,23 +3757,23 @@ msgstr "アーカイブにパッケージフィールドがありませんでし
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s に override エントリがありません\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s に override エントリがありません\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %1$s メンテナは %3$s ではなく %2$s です\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %1$*2$s メンテナは %5$s ではなく %3$*4$s です\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s にソース override エントリがありません\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s にソース override エントリがありません\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s にバイナリ override エントリがありません\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s にバイナリ override エントリがありません\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3564,7 +3811,7 @@ msgstr "不正なヘッダです"
 msgid "Connection failed"
 msgstr "接続失敗"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3608,7 +3855,7 @@ msgstr "%s の CD-ROM は使用中のためアンマウントすることがで
 msgid "Disk not found."
 msgstr "ディスクが見つかりません。"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "ファイルが見つかりません"
 
@@ -3644,7 +3891,7 @@ msgstr "%s (f=%u t=%u p=%u) に対するソケットを作成できません"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "%s:%s (%s) への接続を開始できません。"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "失敗"
 
@@ -3658,9 +3905,7 @@ msgstr "%s:%s (%s) へ接続できませんでした。"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "%s:%s (%s) へ接続できませんでした。接続がタイムアウトしました"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "%s へ接続しています"
@@ -3698,144 +3943,15 @@ msgstr "状態の取得に失敗しました"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "不正な URI です。ローカルの URI は // で始まってはいけません"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "ログインしています"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "ピアネームを決定することができません"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "ローカルネームを決定することができません"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "サーバから接続を拒絶されました。応答: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER 失敗、サーバ応答: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS 失敗、サーバ応答: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"プロキシサーバが指定されていますが、ログインスクリプトが設定されていません。"
-"Acquire::ftp::ProxyLogin が空です。"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "ログインスクリプトのコマンド '%s' 失敗、サーバ応答: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE 失敗、サーバ応答: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "接続タイムアウト"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "サーバが接続を切断しました"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "レスポンスがバッファをオーバフローさせました。"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "プロトコルが壊れています"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "ソケットを作成できません"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "データソケットへ接続できませんでした。接続がタイムアウトしました"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "パッシブソケットに接続できません。"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo はリスニングソケットを取得できませんでした"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "ソケットをバインドできませんでした"
 
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "ソケットをリスンできませんでした"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "ソケットの名前を特定できませんでした"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "PORT コマンドを送信できません"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "未知のアドレスファミリ %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT に失敗しました。サーバ応答: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "データソケット接続タイムアウト"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "接続を accept できません"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "ファイルのハッシュでの問題"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "ファイルを取得できません。サーバ応答 '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "データソケットタイムアウト"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "データ転送に失敗しました。サーバ応答 '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "問い合わせ"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "呼び出せません"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3855,26 +3971,25 @@ msgid ""
 msgstr "内部エラー: 正しい署名ですが、鍵指紋を確定できません?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "署名を検証するための 'apt-key' の実行ができませんでした (gnupg はインストール"
 "されていますか?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key の実行中に未知のエラーが発生"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "鍵 %s による署名は弱い digest アルゴリズム (%s) を使用しています"
 
 #: methods/gpgv.cc
@@ -3907,18 +4022,134 @@ msgstr "select に失敗しました"
 msgid "Connection timed out"
 msgstr "接続タイムアウト"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "ファイルのハッシュでの問題"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "変更時刻の設定に失敗しました"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "途中で接続がクローズされました"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "空のファイルは有効なアーカイブと認められません"
 
+#~ msgid "Logging in"
+#~ msgstr "ログインしています"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "ピアネームを決定することができません"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "ローカルネームを決定することができません"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "サーバから接続を拒絶されました。応答: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER 失敗、サーバ応答: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS 失敗、サーバ応答: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "プロキシサーバが指定されていますが、ログインスクリプトが設定されていませ"
+#~ "ん。Acquire::ftp::ProxyLogin が空です。"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "ログインスクリプトのコマンド '%s' 失敗、サーバ応答: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE 失敗、サーバ応答: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "接続タイムアウト"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "サーバが接続を切断しました"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "レスポンスがバッファをオーバフローさせました。"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "プロトコルが壊れています"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "ソケットを作成できません"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "データソケットへ接続できませんでした。接続がタイムアウトしました"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "パッシブソケットに接続できません。"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo はリスニングソケットを取得できませんでした"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "ソケットをバインドできませんでした"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "ソケットをリスンできませんでした"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "ソケットの名前を特定できませんでした"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "PORT コマンドを送信できません"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "未知のアドレスファミリ %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT に失敗しました。サーバ応答: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "データソケット接続タイムアウト"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "接続を accept できません"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "ファイルを取得できません。サーバ応答 '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "データソケットタイムアウト"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "データ転送に失敗しました。サーバ応答 '%s'"
+
+#~ msgid "Query"
+#~ msgstr "問い合わせ"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "呼び出せません"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "途中で接続がクローズされました"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  インストールされているバージョン: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "以下の変更禁止パッケージは変更されます:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Yes, do as I say!"
 
diff --git a/po/km.po b/po/km.po
index 3b3a2aa..45a93e3 100644
--- a/po/km.po
+++ b/po/km.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2006-10-10 09:48+0700\n"
 "Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
 "Language-Team: Khmer <support@khmeros.info>\n"
@@ -55,8 +55,8 @@ msgstr "ថត​ %s ត្រូវបាន​បង្វែរ"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -186,8 +186,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -198,7 +197,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -217,6 +216,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "បរាជ័យ​ក្នុង​ការ​ទៅ​ប្រមូល​យក​ %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -237,13 +243,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "កំពុង​តភ្ជាប់​ទៅ​កាន់​ %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -626,6 +625,30 @@ msgstr "កំហុសវាក្យ​សម្ពន្ធ %s:%u ៖ សេ
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "កំហុស​វាក្យសម្ពន្ធ %s:%u ៖ សារឥតបានការ​បន្ថែម ដែលនៅខាងចុង​ឯកសារ"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -735,11 +758,11 @@ msgstr "ដំណើរការ​រង​ %s បានត្រឡប់​
 msgid "Sub-process %s exited unexpectedly"
 msgstr "ដំណើរការ​រង​ %s បានចេញ ដោយ​មិន​រំពឹង​ទុក​ "
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "ការអាន​មានកំហុស"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "ការសរសេរ​មានកំហុស"
 
@@ -1047,6 +1070,12 @@ msgstr "មិន​អាច​ចាក់​សោ​ថត​បញ្ជី
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1228,6 +1257,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "ភាព​អាស្រ័យ​សរុប ៖ "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1317,8 +1356,8 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 "ការរត់​ការដំឡើង​នេះ នឹងទាមទារ​ឲ្យយកកញ្ចប់ចាំបាច់ %s បណ្ដោះអាសន្ន ដោយសារ រង្វិល ការប៉ះទង្គិច/"
-"ភាពអាស្រ័យជាមុន ។ ជាញឹកញាប់គឺ មិនត្រឹមត្រូវ ប៉ុន្តែ ប្រសិនបើអ្នក​ពិតជាចង់ធ្វើវា ធ្វើឲ្យជម្រើស APT::"
-"Force-LoopBreak សកម្ម ។"
+"ភាពអាស្រ័យជាមុន ។ ជាញឹកញាប់គឺ មិនត្រឹមត្រូវ ប៉ុន្តែ ប្រសិនបើអ្នក​ពិតជាចង់ធ្វើវា ធ្វើឲ្យជម្រើស "
+"APT::Force-LoopBreak សកម្ម ។"
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
@@ -1526,10 +1565,6 @@ msgid ""
 msgstr ""
 "ឯកសារ​លិបិក្រម​មួយ​ចំនួន​បាន​បរាជ័យ​ក្នុង​ការ​​ទាញ​យក ​ពួកវាត្រូវបាន​មិន​អើពើ​ ឬ ប្រើ​​ឯកសារ​ចាស់​ជំនួសវិញ ​​។"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1798,6 +1833,18 @@ msgstr "ព័ត៌មាន​ដូចតទៅនេះ អាចជួយ
 msgid "Broken packages"
 msgstr "កញ្ចប់​ដែល​បាន​ខូច​"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1840,6 +1887,12 @@ msgstr "កំហុស​ខាងក្នុង​ ការ​រៀប​
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "យី អី​ក៏​ចម្លែង​ម្លេះ.. ទំហំ​មិន​ដូច​គ្នា​ឡើយ ។ សូម​ផ្ញើ​អ៊ីមែល​ទៅ apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  បាន​ដំឡើង ៖ "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1847,6 +1900,11 @@ msgstr "យី អី​ក៏​ចម្លែង​ម្លេះ.. ទំ
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "ត្រូវការ​​យក​ %sB/%sB នៃ​ប័ណ្ណសារ ។​\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1854,13 +1912,55 @@ msgstr "ត្រូវការ​​យក​ %sB/%sB នៃ​ប័ណ្ណ
 msgid "Need to get %sB of archives.\n"
 msgstr "ត្រូវ​ការយក​ %sB នៃ​ប័ណ្ណសារ ។\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "បន្ទាប់​ពី​ពន្លា​ %sB នៃ​ការ​បន្ថែម​​ទំហំ​ថាស​ត្រូវ​បាន​ប្រើ ។\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "បានទុក​ស្លាក ៖ %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1878,6 +1978,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 #, fuzzy
 msgid "Do you want to continue?"
@@ -1936,6 +2044,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "កំហុស​ខាងក្នុង អ្នក​ដោះស្រាយ​បញ្ហា​បានធ្វើឲ្យខូច​ឧបករណ៍"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1954,18 +2069,6 @@ msgid_plural ""
 msgstr[0] "កញ្ចប់​ថ្មី​ខាងក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង​ ៖"
 msgstr[1] "កញ្ចប់​ថ្មី​ខាងក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង​ ៖"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "កញ្ចប់​បន្ថែម​ដូចតទៅនេះ នឹងត្រូវបាន​ដំឡើង ៖"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​យោបល់ ៖"
@@ -1974,6 +2077,11 @@ msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​យោប
 msgid "Recommended packages:"
 msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​អនុសាសន៍ ៖"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "កញ្ចប់​បន្ថែម​ដូចតទៅនេះ នឹងត្រូវបាន​ដំឡើង ៖"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2103,14 +2211,51 @@ msgstr " ឬ"
 msgid "The following packages have unmet dependencies:"
 msgstr "កញ្ចប់​ខាងក្រោម​មាន​ភាពអាស្រ័យ​ដែល​ខុស​គ្នា ៖"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "បរាជ័យ​ក្នុងការ​តម្រូវចិត្តភាពអាស្រ័យ %s សម្រាប់ %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "កញ្ចប់​ថ្មី​ខាងក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង​ ៖"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "បាន​ដំឡើង %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "ភាព​អាស្រ័យ​សរុប ៖ "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "កញ្ចប់​ខាងក្រោម​នឹងត្រូវ​បាន​យកចេញ ៖"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖"
@@ -2119,10 +2264,24 @@ msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​
 msgid "The following packages will be upgraded:"
 msgstr "កញ្ចប់​ខាងក្រោម​នឹង​​ត្រូវ​បាន​​ធ្វើ​ឲ្យប្រសើ​ឡើង ៖"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "កញ្ចប់​ខាងក្រោម​នឹង​​ត្រូវ​បាន​បន្ទាប ៖"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "កញ្ចប់​ដែល​បាន​ខ្ទាស់ ៖"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "កញ្ចប់​រង់ចាំ​ខាងក្រោម​នឹង​ត្រូវ​​បានផ្លាស់​​ប្តូរ​ ៖"
@@ -2140,26 +2299,50 @@ msgstr ""
 "ព្រមាន​ ៖ កញ្ចប់ដែល​ចាំបាច់​ខាងក្រោម​នឹង​ត្រូវ​បាន​យកចេញ ។\n"
 "ការយកចេញ​នេះ​មិន​ត្រូវ​បានធ្វើ​ទេ​លុះត្រា​តែ​អ្នកដឹង​ថា​​អ្នក​កំពុង​ធ្វើ​អ្វីឲ្យប្រាកដ !"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu ត្រូវ​បាន​ធ្វើ​ឲ្យ​ប្រសើរ %lu ត្រូវ​បានដំឡើង​ថ្មី "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "បាន​ដំឡើង %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu ត្រូវ​បាន​ដំឡើង​ឡើង​វិញ "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "បាន​ដំឡើង %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu ​ត្រូវបានបន្ទាប់ "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu ដែលត្រូវ​យក​ចេញ​ ហើយ​ %lu មិន​​បាន​ធ្វើ​ឲ្យ​ប្រសើរឡើយ ។\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2187,7 +2370,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2361,8 +2544,8 @@ msgstr "%s មិនមានភាពអាស្រ័យ​ស្ថាបន
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2399,6 +2582,11 @@ msgstr "បរាជ័យ​ក្នុង​ការ​ប្តូរ​ឈ
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2416,6 +2604,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2462,6 +2681,12 @@ msgstr "  កញ្ចប់​និម្មិត​លាយ ៖ "
 msgid "  Missing: "
 msgstr "  បាត់បង់ ៖ "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "កំណែ​ផ្សេងៗ​សរុប ៖ "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "កំណែ​ផ្សេងៗ​សរុប ៖ "
@@ -2794,6 +3019,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "បញ្ហា​ធ្វើឲ្យខូច​ឯកសារ"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3040,6 +3271,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "បញ្ចូល​​ព័ត៌មាន​ដែលមាន​ចូល​គ្នា"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3245,7 +3480,7 @@ msgstr "មិន​ស្គាល់​ក្បួន​ដោះស្រា
 msgid "Compressed output %s needs a compression set"
 msgstr "​ទិន្នផល​ដែល​បាន​បង្ហាប់​​ %s ត្រូវ​ការ​កំណត់​ការបង្ហាប់​"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "បរាជ័យ​ក្នុង​ការ​បង្កើត​បំពង់​ IPC សម្រាប់​ដំណើរ​ការ​រង​"
 
@@ -3364,23 +3599,23 @@ msgstr "ប័ណ្ណសារ​គ្មាន​វាល​កញ្ចប
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s គ្មាន​ធាតុធាតុបញ្ចូល​​បដិសេធឡើយ\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s គ្មាន​ធាតុធាតុបញ្ចូល​​បដិសេធឡើយ\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  អ្នក​ថែទាំ %s គឺ %s មិនមែន​ %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  អ្នក​ថែទាំ %.*s គឺ %.*s មិនមែន​ %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s គ្មាន​ធាតុ​បដិសេធ​ប្រភព\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s គ្មាន​ធាតុ​បដិសេធ​ប្រភព\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s គ្មាន​ធាតុប​ដិសេធគោល​ពីរ​ដែរ\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s គ្មាន​ធាតុប​ដិសេធគោល​ពីរ​ដែរ\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3418,7 +3653,7 @@ msgstr "ទិន្នន័យ​បឋមកថា​ខូច"
 msgid "Connection failed"
 msgstr "ការតភ្ជាប់​បាន​បរាជ័យ​"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3460,7 +3695,7 @@ msgstr "មិនអាចអាន់ម៉ោន ស៊ីឌី​-រ៉ូ
 msgid "Disk not found."
 msgstr "រក​ថាសមិ​ន​ឃើញ​ ។"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "រកឯកសារ​មិន​ឃើញ​"
 
@@ -3496,7 +3731,7 @@ msgstr "មិន​អាច​បង្កើត​រន្ធ​សម្រ
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "មិនអាច​ចាប់ផ្ដើម​ការតភ្ជាប់​​ទៅ​កាន់​ %s:%s (%s) បានឡើយ ។"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "បាន​បរាជ័យ"
 
@@ -3510,9 +3745,7 @@ msgstr "មិន​អាច​តភ្ជាប់​ទៅកាន់​ %s
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "មិន​អាច​តភ្ជាប់​ទៅ​កាន់​ %s:%s (%s) បានឡើយ ការ​តភ្ជាប់​បានអស់​ពេល​"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "កំពុង​តភ្ជាប់​ទៅកាន់ %s"
@@ -3550,143 +3783,15 @@ msgstr "បរាជ័យ​ក្នុងការថ្លែង"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI មិនត្រឹមត្រូវ​ URIS មូលដ្ឋានមិនត្រូវ​ចាប់ផ្តើម​ជាមួយ​ // ឡើយ"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "កំពុង​ចូល​"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "មិន​អាច​កំណត់ឈ្មោះដែលត្រូវបង្ហាញ​បានឡើយ​"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "មិន​អាច​កំណត់ឈ្មោះមូលដ្ឋាន​បានឡើយ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "ម៉ាស៊ីន​បម្រើបានបដិសេធ​ការតភ្ជាប់ ហើយ​ បាននិយាយ ៖ %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER បរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី​ត្រូវ​បាន​បញ្ជាក់​ ប៉ុន្តែ​គ្មាន​ស្គ្រីប​ចូល​ទេ Acquire::ftp::ProxyLogin គឺ ទទេ ។"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "ពាក្យ​បញ្ជា​ស្គ្រីប​ចូល​ '%s' បានបរាជ័យ ម៉ាស៊ីន​បម្រើ​បាននិយាយ ៖ %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាននិយាយ​ ៖ %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "អស់ពេល​ក្នុងការតភ្ជាប់​"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "ម៉ាស៊ីន​បម្រើ​បាន​បិទ​ការតភ្ជាប់​"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "ឆ្លើយតប​សតិ​បណ្តោះអាសន្ន​​អស់ចំណុះ ។"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "ការបង្ខូច​ពិធីការ​"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "មិន​អាច​បង្កើត​រន្ធបានឡើយ"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "មិន​អាច​តភ្ជាប់​​រន្ធទិន្នន័យ​បានឡើយ អស់​ពេល​ក្នុងការតភ្ជាប់​"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "មិនអាចតភ្ជាប់​​រន្ធអកម្ម​​បានឡើយ ។"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo មិន​អាច​​ទទួល​យក​រន្ធ​សម្រាប់​ស្តាប់​​បានឡើយ"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "មិន​អាច​ចងរន្ធ​បានបានឡើយ​"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "មិនអាច​ស្ដាប់នៅលើរន្ធ​បានឡើយ"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "មិន​អាច​កំណត់​ឈ្មោះរបស់​រន្ធ​បានឡើយ"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "មិនអាច​ផ្ញើពាក្យ​បញ្ជា​ PORT បានឡើយ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "មិន​ស្គាល់​អាសយដ្ឋាន​គ្រួសារ​ %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT បរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ ៖ %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "ការតភ្ជាប់​រន្ធ​​ទិន្នន័បានអស់ពេល​"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "មិនអាច​ទទួលយក​ការតភ្ជាប់​បានឡើយ"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "បញ្ហា​ធ្វើឲ្យខូច​ឯកសារ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "មិន​អាច​ទៅ​ប្រមូល​យក​ឯកសារ​បានឡើយ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "រន្ធ​ទិន្នន័យ​បាន​អស់​ពេល​"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "បរាជ័យក្នុងការ​ផ្ទេរ​ទិន្នន័យ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "សំណួរ​"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "មិន​អាច​ហៅ​ "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3706,24 +3811,19 @@ msgstr "កំហុស​ខាងក្នុង​ ៖ ហត្ថលេខ
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "មិន​អាច​ប្រតិបត្តិ '%s' ដើម្បី​ផ្ទៀងផ្ទាត់​ហត្ថលេខា (តើ gnupg ត្រូវ​បាន​ដំឡើង​ឬនៅ ?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "មិនស្គាល់កំហុស ក្នុងការប្រតិបត្តិ apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3756,18 +3856,128 @@ msgstr "ជ្រើស​បាន​បរាជ័យ​"
 msgid "Connection timed out"
 msgstr "ការតភ្ជាប់​បាន​អស់ពេល​"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "បញ្ហា​ធ្វើឲ្យខូច​ឯកសារ"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "បរាជ័យក្នុងការកំណត់​ពេលវេលា​ការកែប្រែ​"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "បាន​បិទ​ការ​តភ្ជាប់​មុន​ពេល"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "កំពុង​ចូល​"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "មិន​អាច​កំណត់ឈ្មោះដែលត្រូវបង្ហាញ​បានឡើយ​"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "មិន​អាច​កំណត់ឈ្មោះមូលដ្ឋាន​បានឡើយ"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "ម៉ាស៊ីន​បម្រើបានបដិសេធ​ការតភ្ជាប់ ហើយ​ បាននិយាយ ៖ %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER បរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី​ត្រូវ​បាន​បញ្ជាក់​ ប៉ុន្តែ​គ្មាន​ស្គ្រីប​ចូល​ទេ Acquire::ftp::ProxyLogin គឺ ទទេ ។"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "ពាក្យ​បញ្ជា​ស្គ្រីប​ចូល​ '%s' បានបរាជ័យ ម៉ាស៊ីន​បម្រើ​បាននិយាយ ៖ %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាននិយាយ​ ៖ %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "អស់ពេល​ក្នុងការតភ្ជាប់​"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "ម៉ាស៊ីន​បម្រើ​បាន​បិទ​ការតភ្ជាប់​"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "ឆ្លើយតប​សតិ​បណ្តោះអាសន្ន​​អស់ចំណុះ ។"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "ការបង្ខូច​ពិធីការ​"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "មិន​អាច​បង្កើត​រន្ធបានឡើយ"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "មិន​អាច​តភ្ជាប់​​រន្ធទិន្នន័យ​បានឡើយ អស់​ពេល​ក្នុងការតភ្ជាប់​"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "មិនអាចតភ្ជាប់​​រន្ធអកម្ម​​បានឡើយ ។"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo មិន​អាច​​ទទួល​យក​រន្ធ​សម្រាប់​ស្តាប់​​បានឡើយ"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "មិន​អាច​ចងរន្ធ​បានបានឡើយ​"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "មិនអាច​ស្ដាប់នៅលើរន្ធ​បានឡើយ"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "មិន​អាច​កំណត់​ឈ្មោះរបស់​រន្ធ​បានឡើយ"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "មិនអាច​ផ្ញើពាក្យ​បញ្ជា​ PORT បានឡើយ"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "មិន​ស្គាល់​អាសយដ្ឋាន​គ្រួសារ​ %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT បរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ ៖ %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "ការតភ្ជាប់​រន្ធ​​ទិន្នន័បានអស់ពេល​"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "មិនអាច​ទទួលយក​ការតភ្ជាប់​បានឡើយ"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "មិន​អាច​ទៅ​ប្រមូល​យក​ឯកសារ​បានឡើយ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "រន្ធ​ទិន្នន័យ​បាន​អស់​ពេល​"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "បរាជ័យក្នុងការ​ផ្ទេរ​ទិន្នន័យ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
+
+#~ msgid "Query"
+#~ msgstr "សំណួរ​"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "មិន​អាច​ហៅ​ "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "បាន​បិទ​ការ​តភ្ជាប់​មុន​ពេល"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "កញ្ចប់​រង់ចាំ​ខាងក្រោម​នឹង​ត្រូវ​​បានផ្លាស់​​ប្តូរ​ ៖"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "បាទ/ចាស ធ្វើ​ដូច​ដែល​ខ្ញុំ​និយាយ !"
 
diff --git a/po/ko.po b/po/ko.po
index 42bbb2e..6b969d6 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2010-08-30 02:31+0900\n"
 "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
 "Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"
@@ -48,8 +48,8 @@ msgstr "%s 디렉터리가 전환되었습니다"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -180,8 +180,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "배포판 충돌: %s (예상값 %s, 실제값 %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -192,7 +191,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -211,6 +210,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s 파일을 받는데 실패했습니다  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -231,13 +237,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s(%s)에 연결하는 중입니다"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -625,6 +624,30 @@ msgstr "문법 오류 %s:%u: clear 지시어는 인수로 option 트리를 지
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "문법 오류 %s:%u: 파일의 끝에 쓰레기 데이터가 더 있습니다"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -734,11 +757,11 @@ msgstr "하위 프로세스 %s 프로세스가 오류 코드(%u)를 리턴했습
 msgid "Sub-process %s exited unexpectedly"
 msgstr "하위 프로세스 %s 프로세스가 예상치 못하게 끝났습니다"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "읽기 오류"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "쓰기 오류"
 
@@ -1055,6 +1078,12 @@ msgstr "관리 디렉터리를 (%s) 잠글 수 없습니다. 루트 사용자가
 msgid "Not locked"
 msgstr "잠기지 않음"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1241,6 +1270,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "업그레이드를 계산하는 중입니다"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "전체 의존성: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1541,10 +1580,6 @@ msgstr ""
 "일부 인덱스 파일을 다운로드하는데 실패했습니다. 해당 파일을 무시하거나 과거"
 "의 버전을 대신 사용합니다."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "업그레이드를 계산하는 중입니다"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1813,6 +1848,18 @@ msgstr "이 상황을 해결하는데 다음 정보가 도움이 될 수도 있
 msgid "Broken packages"
 msgstr "망가진 패키지"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1857,6 +1904,12 @@ msgstr ""
 "이상하게도 크기가 서로 다릅니다. apt@packages.debian.org로 이메일을 보내주십"
 "시오."
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  설치: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1864,6 +1917,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "%s바이트/%s바이트 아카이브를 받아야 합니다.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1871,13 +1929,55 @@ msgstr "%s바이트/%s바이트 아카이브를 받아야 합니다.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "%s바이트 아카이브를 받아야 합니다.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "이 작업 후 %s바이트의 디스크 공간을 더 사용하게 됩니다.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "저장된 레이블: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1897,6 +1997,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "계속 하시겠습니까?"
@@ -1956,6 +2064,12 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "내부 오류, 문제 해결 프로그램이 무언가를 망가뜨렸습니다"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "이들을 지우려면 '%s'를 사용하십시오."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1971,17 +2085,6 @@ msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
 msgstr[0] "패키지 %lu개가 자동으로 설치되었지만 더 이상 필요하지 않습니다.\n"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "이들을 지우려면 '%s'를 사용하십시오."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "다음 패키지를 더 설치할 것입니다:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "제안하는 패키지:"
@@ -1990,6 +2093,11 @@ msgstr "제안하는 패키지:"
 msgid "Recommended packages:"
 msgstr "추천하는 패키지:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "다음 패키지를 더 설치할 것입니다:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2123,14 +2231,52 @@ msgstr " 혹은"
 msgid "The following packages have unmet dependencies:"
 msgstr "다음 패키지의 의존성이 맞지 않습니다:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "%2$s에 대한 %1$s 의존성을 만족시키는데 실패했습니다: %3$s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "다음 새 패키지를 설치할 것입니다:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s 설치하는 중입니다"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "전체 의존성: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "다음 패키지를 지울 것입니다:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "다음 패키지를 과거 버전으로 유지합니다:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "다음 패키지를 과거 버전으로 유지합니다:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "다음 패키지를 과거 버전으로 유지합니다:"
@@ -2139,10 +2285,24 @@ msgstr "다음 패키지를 과거 버전으로 유지합니다:"
 msgid "The following packages will be upgraded:"
 msgstr "다음 패키지를 업그레이드할 것입니다:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "다음 패키지를 다운그레이드할 것입니다:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "핀 패키지:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "고정되었던 다음 패키지를 바꿀 것입니다:"
@@ -2160,26 +2320,52 @@ msgstr ""
 "경고: 꼭 필요한 다음 패키지를 지우게 됩니다.\n"
 "무슨 일을 하고 있는 지 정확히 알지 못한다면 지우지 마십시오!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu개 업그레이드, %lu개 새로 설치, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s 설치하는 중입니다"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu개 다시 설치, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s 설치하는 중입니다"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu개 업그레이드, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu개 제거 및 %lu개 업그레이드 안 함.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2207,7 +2393,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2384,8 +2570,8 @@ msgstr "%s 패키지에 빌드 의존성이 없습니다.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2422,6 +2608,11 @@ msgstr "%s 파일의 이름을 %s(으)로 바꾸는데 실패했습니다"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2439,6 +2630,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2483,6 +2705,12 @@ msgstr "  혼합 가상 패키지: "
 msgid "  Missing: "
 msgstr "  빠짐: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "개별 버전 전체: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "개별 버전 전체: "
@@ -2810,6 +3038,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "파일 해싱에 문제가 있습니다"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3057,6 +3291,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "상태 정보를 읽는 중입니다"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3261,7 +3499,7 @@ msgstr "'%s' 압축 알고리즘을 알 수 없습니다"
 msgid "Compressed output %s needs a compression set"
 msgstr "압축된 출력물 %s에는 압축 세트가 필요합니다"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "하위 프로세스에 대한 IPC 파이프를 만드는데 실패했습니다"
 
@@ -3381,23 +3619,23 @@ msgstr "아카이브에 패키지 필드가 없습니다"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s에는 override 항목이 없습니다\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s에는 override 항목이 없습니다\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s 관리자가 %s입니다 (%s 아님)\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s 관리자가 %.*s입니다 (%s 아님)\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s에는 source override 항목이 없습니다\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s에는 source override 항목이 없습니다\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s에는 binary override 항목이 없습니다\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s에는 binary override 항목이 없습니다\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3435,7 +3673,7 @@ msgstr "헤더 데이터가 잘못되었습니다"
 msgid "Connection failed"
 msgstr "연결이 실패했습니다"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3477,7 +3715,7 @@ msgstr "%s 안의 CD-ROM을 마운트 해제할 수 없습니다. 사용 중일
 msgid "Disk not found."
 msgstr "디스크가 없습니다."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "파일이 없습니다"
 
@@ -3513,7 +3751,7 @@ msgstr "%s에 대한 소켓을 만들 수 없습니다 (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "%s:%s에 연결을 초기화할 수 없습니다 (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "실패"
 
@@ -3527,9 +3765,7 @@ msgstr "%s:%s에 연결할 수 없습니다 (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "%s:%s에 연결할 수 없습니다 (%s). 연결 제한 시간이 초과했습니다"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "%s에 연결하는 중입니다"
@@ -3567,144 +3803,15 @@ msgstr "파일 정보를 읽는데 실패했습니다"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI가 틀렸습니다. 로컬 URI는 //로 시작해야 합니다."
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "로그인하는 중입니다"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "상대방의 이름을 알 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "로컬 이름을 알 수 없습니다"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "서버에서 다음과 같이 연결을 거부했습니다: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER 실패, 서버에서는: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS 실패, 서버에서는: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"프록시 서버를 지정했지만 로그인 스크립트가 없습니다. Acquire::ftp::"
-"ProxyLogin 값이 비어 있습니다."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "로그인 스크립트 명령 '%s' 실패, 서버에서는: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE 실패, 서버에서는: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "연결 시간 초과"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "서버에서 연결을 닫았습니다"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "응답이 버퍼 크기를 넘어갔습니다."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "프로토콜이 틀렸습니다"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "소켓을 만들 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "데이터 소켓을 연결할 수 없습니다. 연결 시간이 초과되었습니다"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "수동(passive) 소켓을 연결할 수 없습니다."
 
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo에서 소켓에 listen할 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "소켓을 bind할 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "소켓에 listen할 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "소켓의 이름을 알아낼 수 없습니다"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "PORT 명령을 보낼 수 없습니다"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "주소 %u의 종류(AF_*)를 알 수 없습니다"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT 실패, 서버에서는: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "데이터 소켓 연결 시간 초과"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "연결을 받을 수 없습니다"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "파일 해싱에 문제가 있습니다"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "파일을 가져올 수 없습니다. 서버 왈, '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "데이터 소켓에 제한 시간이 초과했습니다"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "데이터 전송 실패, 서버에서는: %s"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "질의"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "다음을 실행할 수 없습니다: "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3723,26 +3830,24 @@ msgid ""
 msgstr "내부 오류: 서명은 올바르지만 키 핑거프린트를 확인할 수 없습니다?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "서명을 확인하는 'apt-key' 프로그램을 실행할 수 없습니다. (gnupg를 설치했습니"
 "까?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key 실행 도중 알 수 없는 오류 발생"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3775,18 +3880,129 @@ msgstr "select가 실패했습니다"
 msgid "Connection timed out"
 msgstr "연결 시간이 초과했습니다"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "파일 해싱에 문제가 있습니다"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "파일 변경 시각을 설정하는데 실패했습니다"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "연결이 너무 빨리 끊어졌습니다"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "로그인하는 중입니다"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "상대방의 이름을 알 수 없습니다"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "로컬 이름을 알 수 없습니다"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "서버에서 다음과 같이 연결을 거부했습니다: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER 실패, 서버에서는: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS 실패, 서버에서는: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "프록시 서버를 지정했지만 로그인 스크립트가 없습니다. "
+#~ "Acquire::ftp::ProxyLogin 값이 비어 있습니다."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "로그인 스크립트 명령 '%s' 실패, 서버에서는: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE 실패, 서버에서는: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "연결 시간 초과"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "서버에서 연결을 닫았습니다"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "응답이 버퍼 크기를 넘어갔습니다."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "프로토콜이 틀렸습니다"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "소켓을 만들 수 없습니다"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "데이터 소켓을 연결할 수 없습니다. 연결 시간이 초과되었습니다"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "수동(passive) 소켓을 연결할 수 없습니다."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo에서 소켓에 listen할 수 없습니다"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "소켓을 bind할 수 없습니다"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "소켓에 listen할 수 없습니다"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "소켓의 이름을 알아낼 수 없습니다"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "PORT 명령을 보낼 수 없습니다"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "주소 %u의 종류(AF_*)를 알 수 없습니다"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT 실패, 서버에서는: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "데이터 소켓 연결 시간 초과"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "연결을 받을 수 없습니다"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "파일을 가져올 수 없습니다. 서버 왈, '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "데이터 소켓에 제한 시간이 초과했습니다"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "데이터 전송 실패, 서버에서는: %s"
+
+#~ msgid "Query"
+#~ msgstr "질의"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "다음을 실행할 수 없습니다: "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "연결이 너무 빨리 끊어졌습니다"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "고정되었던 다음 패키지를 바꿀 것입니다:"
+
 # 입력을 받아야 한다.  한글 입력을 못 할 수 있으므로 원문 그대로 사용.
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Yes, do as I say!"
diff --git a/po/ku.po b/po/ku.po
index 79d631b..651b568 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2008-05-08 12:48+0200\n"
 "Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n"
 "Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>\n"
@@ -50,8 +50,8 @@ msgstr "Rêça %s zêde dirêj e"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -179,8 +179,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -191,7 +190,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -210,6 +209,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Anîna %s %s biserneket"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -228,13 +234,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Girêdan bi %s (%s) re pêk tê"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -614,6 +613,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -721,11 +744,11 @@ msgstr ""
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Çewiya xwendinê"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Çewtiya nivîsînê"
 
@@ -1032,6 +1055,12 @@ msgstr "Pelrêça daxistinê nayê quflekirin"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1212,6 +1241,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Bilindkirin tê hesibandin"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Bindestên giştî:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1501,10 +1540,6 @@ msgid ""
 "used instead."
 msgstr ""
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Bilindkirin tê hesibandin"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1760,6 +1795,18 @@ msgstr ""
 msgid "Broken packages"
 msgstr "Paketên şikestî"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1798,6 +1845,12 @@ msgstr ""
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Sazkirî: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1805,6 +1858,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Anîna %sB/%sB ji arşîvan pêwist e.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1812,11 +1870,52 @@ msgstr "Anîna %sB/%sB ji arşîvan pêwist e.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Anîna %sB ji arşîvan pêwist e.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
-msgid "After this operation, %sB of additional disk space will be used.\n"
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
 msgstr ""
 
 #. TRANSLATOR: The required space between number and unit is already included
@@ -1836,6 +1935,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Dixwazî bidomînî?"
@@ -1892,6 +1999,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1910,18 +2024,6 @@ msgid_plural ""
 msgstr[0] "Ev pakêtên NÛ dê werine sazkirin:"
 msgstr[1] "Ev pakêtên NÛ dê werine sazkirin:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Ev pakêtên NÛ dê werine sazkirin:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Paketên tên pêşniyaz kirin:"
@@ -1930,6 +2032,11 @@ msgstr "Paketên tên pêşniyaz kirin:"
 msgid "Recommended packages:"
 msgstr "Paketên tên tawsiyê kirin:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ev pakêtên NÛ dê werine sazkirin:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2059,14 +2166,47 @@ msgstr " û"
 msgid "The following packages have unmet dependencies:"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Unsatisfied dependencies:"
+msgstr "Bindestên giştî:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Ev pakêtên NÛ dê werine sazkirin:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "%s hatine sazkirin"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Bindestên giştî:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Ev pakêt dê werine RAKIRIN:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr ""
@@ -2075,10 +2215,24 @@ msgstr ""
 msgid "The following packages will be upgraded:"
 msgstr "Ev paket dê werine bilindkirin:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr ""
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Suggested packages:"
+msgid "Changing held packages:"
+msgstr "Paketên tên pêşniyaz kirin:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr ""
@@ -2094,26 +2248,50 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu hatine bilindkirin, %lu nû hatine sazkirin."
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s hatine sazkirin"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu ji nû ve sazkirî,"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "%s hatine sazkirin"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu hatine nizmkirin."
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu werin rakirin û %lu neyên bilindkirin. \n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2142,7 +2320,7 @@ msgid "Y"
 msgstr "E"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2316,8 +2494,8 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2354,6 +2532,11 @@ msgstr "%s ji hev nehate veçirandin"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2371,6 +2554,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2417,6 +2631,12 @@ msgstr "  Pakêtên hevbeş yên farazî:"
 msgid "  Missing: "
 msgstr "  Winda: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Guhertoyên vekirî yên giştî:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Guhertoyên vekirî yên giştî:"
@@ -2725,6 +2945,10 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr ""
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -2974,6 +3198,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr ""
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr ""
@@ -3133,7 +3361,7 @@ msgstr ""
 msgid "Compressed output %s needs a compression set"
 msgstr ""
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr ""
 
@@ -3252,22 +3480,22 @@ msgstr "Di arşîvê de qada pakêtê tuneye"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: methods/basehttp.cc
@@ -3306,7 +3534,7 @@ msgstr ""
 msgid "Connection failed"
 msgstr "Girêdan pêk nehatiye"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3346,7 +3574,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Dîsk nehate dîtin."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Pel nehate dîtin"
 
@@ -3382,7 +3610,7 @@ msgstr ""
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr ""
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Serneket"
 
@@ -3396,9 +3624,7 @@ msgstr ""
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Bi %s re tê girêdan"
@@ -3437,144 +3663,16 @@ msgstr "%s venebû"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Têketin"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nikare navê herêmî tesbît bike"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
 
-#: methods/ftp.cc
-#, fuzzy, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Danegira %s nehate vekirin: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
+msgid "%s will be deprecated in a future release"
 msgstr ""
 
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Lêpirsîn"
-
-#: methods/ftp.cc
-#, fuzzy
-msgid "Unable to invoke "
-msgstr "%s venebû"
-
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
 #, c-format
@@ -3592,24 +3690,19 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Di xebitandina apt-key de çewtiya nenas"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3643,18 +3736,38 @@ msgstr "Hilbijartin neserketî"
 msgid "Connection timed out"
 msgstr ""
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr ""
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr ""
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Girêdan zû hatiye girtin"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Têketin"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nikare navê herêmî tesbît bike"
+
+#, fuzzy, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Danegira %s nehate vekirin: %s"
+
+#~ msgid "Query"
+#~ msgstr "Lêpirsîn"
+
+#, fuzzy
+#~ msgid "Unable to invoke "
+#~ msgstr "%s venebû"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Girêdan zû hatiye girtin"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Erê, wusa bike!"
 
diff --git a/po/lt.po b/po/lt.po
index 4e4a976..54f5e38 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2008-08-02 01:47-0400\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -53,8 +53,8 @@ msgstr "Kelias %s per ilgas"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -183,8 +183,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -195,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -214,6 +213,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Nepavyko parsiųsti %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -232,13 +238,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Jungiamasi prie %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -620,6 +619,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -729,11 +752,11 @@ msgstr "Procesas %s grąžino klaidos kodą (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Procesas %s netikėtai išėjo"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Skaitymo klaida"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Rašymo klaida"
 
@@ -1041,6 +1064,12 @@ msgstr "Nepavyko užrakinti sąrašo aplanko"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1221,6 +1250,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Skaičiuojami atnaujinimai"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Viso priklausomybių: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1513,10 +1552,6 @@ msgstr ""
 "Kai kurių indeksų failų nepavyko parsiųsti, jie buvo ignoruoti arba vietoje "
 "jų panaudoti seni."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Skaičiuojami atnaujinimai"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1786,6 +1821,18 @@ msgstr "Ši informacija gali padėti išspręsti šią situaciją:"
 msgid "Broken packages"
 msgstr "Sugadinti paketai"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1828,6 +1875,12 @@ msgstr ""
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "Keista... Dydis neatitinka, Parašykite laišką apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Įdiegta: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1835,6 +1888,11 @@ msgstr "Keista... Dydis neatitinka, Parašykite laišką apt@packages.debian.org
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Reikia parsiųsti %sB/%sB archyvų.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1842,13 +1900,54 @@ msgstr "Reikia parsiųsti %sB/%sB archyvų.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Reikia parsiųsti %sB archyvų.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Po šios operacijos bus naudojama %sB papildomos disko vietos.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1866,6 +1965,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Ar norite tęsti?"
@@ -1922,6 +2029,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Norėdami juos pašalinti, paleiskite „%s“"
+msgstr[1] "Norėdami juos pašalinti, paleiskite „%s“"
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1940,18 +2054,6 @@ msgid_plural ""
 msgstr[0] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
 msgstr[1] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Norėdami juos pašalinti, paleiskite „%s“"
-msgstr[1] "Norėdami juos pašalinti, paleiskite „%s“"
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Bus įdiegti šie papildomi paketai:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Siūlomi paketai:"
@@ -1960,6 +2062,11 @@ msgstr "Siūlomi paketai:"
 msgid "Recommended packages:"
 msgstr "Rekomenduojami paketai:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Bus įdiegti šie papildomi paketai:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2091,14 +2198,51 @@ msgstr " arba"
 msgid "The following packages have unmet dependencies:"
 msgstr "Šie paketai turi neįdiegtų priklausomybių:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Nepavyko patenkinti %s priklausomybÄ—s %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Bus įdiegti šie NAUJI paketai:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "Įdiegta %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Viso priklausomybių: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Bus PAŠALINTI šie paketai:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Šių paketų atnaujinimas sulaikomas:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Šių paketų atnaujinimas sulaikomas:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Šių paketų atnaujinimas sulaikomas:"
@@ -2107,10 +2251,24 @@ msgstr "Šių paketų atnaujinimas sulaikomas:"
 msgid "The following packages will be upgraded:"
 msgstr "Bus atnaujinti šie paketai:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Bus PAKEISTI SENESNIAIS šie paketai:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Surišti paketai:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Bus pakeisti šie sulaikyti paketai:"
@@ -2128,26 +2286,50 @@ msgstr ""
 "Įspėjimas: Šie būtini paketai bus pašalinti.\n"
 "Tai NETURĖTŲ būti daroma, kol tiksliai nežinote ką darote!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu atnaujinti, %lu naujai įdiegti, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Įdiegta %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu įdiegti iš naujo, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Įdiegta %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu pasendinti, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu bus pašalinta ir %lu neatnaujinta.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2175,7 +2357,7 @@ msgid "Y"
 msgstr "T"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2348,8 +2530,8 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2386,6 +2568,11 @@ msgstr "Nepavyko pervadinti %s į %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2403,6 +2590,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2450,6 +2668,12 @@ msgstr "  Mišrūs virtualūs paketai: "
 msgid "  Missing: "
 msgstr "  Trūksta: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Viso skirtingų versijų: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Viso skirtingų versijų: "
@@ -2776,6 +3000,10 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr ""
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3024,6 +3252,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Skaitoma būsenos informacija"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3238,7 +3470,7 @@ msgstr "Nežinomas suspaudimo algoritmas „%s“"
 msgid "Compressed output %s needs a compression set"
 msgstr "Suspaustai išvesčiai %s reikia suspaudimo rinkinio"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Nepavyko subprocesui sukurti IPC gijos"
 
@@ -3357,22 +3589,22 @@ msgstr "Archyvas neturÄ—jo paketo lauko"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s neturi perrašymo įrašo\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s neturi perrašymo įrašo\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s prižiūrėtojas yra %s, o ne %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s prižiūrėtojas yra %.*s, o ne %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 
 #: methods/basehttp.cc
@@ -3411,7 +3643,7 @@ msgstr ""
 msgid "Connection failed"
 msgstr "Prisijungti nepavyko"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3451,7 +3683,7 @@ msgstr "Nepavyko atjungti CD-ROM įrenginyje %s, galbūt jis vis dar naudojamas.
 msgid "Disk not found."
 msgstr "Diskas nerastas."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Failas nerastas"
 
@@ -3487,7 +3719,7 @@ msgstr ""
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr ""
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Nepavyko"
 
@@ -3501,9 +3733,7 @@ msgstr "Nepavyko prisijungti prie %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nepavyko prisijungti prie %s:%s (%s), prisijungimas per ilgai užtruko"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Jungiamasi prie %s"
@@ -3541,141 +3771,14 @@ msgstr ""
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Jungiamasi"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Jungiamasi per ilgai"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr ""
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nepavyko atsiųsti failo, serveris atsakė „%s“"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
+msgid "untrusted public key algorithm: %s"
 msgstr ""
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr ""
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Užklausti"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
+msgid "%s will be deprecated in a future release"
 msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
@@ -3695,24 +3798,19 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Nežinoma klaida kviečiant apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3745,18 +3843,36 @@ msgstr ""
 msgid "Connection timed out"
 msgstr "Prisijungimo laiko limitas baigÄ—si"
 
-#: methods/rred.cc
-msgid "Failed to set modification time"
+#: methods/http.cc
+msgid "Problem hashing file"
 msgstr ""
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
+#: methods/rred.cc
+msgid "Failed to set modification time"
 msgstr ""
 
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Jungiamasi"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Jungiamasi per ilgai"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nepavyko atsiųsti failo, serveris atsakė „%s“"
+
+#~ msgid "Query"
+#~ msgstr "Užklausti"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Bus pakeisti šie sulaikyti paketai:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Taip, daryk kaip liepiu!"
 
diff --git a/po/mr.po b/po/mr.po
index e958c44..5be3126 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2008-11-20 23:27+0530\n"
 "Last-Translator: Sampada <sampadanakhare@gmail.com>\n"
 "Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India "
@@ -52,8 +52,8 @@ msgstr "%s संचिका डायव्हर्ट केली आहे
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -182,8 +182,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -194,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -213,6 +212,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s  %s आणणे असफल"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -233,13 +239,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s (%s) ला जोडत आहे"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -624,6 +623,30 @@ msgstr "रचनेच्या नियमांचा दोष %s:%u: द
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "नियम रचनेचा दोष %s:%u: फाईलच्या अंती अधिक जंक"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -733,11 +756,11 @@ msgstr "%s उपक्रियेने (%u) त्रुटी कोड द
 msgid "Sub-process %s exited unexpectedly"
 msgstr "%s उपक्रिया अचानकपणे बाहेर पडली"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "त्रुटी वाचा"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "लिहिण्यात त्रुटी"
 
@@ -1044,6 +1067,12 @@ msgstr "संचयिका यादीला कुलुप लावण्
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1224,6 +1253,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "पुढिल आवृत्तीची गणती करीत आहे"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "एकूण निर्भरता:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1527,10 +1566,6 @@ msgstr ""
 "काही अनुक्रमणिका संचयिका डाऊनलोड    करण्यास असमर्थ,त्या दुर्लक्षित झाल्या, किंवा "
 "त्याऐवजी जुन्या वापरल्या गेल्या."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "पुढिल आवृत्तीची गणती करीत आहे"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1799,6 +1834,18 @@ msgstr "खालील माहिती परिस्थिती निव
 msgid "Broken packages"
 msgstr "तुटलेली पॅकेजेस"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1841,6 +1888,12 @@ msgstr "अंतर्गत त्रुटी,क्रम अजून स
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "किती विचित्र...आकार जुळत नाहीत, ईमेल apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "अधिष्ठापित केले:"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1848,6 +1901,11 @@ msgstr "किती विचित्र...आकार जुळत नाह
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "अर्काईव्हजच्या %sB/%sB घेण्याची गरज आहे\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1855,13 +1913,55 @@ msgstr "अर्काईव्हजच्या %sB/%sB घेण्याच
 msgid "Need to get %sB of archives.\n"
 msgstr "अर्काईव्हज%sB घेण्याची गरज आहे.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "या क्रियेनंतर, %sB एवढी अधिक डिस्क जागा वापरली जाईल.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "ग्रहण केलेले नामदर्शक: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1879,6 +1979,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 #, fuzzy
 msgid "Do you want to continue?"
@@ -1939,6 +2047,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "अंतर्गत त्रुटी, AutoRemoverने स्टफला तोडले"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ती काढून टाकण्यासाठी '%s' वापरा."
+msgstr[1] "ती काढून टाकण्यासाठी '%s' वापरा."
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1957,18 +2072,6 @@ msgid_plural ""
 msgstr[0] "खालील नवीन पॅकेजेस स्वयंचलितपणे संस्थापित झाली होती व आता आवश्यक नाहीत:"
 msgstr[1] "खालील नवीन पॅकेजेस स्वयंचलितपणे संस्थापित झाली होती व आता आवश्यक नाहीत:"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "ती काढून टाकण्यासाठी '%s' वापरा."
-msgstr[1] "ती काढून टाकण्यासाठी '%s' वापरा."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "खालील अतिरिक्त पॅकेजेस संस्थापित होतील:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "सुचवलेली पॅकेजेस:"
@@ -1977,6 +2080,11 @@ msgstr "सुचवलेली पॅकेजेस:"
 msgid "Recommended packages:"
 msgstr "शिफारस केलेली पॅकेजेस:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "खालील अतिरिक्त पॅकेजेस संस्थापित होतील:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2106,14 +2214,52 @@ msgstr "किंवा"
 msgid "The following packages have unmet dependencies:"
 msgstr "खालील पॅकेजेस मध्ये नमिळणाऱ्या निर्भरता/ डिपेन्डन्सीज आहेत:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "%s साठी %s डिपेंडन्सी पूर्ण होण्यास असमर्थ: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "खालील नविन पॅकेजेस संस्थापित होतील:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s संस्थापित होत आहे"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "एकूण निर्भरता:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "खालील नविन पॅकेजेस कायमची काढून टाकली जातील:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "खालील पॅकेजेस परत ठेवली गेली:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "खालील पॅकेजेस परत ठेवली गेली:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "खालील पॅकेजेस परत ठेवली गेली:"
@@ -2122,10 +2268,24 @@ msgstr "खालील पॅकेजेस परत ठेवली गे
 msgid "The following packages will be upgraded:"
 msgstr "खालील पॅकेजेस पुढिल आवृत्तीकृत होतील:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "खालील पॅकेजेस पुढच्या आवृत्तीकृत होणार नाहीत:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "एकत्रित पॅकेजेस:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "पुढिल ठेवलेली पॅकेजेस बदलतील:"
@@ -2143,26 +2303,52 @@ msgstr ""
 "धोक्याची सूचना:खालील जरूरीची पॅकेजेस कायमची काढून टाकली जातील।\n"
 "तुम्हाला तुम्ही काय करत आहात हे कळेपर्यंत असं करता येणार नाही!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu पुढे आवृत्तीकृत केले, %lu नव्याने संस्थापित केले,"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s संस्थापित होत आहे"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu पुनर्संस्थापित केले,"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s संस्थापित होत आहे"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu मागील आवृत्तीकृत केले,"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu कायमचे काढून टाकण्यासाठी आणि %lu पुढच्या आवृत्तीकृत झालेली नाही.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2190,7 +2376,7 @@ msgid "Y"
 msgstr "होय"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2364,8 +2550,8 @@ msgstr "%s ला बांधणी डिपेंडन्स नाहीत
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2402,6 +2588,11 @@ msgstr "%s ला पुनर्नामांकन %s करण्यास
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2419,6 +2610,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2465,6 +2687,12 @@ msgstr "मिश्रित आभासी पॅकेजेस्:"
 msgid "  Missing: "
 msgstr " हरवलेले/गहाळ: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "एकूण स्पष्ट आवृत्या: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "एकूण स्पष्ट आवृत्या: "
@@ -2790,6 +3018,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "फाईल हॅश करण्यात त्रुटी"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3037,6 +3271,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "स्थिती माहिती वाचत आहे"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3243,7 +3481,7 @@ msgstr "माहित नसलेली/ले संक्षेप पद
 msgid "Compressed output %s needs a compression set"
 msgstr "%s संकलित आऊटपुट/निर्गत साठी संक्षेप संचाची गरज"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "उपक्रियेचा आयपीसी वाहिनी तयार करण्यास असमर्थ"
 
@@ -3362,23 +3600,23 @@ msgstr "अर्काईव्ह ला पॅकेज जागा ना
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "%s ला ओव्हरराईड/दुर्लक्षित जागा नाही\n"
+msgid "  %.*s has no override entry\n"
+msgstr "%.*s ला ओव्हरराईड/दुर्लक्षित जागा नाही\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "%s देखभालकर्ता हा %s आणि %s नाही \n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "%.*s देखभालकर्ता हा %.*s आणि %s नाही \n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "%s ला उगम ओव्हरराईड/दुर्लक्षित जागा नाही\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "%.*s ला उगम ओव्हरराईड/दुर्लक्षित जागा नाही\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "%s ला द्वयंक ओव्हरराईड जागा नाही\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "%.*s ला द्वयंक ओव्हरराईड जागा नाही\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3416,7 +3654,7 @@ msgstr "चुकीचा शीर्षक डाटा"
 msgid "Connection failed"
 msgstr "जोडणी अयशस्वी"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3458,7 +3696,7 @@ msgstr "%s मधील सीडी-रॉम अनमाऊंट करण
 msgid "Disk not found."
 msgstr "डिस्क सापडत नाही"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "फाईल सापडली नाही"
 
@@ -3494,7 +3732,7 @@ msgstr "%s (f=%u t=%u p=%u) साठी सॉकेट तयार करू
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "%s:%s (%s). साठी जोडणी इनिशिएट/पुढाकारीत करू शकत नाही"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "असमर्थ"
 
@@ -3508,9 +3746,7 @@ msgstr "%s:%s (%s) ला जोडू शकत नाही"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "%s:%s (%s) ला जोडू शकत नाही,जोडणी वेळेअभावी तुटली"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "%s ला जोडत आहे"
@@ -3548,144 +3784,15 @@ msgstr "स्टॅट करण्यास असमर्थ"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "अवैध यू आर एल, स्थानिक यू आर आय एस सुरू होऊ नये यापासून //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "लॉग इन करत आहे"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "पिअर नाव सांगण्यास/सापडण्यास असमर्थ"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "स्थानिक नाव सांगण्यास असमर्थ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "सर्व्हर ने संबंध जोडण्यास नकार दिला व सांगितले: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "सर्व्हरने %s सांगितले,यूजर असमर्थ:"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "सर्व्हरने %s सांगितले, पास असमर्थ:"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"प्रॉक्सी सर्व्हर निर्देशित केला पण लॉगीन स्क्रिप्ट नाही, प्राप्त केलेले ::ftp:: प्रॉक्सीलॉगीन "
-"निरर्थक आहे."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "सर्व्हरने %s सांगितले, '%s' लॉग इन स्क्रिप्ट आज्ञावली असमर्थ:"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "सर्व्हरने %s सांगितले: टाईप असमर्थ:"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "वेळेअभावी संबंध जोडता येत नाही"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "सर्व्हरने संबंध जोडणी बंद केली"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "प्रतिसाधाने बफर भरुन गेले."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "प्रोटोकॉल खराब झाले"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "सॉकेट तयार करू शकत नाही"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "डेटा सॉकेट जोडू शकत नाही,जोडणी वेळेअभावी बंद केली"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "पॅसिव्ह सॉकेट जोडता येत नाही"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "गेटऍड्रेसइनफो लिसनिंग सॉकेट घेण्यास असमर्थ होते"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "सॉकेट चिकटवता येत नाही"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "सॉकेट वर ऐकता येत नाही"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "सॉकेटचे नाव सांगता येत नाही"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "पोर्ट आज्ञा पाठवता येत नाही/पोर्ट आज्ञा  पाठविण्यास असमर्थ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "माहित नसलेला पत्ता फॅमिली %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "ई.पी.आर.टी. चुकले,सर्व्हरने %s सांगितले"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "डेटा सॉकेट जोडणी वेळेअभावी तुटली"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "जोडणी स्विकारण्यास असमर्थ"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "फाईल हॅश करण्यात त्रुटी"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "सर्व्हरने %s सांगितले, फाईल मिळवण्यास असमर्थ"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "डेटा सॉकेट वेळेअभावी तुटले"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "सर्व्हरने %s सांगितले, डेटा स्थानांतरण चुकले"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "प्रश्न"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "जारी करण्यास करण्यास असमर्थ"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3705,25 +3812,20 @@ msgstr "अंतर्गत त्रुटी: चांगली सही,
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "सहीची खात्री करण्यासाठी '%s' कार्यान्वित करू शकत नाही (gnupg संस्थापित केले आहे का?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key कार्यान्वित होत असताना अपरिचित त्रुटी"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3756,18 +3858,129 @@ msgstr "चुकले/असमर्थ निवड करा"
 msgid "Connection timed out"
 msgstr "जोडणी वेळेअभावी तुटली"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "फाईल हॅश करण्यात त्रुटी"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "बदलण्याचा वेळ निश्चित करण्यास असमर्थ"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "जोडणी अकाली बंद झाली"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "लॉग इन करत आहे"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "पिअर नाव सांगण्यास/सापडण्यास असमर्थ"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "स्थानिक नाव सांगण्यास असमर्थ"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "सर्व्हर ने संबंध जोडण्यास नकार दिला व सांगितले: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "सर्व्हरने %s सांगितले,यूजर असमर्थ:"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "सर्व्हरने %s सांगितले, पास असमर्थ:"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "प्रॉक्सी सर्व्हर निर्देशित केला पण लॉगीन स्क्रिप्ट नाही, प्राप्त केलेले ::ftp:: "
+#~ "प्रॉक्सीलॉगीन निरर्थक आहे."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "सर्व्हरने %s सांगितले, '%s' लॉग इन स्क्रिप्ट आज्ञावली असमर्थ:"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "सर्व्हरने %s सांगितले: टाईप असमर्थ:"
+
+#~ msgid "Connection timeout"
+#~ msgstr "वेळेअभावी संबंध जोडता येत नाही"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "सर्व्हरने संबंध जोडणी बंद केली"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "प्रतिसाधाने बफर भरुन गेले."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "प्रोटोकॉल खराब झाले"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "सॉकेट तयार करू शकत नाही"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "डेटा सॉकेट जोडू शकत नाही,जोडणी वेळेअभावी बंद केली"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "पॅसिव्ह सॉकेट जोडता येत नाही"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "गेटऍड्रेसइनफो लिसनिंग सॉकेट घेण्यास असमर्थ होते"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "सॉकेट चिकटवता येत नाही"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "सॉकेट वर ऐकता येत नाही"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "सॉकेटचे नाव सांगता येत नाही"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "पोर्ट आज्ञा पाठवता येत नाही/पोर्ट आज्ञा  पाठविण्यास असमर्थ"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "माहित नसलेला पत्ता फॅमिली %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "ई.पी.आर.टी. चुकले,सर्व्हरने %s सांगितले"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "डेटा सॉकेट जोडणी वेळेअभावी तुटली"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "जोडणी स्विकारण्यास असमर्थ"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "सर्व्हरने %s सांगितले, फाईल मिळवण्यास असमर्थ"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "डेटा सॉकेट वेळेअभावी तुटले"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "सर्व्हरने %s सांगितले, डेटा स्थानांतरण चुकले"
+
+#~ msgid "Query"
+#~ msgstr "प्रश्न"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "जारी करण्यास करण्यास असमर्थ"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "जोडणी अकाली बंद झाली"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "पुढिल ठेवलेली पॅकेजेस बदलतील:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "हो, मी म्ह्टल्याप्रमाणे करा!"
 
diff --git a/po/nb.po b/po/nb.po
index af52f9f..074f2f5 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -17,7 +17,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2018-10-30 20:53+0100\n"
 "Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n"
 "Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>\n"
@@ -62,8 +62,8 @@ msgstr "Katalogen %s er avledet"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -196,8 +196,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Konflikt mellom distribusjoner: %s (forventet %s men fant %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Depot «%s» endret sin «%s»-verdi fra «%s» til «%s»."
@@ -208,7 +207,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr "Depot «%s» endret sin standardprioritet for %s fra %hi til %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -230,6 +229,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Klarte ikke å skaffe %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -250,13 +256,6 @@ msgstr "Klarte ikke finne kilde for å laste ned versjon «%s» av «%s»"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Kobler til %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -651,6 +650,30 @@ msgstr "Syntaksfeil %s:%u: clear-direktivet krever et valgtre som argument"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaksfeil %s:%u: Ugyldige angivelser på slutten av fila"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -760,11 +783,11 @@ msgstr "Underprosessen %s ga en feilkode (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Underprosessen %s avsluttet uventet"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Lesefeil"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Skrivefeil"
 
@@ -1083,6 +1106,12 @@ msgstr "Klarte ikke låse den administrative mappen (%s). Er du root?"
 msgid "Not locked"
 msgstr "Ikke låst"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1272,6 +1301,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner oppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Antall avhengighetsforhold: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1573,10 +1612,6 @@ msgstr ""
 "Klarte ikke å laste ned alle oversiktfilene. De ble ignorerte, eller gamle "
 "ble brukt isteden. "
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beregner oppgradering"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1848,6 +1883,19 @@ msgstr "Følgende informasjon kan være til hjelp med å løse problemet:"
 msgid "Broken packages"
 msgstr "Ødelagte pakker"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "Valgte %s for fjerning.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1894,6 +1942,12 @@ msgstr ""
 "Så rart ... Størrelsene stemmer ikke overens, send en e-post til "
 "apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Nedlasting feilet"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1901,6 +1955,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "MÃ¥ hente %sB/%sB med arkiver.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Download Failed"
+msgid "  Download size: %sB\n"
+msgstr "Nedlasting feilet"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1908,13 +1968,55 @@ msgstr "MÃ¥ hente %sB/%sB med arkiver.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "MÃ¥ hente %sB med arkiver.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Etter denne operasjonen vil %sB ekstra diskplass bli brukt.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Lagret merkelapp: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1933,6 +2035,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Vil du fortsette?"
@@ -1995,6 +2105,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Intern feil, autofjerneren (AutoRemover) ødela noe"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Bruk «%s» for å fjerne den."
+msgstr[1] "Bruk «%s» for å fjerne dem."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2014,17 +2131,6 @@ msgid_plural ""
 msgstr[0] "%lu pakke ble automatisk installert og er ikke lenger påkrevet.\n"
 msgstr[1] "%lu pakker ble automatisk installert og er ikke lenger påkrevet.\n"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Bruk «%s» for å fjerne den."
-msgstr[1] "Bruk «%s» for å fjerne dem."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Følgende ekstra pakker vil bli installert:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Foreslåtte pakker:"
@@ -2033,6 +2139,10 @@ msgstr "Foreslåtte pakker:"
 msgid "Recommended packages:"
 msgstr "Anbefalte pakker"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Følgende ekstra pakker vil bli installert:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2171,14 +2281,52 @@ msgstr " eller"
 msgid "The following packages have unmet dependencies:"
 msgstr "Følgende pakker har uinnfridde avhengighetsforhold:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Klarte ikke å tilfredsstille %s avhengighet for %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Følgende NYE pakker vil bli installert:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Installerer %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Antall avhengighetsforhold: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Følgende pakker vil bli FJERNET:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Følgende pakker er holdt tilbake:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Følgende pakker er holdt tilbake:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Følgende pakker er holdt tilbake:"
@@ -2187,10 +2335,24 @@ msgstr "Følgende pakker er holdt tilbake:"
 msgid "The following packages will be upgraded:"
 msgstr "Følgende pakker vil bli oppgradert:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Følgende pakker vil bli NEDGRADERT:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "LÃ¥ste pakker:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Følgende pakker vil bli endret:"
@@ -2208,26 +2370,52 @@ msgstr ""
 "ADVARSEL: Følgende essensielle pakker vil bli fjernet.\n"
 "Dette bør IKKE gjøres, med mindre du vet nøyaktig hva du gjør!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu oppgraderte, %lu nylig installerte, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Installerer %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu installert på nytt, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Installerer %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu nedgraderte, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu å fjerne og %lu ikke oppgradert.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2255,7 +2443,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2437,11 +2625,11 @@ msgstr "%s har ingen avhengigheter.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Ingen arkitekturinformasjon tilgjengelig for %s.  Se apt.conf(5) APT::"
-"Architectures for oppsett."
+"Ingen arkitekturinformasjon tilgjengelig for %s.  Se apt.conf(5) "
+"APT::Architectures for oppsett."
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2477,6 +2665,11 @@ msgstr "Klarte ikke å endre navnet på %s til %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "'%s'-filen din ble endret, vær så snill å kjør 'apt-get update'.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2494,6 +2687,43 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Se manualsiden apt-secure(8) for detaljer om oppretting av depote og "
+"brukeroppsett."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2541,6 +2771,12 @@ msgstr "  Sammensatte virtuelle pakker: "
 msgid "  Missing: "
 msgstr "  Mangler: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Antall unike versjoner: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Antall unike versjoner: "
@@ -2874,6 +3110,12 @@ msgstr "Slå opp en SRV-oppføring (f.eks. _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "slå sammen filer, med automatisk utpakking"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3123,6 +3365,10 @@ msgstr "oppgrader systemet ved å fjerne/installere/oppgradere pakker"
 msgid "edit the source information file"
 msgstr "Leser tilstandsinformasjon"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3329,7 +3575,7 @@ msgstr "Ukjent komprimeringsalgoritme «%s»"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimert utdata %s trenger et komprimeringssett"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Klarte ikke å opprette IPC-rør til underprosessen"
 
@@ -3448,23 +3694,23 @@ msgstr "Arkivet har ikke noe pakkefelt"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s har ingen overstyringsoppføring\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s har ingen overstyringsoppføring\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr " %s-vedlikeholderen er %s, ikke %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr " %.*s-vedlikeholderen er %.*s, ikke %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s har ingen kildeoverstyringsoppføring\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s har ingen kildeoverstyringsoppføring\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s har ingen binæroverstyringsoppføring heller\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s har ingen binæroverstyringsoppføring heller\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3502,7 +3748,7 @@ msgstr "Ødelagte hodedata"
 msgid "Connection failed"
 msgstr "Forbindelsen mislykkes"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3546,7 +3792,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Disk ikke funnet."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fant ikke fila"
 
@@ -3582,7 +3828,7 @@ msgstr "Klarte ikke å opprette en sokkel for %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Klarte ikke å starte forbindelsen til %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Mislyktes"
 
@@ -3596,9 +3842,7 @@ msgstr "Klarte ikke å koble til %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Klarte ikke å koble til %s:%s (%s), tidsavbrudd på forbindelsen"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Kobler til %s"
@@ -3636,144 +3880,15 @@ msgstr "Klarte ikke å få status"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ugyldig adresse. Lokale adresser kan ikke starte med //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Logger inn"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Klarte ikke å fastslå navnet på motparten"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Klarte ikke å fastslå det lokale navnet"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Tjeneren nektet oss å kople til og sa: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER mislykkes, tjeneren sa: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS mislykkes, tjeneren sa: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"En mellomtjener er oppgitt, men ikke noe innloggingsskript. Feltet «Acquire::"
-"ftp::ProxyLogin» er tomt."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Kommandoen «%s» i innlogginsskriptet mislykkes, tjeneren sa: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE mislykkes, tjeneren sa: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Tidsavbrudd på forbindelsen"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Tjeneren lukket forbindelsen"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Et svar oversvømte bufferen."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokollødeleggelse"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Klarte ikke å opprette en sokkel"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Klarte ikke å kople til datasokkelen, tidsavbrudd på forbindelsen"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Klarte ikke å koble til en passiv sokkel."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo klarte ikke å opprette en lyttesokkel"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Klarte ikke å binde til sokkel"
 
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Klarte ikke å lytte til sokkel"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Klarte ikke å avgjøre sokkelnavnet"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Klarte ikke å sende PORT-kommandoen"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Ukjent adressefamilie %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT mislykkes, tjeneren sa: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Tidsavbrudd på tilkoblingen til datasokkelen"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Klarte ikke å godta tilkoblingen"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem ved oppretting av nøkkel for fil"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Klarte ikke å hente fila, tjeneren sa «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Tidsavbrudd på datasokkelen"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Dataoverføringen mislykkes, tjeneren sa «%s»"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Spørring"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Klarte ikke å starte"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3792,26 +3907,25 @@ msgid ""
 msgstr "Intern feil: God signatur, men kunne bestemme nøkkelfingeravtrykk?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Klarte ikke kjøre «apt-key» for å verifisere signaturen (er gnupg "
 "installert?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Ukjent feil ved kjøring av apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "Signatur med nøkkel %s bruker svak oppsummeringsalgoritme (%s)"
 
 #: methods/gpgv.cc
@@ -3846,18 +3960,134 @@ msgstr "Utvalget mislykkes"
 msgid "Connection timed out"
 msgstr "Tidsavbrudd på forbindelsen"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Klarte ikke å sette endringstidspunkt"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Forbindelsen ble uventet stengt"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Tomme filer kan ikke være gyldige arkiver"
 
+#~ msgid "Logging in"
+#~ msgstr "Logger inn"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Klarte ikke å fastslå navnet på motparten"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Klarte ikke å fastslå det lokale navnet"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Tjeneren nektet oss å kople til og sa: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER mislykkes, tjeneren sa: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS mislykkes, tjeneren sa: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "En mellomtjener er oppgitt, men ikke noe innloggingsskript. Feltet "
+#~ "«Acquire::ftp::ProxyLogin» er tomt."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Kommandoen «%s» i innlogginsskriptet mislykkes, tjeneren sa: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE mislykkes, tjeneren sa: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Tidsavbrudd på forbindelsen"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Tjeneren lukket forbindelsen"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Et svar oversvømte bufferen."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokollødeleggelse"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Klarte ikke å opprette en sokkel"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Klarte ikke å kople til datasokkelen, tidsavbrudd på forbindelsen"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Klarte ikke å koble til en passiv sokkel."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo klarte ikke å opprette en lyttesokkel"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Klarte ikke å binde til sokkel"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Klarte ikke å lytte til sokkel"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Klarte ikke å avgjøre sokkelnavnet"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Klarte ikke å sende PORT-kommandoen"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Ukjent adressefamilie %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT mislykkes, tjeneren sa: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Tidsavbrudd på tilkoblingen til datasokkelen"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Klarte ikke å godta tilkoblingen"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Klarte ikke å hente fila, tjeneren sa «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Tidsavbrudd på datasokkelen"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Dataoverføringen mislykkes, tjeneren sa «%s»"
+
+#~ msgid "Query"
+#~ msgstr "Spørring"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Klarte ikke å starte"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Forbindelsen ble uventet stengt"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installert: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Følgende pakker vil bli endret:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ja, gjør som jeg sier!"
 
diff --git a/po/ne.po b/po/ne.po
index 859a97d..8e8ca18 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2006-06-12 14:35+0545\n"
 "Last-Translator: Shiva Pokharel <pokharelshiva@hotmail.com>\n"
 "Language-Team: Nepali <info@mpp.org.np>\n"
@@ -50,8 +50,8 @@ msgstr "डाइरेक्ट्री %s फेरियो "
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -181,8 +181,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -193,7 +192,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -212,6 +211,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s  %s तान्न असफल भयो"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -232,13 +238,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s (%s) मा जडान गरिदैछ"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -621,6 +620,30 @@ msgstr "वाक्य संरचना त्रुटि %s:%u: निर
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "वाक्य संरचना त्रुटि %s:%u:फाइलको अन्त्यमा अतिरिक्त जंक"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -730,11 +753,11 @@ msgstr "सहायक प्रक्रिया %s ले एउटा त
 msgid "Sub-process %s exited unexpectedly"
 msgstr "सहायक प्रक्रिया %s अनपेक्षित बन्द भयो"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "त्रुटि पढ्नुहोस्"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "त्रुटि लेख्नुहोस्"
 
@@ -1042,6 +1065,12 @@ msgstr "सूचि डाइरेक्ट्री ताल्चा मा
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1223,6 +1252,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "स्तर वृद्धि गणना गरिदैछ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "कूल निर्भरताहरू:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1312,8 +1351,8 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 "द्वन्द/पुन-आधारित लूपको कारणले गर्दा स्थापना चलाउनको लागि अस्थायी रुपमा प्याकेज %s "
-"हटाउनु पर्नेछ । यो प्राय नराम्रो हो, तर यदि तपाईँ यो साँच्चै गर्न चाहनुहुन्छ भने, APT::"
-"Force-LoopBreak विकल्प सक्रिय गर्नुहोस् ।"
+"हटाउनु पर्नेछ । यो प्राय नराम्रो हो, तर यदि तपाईँ यो साँच्चै गर्न चाहनुहुन्छ भने, "
+"APT::Force-LoopBreak विकल्प सक्रिय गर्नुहोस् ।"
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
@@ -1522,10 +1561,6 @@ msgstr ""
 "केही अनुक्रमणिका फाइलहरू डाउनलोड गर्न असफल भयो, तिनीहरू उपेक्षित भए, वा सट्टामा पुरानो "
 "एउटा प्रयोग गरियो ।"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "स्तर वृद्धि गणना गरिदैछ"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1795,6 +1830,18 @@ msgstr "निम्न सूचनाले अवस्थालाई हल
 msgid "Broken packages"
 msgstr "भाँचिएका प्याकेजहरू"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1837,6 +1884,12 @@ msgstr "आन्तरिक त्रुटि, आदेश समाप्
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "कस्तो नमिलेको.. साइजहरू मेल खाएन, apt@packages.debian.org इमेल गर्नुहोस्"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  स्थापना भयो:"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1844,6 +1897,11 @@ msgstr "कस्तो नमिलेको.. साइजहरू मेल
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "संग्रहहरुको %sB/%sB प्राप्त गर्न आवश्यक ।\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1851,13 +1909,55 @@ msgstr "संग्रहहरुको %sB/%sB प्राप्त गर
 msgid "Need to get %sB of archives.\n"
 msgstr "संग्रहहरुको %sB प्राप्त गर्न आवश्यक ।\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "अनप्याक गरिसके पछि थप डिस्क खाली ठाउँको %sB प्रयोग हुनेछ ।\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "लेबुल भण्डारण गर्नुहोस्:%s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1875,6 +1975,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 #, fuzzy
 msgid "Do you want to continue?"
@@ -1933,6 +2041,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "आन्तरिक त्रुटि,समस्या हलकर्ताले उत्तम गुण भाँच्यो "
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1951,18 +2066,6 @@ msgid_plural ""
 msgstr[0] "निम्न नयाँ प्याकेजहरू स्थापना हुनेछन्:"
 msgstr[1] "निम्न नयाँ प्याकेजहरू स्थापना हुनेछन्:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "निम्न अतिरिक्त प्याकेजहरू स्थापना हुनेछन्:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "सुझाव दिएका प्याकेजहरू:"
@@ -1971,6 +2074,11 @@ msgstr "सुझाव दिएका प्याकेजहरू:"
 msgid "Recommended packages:"
 msgstr "सिफारिस गरिएका प्याकेजहरू:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "निम्न अतिरिक्त प्याकेजहरू स्थापना हुनेछन्:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2100,14 +2208,51 @@ msgstr "वा"
 msgid "The following packages have unmet dependencies:"
 msgstr "निम्न प्याकेजहरुले निर्भरताहरू भेटेनन्:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "%s को लागि %s निर्भरता सन्तुष्ट गर्न असफल: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "निम्न नयाँ प्याकेजहरू स्थापना हुनेछन्:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr " %s स्थापना भयो"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "कूल निर्भरताहरू:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "निम्न प्याकेजहरू हटाइनेछन्:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:"
@@ -2116,10 +2261,24 @@ msgstr "निम्न प्याकेजहरू पछाडि राख
 msgid "The following packages will be upgraded:"
 msgstr "निम्न प्याकेजहरू स्तर वृद्धि हुनेछन्:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "निम्न प्याकेजहरू स्तरकम गरिनेछन्:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "पिन गरिएका प्याकेजहरू:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "निम्न भइरहेको प्याकेजहरू परिवर्तन हुनेछैन:"
@@ -2137,26 +2296,50 @@ msgstr ""
 "चेतावनी: निम्न आवश्यक प्याकेजहरू हटाइनेछन् ।\n"
 "तपाईँ के गरिरहेको यकिन नभएसम्म यो काम गरिने छैन!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu स्तर वृद्धि गरियो, %lu नयाँ स्थापना भयो, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr " %s स्थापना भयो"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu पुन: स्थापना गरियो, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr " %s स्थापना भयो"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu स्तर कम गरियो, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu हटाउन र %lu स्तर वृद्धि गरिएन ।\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2184,7 +2367,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2358,8 +2541,8 @@ msgstr "%s कुनै निर्माणमा आधारित हुद
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2396,6 +2579,11 @@ msgstr " %s मा  %s  पुन:नामकरण असफल भयो"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2413,6 +2601,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2459,6 +2678,12 @@ msgstr "  मिश्रित अवास्तविक प्याके
 msgid "  Missing: "
 msgstr "  हराइरहेको:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "कूल भिन्न संस्करणहरू:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "कूल भिन्न संस्करणहरू:"
@@ -2790,6 +3015,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "समस्या द्रुतान्वेषण फाइल"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3036,6 +3267,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "उपलब्ध सूचना गाँभिदैछ"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3242,7 +3477,7 @@ msgstr "अज्ञात सङ्कुचन अल्गोरिद्म
 msgid "Compressed output %s needs a compression set"
 msgstr "सङ्कुचन गरिएको निर्गात %s लाई सङ्कुचन सेटको आवश्यक्ता पर्दछ"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "सहायक प्रक्रियामा IPC पाइप सिर्जना गर्न असफल"
 
@@ -3361,23 +3596,23 @@ msgstr "संग्रह संग कुनै प्याकेज फा
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "   %s संग कुनै अधिलेखन प्रविष्टि छैन\n"
+msgid "  %.*s has no override entry\n"
+msgstr "   %.*s संग कुनै अधिलेखन प्रविष्टि छैन\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s संभारकर्ता %s हो %s होइन\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s संभारकर्ता %.*s हो %s होइन\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no source override entry\n"
-msgstr "   %s संग कुनै अधिलेखन प्रविष्टि छैन\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "   %.*s संग कुनै अधिलेखन प्रविष्टि छैन\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "   %s संग कुनै अधिलेखन प्रविष्टि छैन\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "   %.*s संग कुनै अधिलेखन प्रविष्टि छैन\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3415,7 +3650,7 @@ msgstr "खराब हेडर डेटा"
 msgid "Connection failed"
 msgstr "जडान असफल भयो"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3457,7 +3692,7 @@ msgstr "%s मा सिडी रोम अनमाउन्ट गर्न 
 msgid "Disk not found."
 msgstr "डिस्क फेला परेन ।"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "फाइल फेला परेन "
 
@@ -3493,7 +3728,7 @@ msgstr "%s (f=%u t=%u p=%u) को लागि सकेट सिर्जन
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr " %s:%s (%s) मा जडान सुरुवात गर्न सकेन"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "असफल भयो"
 
@@ -3507,9 +3742,7 @@ msgstr " %s:%s (%s) मा जडान गर्न सकिएन ।"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "%s:%s (%s) मा जडान गर्न सकिएन, जडान समय सकियो"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "%s मा जडान गरिदैछ"
@@ -3547,144 +3780,15 @@ msgstr "स्थिर गर्न असफल भयो"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "अवैध URl, स्थानिय URIS // संग सुरू हुन सक्दैन"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "लगइन भइरहेछ"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "समान नाम निर्धारण गर्न असक्षम भयो"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "स्थानिय नाम निर्धारण गर्न असक्षम भयो"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "सर्भरले जडान अस्वीकार गर्यो र भन्यो: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "प्रयोगकर्ता असफल भयो, सर्भरले भन्यो: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "पास असफल भयो, सर्भरले भन्यो: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"प्रोक्सी सर्भर निर्दिष्ट गरियो तर कुनै स्क्रिफ्ट लगइन भएन, Acquire::ftp::ProxyLogin  "
-"खाली छ ।"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "लगइन स्क्रिफ्ट आदेश '%s' असफल भयो, सर्भरले भन्यो: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "टाइप असफल भयो: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "जडान समय सकियो"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "सर्भरले जडान बन्द गर्यो"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "एउटा प्रतिक्रियाले बफर अधिप्रवाह गर्यो"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "प्रोटोकल दूषित"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "एउटा सकेट सिर्जना गर्न सकेन"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "डेटा सकेट जडान गर्न सकिएन, जडान समय सकियो"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "निस्क्रिय सकेट जडान गर्न सकिएन"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo सुन्ने सकेट प्राप्त गर्न असक्षम भयो"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "सकेट बाँध्न सकिएन"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "सकेटमा सुन्न सकिएन"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "सकेट नाम निर्धारण गर्न सकिएन"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "पोर्ट आदेश पठाउन असक्षम भयो"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "अज्ञात ठेगाना परिवार %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT असफल भयो, सर्भरले भन्यो: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "डेटा सकेटको जडान समय सकियो"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "जडान स्वीकार गर्न असक्षम भयो"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "समस्या द्रुतान्वेषण फाइल"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "फाइल तान्न असक्षम भयो, सर्भरले भन्यो '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "डेटा सकेट समय सकियो"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "डेटा स्थान्तरण असफल भयो, सर्भरले भन्यो '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "क्वेरी"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "आह्वान गर्न असक्षम भयो"
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3704,24 +3808,19 @@ msgstr "आन्तरिक त्रुटि: असल हस्ताक
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "हस्ताक्षर रूजू गर्न '%s' कार्यन्वयन गर्न सकिएन (के gnupg स्थापना भयो?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key कार्यन्वयन गर्दा अज्ञात त्रुटि"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3754,18 +3853,129 @@ msgstr "असफल चयन गर्नुहोस्"
 msgid "Connection timed out"
 msgstr "जडान समय सकियो"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "समस्या द्रुतान्वेषण फाइल"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "परिमार्जन समय सेट असफल भयो"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "जडान असमायिक बन्द भयो"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "लगइन भइरहेछ"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "समान नाम निर्धारण गर्न असक्षम भयो"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "स्थानिय नाम निर्धारण गर्न असक्षम भयो"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "सर्भरले जडान अस्वीकार गर्यो र भन्यो: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "प्रयोगकर्ता असफल भयो, सर्भरले भन्यो: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "पास असफल भयो, सर्भरले भन्यो: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "प्रोक्सी सर्भर निर्दिष्ट गरियो तर कुनै स्क्रिफ्ट लगइन भएन, "
+#~ "Acquire::ftp::ProxyLogin  खाली छ ।"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "लगइन स्क्रिफ्ट आदेश '%s' असफल भयो, सर्भरले भन्यो: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "टाइप असफल भयो: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "जडान समय सकियो"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "सर्भरले जडान बन्द गर्यो"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "एउटा प्रतिक्रियाले बफर अधिप्रवाह गर्यो"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "प्रोटोकल दूषित"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "एउटा सकेट सिर्जना गर्न सकेन"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "डेटा सकेट जडान गर्न सकिएन, जडान समय सकियो"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "निस्क्रिय सकेट जडान गर्न सकिएन"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo सुन्ने सकेट प्राप्त गर्न असक्षम भयो"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "सकेट बाँध्न सकिएन"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "सकेटमा सुन्न सकिएन"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "सकेट नाम निर्धारण गर्न सकिएन"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "पोर्ट आदेश पठाउन असक्षम भयो"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "अज्ञात ठेगाना परिवार %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT असफल भयो, सर्भरले भन्यो: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "डेटा सकेटको जडान समय सकियो"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "जडान स्वीकार गर्न असक्षम भयो"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "फाइल तान्न असक्षम भयो, सर्भरले भन्यो '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "डेटा सकेट समय सकियो"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "डेटा स्थान्तरण असफल भयो, सर्भरले भन्यो '%s'"
+
+#~ msgid "Query"
+#~ msgstr "क्वेरी"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "आह्वान गर्न असक्षम भयो"
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "जडान असमायिक बन्द भयो"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "निम्न भइरहेको प्याकेजहरू परिवर्तन हुनेछैन:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "हो,मैले भने जस्तै गर्नुहोस्!"
 
diff --git a/po/nl.po b/po/nl.po
index 65eba0d..ae52ad5 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,14 +9,14 @@
 # Wannes Soenen <wannes@wannes.cjb.net>, 2002.
 # Frans Pop <elendil@planet.nl>, 2010.
 # Jeroen Schot <schot@a-eskwadraat.nl>, 2011.
-# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014-2022.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014-2025.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.4.4\n"
+"Project-Id-Version: apt 2.9.23\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2022-04-08 20:34+0200\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2025-01-21 20:32+0100\n"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
 "Language: nl\n"
@@ -62,11 +62,12 @@ msgstr "De pakketbron '%s' heeft niet langer een Release-bestand."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Normaal gezien is dit niet toegelaten, maar de optie Acquire::"
-"AllowDowngradeToInsecureRepositories werd gegeven om dit te omzeilen."
+"Normaal gezien is dit niet toegelaten, maar de optie "
+"Acquire::AllowDowngradeToInsecureRepositories werd gegeven om dit te "
+"omzeilen."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -214,8 +215,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Tegenstrijdige distributie: %s (verwachtte %s, maar kreeg %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Bij pakketbron '%s' is de '%s'-waarde gewijzigd van '%s' naar '%s'"
@@ -228,7 +228,7 @@ msgstr ""
 "%hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -252,6 +252,15 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Ophalen van %s is mislukt  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Pakketbronnen zouden een duidelijk ondertekend InRelease-bestand moeten "
+"leveren, maar er is er geen gevonden op %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -272,16 +281,6 @@ msgstr "Kan geen bron vinden om versie '%s' van '%s' op te halen"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Logbestand met veranderingen niet beschikbaar voor %s=%s"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"Methode '%s' wordt niet ondersteund en is standaard uitgeschakeld. U "
-"schakelt best over op http(s). Stel Dir::Bin::Methods::%s in op \"%s\" om "
-"deze opnieuw in te schakelen."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -696,6 +695,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntactische fout %s:%u: extra rommel aan het einde van het bestand"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Fout:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Waarschuwing:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Kennisgeving:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Controle:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Debug:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -813,11 +836,11 @@ msgstr "Subproces %s gaf een foutcode terug (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Subproces %s sloot onverwacht af"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Leesfout"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Schrijffout"
 
@@ -1141,6 +1164,14 @@ msgstr "Kan de beheersmap (%s) niet vergrendelen. Heeft u beheerdersrechten?"
 msgid "Not locked"
 msgstr "Niet vergrendeld"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+"Het voor dpkg in Dir::Bin::dpkg ingestelde uitvoerbare bestand ontbreekt. Er "
+"wordt teruggevallen op de standaardinstelling dpkg."
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1333,6 +1364,14 @@ msgstr "Instellen op het ontvangen van een oplossing"
 msgid "External solver failed without a proper error message"
 msgstr "Externe oplosser faalde zonder passende foutmelding"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Opwaardering wordt doorgerekend"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Vereisten oplossen"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Externe oplosser uitvoeren"
@@ -1644,10 +1683,6 @@ msgstr ""
 "Ophalen van sommige indexbestanden is mislukt. Deze zijn of genegeerd, of er "
 "zijn oudere versies van gebruikt."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Opwaardering wordt doorgerekend"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1832,8 +1867,8 @@ msgid ""
 "Security details are available in apt-secure(8).\n"
 msgstr ""
 "Configuratieopties en syntaxis worden gespecificeerd in apt.conf(5).\n"
-"Informatie over het configureren van pakketbronnen vindt u in sources."
-"list(5).\n"
+"Informatie over het configureren van pakketbronnen vindt u in "
+"sources.list(5).\n"
 "Keuzes voor pakketten en versies kunnen geuit worden via "
 "apt_preferences(5).\n"
 "Details over beveiliging zijn te vinden in apt-secure(8).\n"
@@ -1928,6 +1963,20 @@ msgstr "De volgende informatie kan misschien helpen de situatie op te lossen:"
 msgid "Broken packages"
 msgstr "Niet-werkende pakketten"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Niet-samengevoegd (unmerged) usr wordt niet langer ondersteund, gebruik "
+"usrmerge om te converteren naar een samengevoegd usr-systeem."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Raadpleeg %s voor meer informatie."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1955,7 +2004,7 @@ msgstr ""
 #: apt-private/private-install.cc
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
 msgstr ""
-"Er werden pakketten gedegradeerd en -y was gebruikt zonder --allow-"
+"Er werden pakketten gedowngraded en -y was gebruikt zonder --allow-"
 "downgrades."
 
 #: apt-private/private-install.cc
@@ -1973,8 +2022,13 @@ msgstr "Interne fout. Rangschikken is niet voltooid"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Merkwaardig... De groottes kwamen niet overeen. Gelieve apt@packages.debian."
-"org te mailen"
+"Merkwaardig... De groottes kwamen niet overeen. Gelieve "
+"apt@packages.debian.org te mailen"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Downloadgrootte: %sB / %sB\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1983,6 +2037,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Downloadgrootte: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1990,13 +2049,57 @@ msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Er moeten %sB aan archieven opgehaald worden.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Na deze bewerking zal er %sB extra schijfruimte gebruikt worden.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Benodigde ruimte: %sB / %sB beschikbaar\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Meer ruimte nodig dan beschikbaar: %sB > %sB, de installatie kan mislukken"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "in %s:  %sB / %sB beschikbaar\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"Meer ruimte nodig in %s dan beschikbaar: %sB > %sB, de installatie kan "
+"mislukken"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Benodigde ruimte: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Vrijgemaakte ruimte: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2016,6 +2119,14 @@ msgstr ""
 "Het verwijderen van essentiële voor het systeem kritieke pakketten is niet "
 "toegestaan. Dit kan het systeem onklaar maken."
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Toch doorgaan?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Doorgaan?"
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Wilt u doorgaan?"
@@ -2078,6 +2189,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Interne fout. AutoRemover heeft dingen stukgemaakt"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Gebruik '%s' om het te verwijderen."
+msgstr[1] "Gebruik '%s' om ze te verwijderen."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2099,17 +2217,6 @@ msgstr[0] "%lu pakket was automatisch geïnstalleerd en is niet langer nodig.\n"
 msgstr[1] ""
 "%lu pakketten waren automatisch geïnstalleerd en zijn niet langer nodig.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Gebruik '%s' om het te verwijderen."
-msgstr[1] "Gebruik '%s' om ze te verwijderen."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "De volgende extra pakketten zullen geïnstalleerd worden:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Voorgestelde pakketten:"
@@ -2118,6 +2225,10 @@ msgstr "Voorgestelde pakketten:"
 msgid "Recommended packages:"
 msgstr "Aanbevolen pakketten:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "De volgende extra pakketten zullen geïnstalleerd worden:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2254,14 +2365,42 @@ msgstr " of"
 msgid "The following packages have unmet dependencies:"
 msgstr "De volgende pakketten hebben niet-voldane vereisten:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Niet-voldane vereisten:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "De volgende NIEUWE pakketten zullen geïnstalleerd worden:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Installeren:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Installeren van vereisten:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "VERWIJDEREN:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "De volgende pakketten zullen VERWIJDERD worden:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "De volgende opwaarderingen zijn uitgesteld vanwege fasering:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Nog niet opgewaardeerd vanwege fasering:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Niet opgewaardeerd:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "De volgende pakketten zijn achtergehouden:"
@@ -2270,9 +2409,21 @@ msgstr "De volgende pakketten zijn achtergehouden:"
 msgid "The following packages will be upgraded:"
 msgstr "De volgende pakketten zullen opgewaardeerd worden:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Opwaarderen:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "DOWNGRADEN:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
-msgstr "De volgende pakketten zullen GEDEGRADEERD worden:"
+msgstr "De volgende pakketten zullen GEDOWNGRADED worden:"
+
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Veranderen vastgehouden pakketten:"
 
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
@@ -2291,26 +2442,50 @@ msgstr ""
 "WAARSCHUWING: De volgende essentiële pakketten zullen verwijderd worden.\n"
 "Dit dient NIET gedaan te worden tenzij u precies weet wat u doet!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Samenvatting:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu opgewaardeerd, %lu nieuw geïnstalleerd, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Opwaarderen: %lu, Installeren: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu opnieuw geïnstalleerd, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Opnieuw installeren: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
-msgstr "%lu gedegradeerd, "
+msgstr "%lu gedowngraded, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Downgraden: %lu, "
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu te verwijderen en %lu niet opgewaardeerd.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Verwijderen: %lu, Niet opwaarderen: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2338,7 +2513,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2523,8 +2698,8 @@ msgstr "%s heeft geen bouwvereisten.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Er is geen architectuurinformatie beschikbaar voor %s. Raadpleeg apt.conf(5) "
 "APT::Architectures om dit te configureren"
@@ -2567,6 +2742,11 @@ msgstr "Verwerken van %s is mislukt. Opnieuw bewerken? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Uw bestand '%s' is gewijzigd. Voer 'apt-get update' uit.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2586,6 +2766,43 @@ msgstr ""
 "Het gebruik van %s is te verkiezen boven het rechtstreeks inbedden van login-"
 "informatie in het %s-element voor '%s'"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Ontbrekende Signed-By in het item %s voor '%s'"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Zie de man-pagina apt-secure(8) voor details over het aanmaken van een "
+"pakketbron en over de configuratie langs gebruikerskant."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2635,6 +2852,12 @@ msgstr "  Gemengde virtuele pakketten: "
 msgid "  Missing: "
 msgstr "  Ontbrekend: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Totaal aantal verschillende versies: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Totaal aantal verschillende versies: "
@@ -2991,6 +3214,10 @@ msgstr "een SRV-record (bijv. _http._tcp.ftp.debian.org) opzoeken"
 msgid "concatenate files, with automatic decompression"
 msgstr "bestanden samenvoegen, met automatische decompressie"
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr "hash-bestand"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "proxy opzoeken met behulp van apt.conf"
@@ -3214,10 +3441,8 @@ msgid "remove packages"
 msgstr "pakketten verwijderen"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Automatisch alle ongebruikte pakketten verwijderen"
+msgstr "automatisch alle ongebruikte pakketten verwijderen"
 
 #. system wide stuff
 #: cmdline/apt.cc
@@ -3239,6 +3464,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "het bestand met informatie over de pakketbronnen bewerken"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "voldoen aan vereistentekenreeksen"
@@ -3448,7 +3677,7 @@ msgstr "Onbekend compressie-algoritme '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Gecomprimeerde uitvoer %s vereist dat een compressie ingesteld is"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Aanmaken van IPC-pijp naar subproces is mislukt"
 
@@ -3567,23 +3796,23 @@ msgstr "Archief heeft geen 'package'-veld"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s heeft geen voorrangsvermelding\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s heeft geen voorrangsvermelding\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s beheerder is %s, niet %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s beheerder is %.*s, niet %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s heeft geen voorrangsvermelding voor bronpakketten\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s heeft geen voorrangsvermelding voor bronpakketten\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s heeft ook geen voorrangsvermelding voor binaire pakketten\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s heeft ook geen voorrangsvermelding voor binaire pakketten\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3621,7 +3850,7 @@ msgstr "Foute headerdata"
 msgid "Connection failed"
 msgstr "Verbinding mislukt"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3668,7 +3897,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Schijf niet gevonden."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Bestand niet gevonden"
 
@@ -3703,7 +3932,7 @@ msgstr "Kon de socket voor %s (f=%u t=%u p=%u) niet aanmaken"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Kan de verbinding met %s:%s (%s) niet aangaan."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Mislukt"
 
@@ -3717,9 +3946,7 @@ msgstr "Kon geen verbinding maken met %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Kon geen verbinding maken met %s:%s (%s); de verbinding verliep"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Er wordt verbinding gemaakt met %s"
@@ -3757,145 +3984,15 @@ msgstr "Kon status niet bepalen"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ongeldige URI. Lokale URI's mogen niet beginnen met //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Bezig met aanmelden"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Kan de naam van de peer niet vaststellen"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Kan de lokale naam niet vaststellen"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "De verbinding is door de server geweigerd met bericht: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER (gebruiker) mislukt; bericht van de server: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS (wachtwoord) mislukt; bericht van de server: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Er was een proxy-server opgegeven, maar geen aanmeldscript. Acquire::ftp::"
-"ProxyLogin is leeg."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-"Opdracht '%s' uit het aanmeldscript is mislukt; bericht van de server: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE mislukt; bericht van de server: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "De verbinding is verlopen"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "De verbinding is verbroken door de server"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Een reactie deed de buffer overlopen."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protocolfouten"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Kon geen socket aanmaken"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Kon de datasocket niet verbinden. De verbinding verliep"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Kon de passieve socket niet verbinden."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo kon geen luistersocket verkrijgen"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Kon geen socket binden"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Kon niet luisteren op de socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Kon de socketnaam niet vaststellen"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Kan PORT-commando niet verzenden"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Onbekende adresfamilie %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT is mislukt; bericht van de server: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Verbinding met de datasocket is verlopen"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Kan de verbinding niet aanvaarden"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Probleem bij het frommelen van het bestand"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Kan het bestand niet ophalen; bericht van de server: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Datasocket verliep"
+msgid "untrusted public key algorithm: %s"
+msgstr "niet-vertrouwd openbaar sleutelalgoritme: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Datatransfer is mislukt; bericht van de server: %s"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Zoekopdracht"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Mislukking bij aanroepen van "
+msgid "%s will be deprecated in a future release"
+msgstr "%s zal worden uitgefaseerd in een toekomstige release"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3918,32 +4015,20 @@ msgstr ""
 "niet bepalen?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
-"Kon 'apt-key' niet uitvoeren om ondertekening te verifiëren (is gnupg "
+"Kon 'gpgv' niet uitvoeren om ondertekening te verifiëren (is gnupg "
 "geïnstalleerd?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "Onbekende fout bij het uitvoeren van apt-key"
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-"De sleutel wordt opgeslagen in de uitgefaseerde sleutelbos (%s) in trusted."
-"gpg, raadpleeg de afdeling UITFASERING (DEPRECATION) in apt-key(8) voor "
-"details."
+msgid "Unknown error executing gpgv"
+msgstr "Onbekende fout bij het uitvoeren van gpgv"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
-"De ondertekening door sleutel %s maakt gebruik van een zwak hash-algoritme "
-"(%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "Handtekening met sleutel %s gebruikt een zwak algoritme (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3978,14 +4063,23 @@ msgstr "Selectie is mislukt"
 msgid "Connection timed out"
 msgstr "Verbinding verliep"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Probleem bij het frommelen van het bestand"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Instellen van de aanpassingstijd is mislukt"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Verbinding werd voortijdig afgebroken"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Lege bestanden kunnen geen geldige archieven zijn"
+
+#, c-format
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "De sleutel wordt opgeslagen in de uitgefaseerde sleutelbos (%s) van "
+#~ "trusted.gpg. Raadpleeg de afdeling GEBRUIKERSCONFIGURATIE in apt-"
+#~ "secure(8) voor details."
diff --git a/po/nn.po b/po/nn.po
index c284da5..e397249 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2005-02-14 23:30+0100\n"
 "Last-Translator: Havard Korsvoll <korsvoll@skulelinux.no>\n"
 "Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
@@ -54,8 +54,8 @@ msgstr "Katalogen %s er avleidd"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -185,8 +185,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -197,7 +196,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -216,6 +215,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Klarte ikkje henta %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -236,13 +242,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Koplar til %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -629,6 +628,30 @@ msgstr "Syntaksfeil %s:%u: Direktiva kan berre liggja i det 
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaksfeil %s:%u: Ekstra rot til slutt i fila"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -738,11 +761,11 @@ msgstr "Underprosessen %s returnerte ein feilkode (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Underprosessen %s avslutta uventa"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Lesefeil"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Skrivefeil"
 
@@ -1050,6 +1073,12 @@ msgstr "Klarte ikkje l
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, fuzzy, c-format
@@ -1231,6 +1260,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Reknar ut oppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Tal på krav: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1531,10 +1570,6 @@ msgstr ""
 "Klarte ikkje lasta ned nokre av indeksfilene. Dei er ignorerte, eller gamle "
 "filer er brukte i staden."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Reknar ut oppgradering"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1803,6 +1838,18 @@ msgstr "F
 msgid "Broken packages"
 msgstr "Øydelagde pakkar"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1846,6 +1893,12 @@ msgstr "Intern feil ved tilleggjing av avleiing"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Installert: "
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1853,6 +1906,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Må henta %sB/%sB med arkiv.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1860,13 +1918,55 @@ msgstr "M
 msgid "Need to get %sB of archives.\n"
 msgstr "Må henta %sB med arkiv.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Etter utpakking vil %sB meir diskplass verta brukt.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Lagra etikett: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1885,6 +1985,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Vil du halda fram?"
@@ -1942,6 +2050,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Intern feil. AllUpgrade øydelagde noko"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1960,18 +2075,6 @@ msgid_plural ""
 msgstr[0] "Dei følgjande NYE pakkane vil verta installerte:"
 msgstr[1] "Dei følgjande NYE pakkane vil verta installerte:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Dei følgjande tilleggspakkane vil verta installerte:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Føreslåtte pakkar:"
@@ -1980,6 +2083,11 @@ msgstr "F
 msgid "Recommended packages:"
 msgstr "Tilrådde pakkar"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Dei følgjande tilleggspakkane vil verta installerte:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2113,14 +2221,51 @@ msgstr " eller"
 msgid "The following packages have unmet dependencies:"
 msgstr "Følgjande pakkar har krav som ikkje er oppfylte:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Klarte ikkje oppfylla kravet %s for %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Dei følgjande NYE pakkane vil verta installerte:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "  Installert: "
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Tal på krav: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Dei følgjande pakkane vil verta FJERNA:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Dei følgjande pakkane er haldne tilbake:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Dei følgjande pakkane er haldne tilbake:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Dei følgjande pakkane er haldne tilbake:"
@@ -2129,10 +2274,24 @@ msgstr "Dei f
 msgid "The following packages will be upgraded:"
 msgstr "Dei følgjande pakkane vil verta oppgraderte:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Dei følgjande pakkane vil verta NEDGRADERTE:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Spikra pakkar:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Dei følgjande pakkane som er haldne tilbake vil verta endra:"
@@ -2151,26 +2310,50 @@ msgstr ""
 "ÅTVARING: Dei følgjande nødvendige pakkane vil verta fjerna.\n"
 "Dette bør IKKJE gjerast utan at du er fullstendig klar over kva du gjer!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu oppgraderte, %lu nyleg installerte, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "  Installert: "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu installerte på nytt, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "  Installert: "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu nedgraderte, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu skal fjernast og %lu skal ikkje oppgraderast.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2198,7 +2381,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2372,8 +2555,8 @@ msgstr "%s har ingen byggjekrav.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2410,6 +2593,11 @@ msgstr "Klarte ikkje endra namnet p
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2427,6 +2615,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2473,6 +2692,12 @@ msgstr "  Samansette virtuelle pakkar: "
 msgid "  Missing: "
 msgstr "  Manglar: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Tal på einskildversjonar: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Tal på einskildversjonar: "
@@ -2808,6 +3033,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3054,6 +3285,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Flettar informasjon om tilgjengelege pakkar"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3255,7 +3490,7 @@ msgstr "Ukjend komprimeringsalgoritme %s"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimert utdata %s treng eit komprimeringssett"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Klarte ikkje oppretta IPC-røyr til underprosessen"
 
@@ -3374,23 +3609,23 @@ msgstr "Arkivet har ikkje noko pakkefelt"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s har inga overstyringsoppføring\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s har inga overstyringsoppføring\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s-vedlikehaldaren er %s, ikkje %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s-vedlikehaldaren er %.*s, ikkje %s\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s har inga overstyringsoppføring\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s har inga overstyringsoppføring\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s har inga overstyringsoppføring\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s har inga overstyringsoppføring\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3428,7 +3663,7 @@ msgstr "
 msgid "Connection failed"
 msgstr "Sambandet mislukkast"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3472,7 +3707,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Fann ikkje fila"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fann ikkje fila"
 
@@ -3508,7 +3743,7 @@ msgstr "Klarte ikkje oppretta sokkel for %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Klarte ikkje initiera sambandet til %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Mislukkast"
 
@@ -3522,9 +3757,7 @@ msgstr "Klarte ikkje kopla til %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Klarte ikkje kopla til %s:%s (%s), tidsavbrot på sambandet"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Koplar til %s"
@@ -3562,144 +3795,15 @@ msgstr "Klarte ikkje f
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ugyldig URI. Lokale URI-ar kan ikkje starta med //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Loggar inn"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Klarte ikkje avgjera namnet på motparten"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Klarte ikkje avgjera det lokale namnet"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Tenaren nekta oss å kopla til, og sa: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER mislukkast, tenaren sa: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS mislukkast, tenaren sa: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Ein mellomtenar er oppgitt, men ikkje noko innloggingsskript. Feltet "
-"«Acquire::ftp::ProxyLogin» er tomt."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Kommandoen «%s» i innlogginsskriptet mislukkast, tenaren sa: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE mislukkast, tenaren sa: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Tidsavbrot på samband"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Tenaren lukka sambandet"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Eit svar flaumde over bufferen."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokolløydeleggjing"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Klarte ikkje oppretta sokkel"
 
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Klarte ikkje kopla til datasokkel, tidsavbrot på sambandet"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Klarte ikkje kopla til passiv sokkel."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo klarte ikkje oppretta ein lyttesokkel"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Klarte ikkje binda til sokkel"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Klarte ikkje lytta til sokkel"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Klarte ikkje avgjera sokkelnamnet"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Klarte ikkje senda PORT-kommandoen"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Ukjend adressefamilie %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT mislukkast, tenaren sa: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Tidsavbrot på tilkopling til datasokkel"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Klarte ikkje godta tilkoplinga"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem ved oppretting av nøkkel for fil"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Klarte ikkje henta fila, tenaren sa «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Tidsavbrot på datasokkelen"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Dataoverføringa mislukkast, tenaren sa «%s»"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Spørjing"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Klarte ikkje starta "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3718,24 +3822,17 @@ msgid ""
 msgstr ""
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
-msgstr ""
-
-#: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 
 #: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
+msgid "Unknown error executing gpgv"
 msgstr ""
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3769,18 +3866,129 @@ msgstr "Utvalet mislukkast"
 msgid "Connection timed out"
 msgstr "Tidsavbrot på sambandet"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Klarte ikkje setja endringstidspunkt"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Sambandet vart uventa stengd"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Loggar inn"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Klarte ikkje avgjera namnet på motparten"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Klarte ikkje avgjera det lokale namnet"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Tenaren nekta oss å kopla til, og sa: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER mislukkast, tenaren sa: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS mislukkast, tenaren sa: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Ein mellomtenar er oppgitt, men ikkje noko innloggingsskript. Feltet "
+#~ "«Acquire::ftp::ProxyLogin» er tomt."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Kommandoen «%s» i innlogginsskriptet mislukkast, tenaren sa: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE mislukkast, tenaren sa: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Tidsavbrot på samband"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Tenaren lukka sambandet"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Eit svar flaumde over bufferen."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokolløydeleggjing"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Klarte ikkje oppretta sokkel"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Klarte ikkje kopla til datasokkel, tidsavbrot på sambandet"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Klarte ikkje kopla til passiv sokkel."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo klarte ikkje oppretta ein lyttesokkel"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Klarte ikkje binda til sokkel"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Klarte ikkje lytta til sokkel"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Klarte ikkje avgjera sokkelnamnet"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Klarte ikkje senda PORT-kommandoen"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Ukjend adressefamilie %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT mislukkast, tenaren sa: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Tidsavbrot på tilkopling til datasokkel"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Klarte ikkje godta tilkoplinga"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Klarte ikkje henta fila, tenaren sa «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Tidsavbrot på datasokkelen"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Dataoverføringa mislukkast, tenaren sa «%s»"
+
+#~ msgid "Query"
+#~ msgstr "Spørjing"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Klarte ikkje starta "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Sambandet vart uventa stengd"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Dei følgjande pakkane som er haldne tilbake vil verta endra:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ja, gjer som eg seier!"
 
diff --git a/po/pl.po b/po/pl.po
index 7538e50..1a8c4ad 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,24 +5,24 @@
 # Polish translation by:
 #
 # Nazewnictwo i spójność tłumaczeń programów apt, aptitude, synaptic i innych:
-# http://wiki.debian.org/PolishL10N/PackageInstallers
+# https://wiki.debian.org/pl/L10n/Polish/PackageInstallers
 # Marcin Owsiany <porridge@debian.org>, 2002, 2003, 2004.
 # Bartosz Fenski <fenio@debian.org>, 2005, 2006.
 # Wiktor Wandachowicz <siryes@gmail.com>, 2008, 2009.
-# Michał Kułach <michal.kulach@gmail.com>, 2012.
+# Michał Kułach <michal.kulach@gmail.com>, 2012, 2024.
 msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.9.7.3\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2012-07-28 21:53+0200\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-07-08 17:53+0200\n"
 "Last-Translator: Michał Kułach <michal.kulach@gmail.com>\n"
 "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
 "Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 22.12.3\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
 
@@ -31,54 +31,63 @@ msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
+"Aktualizacja z takiego repozytorium nie może być bezpiecznie wykonana, zatem "
+"jest domyślnie wyłączona."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Data from such a repository can't be authenticated and is therefore "
 "potentially dangerous to use."
 msgstr ""
+"Dane z takiego repozytorium nie mogą być uwierzytelnione, zatem są "
+"potencjalnie niebezpieczne."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
+"Więcej informacji o tworzeniu repozytorium i szczegółach konfiguracji "
+"użytkownika znajduje się w podręczniku apt-secure(8)."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is no longer signed."
-msgstr "Ominięcie katalogu %s"
+msgstr "Repozytorium \"%s\" nie jest już obecnie podpisane."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' no longer has a Release file."
-msgstr "Ominięcie katalogu %s"
+msgstr "Repozytorium \"%s\" nie ma już pliku Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
+"Zwykle nie byłoby to dopuszczalne, lecz podano opcję "
+"Acquire::AllowDowngradeToInsecureRepositories, aby to przesłonić."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is not signed."
-msgstr "Ominięcie katalogu %s"
+msgstr "Repozytorium \"%s\" nie jest podpisane."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' does not have a Release file."
-msgstr "Ominięcie katalogu %s"
+msgstr "Repozytorium \"%s\" nie ma pliku Release."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' provides only weak security information."
-msgstr "Ominięcie katalogu %s"
+msgstr ""
+"Repozytorium \"%s\" zapewnia jedynie słabe informacje o zabezpieczeniach."
 
 #: apt-pkg/acquire-item.cc ftparchive/writer.cc
 #, c-format
 msgid "Failed to readlink %s"
-msgstr "Nie udało się odczytać dowiązania %s"
+msgstr "Nie udało się wykonać operacji readlink na %s"
 
 #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc
 #, c-format
@@ -91,7 +100,7 @@ msgstr "Błędna suma kontrolna"
 
 #: apt-pkg/acquire-item.cc
 msgid "Insufficient information available to perform this download securely"
-msgstr ""
+msgstr "NiewystarczajÄ…ce informacje do bezpiecznego pobrania"
 
 #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -103,14 +112,12 @@ msgid "Size mismatch"
 msgstr "Błędny rozmiar"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Invalid file format"
-msgstr "Nieprawidłowa operacja %s"
+msgstr "Nieprawidłowy format pliku"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Signature error"
-msgstr "Błąd zapisu"
+msgstr "Błąd podpisu"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: apt-pkg/acquire-item.cc methods/gpgv.cc
@@ -119,15 +126,17 @@ msgid ""
 "Clearsigned file isn't valid, got '%s' (does the network require "
 "authentication?)"
 msgstr ""
+"Plik podpisany w trybie clearsign nie jest prawidłowy, otrzymano \"%s\" (czy "
+"sieć wymaga uwierzytelnienia?)"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "An error occurred during the signature verification. The repository is not "
 "updated and the previous index files will be used. GPG error: %s: %s"
 msgstr ""
 "Podczas weryfikacji podpisu wystąpił błąd. Nie zaktualizowano repozytorium i "
-"w dalszym ciągu będą używane poprzednie pliki indeksu. Błąd GPG %s: %s\n"
+"w dalszym ciągu będą używane poprzednie pliki indeksu. Błąd GPG %s: %s"
 
 #. Invalid signature file, reject (LP: #346386) (Closes: #627642)
 #: apt-pkg/acquire-item.cc
@@ -141,6 +150,9 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
+"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium "
+"\"%s\" nie ma komponentu \"%s\" (pomyłka w nazwie komponentu w pliku "
+"sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -148,6 +160,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
+"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium "
+"\"%s\" nie obsługuje architektury \"%s\""
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -155,6 +169,9 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
+"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ wydaje się, że "
+"repozytorium \"%s\" go nie zapewnia (literówka we wpisie w pliku "
+"sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -162,6 +179,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' provides only "
 "weak security information for it"
 msgstr ""
+"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium "
+"\"%s\" zapewnia dla niego jedynie słabe informacja o zabezpieczeniach"
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time since then the file is invalid - formatted in the same way as in
@@ -179,39 +198,38 @@ msgstr ""
 #. the time until the file will be valid - formatted in the same way as in
 #. the download progress display (e.g. 7d 3h 42min 1s)
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Release file for %s is expired (invalid since %s). Updates for this "
-#| "repository will not be applied."
+#, c-format
 msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
-"Plik Release dla %s wygasnął (nieprawidłowy od %s). Aktualizacje z tego "
-"repozytorium nie będą wykonywane."
+"Plik Release dla %s nie jest jeszcze prawidłowy (i będzie taki jeszcze przez "
+"%s). Aktualizacje z tego repozytorium nie będą wykonywane."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Nieprawidłowa dystrybucja: %s (oczekiwano %s, a otrzymano %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
-msgstr ""
+msgstr "Repozytorium \"%s\" zmieniło swoją wartość \"%s\" z \"%s\" na \"%s\""
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
+"Repozytorium \"%s\" zmieniło swój domyślny priorytet dla %s z %hi na %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
 msgstr ""
+"Więcej informacji na ten temat można znaleźć online, w Uwagach do wydania "
+"pod adresem: %s"
 
 #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8)
 #: apt-pkg/acquire-item.cc
@@ -220,12 +238,23 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
+"Konieczne jest, aby wyraźne to zaakceptować, przed zastosowaniem "
+"aktualizacji z tego repozytorium. Więcej informacji w podręczniku %s."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
 #, c-format
 msgid "Failed to fetch %s  %s"
 msgstr "Nie udało się pobrać %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Repozytorium powinno dostarczać plik InRelease podpisany w trybie clearsig, "
+"lecz w %s takiego nie znaleziono."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -242,26 +271,21 @@ msgstr "Nie można znaleźć źródła do pobrania wersji \"%s\" pakietu \"%s\""
 
 #. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-msgid "Changelog unavailable for %s=%s"
-msgstr "Dziennik zmian %s (%s)"
-
-#: apt-pkg/acquire-worker.cc
 #, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
+msgid "Changelog unavailable for %s=%s"
+msgstr "Dziennik zmian dla %s=%s jest niedostępny"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
-msgstr ""
+msgstr "Metoda \"%s\" jest wyraźnie wyłączona w konfiguracji."
 
 #: apt-pkg/acquire-worker.cc methods/connect.cc
 #, c-format
 msgid "If you meant to use Tor remember to use %s instead of %s."
 msgstr ""
+"Jeśli zamiarem było korzystanie z Tora, proszę pamiętać o użyciu %s zamiast "
+"%s."
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
@@ -269,9 +293,9 @@ msgid "The method driver %s could not be found."
 msgstr "Nie udało się odnaleźć sterownika metody %s."
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Is the package %s installed?"
-msgstr "Proszę sprawdzić czy pakiet \"dpkg-dev\" jest zainstalowany.\n"
+msgstr "Czy pakiet %s jest zainstalowany?"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
@@ -279,10 +303,11 @@ msgid "Method %s did not start correctly"
 msgstr "Metoda %s nie uruchomiła się poprawnie"
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
-msgstr "Proszę włożyć do napędu \"%s\" dysk o nazwie: \"%s\" i nacisnąć enter."
+msgstr ""
+"Proszę włożyć dysk o nazwie: \"%s\" do napędu \"%s\" i nacisnąć [Enter]."
 
 #: apt-pkg/acquire.cc apt-pkg/cdrom.cc
 #, c-format
@@ -303,6 +328,8 @@ msgstr "Nie udało się zablokować katalogu %s"
 #, c-format
 msgid "No sandbox user '%s' on the system, can not drop privileges"
 msgstr ""
+"W systemie brak użytkownika \"%s\" korzystającego z piaskownicy, nie można "
+"zrezygnować z przywilejów"
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -310,11 +337,13 @@ msgid ""
 "Download is performed unsandboxed as root as file '%s' couldn't be accessed "
 "by user '%s'."
 msgstr ""
+"Pobieranie ma miejsce poza piaskownicą, jako root, ponieważ plik \"%s\" nie "
+"jest dostępny dla użytkownika \"%s\"."
 
 #: apt-pkg/acquire.cc apt-pkg/clean.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Clean of %s is not supported"
-msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany"
+msgstr "Wyczeszczenie \"%s\" nie jest obsługiwane"
 
 #. Only warn if there are no sources.list.d.
 #. Only warn if there is no sources.list file.
@@ -323,7 +352,7 @@ msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany"
 #: apt-pkg/policy.cc apt-pkg/sourcelist.cc
 #, c-format
 msgid "Unable to read %s"
-msgstr "Nie można czytać %s"
+msgstr "Nie można odczytać %s"
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -351,9 +380,12 @@ msgstr ""
 "Błąd, pkgProblemResolver::Resolve zwrócił błąd, może to być spowodowane "
 "zatrzymanymi pakietami."
 
+# Wydaje się, że zwykle chodzi tu o niespełnione zależności, stąd nieco rozwlekłe tłumaczenie
 #: apt-pkg/algorithms.cc
 msgid "Unable to correct problems, you have held broken packages."
-msgstr "Nie udało się naprawić problemów, zatrzymano uszkodzone pakiety."
+msgstr ""
+"Nie udało się naprawić problemów, zatrzymano pakiety uszkodzone/z "
+"niespełnionymi zależnościami."
 
 #: apt-pkg/cachefile.cc
 msgid "The package lists or status file could not be parsed or opened."
@@ -385,10 +417,11 @@ msgstr ""
 "Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find any package by glob '%s'"
 msgstr ""
-"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego typu glob "
+"\"%s\""
 
 #: apt-pkg/cacheset.cc apt-private/private-show.cc
 #, c-format
@@ -554,18 +587,21 @@ msgid "Failed to stat the cdrom"
 msgstr "Nie udało się wykonać operacji stat na CDROM-ie"
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option '%c' [from %s] is not understood in combination with the "
 "other options."
-msgstr "Opcja linii poleceń \"%c\" [z %s] jest nieznana."
+msgstr ""
+"Opcja wiersza poleceń \"%c\" [z %s] nie jest zrozumiała w połączeniu z "
+"innymi opcjami."
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option %s is not understood in combination with the other "
 "options"
-msgstr "Niezrozumiała opcja linii poleceń %s"
+msgstr ""
+"Opcja wiersza poleceń %s nie jest zrozumiała w połączeniu z innymi opcjami"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
@@ -654,10 +690,35 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Błąd składniowy %s:%u: Śmieci na końcu pliku"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Błąd:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Ostrzeżenie:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Informacja:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Audyt:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Debugowanie:"
+
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot find a configured compressor for '%s'"
-msgstr "Nie udało się znaleźć wpisu uwierzytelnienia dla: %s"
+msgstr ""
+"Nie udało się znaleźć skonfigurowanego programu kompresującego dla: \"%s\""
 
 #: apt-pkg/contrib/extracttar.cc
 msgid "Corrupted archive"
@@ -668,10 +729,9 @@ msgid "Tar checksum failed, archive corrupted"
 msgstr "Niepoprawna suma kontrolna tar, archiwum jest uszkodzone"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Nieznany typ nagłówka TAR %u, składnik %s"
+msgstr "Nieznany typ nagłówka TAR %u"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -694,15 +754,15 @@ msgid "Not using locking for nfs mounted lock file %s"
 msgstr "Dla pliku blokady %s montowanego przez NFS nie zostanie użyta blokada"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "Nie udało się uzyskać blokady %s"
+msgstr "Nie udało się uzyskać blokady %s. Jest utrzymywana przez proces %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
 msgstr ""
+"Nie udało się uzyskać blokady %s. Jest utrzymywana przez proces %d (%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -714,12 +774,14 @@ msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Proszę być świadomym, że usunięcie pliku blokady nie jest właściwym "
+"rozwiązaniem i może uszkodzić system."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "List of files can't be created as '%s' is not a directory"
 msgstr ""
-"Lista plików nie może zostać stworzona, ponieważ \"%s\" nie jest katalogiem"
+"Lista plików nie może zostać utworzona, ponieważ \"%s\" nie jest katalogiem"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -768,11 +830,11 @@ msgstr "Podproces %s zwrócił kod błędu (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Podproces %s zakończył się niespodziewanie"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Błąd odczytu"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Błąd zapisu"
 
@@ -783,7 +845,7 @@ msgstr "Problem przy zamykaniu pliku gzip %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Unexpected end of file"
-msgstr ""
+msgstr "Nieoczekiwany koniec pliku"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to create subprocess IPC"
@@ -828,9 +890,9 @@ msgid "Problem syncing the file"
 msgstr "Problem przy zapisywaniu pliku na dysk"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to mkstemp %s"
-msgstr "Nie można wykonać operacji stat na %s"
+msgstr "Nie można wykonać operacji mkstemp na %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -899,6 +961,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: Poświadczenia dla %s zgadzają się, lecz protokół nie jest szyfrowany. "
+"Aby go użyć, konieczne jest dopisanie %s://."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -912,22 +976,22 @@ msgstr "%c%s... Gotowe"
 
 #: apt-pkg/contrib/progress.cc
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s... Gotowe"
+msgstr "%c%s... %llu/%llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s... Gotowe"
+msgstr "%c%s... %llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %u%%"
-msgstr "%c%s... Gotowe"
+msgstr "%c%s... %u%%"
 
 #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
@@ -973,10 +1037,9 @@ msgid "Unparsable control file"
 msgstr "Plik kontrolny nie może zostać poprawnie zinterpretowany"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "Nie udało się uzyskać blokady %s"
+msgstr "Nie udało się odczytać metadanych z %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -984,7 +1047,7 @@ msgstr "Nie udało się uzyskać blokady %s"
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
-msgstr ""
+msgstr "Cel %s chce pobrać ten sam plik (%s) jak %s ze źródła %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; filename and linenumber of
@@ -992,7 +1055,7 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s (%s) is configured multiple times in %s and %s"
-msgstr ""
+msgstr "Cel %s (%s) jest skonfigurowany wielokrotnie w %s i %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -1015,58 +1078,57 @@ msgid ""
 "No Hash entry in Release file %s which is considered strong enough for "
 "security purposes"
 msgstr ""
+"Brak wpisu Hash w pliku Release %s, który byłby wystarczająco silny pod "
+"względem zabezpieczeń"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid '%s' entry in Release file %s"
-msgstr "Nieprawidłowy wpis %s w pliku Release %s"
+msgstr "Nieprawidłowy wpis \"%s\" w pliku Release %s"
 
 #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s"
-msgstr ""
+msgstr "Dla opcji %s ustawiono niezgodne wartości odnośnie źródła %s %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid value set for option %s regarding source %s %s (%s)"
 msgstr ""
+"Dla opcji %s ustawiono nieprawidłową wartość odnośnie źródła %s %s (%s)"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
 msgstr ""
+"Dla opcji %s ustawiono niezgodne wartości odnośnie źródła %s %s: %s != %s"
 
 #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
 #, c-format
 msgid "Unable to parse package file %s (%d)"
-msgstr "Nie udało się zanalizować pliku pakietu %s (%d)"
+msgstr "Nie udało się przeanalizować pliku pakietu %s (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "Oczekiwanie na nagłówki"
+msgstr "Oczekiwanie na blokadÄ™ bufora: %s"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Unable to lock the administration directory (%s), is another process "
-#| "using it?"
+#, c-format
 msgid ""
 "Unable to acquire the dpkg frontend lock (%s), is another process using it?"
 msgstr ""
-"Nie udało się zablokować katalogu administracyjnego (%s), czy inny proces go "
+"Nie udało się pozyskać blokady interfejsu dpkg (%s), czy inny proces go "
 "używa?"
 
 # Musi pasować do su i sudo.
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Unable to lock the administration directory (%s), are you root?"
+#, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
 msgstr ""
-"Nie udało się zablokować katalogu administracyjnego (%s), czy użyto "
-"uprawnień administratora?"
+"Nie udało się pozyskać blokady interfejsu dpkg (%s), czy użyto uprawnień "
+"administratora?"
 
 #. TRANSLATORS: the %s contains the recovery command, usually
 #. dpkg --configure -a
@@ -1098,6 +1160,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Niezablokowany"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1176,13 +1244,13 @@ msgid "Completely removed %s"
 msgstr "Pakiet %s został całkowicie usunięty"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not write log (%s)"
-msgstr "Nie udało się pisać do %s"
+msgstr "Nie można zapisać dziennika (%s)"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Is /dev/pts mounted?"
-msgstr ""
+msgstr "Czy /dev/pts jest zamontowane?"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Operation was interrupted before it could finish"
@@ -1222,13 +1290,12 @@ msgstr ""
 "braku wolnej pamięci"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy
 msgid ""
 "No apport report written because the error message indicates an issue on the "
 "local system"
 msgstr ""
-"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na "
-"przepełnienie dysku"
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na problem w "
+"lokalnym systemie"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
@@ -1291,31 +1358,34 @@ msgstr ""
 "Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania "
 "prawidłowego komunikatu o błędzie"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Obliczanie aktualizacji"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Rozwiązywanie zależności:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Wykonywanie zewnętrznego mechanizmu rozwiązywania zależności"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Execute external planner"
-msgstr "Wykonywanie zewnętrznego mechanizmu rozwiązywania zależności"
+msgstr "Wykonywanie zewnętrznego planisty"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Send request to planner"
-msgstr "Wysyłanie żądania do mechanizmu rozwiązywania zależności"
+msgstr "Wysyłanie żądania do planisty"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Send scenario to planner"
-msgstr "Wysyłanie scenariusza do mechanizmu rozwiązywania zależności"
+msgstr "Wysyłanie scenariusza do planisty"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "External planner failed without a proper error message"
 msgstr ""
-"Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania "
-"prawidłowego komunikatu o błędzie"
+"Zewnętrzny planista zawiódł, bez podania prawidłowego komunikatu o błędzie"
 
 #: apt-pkg/indexcopy.cc
 #, c-format
@@ -1359,7 +1429,7 @@ msgstr "Nie udało się określić odpowiedniego typu systemu pakietów"
 #: apt-pkg/install-progress.cc
 #, c-format
 msgid "Progress: [%3li%%]"
-msgstr ""
+msgstr "Postęp: [%3li%%]"
 
 #. send status information that we are about to fork dpkg
 #: apt-pkg/install-progress.cc
@@ -1411,14 +1481,16 @@ msgid "This APT does not support the versioning system '%s'"
 msgstr "Ta wersja APT nie obsługuje systemu wersji \"%s\""
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The package cache was built for different architectures: %s vs %s"
-msgstr "Ten magazyn podręczny pakietów został zbudowany dla innej architektury"
+msgstr ""
+"Ten magazyn podręczny pakietów został zbudowany dla innej architektury: %s "
+"vs %s"
 
+# sam skrót sugeruje dowiązanie symboliczne
 #: apt-pkg/pkgcache.cc
-#, fuzzy
 msgid "The package cache file is corrupted, it has the wrong hash"
-msgstr "Magazyn podręczny pakietów jest uszkodzony - jest zbyt mały"
+msgstr "Magazyn podręczny pakietów jest uszkodzony, ma błędny skrót (hash)"
 
 #: apt-pkg/pkgcache.cc
 msgid "Depends"
@@ -1454,7 +1526,7 @@ msgstr "Rozszerza"
 
 #: apt-pkg/pkgcache.cc
 msgid "Obsoletes"
-msgstr "Dezaktualizuje"
+msgstr "Czyni zbędnym"
 
 #: apt-pkg/pkgcache.cc
 msgid "important"
@@ -1540,11 +1612,15 @@ msgstr "Nierozpoznany typ przypinania %s"
 msgid ""
 "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records"
 msgstr ""
+"%s: Specjalną wartość \"Pin-Priority: %s\" można stosować jedynie do wpisów "
+"\"Package: *\"'"
 
 #: apt-pkg/policy.cc
 #, c-format
 msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
 msgstr ""
+"%s: Wartość %s leży poza zakresem prawidłowych priorytetów przypięć (od %d "
+"do %d)"
 
 #: apt-pkg/policy.cc
 msgid "No priority (or zero) specified for pin"
@@ -1552,45 +1628,43 @@ msgstr "Brak (lub zerowy) priorytet przypięcia"
 
 #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed entry %u in %s file %s (%s)"
-msgstr "Nieprawidłowa linia %llu #1 pliku override %s"
+msgstr "Nieprawidłowa wpis w wierszu %u pliku %s %s (%s)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Malformed line %u in source list %s (type)"
-msgstr "Nieprawidłowa linia %u w liście źródeł %s (typ)"
+msgstr "Nieprawidłowy wiersz %u w liście źródeł %s (typ)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
-msgstr "Typ \"%s\" jest nieznany w linii %u listy źródeł %s"
+msgstr "Typ \"%s\" jest nieznany w wierszu %u listy źródeł %s"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed stanza %u in source list %s (type)"
-msgstr "Nieprawidłowa linia %u w liście źródeł %s (typ)"
+msgstr "Nieprawidłowa pozycja %u w liście źródeł %s (typ)"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on stanza %u in source list %s"
-msgstr "Typ \"%s\" jest nieznany w linii %u listy źródeł %s"
+msgstr "Typ \"%s\" jest nieznany w pozycji %u listy źródeł %s"
 
 #: apt-pkg/sourcelist.cc apt-private/private-install.cc
 #, c-format
 msgid "Unsupported file %s given on commandline"
-msgstr ""
+msgstr "W wierszu polecenia podano nieobsługiwany plik %s"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
-msgstr "Należy dopisać jakieś URI pakietów źródłowych do pliku sources.list"
+msgstr "W pliku sources.list należy umieścić jakieś URI dla \"deb-src\""
 
 #: apt-pkg/tagfile.cc
 #, c-format
 msgid "Cannot convert %s to integer: out of range"
-msgstr ""
+msgstr "Nie udało się zmienić %s na liczbę: poza zakresem"
 
 #: apt-pkg/update.cc
 msgid ""
@@ -1600,33 +1674,30 @@ msgstr ""
 "Nie udało się pobrać niektórych plików indeksu, zostały one zignorowane lub "
 "użyto ich starszej wersji."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Obliczanie aktualizacji"
-
-# Ujednolicono z aptitude
+# Wyrównane do Get, Ign i Err.
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Hit:%lu %s"
-msgstr "Stary:%lu %s"
+msgstr "Było:%lu %s"
 
+# Wyrównane do Hit, Ign i Err.
 #. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
 #. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Get:%lu %s"
-msgstr "Pobieranie:%lu %s"
+msgstr "Pobr:%lu %s"
 
-# Wyrównane do Hit i Err.
+# Wyrównane do Hit, Get i Err.
 #. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
 #. which failed to download, but the error is ignored (compare "Err:")
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Ign:%lu %s"
-msgstr ""
+msgstr "Zign:%lu %s"
 
-# Wyrównane do Hit i Ign.
+# Wyrównane do Hit, Get i Ign.
 #. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
 #. which failed to download and the error is critical (compare "Ign:")
 #: apt-private/acqprogress.cc
@@ -1644,7 +1715,7 @@ msgid " [Working]"
 msgstr " [Pracuje]"
 
 #: apt-private/acqprogress.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Media change: please insert the disc labeled\n"
 " '%s'\n"
@@ -1652,13 +1723,15 @@ msgid ""
 msgstr ""
 "Zmiana nośnika: Proszę włożyć dysk oznaczony\n"
 " \"%s\"\n"
-"do napędu \"%s\" i nacisnąć enter\n"
+"do napędu \"%s\" i nacisnąć [Enter]\n"
 
 #: apt-private/acqprogress.cc
 msgid ""
 "Do you want to accept these changes and continue updating from this "
 "repository?"
 msgstr ""
+"Czy zaakceptować wskazane zmiany i kontynuować aktualizację z tego "
+"repozytorium?"
 
 #: apt-private/private-cachefile.cc
 msgid "Correcting dependencies..."
@@ -1694,22 +1767,22 @@ msgstr ""
 
 #: apt-private/private-cacheset.cc apt-private/private-search.cc
 msgid "Sorting"
-msgstr ""
+msgstr "Sortowanie"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Note, selecting '%s' for task '%s'\n"
-msgstr "Uwaga, wybieranie %s dla zadania \"%s\"\n"
+msgstr "Uwaga, wybieranie \"%s\" dla zadania \"%s\"\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for glob '%s'\n"
-msgstr "Uwaga, wybieranie %s dla wyrażenia \"%s\"\n"
+msgstr "Uwaga, wybieranie \"%s\" dla wyrażenia typu glob \"%s\"\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Note, selecting '%s' for regex '%s'\n"
-msgstr "Uwaga, wybieranie %s dla wyrażenia \"%s\"\n"
+msgstr "Uwaga, wybieranie \"%s\" dla wyrażenia regularnego \"%s\"\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1717,7 +1790,6 @@ msgid "Package %s is a virtual package provided by:\n"
 msgstr "Pakiet %s jest pakietem wirtualnym zapewnianym przez:\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Installed]"
 msgstr " [Zainstalowany]"
 
@@ -1747,7 +1819,7 @@ msgstr "Jednak następujące pakiety go zastępują:"
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Package '%s' has no installation candidate"
-msgstr "Pakiet %s nie ma kandydata do instalacji"
+msgstr "Pakiet \"%s\" nie ma kandydata do instalacji"
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1759,8 +1831,8 @@ msgstr "Pakiety wirtualne, takie jak \"%s\" nie mogą być usunięte\n"
 #, c-format
 msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
 msgstr ""
-"Pakiet %s nie jest zainstalowany, więc nie zostanie usunięty. Czy chodziło o "
-"\"%s\"?\n"
+"Pakiet \"%s\" nie jest zainstalowany, więc nie zostanie usunięty. Czy "
+"chodziło o \"%s\"?\n"
 
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
 #, c-format
@@ -1774,12 +1846,12 @@ msgstr "Uwaga, wybieranie \"%s\" zamiast \"%s\"\n"
 
 #: apt-private/private-cmndline.cc
 msgid "Most used commands:"
-msgstr "Najczęściej używane polecenia"
+msgstr "Najczęściej używane polecenia:"
 
 #: apt-private/private-cmndline.cc
 #, c-format
 msgid "See %s for more information about the available commands."
-msgstr "Po więcej informacji o dostępnych poleceniach zobacz %s"
+msgstr "Więcej informacji o dostępnych poleceniach opisano w %s."
 
 #: apt-private/private-cmndline.cc
 msgid ""
@@ -1788,6 +1860,10 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
+"Składnię i opcje konfiguracji opisano w podręczniku apt.conf(5).\n"
+"Informacje o sposobie odnajdywania źródeł opisano w sources.list(5).\n"
+"Wybór pakietów i wersji można modyfikować za pomocą apt_preferences(5).\n"
+"Szczegóły odnośnie zabezpieczeń opisano w apt-secure(8).\n"
 
 #: apt-private/private-cmndline.cc
 msgid "This APT has Super Cow Powers."
@@ -1795,13 +1871,15 @@ msgstr "Ten APT ma moce Super Krowy."
 
 #: apt-private/private-cmndline.cc
 msgid "This APT helper has Super Meep Powers."
-msgstr ""
+msgstr "Ten pomocnik APT ma moce Super Krowy."
 
 #: apt-private/private-cmndline.cc
 msgid ""
 "--force-yes is deprecated, use one of the options starting with --allow "
 "instead."
 msgstr ""
+"--force-yes jest przestarzałe, proszę w zamian korzystać z opcji "
+"zaczynajÄ…cych siÄ™ od --allow."
 
 #: apt-private/private-depends.cc apt-private/private-download.cc
 #: apt-private/private-show.cc cmdline/apt-mark.cc
@@ -1825,11 +1903,11 @@ msgid "Install these packages without verification?"
 msgstr "Zainstalować te pakiety bez weryfikacji?"
 
 #: apt-private/private-download.cc
-#, fuzzy
 msgid ""
 "There were unauthenticated packages and -y was used without --allow-"
 "unauthenticated"
-msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+msgstr ""
+"Wystąpiły nieuwierzytelnione pakiety, a użyto -y bez --allow-unauthenticated"
 
 #: apt-private/private-download.cc
 #, c-format
@@ -1871,9 +1949,24 @@ msgstr ""
 msgid "The following information may help to resolve the situation:"
 msgstr "Następujące informacje mogą pomóc rozwiązać sytuację:"
 
+# Wydaje się, że zwykle chodzi tu o niespełnione zależności, stąd nieco rozwlekłe tłumaczenie
 #: apt-private/private-install.cc
 msgid "Broken packages"
-msgstr "Pakiety sÄ… uszkodzone"
+msgstr "Pakiety są uszkodzone lub mają niespełnione zależności"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Niezłączony katalog usr nie jest już obsługiwany, proszę użyć usrmerge aby "
+"przejść na system ze złączonym usr."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Więcej szczegółów pod adresem %s."
 
 #: apt-private/private-install.cc
 msgid ""
@@ -1892,22 +1985,22 @@ msgid "Packages need to be removed but remove is disabled."
 msgstr "Pakiety powinny zostać usunięte, ale Remove jest wyłączone."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "Essential packages were removed and -y was used without --allow-remove-"
 "essential."
-msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+msgstr "Usunięto niezbędne pakiety, a użyto -y bez --allow-remove-essential."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
-msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+msgstr ""
+"Cofnięto pakiety do starszych wersji, a użyto -y bez --allow-downgrades."
 
 #: apt-private/private-install.cc
 msgid ""
 "Held packages were changed and -y was used without --allow-change-held-"
 "packages."
 msgstr ""
+"Zmieniono zatrzymane pakiety, a użyto -y bez --allow-change-held-packages."
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
@@ -1919,6 +2012,11 @@ msgstr ""
 "Wystąpił dziwny błąd - rozmiary się nie zgadzają. Proszę to zgłosić pod "
 "apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Do pobrania: %sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1926,6 +2024,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Konieczne pobranie %sB/%sB archiwów.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Do pobrania: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1933,13 +2036,61 @@ msgstr "Konieczne pobranie %sB/%sB archiwów.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Konieczne pobranie %sB archiwów.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Po tej operacji zostanie dodatkowo użyte %sB miejsca na dysku.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Wymagane miejsce: %sB / %sB dostępnych\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Wymagane więcej miejsca niż jest dostępne: %sB > %sB, instalacja może się "
+"nie powieść"
+
+# +1 spacja (skraca tu): in->w; +4 spacje (wydłuża wyżej): "space needed"(12)
+# ->wymagane miejsce(16)
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "w %s:       %sB / %sB dostępnych\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"W %s potrzebne jest więcej miejsca, niż jest dostępne: %sB > %sB, instalacja "
+"może się nie powieść"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Potrzebne miejsce: %sB\n"
+
+# U nas ma tę samą długość co "Potrzebne miejsce", więc chyba nie wymaga spacji
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "Zwalniane miejsce: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1956,6 +2107,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"Usuwanie pakietów niezbędnych do działania systemu jest niedozwolone. Może "
+"to uszkodzić system."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Czy mimo to kontynuować?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Kontynuować?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -1963,7 +2124,7 @@ msgstr "Kontynuować?"
 
 #: apt-private/private-install.cc
 msgid "Abort."
-msgstr "Przerwane."
+msgstr "Przerwano."
 
 #: apt-private/private-install.cc
 msgid "Some files failed to download"
@@ -2022,6 +2183,14 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Błąd wewnętrzny spowodowany przez AutoRemover"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Aby go usunąć należy użyć \"%s\"."
+msgstr[1] "Aby je usunąć należy użyć \"%s\"."
+msgstr[2] "Aby je usunąć należy użyć \"%s\"."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2053,19 +2222,6 @@ msgstr[2] ""
 "%lu pakietów zostało zainstalowanych automatycznie i nie są już więcej "
 "wymagane.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Aby go usunąć należy użyć \"%s\"."
-msgstr[1] "Aby je usunąć należy użyć \"%s\"."
-msgstr[2] "Aby je usunąć należy użyć \"%s\"."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Zostaną zainstalowane następujące dodatkowe pakiety:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Sugerowane pakiety:"
@@ -2074,6 +2230,10 @@ msgstr "Sugerowane pakiety:"
 msgid "Recommended packages:"
 msgstr "Polecane pakiety:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Zostaną zainstalowane następujące dodatkowe pakiety:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2094,14 +2254,14 @@ msgstr ""
 
 #. TRANSLATORS: First string is package name, second is version
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s is already the newest version (%s).\n"
-msgstr "%s jest już w najnowszej wersji.\n"
+msgstr "%s jest już w najnowszej wersji (%s).\n"
 
 #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
 msgid "%s set to manually installed.\n"
-msgstr "%s zaznaczony jako zainstalowany ręcznie.\n"
+msgstr "%s oznaczono jako zainstalowany ręcznie.\n"
 
 #: apt-private/private-install.cc
 #, c-format
@@ -2115,7 +2275,7 @@ msgstr "Wybrano wersjÄ™ \"%s\" (%s) pakietu \"%s\", z powodu \"%s\"\n"
 
 #: apt-private/private-list.cc
 msgid "Listing"
-msgstr ""
+msgstr "Wypisywanie"
 
 #: apt-private/private-list.cc
 #, c-format
@@ -2123,8 +2283,11 @@ msgid "There is %i additional version. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional versions. Please use the '-a' switch to see them."
 msgstr[0] ""
+"Istnieje %i dodatkowa wersja. Przełącznik \"-a\" pozwoli ją zobaczyć"
 msgstr[1] ""
+"Istnieją %i dodatkowe wersje. Przełącznik \"-a\" pozwoli je zobaczyć"
 msgstr[2] ""
+"Istnieje %i dodatkowych wersji. Przełącznik \"-a\" pozwoli je zobaczyć"
 
 #. TRANSLATORS: placeholder is a binary name like apt or apt-get
 #: apt-private/private-main.cc
@@ -2142,40 +2305,37 @@ msgstr ""
 
 #: apt-private/private-output.cc apt-private/private-show.cc
 msgid "unknown"
-msgstr ""
+msgstr "nieznany"
 
 #: apt-private/private-output.cc
-#, fuzzy, c-format
+#, c-format
 msgid "[installed,upgradable to: %s]"
-msgstr " [Zainstalowany]"
+msgstr "[zainstalowany,możliwa aktualizacja: %s]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,local]"
-msgstr " [Zainstalowany]"
+msgstr "[zainstalowany,lokalny]"
 
 #: apt-private/private-output.cc
 msgid "[installed,auto-removable]"
-msgstr ""
+msgstr "[zainstalowany,autom. usuwalny]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,automatic]"
-msgstr " [Zainstalowany]"
+msgstr "[zainstalowany,automatyczny]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed]"
-msgstr " [Zainstalowany]"
+msgstr "[zainstalowany]"
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "[upgradable from: %s]"
-msgstr ""
+msgstr "[możliwa aktualizacja z: %s]"
 
 #: apt-private/private-output.cc
 msgid "[residual-config]"
-msgstr ""
+msgstr "[resztkowa konfiguracja]"
 
 #: apt-private/private-output.cc
 #, c-format
@@ -2211,25 +2371,68 @@ msgstr " lub"
 msgid "The following packages have unmet dependencies:"
 msgstr "Następujące pakiety mają niespełnione zależności:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Niespełnione zależności:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Zostaną zainstalowane następujące NOWE pakiety:"
 
 #: apt-private/private-output.cc
-msgid "The following packages will be REMOVED:"
-msgstr "Następujące pakiety zostaną USUNIĘTE:"
+msgid "Installing:"
+msgstr "Instalowane:"
 
 #: apt-private/private-output.cc
-msgid "The following packages have been kept back:"
-msgstr "Następujące pakiety zostały zatrzymane:"
+msgid "Installing dependencies:"
+msgstr "Instalowane zależności:"
 
 #: apt-private/private-output.cc
-msgid "The following packages will be upgraded:"
+msgid "REMOVING:"
+msgstr "USUWANE:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Następujące pakiety zostaną USUNIĘTE:"
+
+# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu)
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+"Aktualizacje odroczone, z powodu stopniowego wprowadzania przez dystrybucjÄ™:"
+
+# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu)
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Odroczone, z powodu stopniowego wprowadzania aktualizacji:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Nie sÄ… aktualizowane:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Następujące pakiety zostały zatrzymane:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
 msgstr "Następujące pakiety zostaną zaktualizowane:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Aktualizowane:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "COFANE:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
-msgstr "Zostaną zainstalowane STARE wersje następujących pakietów:"
+msgstr "Następujące pakiety zostaną COFNIĘTE:"
+
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Zmiany zatrzymanych pakietów:"
 
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
@@ -2248,26 +2451,50 @@ msgstr ""
 "UWAGA: Zostaną usunięte następujące istotne pakiety.\n"
 "NIE należy kontynuować, jeśli nie jest się pewnym tego co się robi!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Podsumowanie:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu aktualizowanych, %lu nowo instalowanych, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Aktualizowanych: %lu, Instalowanych: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu ponownie instalowanych, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Ponownie instalowanych: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu cofniętych wersji, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Cofanych: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu usuwanych i %lu nieaktualizowanych.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Usuwanych: %lu, Nieaktualizowanych: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2295,7 +2522,7 @@ msgid "Y"
 msgstr "T"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2305,20 +2532,22 @@ msgstr "Należy podać przynajmniej jeden wzorzec"
 
 #: apt-private/private-search.cc
 msgid "Full Text Search"
-msgstr ""
+msgstr "Wyszukiwanie pełnotekstowe"
 
 #: apt-private/private-show.cc
 #, c-format
 msgid "There is %i additional record. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional records. Please use the '-a' switch to see them."
-msgstr[0] ""
+msgstr[0] "Istnieje %i dodatkowy wpis. Przełącznik \"-a\" pozwoli go zobaczyć."
 msgstr[1] ""
+"Istnieje %i dodatkowych wpisów. Przełącznik \"-a\" pozwoli je zobaczyć."
 msgstr[2] ""
+"Istnieje %i dodatkowych wpisów. Przełącznik \"-a\" pozwoli je zobaczyć."
 
 #: apt-private/private-show.cc
 msgid "not a real package (virtual)"
-msgstr ""
+msgstr "nie jest pakietem rzeczywistym (wirtualny)"
 
 #: apt-private/private-show.cc
 msgid "Package files:"
@@ -2339,7 +2568,7 @@ msgstr "Przypięte pakiety:"
 #: apt-private/private-show.cc
 #, c-format
 msgid "%s -> %s with priority %d\n"
-msgstr ""
+msgstr "%s -> %s z priorytetem %d\n"
 
 #: apt-private/private-show.cc
 msgid "  Installed: "
@@ -2358,37 +2587,35 @@ msgstr "(brak)"
 msgid "  Version table:"
 msgstr "  Tabela wersji:"
 
+# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu)
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "odroczony"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package for architecture '%s'"
-msgstr ""
-"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+msgstr "Nie udało się znaleźć pakietu dla architektury \"%s\""
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with version '%s'"
-msgstr ""
-"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+msgstr "Nie udało się znaleźć pakietu \"%s\" w wersji \"%s\""
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with release '%s'"
-msgstr ""
-"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+msgstr "Nie udało się znaleźć pakietu \"%s\" w wydaniu \"%s\""
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
-msgstr "Zmieniono wybrany pakiet źródłowy na \"%s\" z \"%s\"\n"
+msgstr "Wybieranie \"%s\" jako pakietu źródłowego, zamiast \"%s\"\n"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find version '%s' of package '%s'"
-msgstr "Ignorowanie niedostępnej wersji \"%s\" pakietu \"%s\""
+msgstr "Nie udało się znaleźć wersji \"%s\" pakietu \"%s\""
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to fetch source for"
@@ -2399,7 +2626,7 @@ msgstr ""
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unable to find a source package for %s"
-msgstr "Nie udało się odnaleźć źródła dla pakietu %s"
+msgstr "Nie udało się odnaleźć pakietu źródłowego dla %s"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2483,11 +2710,11 @@ msgstr "%s nie ma zależności dla budowania.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Nie znaleziono informacji o architekturze dla %s. Proszę zapoznać się z apt."
-"conf(5) APT::Architectures"
+"Nie znaleziono informacji o architekturze dla %s. Proszę zapoznać się z "
+"apt.conf(5) APT::Architectures"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2500,29 +2727,38 @@ msgstr ""
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"Nieprawidłowy operator \"%c\" na przesunięciu %d, czy chodziło o \"%c%c\" "
+"lub \"%c=\"? - w: %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Note, using directory '%s' to get the build dependencies\n"
 msgstr ""
+"Uwaga, używanie katalogu \"%s\" do uzyskania zależności na czas budowania\n"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, using file '%s' to get the build dependencies\n"
-msgstr "Nie udało się przetworzyć zależności dla budowania"
+msgstr ""
+"Uwaga, używanie pliku \"%s\" do uzyskania zależności na czas budowania\n"
 
 #: apt-private/private-source.cc
 msgid "Failed to process build dependencies"
 msgstr "Nie udało się przetworzyć zależności dla budowania"
 
 #: apt-private/private-sources.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to parse %s. Edit again? "
-msgstr "Nie udało się zmienić nazwy %s na %s"
+msgstr "Nie udało się przeanalizować %s. Edytować ponownie? "
 
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
+msgstr "Plik \"%s\" uległ zmianie, proszę wykonać \"apt-get update\".\n"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
 msgstr ""
 
 #: apt-private/private-unmet.cc
@@ -2541,6 +2777,45 @@ msgid ""
 "Usage of %s should be preferred over embedding login information directly in "
 "the %s entry for '%s'"
 msgstr ""
+"Korzystanie z %s powinno być preferowane wobec osadzania informacji "
+"logowania bezpośrednio we wpisie %s dla \"%s\""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Brakuje Signed-By (podpisu) we wpisie %s dla \"%s\""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Więcej informacji o tworzeniu repozytorium i szczegółach konfiguracji "
+"użytkownika znajduje się w podręczniku apt-secure(8)."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
 
 #: apt-private/private-update.cc
 #, c-format
@@ -2548,17 +2823,23 @@ msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
 msgid_plural ""
 "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
 msgstr[0] ""
+"%i pakiet może być zaktualizowany. Można go zobaczyć wykonując 'apt list --"
+"upgradable'.\n"
 msgstr[1] ""
+"%i pakiety mogą być zaktualizowane. Można je zobaczyć wykonując 'apt list --"
+"upgradable'.\n"
 msgstr[2] ""
+"%i pakietów może być zaktualizowanych. Można je zobaczyć wykonując 'apt list "
+"--upgradable'.\n"
 
 #: apt-private/private-update.cc
 msgid "All packages are up to date."
-msgstr ""
+msgstr "Wszystkie pakiety sÄ… aktualne."
 
 #: cmdline/apt-cache.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s does not take any arguments"
-msgstr "Polecenie update nie wymaga żadnych argumentów"
+msgstr "%s nie przyjmuje żadnych argumentów"
 
 #: cmdline/apt-cache.cc
 msgid "Total package names: "
@@ -2588,6 +2869,12 @@ msgstr "  Mieszanych pakietów wirtualnych: "
 msgid "  Missing: "
 msgstr "  BrakujÄ…cych: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "W sumie różnych wersji: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "W sumie różnych wersji: "
@@ -2640,6 +2927,15 @@ msgid ""
 "too long ago, but in exchange apt-cache works independently of the\n"
 "availability of the configured sources (e.g. offline).\n"
 msgstr ""
+"Użycie: apt-cache [opcje] polecenie\n"
+"        apt-cache [opcje] show pakiet1 [pakiet2 ...]\n"
+"\n"
+"apt-cache odpytuje i wyświetla dostępne informacje o zainstalowanych\n"
+"i możliwych do instalacji pakietach. Działa wyłącznie na danych zebranych\n"
+"w lokalnym buforze dzięki poleceniu \"update\" np. apt-get. Wyświetlane\n"
+"informacje mogą być zatem zdezaktualizowane, jeśli ostatnia aktualizacja\n"
+"miała miejsce zbyt dawno, choć z drugiej strony apt-cache działa\n"
+"niezależnie od dostępności skonfigurowanych źródeł (np. bez sieci).\n"
 
 #: cmdline/apt-cache.cc
 msgid "Show source records"
@@ -2674,9 +2970,8 @@ msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
 msgstr "Proszę wprowadzić nazwę dla tej płyty, np. \"Debian 5.0.3 Disk 1\""
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy
 msgid "Please insert a Disc in the drive and press [Enter]"
-msgstr "Proszę włożyć dysk do napędu i nacisnąć enter"
+msgstr "Proszę włożyć Dysk do napędu i nacisnąć [Enter]"
 
 #: cmdline/apt-cdrom.cc
 #, c-format
@@ -2690,6 +2985,11 @@ msgid ""
 "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
 "mount point."
 msgstr ""
+"Nie udało się wykryć automatycznie ani odnaleźć CD-ROM-u w domyślnym "
+"punkcie\n"
+"montowania. Można użyć opcji --cdrom aby ustawić punkt montowania CD-ROM-u.\n"
+"Polecenie \"man apt-cdrom\" ukaże więcej informacji o "
+"automatycznymwykrywaniu CD-ROM-ów i punktach montowania."
 
 #: cmdline/apt-cdrom.cc
 msgid "Repeat this process for the rest of the CDs in your set."
@@ -2703,13 +3003,18 @@ msgid ""
 "media types as package sources to APT. The mount point and device\n"
 "information is taken from apt.conf(5), udev(7) and fstab(5).\n"
 msgstr ""
+"Użycie: apt-cdrom [opcje] polecenie\n"
+"\n"
+"apt-cdrom służy do dodawania CD-ROM-ów, pamięci USB i innych typów\n"
+"nośników wymiennych, jako źródeł pakietów do APT-a. Informacje\n"
+"o urzÄ…dzeniach i punktach montowania pochodzÄ… z apt.conf(5), udev(7)\n"
+"i fstab(5).\n"
 
 #: cmdline/apt-config.cc
 msgid "Arguments not in pairs"
 msgstr "Argumenty nie sÄ… w parach"
 
 #: cmdline/apt-config.cc
-#, fuzzy
 msgid ""
 "Usage: apt-config [options] command\n"
 "\n"
@@ -2718,15 +3023,17 @@ msgid ""
 msgstr ""
 "Użycie: apt-config [opcje] polecenie\n"
 "\n"
-"apt-config to proste narzędzie do czytania pliku konfiguracyjnego APT\n"
+"apt-config to interfejs do ustawień konfiguracji używanych przez\n"
+"wszystkie narzędzia APT, przeznaczony głównie do debugowania\n"
+"i tworzenia skryptów powłoki.\n"
 
 #: cmdline/apt-config.cc
 msgid "get configuration values via shell evaluation"
-msgstr ""
+msgstr "pobiera wartości konfiguracyjne z powłoki"
 
 #: cmdline/apt-config.cc
 msgid "show the active configuration setting"
-msgstr ""
+msgstr "pokazuje aktywne ustawienia konfiguracji"
 
 #: cmdline/apt-dump-solver.cc
 msgid ""
@@ -2735,9 +3042,12 @@ msgid ""
 "apt-dump-solver is an interface to store an EDSP scenario in\n"
 "a file and optionally forwards it to another solver.\n"
 msgstr ""
+"Użycie: apt-dump-solver\n"
+"\n"
+"apt-dump-solver jest interfejsem do przechowywania scenariusza EDSP\n"
+"w pliku i opcjonalnym przekazaniu go innemu mechanizmowi rozwiÄ…zywania.\n"
 
 #: cmdline/apt-extracttemplates.cc
-#, fuzzy
 msgid ""
 "Usage: apt-extracttemplates file1 [file2 ...]\n"
 "\n"
@@ -2747,14 +3057,9 @@ msgid ""
 msgstr ""
 "Użycie: apt-extracttemplates plik1 [plik2 ...]\n"
 "\n"
-"apt-extracttemplates to narzędzie służące do pobierania informacji\n"
-"i konfiguracji i szablonach z pakietów Debiana.\n"
-"\n"
-"Opcje:\n"
-"  -h   Ten tekst pomocy.\n"
-"  -t   Ustawia katalog tymczasowy\n"
-"  -c=? Czyta wskazany plik konfiguracyjny.\n"
-"  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+"apt-extracttemplates to narzędzie służące do wyodrębniania plików\n"
+"konfiguracyjnych i szablonów z pakietów Debiana. Używane głównie przez\n"
+"debconf(1), do zadawania pytań konfiguracyjnych przed instalacją pakietów.\n"
 
 #: cmdline/apt-extracttemplates.cc
 msgid "Cannot get debconf version. Is debconf installed?"
@@ -2768,7 +3073,7 @@ msgstr "Nie udało się odnaleźć pakietu %s"
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
 msgid "%s set to automatically installed.\n"
-msgstr "%s zaznaczony jako zainstalowany automatycznie.\n"
+msgstr "%s oznaczono jako zainstalowany automatycznie.\n"
 
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
 msgid ""
@@ -2787,7 +3092,6 @@ msgid "Supported modules:"
 msgstr "Obsługiwane moduły:"
 
 #: cmdline/apt-get.cc
-#, fuzzy
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -2802,8 +3106,9 @@ msgstr ""
 "        apt-get [opcje] install|remove pakiet1 [pakiet2 ...]\n"
 "        apt-get [opcje] source pakiet1 [pakiet2 ...]\n"
 "\n"
-"apt-get to prosty interfejs wiersza poleceń do pobierania i instalacji\n"
-"pakietów. Najczęściej używane polecenia to update i install.\n"
+"apt-get to interfejs wiersza poleceń do pobierania pakietów i informacji\n"
+"na ich temat z uwierzytelnionych źródeł oraz do instalacji, aktualizacji\n"
+"i usuwania pakietów wraz z ich zależnościami.\n"
 
 #: cmdline/apt-get.cc
 msgid "Retrieve new lists of packages"
@@ -2818,10 +3123,8 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgstr "Instaluje nowe pakiety (pakiet to np. libc6, nie libc6.deb)"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Instaluje nowe pakiety (pakiet to np. libc6, nie libc6.deb)"
+msgstr "Instaluje ponownie nowe pakiety (pakiet to np. libc6, nie libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
@@ -2837,7 +3140,7 @@ msgstr "Usuwa automatycznie wszystkie nieużywane pakiety"
 
 #: cmdline/apt-get.cc
 msgid "Distribution upgrade, see apt-get(8)"
-msgstr "Aktualizacja dystrybucji, patrz apt-get(8)"
+msgstr "Aktualizuje dystrybucjÄ™, patrz apt-get(8)"
 
 #: cmdline/apt-get.cc
 msgid "Follow dselect selections"
@@ -2848,10 +3151,8 @@ msgid "Configure build-dependencies for source packages"
 msgstr "Konfiguruje zależności dla budowania pakietów źródłowych"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Budowanie drzewa zależności"
+msgstr "Spełnia łańcuchy zależności"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
@@ -2875,27 +3176,24 @@ msgstr "Pobiera pakiet binarny do bieżącego katalogu"
 
 #: cmdline/apt-get.cc
 msgid "Download and display the changelog for the given package"
-msgstr "Pobiera i wyświetla dziennik zmian wybranych pakietów"
+msgstr "Pobiera i wyświetla dziennik zmian wybranego pakietu"
 
 #: cmdline/apt-helper.cc
 msgid "Need one URL as argument"
-msgstr ""
+msgstr "Wymaga jednego adresu URL jako argumentu"
 
 #: cmdline/apt-helper.cc
-#, fuzzy
 msgid "Must specify at least one pair url/filename"
-msgstr ""
-"Należy podać przynajmniej jeden pakiet, dla którego mają zostać pobrane "
-"źródła"
+msgstr "Należy podać przynajmniej jedną parę url/nazwa-pliku"
 
 #: cmdline/apt-helper.cc
 msgid "Download Failed"
-msgstr ""
+msgstr "Pobieranie nie powiodło się"
 
 #: cmdline/apt-helper.cc
 #, c-format
 msgid "GetSrvRec failed for %s"
-msgstr ""
+msgstr "GetSrvRec zawiodło dla %s"
 
 #: cmdline/apt-helper.cc
 msgid ""
@@ -2906,37 +3204,49 @@ msgid ""
 "apt-helper bundles a variety of commands for shell scripts to use\n"
 "e.g. the same proxy configuration or acquire system as APT would.\n"
 msgstr ""
+"Użycie: apt-helper [opcje] polecenie\n"
+"        apt-helper [opcje] cat-file plik ...\n"
+"        apt-helper [opcje] download-file uri ścieżka-docelowa\n"
+"\n"
+"apt-helper stanowi zbiór poleceń do użycia w skryptach powłoki, w celu\n"
+"korzystania z tej samej konfiguracji np. serwerów pośredniczących lub\n"
+"systemu pobierania, jakiej użyłby APT.\n"
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
-msgstr ""
+msgstr "pobiera podane uri do ścieżki-docelowej"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
-msgstr ""
+msgstr "wyszukuje rekord SRV (np. _http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
-msgstr ""
+msgstr "łączy pliki, automatycznie je rozpakowując"
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Nie udało się obliczyć skrótu pliku"
 
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
-msgstr ""
+msgstr "wykrywa serwery pośredniczące za pomocą apt.conf"
 
 #: cmdline/apt-helper.cc
 msgid "wait for system to be online"
-msgstr ""
+msgstr "czeka na status online systemu"
 
 #: cmdline/apt-helper.cc
 msgid "drop privileges before running given command"
-msgstr ""
+msgstr "porzuca przywileje przed wykonaniem danego polecenia"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "analizuje wzór"
 
 #: cmdline/apt-internal-planner.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-planner\n"
 "\n"
@@ -2944,20 +3254,13 @@ msgid ""
 "installation planner for the APT family like an external one,\n"
 "for debugging or the like.\n"
 msgstr ""
-"Użycie: apt-internal-solver\n"
+"Użycie: apt-internal-planner\n"
 "\n"
-"apt-internal-solver jest interfejsem do używania bieżącego, wewnętrznego\n"
-"mechanizmu rozwiązywania zależności - w sposób podobny jak zewnętrznego\n"
-"mechanizmu rodziny APT - do celów debugowania itp.\n"
-"\n"
-"Opcje:\n"
-"  -h   Ten tekst pomocy.\n"
-"  -q   Zapisywalne wyjście - brak wskaźnika postępu\n"
-"  -c=? Czyta wskazany plik konfiguracyjny\n"
-"  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+"apt-internal-planner jest interfejsem do używania bieżącego, wewnętrznego\n"
+"planisty instalacji rodziny APT, w sposób podobny jak zewnętrznego, \n"
+"do celów debugowania itp.\n"
 
 #: cmdline/apt-internal-solver.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-solver\n"
 "\n"
@@ -2968,14 +3271,8 @@ msgstr ""
 "Użycie: apt-internal-solver\n"
 "\n"
 "apt-internal-solver jest interfejsem do używania bieżącego, wewnętrznego\n"
-"mechanizmu rozwiązywania zależności - w sposób podobny jak zewnętrznego\n"
-"mechanizmu rodziny APT - do celów debugowania itp.\n"
-"\n"
-"Opcje:\n"
-"  -h   Ten tekst pomocy.\n"
-"  -q   Zapisywalne wyjście - brak wskaźnika postępu\n"
-"  -c=? Czyta wskazany plik konfiguracyjny\n"
-"  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+"mechanizmu rozwiązywania zależności rodziny APT, w sposób podobny jak\n"
+"zewnętrznego, do celów debugowania itp.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -2994,13 +3291,12 @@ msgstr "%s został już ustawiony jako zainstalowany automatycznie.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
-msgstr ""
+msgstr "Nie sÄ… konieczne zmiany"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "The following NEW packages will be installed:"
 msgid "The following packages will be marked as automatically installed:"
-msgstr "Zostaną zainstalowane następujące NOWE pakiety:"
+msgstr ""
+"Następujące pakiety zostaną oznaczone jako zainstalowane automatycznie:"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -3031,20 +3327,19 @@ msgstr "Odznaczono zatrzymanie %s\n"
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for purge.\n"
-msgstr ""
+msgstr "Wybrano %s do wyczyszczenia.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for removal.\n"
-msgstr ""
+msgstr "Wybrano %s do usunięcia.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for installation.\n"
-msgstr ""
+msgstr "Wybrano %s do instalacji.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid ""
 "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
 "\n"
@@ -3055,9 +3350,10 @@ msgid ""
 msgstr ""
 "Użycie: apt-mark [opcje] {auto|manual} pakiet1 [pakiet2 ...]\n"
 "\n"
-"apt-mark jest prostym poleceniem wiersza poleceń do oznaczania pakietów\n"
-"jako zainstalowane automatycznie lub ręcznie. Może także służyć\n"
-"do wyświetlania stanu oznaczeń.\n"
+"apt-mark jest prostym interfejsem wiersza poleceń do oznaczania pakietów\n"
+"jako zainstalowane automatycznie lub ręcznie. Może także służyć do zmiany\n"
+"stanu pakietów wybranych w dpkg(1) oraz wypisywania wszystkich pakietów\n"
+"z lub bez określonego oznaczenia.\n"
 
 #: cmdline/apt-mark.cc
 msgid "Mark the given packages as automatically installed"
@@ -3068,30 +3364,29 @@ msgid "Mark the given packages as manually installed"
 msgstr "Oznacza dany pakiet jako zainstalowany ręcznie"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "Mark the given packages as automatically installed"
 msgid "Mark all dependencies of meta packages as automatically installed."
-msgstr "Oznacza dany pakiet jako zainstalowany automatycznie"
+msgstr ""
+"Oznacza wszystkie zależności metapakietu jako zainstalowane automatycznie"
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
-msgstr ""
+msgstr "Oznacza pakiet jako zatrzymany"
 
 #: cmdline/apt-mark.cc
 msgid "Unset a package set as held back"
-msgstr ""
+msgstr "Odznacza pakiet jako zatrzymany"
 
 #: cmdline/apt-mark.cc
 msgid "Print the list of automatically installed packages"
-msgstr ""
+msgstr "Wypisuje listę pakietów zainstalowanych automatycznie"
 
 #: cmdline/apt-mark.cc
 msgid "Print the list of manually installed packages"
-msgstr ""
+msgstr "Wypisuje listę pakietów zainstalowanych ręcznie"
 
 #: cmdline/apt-mark.cc
 msgid "Print the list of packages on hold"
-msgstr ""
+msgstr "Wypisuje listę zatrzymanych pakietów"
 
 #: cmdline/apt-sortpkgs.cc
 msgid "Unknown package record!"
@@ -3105,6 +3400,12 @@ msgid ""
 "By default it sorts by binary package information, but the -s option\n"
 "can be used to switch to source package ordering instead.\n"
 msgstr ""
+"Użycie: apt-sortpkgs [opcje] plik1 [plik2 ...]\n"
+"\n"
+"apt-sortpkgs jest prostym narzędziem sortującym pliki z informacjami\n"
+"o pakietach. Domyślnie sortuje według informacji o pakietach binarnych,\n"
+"natomiast za pomocą opcji -s można przełączyć się do kolejności z pakietów\n"
+"źródłowych.\n"
 
 #: cmdline/apt.cc
 msgid ""
@@ -3116,77 +3417,78 @@ msgid ""
 "like apt-get and apt-cache, but enables options more suitable for\n"
 "interactive use by default.\n"
 msgstr ""
+"Usage: apt [opcje] polecenie\n"
+"\n"
+"apt jest menedżerem pakietów wiersza poleceń, który udostępnia polecenia\n"
+"do wyszukiwania i zarzÄ…dzania pakietami oraz sprawdzania informacji na ich\n"
+"temat. Zapewnia te same funkcje co wyspecjalizowane narzędzia APT, takie "
+"jak\n"
+"apt-get i apt-cache, lecz domyślnie włącza opcje ułatwiające użytkowanie\n"
+"w trybie interaktywnym.\n"
 
 #. query
 #: cmdline/apt.cc
 msgid "list packages based on package names"
-msgstr ""
+msgstr "wypisuje pakiety według nazw pakietów"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "search in package descriptions"
-msgstr "Czytanie list pakietów"
+msgstr "szuka w opisach pakietów"
 
 #: cmdline/apt.cc
 msgid "show package details"
-msgstr ""
+msgstr "pokazuje szczegóły pakietu"
 
 #. package stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "install packages"
-msgstr "Przypięte pakiety:"
+msgstr "instaluje pakiety"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "reinstall packages"
-msgstr "Przypięte pakiety:"
+msgstr "instaluje pakiety ponownie"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "remove packages"
-msgstr "Pakiety sÄ… uszkodzone"
+msgstr "usuwa pakiety"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Usuwa automatycznie wszystkie nieużywane pakiety"
+msgstr "automatycznie usuwa wszystkie nieużywane pakiety"
 
 #. system wide stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "update list of available packages"
-msgstr "ale jest pakietem wirtualnym"
+msgstr "aktualizuje listę dostępnych pakietów"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by installing/upgrading packages"
-msgstr ""
+msgstr "aktualizuje system instalujÄ…c/aktualizujÄ…c pakiety"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by removing/installing/upgrading packages"
-msgstr ""
+msgstr "aktualizuje system usuwajÄ…c/instalujÄ…c/aktualizujÄ…c pakiety"
 
 #. misc
 #: cmdline/apt.cc
-#, fuzzy
 msgid "edit the source information file"
-msgstr "Odczyt informacji o stanie"
+msgstr "edytuje plik z informacjami o źródłach"
+
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Failed to satisfy %s dependency for %s: %s"
 msgid "satisfy dependency strings"
-msgstr "Nie udało się spełnić zależności %s od %s: %s"
+msgstr "spełnia łańcuchy zależności"
 
 #: dselect/install
 msgid "Bad default setting!"
 msgstr "Nieprawidłowe ustawienie domyślne!"
 
 #: dselect/install dselect/update
-#, fuzzy
 msgid "Press [Enter] to continue."
-msgstr "Proszę nacisnąć enter, aby kontynuować."
+msgstr "Proszę nacisnąć [Enter], aby kontynuować."
 
 #: dselect/install
 msgid "Do you want to erase any previously downloaded .deb files?"
@@ -3340,7 +3642,7 @@ msgstr "Baza była uszkodzona, plik został przeniesiony do %s.old"
 #: ftparchive/cachedb.cc
 #, c-format
 msgid "DB is old, attempting to upgrade %s"
-msgstr "Baza jest przestarzała, próbuję zaktualizować %s"
+msgstr "Baza jest przestarzała, nastąpi próba aktualizacji %s"
 
 #: ftparchive/cachedb.cc
 msgid ""
@@ -3356,9 +3658,8 @@ msgid "Unable to open DB file %s: %s"
 msgstr "Nie udało się otworzyć pliku bazy %s: %s"
 
 #: ftparchive/cachedb.cc
-#, fuzzy
 msgid "Failed to read .dsc"
-msgstr "Nie udało się odczytać dowiązania %s"
+msgstr "Nie udało się odczytać .dsc"
 
 #: ftparchive/cachedb.cc
 msgid "Archive has no control record"
@@ -3382,7 +3683,7 @@ msgstr "Nieznany algorytm kompresji \"%s\""
 msgid "Compressed output %s needs a compression set"
 msgstr "Skompresowany plik wynikowy %s wymaga podania kompresji"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Nie udało się utworzyć potoku IPC do podprocesu"
 
@@ -3401,11 +3702,11 @@ msgstr "Błąd wewnętrzny, nie udało się utworzyć %s"
 
 #: ftparchive/multicompress.cc
 msgid "IO to subprocess/file failed"
-msgstr "Zawiodła operacja IO na pliku/podprocesie"
+msgstr "Zawiodła operacja wejścia/wyjścia na pliku/podprocesie"
 
 #: ftparchive/multicompress.cc
 msgid "Failed to read while computing MD5"
-msgstr "Nie udało się czytanie w czasie liczenia skrótu MD5"
+msgstr "Nie udał się odczyt w trakcie liczenia skrótu MD5"
 
 #: ftparchive/multicompress.cc
 #, c-format
@@ -3420,29 +3721,29 @@ msgstr "Nie można otworzyć %s"
 #. skip spaces
 #. find end of word
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu (%s)"
-msgstr "Nieprawidłowa linia %llu #1 pliku override %s"
+msgstr "Nieprawidłowy wiersz %2$llu pliku override %1$s (%3$s)"
 
 #: ftparchive/override.cc
 #, c-format
 msgid "Failed to read the override file %s"
-msgstr "Nie udało się czytać pliku override %s"
+msgstr "Nie udało się odczytać pliku override %s"
 
 #: ftparchive/override.cc
 #, c-format
 msgid "Malformed override %s line %llu #1"
-msgstr "Nieprawidłowa linia %2$llu #1 pliku override %1$s"
+msgstr "Nieprawidłowy wiersz %2$llu #1 pliku override %1$s"
 
 #: ftparchive/override.cc
 #, c-format
 msgid "Malformed override %s line %llu #2"
-msgstr "Nieprawidłowa linia %2$llu #2 pliku override %1$s"
+msgstr "Nieprawidłowy wiersz %2$llu #2 pliku override %1$s"
 
 #: ftparchive/override.cc
 #, c-format
 msgid "Malformed override %s line %llu #3"
-msgstr "Nieprawidłowa linia %2$llu #3 pliku override %1$s"
+msgstr "Nieprawidłowy wiersz %2$llu #3 pliku override %1$s"
 
 #: ftparchive/writer.cc
 #, c-format
@@ -3501,23 +3802,23 @@ msgstr "Archiwum nie posiadało pola pakietu"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s nie posiada wpisu w pliku override\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s nie posiada wpisu w pliku override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  opiekunem %s jest %s, a nie %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  opiekunem %.*s jest %.*s, a nie %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s nie posiada wpisu w pliku override źródeł\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s nie posiada wpisu w pliku override źródeł\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s nie posiada również wpisu w pliku override binariów\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s nie posiada również wpisu w pliku override binariów\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3529,7 +3830,7 @@ msgstr "Serwer HTTP przysłał nieprawidłowy nagłówek odpowiedzi"
 
 #: methods/basehttp.cc
 msgid "Bad header line"
-msgstr "Nieprawidłowa linia nagłówka"
+msgstr "Nieprawidłowy wiersz nagłówka"
 
 #: methods/basehttp.cc
 msgid "The HTTP server sent an invalid Content-Length header"
@@ -3555,10 +3856,12 @@ msgstr "Błędne dane nagłówka"
 msgid "Connection failed"
 msgstr "Połączenie nie powiodło się"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
+"Plik ma nieoczekiwany rozmiar (%llu != %llu). Czyżby następowała w tej "
+"chwili synchronizacja serwerów lustrzanych?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3566,6 +3869,8 @@ msgid ""
 "Automatically disabled %s due to incorrect response from server/proxy. (man "
 "5 apt.conf)"
 msgstr ""
+"Automatycznie wyłączanie %s, ze względu na nieprawidłową odpowiedź serwera/"
+"serwera pośredniczącego (man 5 apt.conf)"
 
 #: methods/basehttp.cc
 msgid "Internal error"
@@ -3597,7 +3902,7 @@ msgstr "Nie udało się odmontować CD-ROM-u w %s, być może wciąż jest używ
 msgid "Disk not found."
 msgstr "Nie odnaleziono dysku."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Nie odnaleziono pliku"
 
@@ -3605,7 +3910,7 @@ msgstr "Nie odnaleziono pliku"
 #: methods/connect.cc
 #, c-format
 msgid "Direct connection to %s domains is blocked by default."
-msgstr ""
+msgstr "Bezpośrednie łączenie z domenami %s jest domyślnie blokowane."
 
 #: methods/connect.cc
 #, c-format
@@ -3613,10 +3918,9 @@ msgid "[IP: %s %s]"
 msgstr "[IP: %s %s]"
 
 #: methods/connect.cc
-#, fuzzy, c-format
-#| msgid "Connecting to %s (%s)"
+#, c-format
 msgid "Connected to %s (%s)"
-msgstr "Łączenie z %s (%s)"
+msgstr "Połączony z %s (%s)"
 
 #: methods/connect.cc methods/http.cc
 #, c-format
@@ -3633,7 +3937,7 @@ msgstr "Nie udało się utworzyć gniazda dla %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Nie udało się zainicjalizować połączenia z %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Nie udało się"
 
@@ -3647,9 +3951,7 @@ msgstr "Nie udało się połączyć z %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nie udało się połączyć z %s:%s (%s), przekroczenie czasu połączenia"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Łączenie z %s"
@@ -3665,9 +3967,9 @@ msgid "Temporary failure resolving '%s'"
 msgstr "Tymczasowy błąd przy tłumaczeniu \"%s\""
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "System error resolving '%s:%s'"
-msgstr "Coś niewłaściwego stało się przy tłumaczeniu \"%s:%s\" (%i - %s)"
+msgstr "Błąd systemowy przy tłumaczeniu \"%s:%s\""
 
 #: methods/connect.cc
 #, c-format
@@ -3687,146 +3989,15 @@ msgstr "Nie udało się wykonać operacji stat"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Nieprawidłowe URI, lokalne URI nie mogą zaczynać się od //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Logowanie siÄ™"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nie można określić nazwy zdalnego systemu"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nie udało się określić nazwy lokalnego systemu"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Serwer odrzucił połączenie, otrzymana odpowiedź: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Polecenie USER nie powiodło się, odpowiedź serwera: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Polecenie PASS nie powiodło się, odpowiedź serwera: %s"
+msgid "untrusted public key algorithm: %s"
+msgstr "niezaufany algorytm klucza publicznego: %s"
 
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Określono serwer pośredniczący, ale nie określono skryptu rejestrowania, "
-"Acquire::ftp::ProxyLogin jest puste."
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"Polecenie skryptu rejestrowania \"%s\" nie powiodło się, odpowiedź serwera: "
-"%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Polecenie TYPE nie powiodło się, odpowiedź serwera: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Przekroczenie czasu połączenia"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Serwer zamknął połączenie"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Odpowiedź przepełniła bufor."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Naruszenie zasad protokołu"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nie udało się utworzyć gniazda"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Nie udało się połączyć gniazda danych, przekroczenie czasu połączenia"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nie udało się połączyć pasywnego gniazda."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo nie było w stanie uzyskać nasłuchującego gniazda"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nie udało się przyłączyć gniazda"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Nie udało się nasłuchiwać na gnieździe"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Nie udało się określić nazwy gniazda"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Nie można wysłać polecenia PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Nieznana rodzina adresów %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Polecenie EPRT nie powiodło się, odpowiedź serwera: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Przekroczony czas połączenia gniazda danych"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Nie udało się przyjąć połączenia"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Nie udało się obliczyć skrótu pliku"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nie można pobrać pliku, odpowiedź serwera: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Przekroczony czas oczekiwania na dane"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Nie udało się przesłać danych, odpowiedź serwera: %s"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Info"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nie można wywołać "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3834,6 +4005,8 @@ msgstr "Nie można wywołać "
 msgid ""
 "Signed file isn't valid, got '%s' (does the network require authentication?)"
 msgstr ""
+"Podpisany plik nie jest prawidłowy, otrzymano \"%s\" (czy sieć wymaga "
+"uwierzytelnienia?)"
 
 #: methods/gpgv.cc
 msgid "At least one invalid signature was encountered."
@@ -3843,30 +4016,29 @@ msgstr "Napotkano przynajmniej jeden nieprawidłowy podpis."
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
-"Błąd wewnętrzny: Prawidłowy podpis, ale nie udało się ustalić odcisku klucza!"
+"Błąd wewnętrzny: Prawidłowy podpis, ale nie udało się ustalić odcisku "
+"klucza?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Nie udało się uruchomić apt-key by zweryfikować podpis (czy gnupg jest "
 "zainstalowane?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Nieznany błąd podczas uruchamiania apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "Podpis klucza %s używa słabego algorytmu (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3900,651 +4072,145 @@ msgstr "Operacja select nie powiodła się"
 msgid "Connection timed out"
 msgstr "Przekroczenie czasu połączenia"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Nie udało się obliczyć skrótu pliku"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Nie udało się ustawić czasu modyfikacji"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Połączenie zostało przedwcześnie zamknięte"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Puste pliki nie mogą być prawidłowymi archiwami"
 
-# Bezpieczniej jest nie używać tu polskich znaków.
-#~ msgid "Yes, do as I say!"
-#~ msgstr "Tak, jestem pewien!"
-
-#, c-format
+# FIXME: Skoordynować tłumaczenie DEPRECATION z apt-key(8)
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
 #~ msgid ""
-#~ "You are about to do something potentially harmful.\n"
-#~ "To continue type in the phrase '%s'\n"
-#~ " ?] "
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
 #~ msgstr ""
-#~ "Zaraz stanie siÄ™ coÅ› potencjalnie szkodliwego.\n"
-#~ "Aby kontynuować proszę napisać zdanie \"%s\"\n"
-#~ " ?] "
+#~ "Klucz jest przechowywany w przestarzałym zbiorze kluczy trusted.gpg (%s), "
+#~ "więcej informacji w rozdziale DEPRECATION w podręczniku apt-key(8)."
 
 #, c-format
-#~ msgid "Line %u too long in source list %s."
-#~ msgstr "Linia %u w liście źródeł %s jest zbyt długa."
-
-#~ msgid "Error writing to output file"
-#~ msgstr "Błąd przy pisaniu do pliku wyjściowego"
-
-#~ msgid "Error writing to the file"
-#~ msgstr "Błąd przy pisaniu do pliku"
-
-#~ msgid "Invalid archive member header %s"
-#~ msgstr "Nieprawidłowy nagłówek składnika archiwum: %s"
-
-#~ msgid "The path %s is too long"
-#~ msgstr "Ścieżka %s jest zbyt długa"
-
-#~ msgid "Unpacking %s more than once"
-#~ msgstr "Wypakowanie %s więcej niż raz"
-
-#~ msgid "The directory %s is diverted"
-#~ msgstr "Ominięcie katalogu %s"
-
-#~ msgid "The package is trying to write to the diversion target %s/%s"
-#~ msgstr "Pakiet próbuje pisać do celu ominięcia %s/%s"
-
-#~ msgid "The diversion path is too long"
-#~ msgstr "Zbyt długa ścieżka ominięcia"
-
-#~ msgid "The directory %s is being replaced by a non-directory"
-#~ msgstr "Katalog %s został zastąpiony obiektem nie będącym katalogiem"
-
-#~ msgid "Failed to locate node in its hash bucket"
-#~ msgstr "Nie udało się znaleźć węzła w jego kubełku haszującym"
-
-#~ msgid "The path is too long"
-#~ msgstr "Ścieżka jest zbyt długa"
-
-#~ msgid "Overwrite package match with no version for %s"
-#~ msgstr "NadpisujÄ…cy pakiet nie pasuje z wersjÄ… %s"
-
-#~ msgid "File %s/%s overwrites the one in the package %s"
-#~ msgstr "Plik %s/%s nadpisuje plik w pakiecie %s"
-
-#~ msgid "Unable to stat %s"
-#~ msgstr "Nie można wykonać operacji stat na %s"
-
-#~ msgid "DropNode called on still linked node"
-#~ msgstr "DropNode wywołane na wciąż podłączonym węźle"
-
-#~ msgid "Failed to locate the hash element!"
-#~ msgstr "Nie udało się odnaleźć elementu tablicy haszującej!"
-
-#~ msgid "Failed to allocate diversion"
-#~ msgstr "Nie udało się utworzyć ominięcia"
-
-#~ msgid "Internal error in AddDiversion"
-#~ msgstr "Błąd wewnętrzny w AddDiversion"
-
-#~ msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
-#~ msgstr "Próba nadpisania ominięcia, %s -> %s i %s/%s"
-
-#~ msgid "Double add of diversion %s -> %s"
-#~ msgstr "Podwójne dodanie ominięcia %s -> %s"
-
-#~ msgid "Duplicate conf file %s/%s"
-#~ msgstr "Zduplikowany plik konfiguracyjny %s/%s"
-
-#~ msgid "Unable to change to %s"
-#~ msgstr "Nie udało się przejść do %s"
-
-#~ msgid "Removed %s"
-#~ msgstr "Pakiet %s został usunięty"
-
-#~ msgid "Package file %s is out of sync."
-#~ msgstr "Plik pakietu %s jest przestarzały."
-
-#~ msgid ""
-#~ "The package index files are corrupted. No Filename: field for package %s."
-#~ msgstr ""
-#~ "Pliki indeksu pakietów są uszkodzone. Brak pola Filename: dla pakietu %s."
-
-#~ msgid "No mirror file '%s' found "
-#~ msgstr "Nie znaleziono pliku serwera lustrzanego \"%s\""
-
-#~ msgid "Can not read mirror file '%s'"
-#~ msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\""
-
-#, fuzzy
-#~ msgid "No entry found in mirror file '%s'"
-#~ msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\""
-
-#~ msgid "[Mirror: %s]"
-#~ msgstr "[Serwer lustrzany: %s]"
-
-#~ msgid "Opening configuration file %s"
-#~ msgstr "Otwieranie pliku konfiguracyjnego %s"
-
-#~ msgid "Opening %s"
-#~ msgstr "Otwieranie %s"
-
-#~ msgid ""
-#~ "Unable to find expected entry '%s' in Release file (Wrong sources.list "
-#~ "entry or malformed file)"
-#~ msgstr ""
-#~ "Nie udało się znaleźć oczekiwanego wpisu \"%s\" w pliku Release "
-#~ "(nieprawidłowy wpis sources.list lub nieprawidłowy plik)"
-
-#~ msgid "Unmet dependencies. Try using --fix-broken."
-#~ msgstr "Niespełnione zależności. Proszę spróbować użyć --fix-broken."
-
-#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
-#~ msgstr ""
-#~ "Należy uruchomić \"apt --fix-broken install\", aby naprawić poniższe "
-#~ "problemy:"
-
-#~ msgid "(not found)"
-#~ msgstr "(nie znaleziono)"
-
-#~ msgid "  Package pin: "
-#~ msgstr "  Sposób przypięcia: "
-
-#~ msgid "There is no public key available for the following key IDs:\n"
-#~ msgstr ""
-#~ "Dla następujących identyfikatorów kluczy brakuje klucza publicznego:\n"
-
-#, fuzzy
-#~ msgid "The repository is insufficiently signed by key %s (%s)"
-#~ msgstr "Ominięcie katalogu %s"
-
-#~ msgid ""
-#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
-#~ "packages"
-#~ msgstr ""
-#~ "Zależność %s od %s nie może zostać spełniona, ponieważ %s nie jest "
-#~ "dozwolone w pakietach \"%s\""
-
 #~ msgid ""
-#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
-#~ "found"
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
 #~ msgstr ""
-#~ "Zależność %s od %s nie może zostać spełniona, ponieważ nie znaleziono "
-#~ "pakietu %s"
+#~ "Metoda \"%s\" jest nieobsługiwana i domyślnie wyłączona. Proszę rozważyć "
+#~ "przejście na http(s). Aby włączyć ją ponownie, konieczne jest ustawienie "
+#~ "Dir::Bin::Methods::%s na \"%s\"."
 
-#~ msgid ""
-#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
-#~ msgstr ""
-#~ "Nie udało się spełnić zależności %s od %s: Zainstalowany pakiet %s jest "
-#~ "zbyt nowy"
+#~ msgid "Logging in"
+#~ msgstr "Logowanie siÄ™"
 
-#~ msgid ""
-#~ "%s dependency for %s cannot be satisfied because candidate version of "
-#~ "package %s can't satisfy version requirements"
-#~ msgstr ""
-#~ "Zależność %s od %s nie może zostać spełniona, ponieważ kandydująca wersja "
-#~ "pakietu %s nie spełnia wymagań wersji"
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nie można określić nazwy zdalnego systemu"
 
-#~ msgid ""
-#~ "%s dependency for %s cannot be satisfied because package %s has no "
-#~ "candidate version"
-#~ msgstr ""
-#~ "Zależność %s od %s nie może zostać spełniona, ponieważ pakiet %s nie ma "
-#~ "wersji kandydujÄ…cej"
-
-#~ msgid "Build-dependencies for %s could not be satisfied."
-#~ msgstr "Nie udało się spełnić zależności dla budowania %s."
-
-#~ msgid "Problem unlinking %s"
-#~ msgstr "Problem przy usuwaniu %s"
-
-#~ msgid "Failed to unlink %s"
-#~ msgstr "Nie udało się usunąć %s"
-
-#~ msgid ""
-#~ "Usage: apt-cache [options] command\n"
-#~ "       apt-cache [options] show pkg1 [pkg2 ...]\n"
-#~ "\n"
-#~ "apt-cache is a low-level tool used to query information\n"
-#~ "from APT's binary cache files\n"
-#~ msgstr ""
-#~ "Użycie: apt-cache [opcje] polecenie\n"
-#~ "        apt-cache [opcje] show pakiet1 [pakiet2 ...]\n"
-#~ "\n"
-#~ "apt-cache to niskopoziomowe narzędzie służące  pobierania informacji\n"
-#~ "z podręcznego magazynu plików binarnych APT-a.\n"
-
-#~ msgid ""
-#~ "Options:\n"
-#~ "  -h   This help text.\n"
-#~ "  -p=? The package cache.\n"
-#~ "  -s=? The source cache.\n"
-#~ "  -q   Disable progress indicator.\n"
-#~ "  -i   Show only important deps for the unmet command.\n"
-#~ "  -c=? Read this configuration file\n"
-#~ "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
-#~ msgstr ""
-#~ "Opcje:\n"
-#~ "  -h   Ten tekst pomocy.\n"
-#~ "  -p=? Podręczny magazyn pakietów.\n"
-#~ "  -s=? Podręczny magazyn źródeł.\n"
-#~ "  -q   Wyłącza wskaźnik postępu.\n"
-#~ "  -i   Pokazuje tylko ważne zależności przy poleceniu unmet.\n"
-#~ "  -c=? Czyta wskazany plik konfiguracyjny.\n"
-#~ "  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
-#~ "Więcej informacji można znaleźć na stronach podręcznika apt-cache(8)\n"
-#~ "oraz apt.conf(5).\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "Options:\n"
-#~ "  -h   This help text\n"
-#~ "  -d   CD-ROM mount point\n"
-#~ "  -r   Rename a recognized CD-ROM\n"
-#~ "  -m   No mounting\n"
-#~ "  -f   Fast mode, don't check package files\n"
-#~ "  -a   Thorough scan mode\n"
-#~ "  --no-auto-detect Do not try to auto detect drive and mount point\n"
-#~ "  -c=? Read this configuration file\n"
-#~ "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-#~ "See fstab(5)\n"
-#~ msgstr ""
-#~ "Opcje:\n"
-#~ "  -h  Ten tekst pomocy\n"
-#~ "  -q   Nie pokazuje wskaźnika postępu (przydatne przy rejestrowaniu "
-#~ "działania)\n"
-#~ "  -qq  Nie wypisuje nic oprócz komunikatów błędów\n"
-#~ "  -s  Symulacja - wyświetla jedynie co powinno zostać zrobione\n"
-#~ "  -f  zapis/odczyt oznaczenia jako automatyczny/ręczny danego pliku\n"
-#~ "  -c=? Czyta wskazany plik konfiguracyjny.\n"
-#~ "  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
-#~ "Proszę zapoznać się ze stronami podręcznika systemowego apt-mark(8)\n"
-#~ "i apt.conf(5), aby uzyskać więcej informacji."
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nie udało się określić nazwy lokalnego systemu"
 
-#~ msgid ""
-#~ "Options:\n"
-#~ "  -h   This help text.\n"
-#~ "  -c=? Read this configuration file\n"
-#~ "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-#~ msgstr ""
-#~ "Opcje:\n"
-#~ "  -h   Ten tekst pomocy.\n"
-#~ "  -c=? Czyta wskazany plik konfiguracyjny.\n"
-#~ "  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
-
-#~ msgid ""
-#~ "Options:\n"
-#~ "  -h  This help text.\n"
-#~ "  -q  Loggable output - no progress indicator\n"
-#~ "  -qq No output except for errors\n"
-#~ "  -s  No-act. Just prints what would be done.\n"
-#~ "  -f  read/write auto/manual marking in the given file\n"
-#~ "  -c=? Read this configuration file\n"
-#~ "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
-#~ msgstr ""
-#~ "Opcje:\n"
-#~ "  -h  Ten tekst pomocy\n"
-#~ "  -q   Nie pokazuje wskaźnika postępu (przydatne przy rejestrowaniu "
-#~ "działania)\n"
-#~ "  -qq  Nie wypisuje nic oprócz komunikatów błędów\n"
-#~ "  -s  Symulacja - wyświetla jedynie co powinno zostać zrobione\n"
-#~ "  -f  zapis/odczyt oznaczenia jako automatyczny/ręczny danego pliku\n"
-#~ "  -c=? Czyta wskazany plik konfiguracyjny.\n"
-#~ "  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
-#~ "Proszę zapoznać się ze stronami podręcznika systemowego apt-mark(8)\n"
-#~ "i apt.conf(5), aby uzyskać więcej informacji."
-
-#~ msgid ""
-#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
-#~ "\n"
-#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
-#~ "used\n"
-#~ "to indicate what kind of file it is.\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "  -h   This help text\n"
-#~ "  -s   Use source file sorting\n"
-#~ "  -c=? Read this configuration file\n"
-#~ "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-#~ msgstr ""
-#~ "Użycie: apt-sortpkgs [opcje] plik1 [plik2 ...]\n"
-#~ "\n"
-#~ "apt-sortpkgs to proste narzędzie służące do sortowania plików pakietów.\n"
-#~ "Opcji -s używa się do wskazania typu pliku.\n"
-#~ "\n"
-#~ "Opcje:\n"
-#~ "  -h   Ten tekst pomocy.\n"
-#~ "  -s   Sortowanie pliku źródeł.\n"
-#~ "  -c=? Czyta wskazany plik konfiguracyjny.\n"
-#~ "  -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
-
-#~ msgid "Child process failed"
-#~ msgstr "Proces potomny zawiódł"
-
-#, fuzzy
-#~ msgid "Must specifc at least one srv record"
-#~ msgstr ""
-#~ "Należy podać przynajmniej jeden pakiet, dla którego mają zostać pobrane "
-#~ "źródła"
-
-#~ msgid "Failed to create pipes"
-#~ msgstr "Nie udało się utworzyć potoków"
-
-#~ msgid "Failed to exec gzip "
-#~ msgstr "Nie udało się uruchomić programu gzip "
-
-#~ msgid "%s %s for %s compiled on %s %s\n"
-#~ msgstr "%s %s dla %s skompilowany %s %s\n"
-
-#~ msgid "Failed to create FILE*"
-#~ msgstr "Nie udało się utworzyć obiektu FILE*"
-
-#, fuzzy
-#~ msgid "Malformed stanza %u in source list %s (URI parse)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza URI)"
-
-#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
-#~ msgstr ""
-#~ "Nieprawidłowa linia %lu w liście źródeł %s ([opcja] nie dająca się "
-#~ "sparsować)"
-
-#~ msgid "Malformed line %lu in source list %s ([option] too short)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s ([opcja] zbyt krótka)"
-
-#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
-#~ msgstr ""
-#~ "Nieprawidłowa linia %lu w liście źródeł %s ([%s] nie jest przypisane)"
-
-#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s ([%s] nie ma klucza)"
-
-#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
-#~ msgstr ""
-#~ "Nieprawidłowa linia %lu w liście źródeł %s ([%s] klucz %s nie ma wartości)"
-
-#~ msgid "Malformed line %lu in source list %s (URI)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (URI)"
-
-#~ msgid "Malformed line %lu in source list %s (dist)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (dystrybucja)"
-
-#~ msgid "Malformed line %lu in source list %s (URI parse)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza URI)"
-
-#~ msgid "Malformed line %lu in source list %s (absolute dist)"
-#~ msgstr ""
-#~ "Nieprawidłowa linia %lu w liście źródeł %s (bezwzględna dystrybucja)"
-
-#~ msgid "Malformed line %lu in source list %s (dist parse)"
-#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza dystrybucji)"
-
-#~ msgid "Package %s %s was not found while processing file dependencies"
-#~ msgstr ""
-#~ "Pakiet %s %s nie został odnaleziony podczas przetwarzania zależności "
-#~ "plików"
-
-#~ msgid "Couldn't stat source package list %s"
-#~ msgstr ""
-#~ "Nie udało się wykonać operacji stat na liście pakietów źródłowych %s"
-
-#~ msgid "Collecting File Provides"
-#~ msgstr "Zbieranie zapewnień plików"
-
-#, fuzzy
-#~ msgid "Does not start with a cleartext signature"
-#~ msgstr "Plik %s nie zaczyna się wiadomością podpisaną w trybie clearsign"
-
-#~ msgid "Unable to find hash sum for '%s' in Release file"
-#~ msgstr "Nie udało się znaleźć sumy kontrolnej \"%s\" w pliku Release"
-
-#~ msgid "Vendor block %s contains no fingerprint"
-#~ msgstr "Blok producenta %s nie zawiera odcisku"
-
-#~ msgid "Total dependency version space: "
-#~ msgstr "Sumaryczny rozmiar obszaru zależności od wersji: "
-
-#~ msgid "You don't have enough free space in %s"
-#~ msgstr "W %s nie ma wystarczającej ilości wolnego miejsca"
-
-#~ msgid "Done"
-#~ msgstr "Gotowe"
-
-#~ msgid "No keyring installed in %s."
-#~ msgstr "Brak zainstalowanej bazy kluczy w %s."
-
-#, fuzzy
-#~ msgid "Internal error, Upgrade broke stuff"
-#~ msgstr "Błąd wewnętrzny spowodowany przez AllUpgrade"
-
-#~ msgid "%s not a valid DEB package."
-#~ msgstr "%s nie jest prawidłowym pakietem DEB."
-
-#~ msgid ""
-#~ "Using CD-ROM mount point %s\n"
-#~ "Mounting CD-ROM\n"
-#~ msgstr ""
-#~ "Użycie %s jako punktu montowania CD-ROM-u\n"
-#~ "Montowanie CD-ROM-u\n"
-
-#~ msgid ""
-#~ "Could not patch %s with mmap and with file operation usage - the patch "
-#~ "seems to be corrupt."
-#~ msgstr ""
-#~ "Nie udało się nałożyć łatki %s przy użyciu mmap i operacji plikowej - "
-#~ "łatka wygląda na uszkodzoną."
-
-#~ msgid ""
-#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
-#~ "seems to be corrupt."
-#~ msgstr ""
-#~ "Nie udało się nałożyć łatki %s przy użyciu mmap, ale błąd nie pochodzi z "
-#~ "mmap - łatka wygląda na uszkodzoną"
-
-#~ msgid "Ignore unavailable target release '%s' of package '%s'"
-#~ msgstr "Ignorowanie niedostępnego wydania docelowego %s pakietu %s"
-
-#~ msgid "Downloading %s %s"
-#~ msgstr "Pobieranie %s %s"
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Serwer odrzucił połączenie, otrzymana odpowiedź: %s"
 
-#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
-#~ msgstr ""
-#~ "To nie jest poprawne archiwum DEB, brakuje składnika \"%s\", \"%s\" lub "
-#~ "\"%s\""
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Polecenie USER nie powiodło się, odpowiedź serwera: %s"
 
-#~ msgid "MD5Sum mismatch"
-#~ msgstr "Błędna suma MD5"
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Polecenie PASS nie powiodło się, odpowiedź serwera: %s"
 
 #~ msgid ""
-#~ "I wasn't able to locate a file for the %s package. This might mean you "
-#~ "need to manually fix this package."
-#~ msgstr ""
-#~ "Nie udało się odnaleźć pliku dla pakietu %s. Może to oznaczać, że trzeba "
-#~ "będzie ręcznie naprawić ten pakiet."
-
-#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
 #~ msgstr ""
-#~ "Nie można zapisać dziennika, openpty() nie powiodło się (/dev/pts nie "
-#~ "jest zamontowane?)\n"
-
-#~ msgid "Skipping nonexistent file %s"
-#~ msgstr "Pomijanie nieistniejÄ…cego pliku %s"
-
-#~ msgid "Failed to remove %s"
-#~ msgstr "Nie udało się usunąć %s"
-
-#~ msgid "Unable to create %s"
-#~ msgstr "Nie można utworzyć %s"
-
-#~ msgid "Failed to stat %sinfo"
-#~ msgstr "Nie udało się wykonać operacji stat na %sinfo"
+#~ "Określono serwer pośredniczący, ale nie określono skryptu rejestrowania, "
+#~ "Acquire::ftp::ProxyLogin jest puste."
 
-#~ msgid "The info and temp directories need to be on the same filesystem"
-#~ msgstr ""
-#~ "Pliki info i katalog tymczasowy muszą być w tym samym systemie plików"
-
-#~ msgid "Failed to change to the admin dir %sinfo"
-#~ msgstr "Nie udało się przejść do katalogu administracyjnego %sinfo"
-
-#~ msgid "Internal error getting a package name"
-#~ msgstr "Błąd wewnętrzny podczas pobierania nazwy pakietu"
-
-#~ msgid "Reading file listing"
-#~ msgstr "Czytanie listy plików"
-
-#~ msgid ""
-#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
-#~ "then make it empty and immediately re-install the same version of the "
-#~ "package!"
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
 #~ msgstr ""
-#~ "Nie udało się otworzyć pliku listy \"%sinfo/%s\". Jeśli nie można "
-#~ "przywrócić tego pliku, należy utworzyć go jako pusty plik i bezzwłocznie "
-#~ "przeinstalować tę samą wersję pakietu!"
-
-#~ msgid "Failed reading the list file %sinfo/%s"
-#~ msgstr "Nie udało się przeczytać pliku listy %sinfo/%s"
-
-#~ msgid "Internal error getting a node"
-#~ msgstr "Błąd wewnętrzny przy pobieraniu węzła"
-
-#~ msgid "Failed to open the diversions file %sdiversions"
-#~ msgstr "Nie udało się otworzyć pliku ominięć %sdiversions"
-
-#~ msgid "The diversion file is corrupted"
-#~ msgstr "Plik ominięć jest uszkodzony"
-
-#~ msgid "Invalid line in the diversion file: %s"
-#~ msgstr "Nieprawidłowa linia w pliku ominięć: %s"
-
-#~ msgid "Internal error adding a diversion"
-#~ msgstr "Błąd wewnętrzny przy dodawaniu ominięcia"
+#~ "Polecenie skryptu rejestrowania \"%s\" nie powiodło się, odpowiedź "
+#~ "serwera: %s"
 
-#~ msgid "The pkg cache must be initialized first"
-#~ msgstr "Magazyn podręczny pakietów musi zostać wcześniej zainicjalizowany"
-
-#~ msgid "Failed to find a Package: header, offset %lu"
-#~ msgstr "Nie udało się znaleźć nagłówka Package:, offset %lu"
-
-#~ msgid "Bad ConfFile section in the status file. Offset %lu"
-#~ msgstr "Błędna sekcja ConfFile w pliku stanu. Offset %lu"
-
-#~ msgid "Error parsing MD5. Offset %lu"
-#~ msgstr "Błąd przy czytaniu skrótu MD5. Offset %lu"
-
-#~ msgid "Couldn't change to %s"
-#~ msgstr "Nie udało się przejść do %s"
-
-#~ msgid "Failed to locate a valid control file"
-#~ msgstr "Nie udało się odnaleźć poprawnego pliku kontrolnego"
-
-#~ msgid "Couldn't open pipe for %s"
-#~ msgstr "Nie udało się otworzyć potoku dla %s"
-
-#~ msgid "Read error from %s process"
-#~ msgstr "Błąd odczytu z procesu %s"
-
-#~ msgid "Got a single header line over %u chars"
-#~ msgstr "Otrzymano pojedynczą linię nagłówka o długości ponad %u znaków"
-
-#~ msgid "Note: This is done automatic and on purpose by dpkg."
-#~ msgstr "Uwaga: dpkg wykonał to automatycznie i celowo."
-
-#~ msgid "Malformed override %s line %lu #1"
-#~ msgstr "Nieprawidłowa linia %2$lu #1 pliku override %1$s"
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Polecenie TYPE nie powiodło się, odpowiedź serwera: %s"
 
-#~ msgid "Malformed override %s line %lu #2"
-#~ msgstr "Nieprawidłowa linia %2$lu #2 pliku override %1$s"
+#~ msgid "Connection timeout"
+#~ msgstr "Przekroczenie czasu połączenia"
 
-#~ msgid "Malformed override %s line %lu #3"
-#~ msgstr "Nieprawidłowa linia %2$lu #3 pliku override %1$s"
+#~ msgid "Server closed the connection"
+#~ msgstr "Serwer zamknął połączenie"
 
-#~ msgid "decompressor"
-#~ msgstr "dekompresor"
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Odpowiedź przepełniła bufor."
 
-#~ msgid "read, still have %lu to read but none left"
-#~ msgstr "należało przeczytać jeszcze %lu, ale nic nie zostało"
+#~ msgid "Protocol corruption"
+#~ msgstr "Naruszenie zasad protokołu"
 
-#~ msgid "write, still have %lu to write but couldn't"
-#~ msgstr "należało zapisać jeszcze %lu, ale nie udało się to"
+#~ msgid "Could not create a socket"
+#~ msgstr "Nie udało się utworzyć gniazda"
 
-#~ msgid ""
-#~ "Could not perform immediate configuration on already unpacked '%s'. "
-#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgid "Could not connect data socket, connection timed out"
 #~ msgstr ""
-#~ "Nie udało się wykonać natychmiastowej konfiguracji rozpakowanego pakietu "
-#~ "%s. Proszę wykonać \"man 5 apt.conf\" i zapoznać się z wpisem APT::"
-#~ "Immediate-Configure aby dowiedzieć się więcej."
-
-#~ msgid "Error occurred while processing %s (NewPackage)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewPackage)"
+#~ "Nie udało się połączyć gniazda danych, przekroczenie czasu połączenia"
 
-#~ msgid "Error occurred while processing %s (UsePackage1)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage1)"
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nie udało się połączyć pasywnego gniazda."
 
-#~ msgid "Error occurred while processing %s (NewFileDesc1)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileDesc1)"
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo nie było w stanie uzyskać nasłuchującego gniazda"
 
-#~ msgid "Error occurred while processing %s (UsePackage2)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage2)"
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nie udało się przyłączyć gniazda"
 
-#~ msgid "Error occurred while processing %s (NewFileVer1)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileVer1)"
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Nie udało się nasłuchiwać na gnieździe"
 
-#~ msgid "Error occurred while processing %s (NewVersion%d)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewVersion%d)"
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Nie udało się określić nazwy gniazda"
 
-#~ msgid "Error occurred while processing %s (UsePackage3)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage3)"
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Nie można wysłać polecenia PORT"
 
-#~ msgid "Error occurred while processing %s (NewFileDesc2)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileDesc2)"
-
-#~ msgid "Error occurred while processing %s (FindPkg)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (FindPkg)"
-
-#~ msgid "Error occurred while processing %s (CollectFileProvides)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (CollectFileProvides)"
-
-#~ msgid "Internal error, could not locate member"
-#~ msgstr "Błąd wewnętrzny, nie udało się odnaleźć składnika"
-
-#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-#~ msgstr "E: Lista argumentów Acquire::gpgv::Options zbyt długa. Zakończenie."
-
-#~ msgid "Error occurred while processing %s (NewVersion2)"
-#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewVersion2)"
-
-#~ msgid "Malformed line %u in source list %s (vendor id)"
-#~ msgstr ""
-#~ "Nieprawidłowa linia %u w liście źródeł %s (identyfikator producenta)"
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Nieznana rodzina adresów %u (AF_*)"
 
-#~ msgid "Couldn't access keyring: '%s'"
-#~ msgstr "Nie udało się uzyskać dostępu do bazy kluczy: \"%s\""
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Polecenie EPRT nie powiodło się, odpowiedź serwera: %s"
 
-#~ msgid "Could not patch file"
-#~ msgstr "Nie udało się nałożyć łatki na plik"
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Przekroczono czas połączenia gniazda danych"
 
-#~ msgid "       %4i %s\n"
-#~ msgstr "       %4i %s\n"
+#~ msgid "Unable to accept connection"
+#~ msgstr "Nie udało się przyjąć połączenia"
 
-#~ msgid "No source package '%s' picking '%s' instead\n"
-#~ msgstr "Brak pakietu źródłowego \"%s\", wybieranie \"%s\" zamiast niego\n"
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nie można pobrać pliku, odpowiedź serwera: \"%s\""
 
-#~ msgid "%4i %s\n"
-#~ msgstr "%4i %s\n"
+#~ msgid "Data socket timed out"
+#~ msgstr "Przekroczono czas oczekiwania na dane"
 
-#~ msgid "Processing triggers for %s"
-#~ msgstr "Przetwarzanie wyzwalaczy dla %s"
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Nie udało się przesłać danych, odpowiedź serwera: \"%s\""
 
-#~ msgid "Dynamic MMap ran out of room"
-#~ msgstr "Brak miejsca dla dynamicznego MMap"
+#~ msgid "Query"
+#~ msgstr "Info"
 
-#~ msgid ""
-#~ "Since you only requested a single operation it is extremely likely that\n"
-#~ "the package is simply not installable and a bug report against\n"
-#~ "that package should be filed."
-#~ msgstr ""
-#~ "Ponieważ zażądano tylko jednej operacji, jest bardzo prawdopodobne, że\n"
-#~ "danego pakietu po prostu nie da się zainstalować i należy zgłosić w nim\n"
-#~ "błąd."
+#~ msgid "Unable to invoke "
+#~ msgstr "Nie można wywołać "
 
-#~ msgid "Line %d too long (max %lu)"
-#~ msgstr "Linia %d jest zbyt długa (max %lu)"
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Połączenie zostało przedwcześnie zamknięte"
diff --git a/po/pt.po b/po/pt.po
index 342aaa6..cac972c 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2012-06-29 15:45+0100\n"
 "Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
@@ -51,8 +51,8 @@ msgstr "O directório %s é desviado"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -191,8 +191,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribuição em conflito: %s (esperado %s mas obtido %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -203,7 +202,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -222,6 +221,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Falhou obter %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -243,13 +249,6 @@ msgstr "Não conseguiu encontrar uma fonte para obter a versão '%s' de '%s'"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Changlog para %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -654,6 +653,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Erro de sintaxe %s:%u: Lixo extra no final do ficheiro"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -771,11 +794,11 @@ msgstr "O sub-processo %s retornou um código de erro (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "O sub-processo %s terminou inesperadamente"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Erro de leitura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Erro de escrita"
 
@@ -1100,6 +1123,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Sem acesso exclusivo"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1291,6 +1320,16 @@ msgstr "Preparar para receber solução"
 msgid "External solver failed without a proper error message"
 msgstr "O resolvedor externo falhou sem uma mensagem de erro adequada"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "A calcular a actualização"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Total de dependências: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Executar resolvedor externo"
@@ -1605,10 +1644,6 @@ msgstr ""
 "Falhou o download de alguns ficheiros de índice. Foram ignorados ou os "
 "antigos foram usados em seu lugar."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "A calcular a actualização"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1878,6 +1913,18 @@ msgstr "A seguinte informação pode ajudar a resolver a situação:"
 msgid "Broken packages"
 msgstr "Pacotes estragados"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1921,6 +1968,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Estranho... Os tamanhos não coincidiram, escreva para apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "A obter %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1928,6 +1981,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "É necessário obter %sB/%sB de arquivos.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "A obter %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1935,14 +1994,56 @@ msgstr "É necessário obter %sB/%sB de arquivos.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "É necessário obter %sB de arquivos.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Após esta operação, serão utilizados %sB adicionais de espaço em disco.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Label Guardada: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1960,6 +2061,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Deseja continuar?"
@@ -2022,6 +2131,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Erro Interno, o AutoRemover estragou coisas"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Utilize '%s' para o remover."
+msgstr[1] "Utilize '%s' para os remover."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2043,18 +2159,6 @@ msgstr[0] "O pacote %lu foi instalado automaticamente e já não é necessário.
 msgstr[1] ""
 "Os pacotes %lu foram instalados automaticamente e já não são necessários.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Utilize '%s' para o remover."
-msgstr[1] "Utilize '%s' para os remover."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Os seguintes pacotes extra serão instalados:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Pacotes sugeridos:"
@@ -2063,6 +2167,11 @@ msgstr "Pacotes sugeridos:"
 msgid "Recommended packages:"
 msgstr "Pacotes recomendados:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Os seguintes pacotes extra serão instalados:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2198,14 +2307,52 @@ msgstr " ou"
 msgid "The following packages have unmet dependencies:"
 msgstr "Os pacotes a seguir têm dependências não satisfeitas:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Falha ao satisfazer a dependência %s para %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Serão instalados os seguintes NOVOS pacotes:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "A instalar %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Total de dependências: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Serão REMOVIDOS os seguintes pacotes:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:"
@@ -2214,10 +2361,24 @@ msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:"
 msgid "The following packages will be upgraded:"
 msgstr "Serão actualizados os seguintes pacotes:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Será feito o DOWNGRADE aos seguintes pacotes:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Pacotes Marcados:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Os seguintes pacotes mantidos serão mudados:"
@@ -2235,26 +2396,53 @@ msgstr ""
 "AVISO: Os seguintes pacotes essenciais serão removidos.\n"
 "Isso NÃO deverá ser feito a menos que saiba exactamente o que está a fazer!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu pacotes actualizados, %lu pacotes novos instalados, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "A instalar %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstalados, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "A instalar %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu a que foi feito o downgrade, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "A obter %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu a remover e %lu não actualizados.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2282,7 +2470,7 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2464,8 +2652,8 @@ msgstr "%s não tem dependências de compilação.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Nenhuma informação de arquitectura disponível para %s. Para configuração "
 "veja apt.conf(5) APT::Architectures"
@@ -2506,6 +2694,11 @@ msgstr "Falha ao baixar %s  %s\n"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2523,6 +2716,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2568,6 +2792,12 @@ msgstr "  Pacotes virtuais misturados: "
 msgid "  Missing: "
 msgstr "  Faltam: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Total de versões distintas: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Total de versões distintas: "
@@ -2902,6 +3132,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid " files "
+msgid "hash file"
+msgstr " falhou."
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3152,6 +3388,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "A ler a informação de estado"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3360,7 +3600,7 @@ msgstr "Algoritmo de compressão desconhecido '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Saída compactada %s precisa de um conjunto de compressão"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Falha ao criar pipe IPC para subprocesso"
 
@@ -3479,23 +3719,23 @@ msgstr "Arquivo não possuía campo package"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s não possui entrada override\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s não possui entrada override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr " o maintainer de %s é %s, não %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr " o maintainer de %.*s é %.*s, não %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s não possui fonte de entrada de 'override'\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s não possui fonte de entrada de 'override'\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s também não possui entrada binária de 'override'\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s também não possui entrada binária de 'override'\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3533,7 +3773,7 @@ msgstr "Dados de cabeçalho errados"
 msgid "Connection failed"
 msgstr "A ligação falhou"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3575,7 +3815,7 @@ msgstr "Impossível desmontar o CD-ROM em %s, pode ainda estar a ser utilizado."
 msgid "Disk not found."
 msgstr "Disco não encontrado."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Ficheiro não encontrado"
 
@@ -3611,7 +3851,7 @@ msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Não posso iniciar a ligação para %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Falhou"
 
@@ -3625,9 +3865,7 @@ msgstr "Não foi possível ligar em %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Não foi possível ligar a %s:%s (%s), a conexão expirou"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "A ligar a %s"
@@ -3665,144 +3903,15 @@ msgstr "Falhou o stat"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI inválido, URIs locais não devem começar por //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "A identificar-se no sistema"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Não foi possível determinar o nome do posto"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Não foi possível determinar o nome local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "O servidor recusou a ligação e respondeu: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER falhou, o servidor respondeu: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS falhou, o servidor respondeu: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Foi especificado um servidor de proxy mas não um script de login, Acquire::"
-"ftp::ProxyLogin está vazio."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "O comando de script de login '%s' falhou, o servidor respondeu: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE falhou, o servidor respondeu: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Foi atingido o tempo limite de ligação"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "O servidor fechou a ligação"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Uma resposta sobrecarregou o buffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Corrupção de protocolo"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Não foi possível criar um socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Não foi possível ligar socket de dados, a ligação expirou"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Não foi possível ligar socket passivo."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Não foi possível fazer o bind a um socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Não foi possível executar listen no socket"
 
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Não foi possível determinar o nome do socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Não foi possível enviar o comando PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Família de endereços %u desconhecida (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT falhou, o servidor respondeu: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Ligação de socket de dados expirou"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Impossível aceitar ligação"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problema ao calcular o hash do ficheiro"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Não foi possível obter o ficheiro, o servidor respondeu '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Expirou o tempo do socket de dados"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "A transferência de dados falhou, o servidor respondeu '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Pesquisa"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Não foi possível invocar "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3823,26 +3932,24 @@ msgstr ""
 "digital da chave?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Não foi possível executar 'apt-key' para verificar a assinatura  (o gnupg "
 "está instalado?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Erro desconhecido ao executar apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3877,18 +3984,134 @@ msgstr "A selecção falhou"
 msgid "Connection timed out"
 msgstr "O tempo da ligação expirou"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problema ao calcular o hash do ficheiro"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Falhou definir hora de modificação"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Ligação encerrada prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Ficheiros vazios não podem ser arquivos válidos"
 
+#~ msgid "Logging in"
+#~ msgstr "A identificar-se no sistema"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Não foi possível determinar o nome do posto"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Não foi possível determinar o nome local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "O servidor recusou a ligação e respondeu: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER falhou, o servidor respondeu: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS falhou, o servidor respondeu: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Foi especificado um servidor de proxy mas não um script de login, "
+#~ "Acquire::ftp::ProxyLogin está vazio."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "O comando de script de login '%s' falhou, o servidor respondeu: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE falhou, o servidor respondeu: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Foi atingido o tempo limite de ligação"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "O servidor fechou a ligação"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Uma resposta sobrecarregou o buffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Corrupção de protocolo"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Não foi possível criar um socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Não foi possível ligar socket de dados, a ligação expirou"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Não foi possível ligar socket passivo."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Não foi possível fazer o bind a um socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Não foi possível executar listen no socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Não foi possível determinar o nome do socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Não foi possível enviar o comando PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Família de endereços %u desconhecida (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT falhou, o servidor respondeu: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Ligação de socket de dados expirou"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Impossível aceitar ligação"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Não foi possível obter o ficheiro, o servidor respondeu '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Expirou o tempo do socket de dados"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "A transferência de dados falhou, o servidor respondeu '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Pesquisa"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Não foi possível invocar "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Ligação encerrada prematuramente"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Instalado: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Os seguintes pacotes mantidos serão mudados:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sim, faça como eu digo!"
 
@@ -4108,8 +4331,8 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos"
 #~ "  -c=? Ler este ficheiro de configuração.\n"
 #~ "  -o=? Definir uma opção arbitrária de configuração, p.e.: -o dir::cache=/"
 #~ "tmp\n"
-#~ "Para mais informações veja as páginas do manual apt-cache(8) e apt."
-#~ "conf(5).\n"
+#~ "Para mais informações veja as páginas do manual apt-cache(8) e "
+#~ "apt.conf(5).\n"
 
 #, fuzzy
 #~ msgid ""
@@ -4320,9 +4543,6 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos"
 #~ msgstr ""
 #~ "Ignorar o lançamento pretendido, não disponível, '%s' do pacote '%s'"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "A obter %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Este não é um arquivo DEB válido, não tem '%s', '%s' ou o membro '%s'"
@@ -4618,8 +4838,8 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos"
 
 #~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
 #~ msgstr ""
-#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar os ."
-#~ "debs."
+#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar "
+#~ "os .debs."
 
 #~ msgid "Extract "
 #~ msgstr "extra"
@@ -4642,9 +4862,6 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos"
 #~ msgid "Couldn't wait for subprocess"
 #~ msgstr "Não foi possível checar a lista de pacotes fonte %s"
 
-#~ msgid " files "
-#~ msgstr " falhou."
-
 #~ msgid "Done. "
 #~ msgstr "Pronto"
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c3c13bf..7225a65 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -2,19 +2,21 @@
 # Licensing is complex as the msgid come from several files, please see
 # the individual files for licensing information.
 #
-# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copyright (C) 2002-2025 Free Software Foundation, Inc.
 # Gustavo Noronha Silva <kov@debian.org>, 2002.
 # Andre Luis Lopes <andrelop@debian.org>, 2002-2005.
 # Felipe Augusto van de Wiel (faw) <faw@debian.org>, 2006-2008.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2022-2025.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 1.0.5\n"
+"Project-Id-Version: apt 2.9.21\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2008-11-17 02:33-0200\n"
-"Last-Translator: Felipe Augusto van de Wiel (faw) <faw@debian.org>\n"
-"Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."
-"org>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-12-26 14:38+0000\n"
+"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
+"Language-Team: Brazilian Portuguese <debian-l10n-"
+"portuguese@lists.debian.org>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -26,49 +28,58 @@ msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
+"A atualização de tal repositório não pode ser feita com segurança e, "
+"portanto, está desabilitada por padrão."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Data from such a repository can't be authenticated and is therefore "
 "potentially dangerous to use."
 msgstr ""
+"Os dados de tal repositório não podem ser autenticados e, portanto, são "
+"potencialmente perigosos de usar."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
+"Veja a página man apt-secure(8) para detalhes sobre criação de repositório e "
+"configuração de usuário."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is no longer signed."
-msgstr "O diretório %s é desviado (\"diverted\")"
+msgstr "O repositório '%s' não está mais assinado."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' no longer has a Release file."
-msgstr "O diretório %s é desviado (\"diverted\")"
+msgstr "O repositório '%s' não tem mais um arquivo Release."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
+"Isso normalmente não é permitido, mas a opção "
+"Acquire::AllowDowngradeToInsecureRepositories foi fornecida para "
+"sobrescrever isso."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is not signed."
-msgstr "O diretório %s é desviado (\"diverted\")"
+msgstr "O repositório '%s' não está assinado."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' does not have a Release file."
-msgstr "O diretório %s é desviado (\"diverted\")"
+msgstr "O repositório '%s' não tem um arquivo Release."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' provides only weak security information."
-msgstr "O diretório %s é desviado (\"diverted\")"
+msgstr "O repositório '%s' fornece apenas informações fracas de segurança."
 
 #: apt-pkg/acquire-item.cc ftparchive/writer.cc
 #, c-format
@@ -87,26 +98,27 @@ msgstr "Hash Sum incorreto"
 #: apt-pkg/acquire-item.cc
 msgid "Insufficient information available to perform this download securely"
 msgstr ""
+"Informações disponíveis insuficientes para realizar este download de forma "
+"segura"
 
 #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "rename failed, %s (%s -> %s)."
-msgstr "renomeação falhou, %s (%s -> %s)."
+msgstr "falha ao renomear, %s (%s -> %s)."
 
 #: apt-pkg/acquire-item.cc
 msgid "Size mismatch"
 msgstr "Tamanho incorreto"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Invalid file format"
-msgstr "Operação %s inválida"
+msgstr "Formato de arquivo inválido"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Signature error"
-msgstr "Erro de escrita"
+msgstr "Erro de assinatura"
 
+# Mantive clearsigned em inglês por ser um termo técnico: https://www.gnupg.org/gph/en/manual/x135.html#AEN152
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: apt-pkg/acquire-item.cc methods/gpgv.cc
 #, c-format
@@ -114,6 +126,7 @@ msgid ""
 "Clearsigned file isn't valid, got '%s' (does the network require "
 "authentication?)"
 msgstr ""
+"O arquivo clearsigned não é válido, obteve '%s' (a rede requer autenticação?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -121,12 +134,14 @@ msgid ""
 "An error occurred during the signature verification. The repository is not "
 "updated and the previous index files will be used. GPG error: %s: %s"
 msgstr ""
+"Ocorreu um erro durante a verificação da assinatura. O repositório não é "
+"atualizado e os arquivos de índice anteriores serão usados. Erro GPG: %s: %s"
 
 #. Invalid signature file, reject (LP: #346386) (Closes: #627642)
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "GPG error: %s: %s"
-msgstr ""
+msgstr "Erro de GPG: %s: %s"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -134,6 +149,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
+"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não "
+"tem o componente '%s' (componente escrito incorretamente no sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -141,6 +158,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
+"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não "
+"tem suporte à arquitetura '%s'"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -148,6 +167,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
+"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não "
+"parece fornecê-lo (entrada no sources.list escrita incorretamente?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -155,6 +176,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' provides only "
 "weak security information for it"
 msgstr ""
+"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' "
+"fornece apenas informações fracas de segurança para ele"
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time since then the file is invalid - formatted in the same way as in
@@ -165,6 +188,8 @@ msgid ""
 "Release file for %s is expired (invalid since %s). Updates for this "
 "repository will not be applied."
 msgstr ""
+"O arquivo Release para %s expirou (inválido desde %s). Atualizações para "
+"este repositório não serão aplicadas."
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time until the file will be valid - formatted in the same way as in
@@ -175,29 +200,33 @@ msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
+"Arquivo Release para %s não é válido até o momento (inválido por mais %s). "
+"Atualizações para este repositório não serão aplicadas."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
-msgstr ""
+msgstr "Distribuição conflitante: %s (esperava %s, mas obteve %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
-msgstr ""
+msgstr "O repositório '%s' alterou seu valor '%s' de '%s' para '%s'"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
+"O repositório '%s' alterou sua prioridade padrão para %s de %hi para %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
 msgstr ""
+"Mais informações sobre isso podem ser encontradas online nas notas do "
+"Release em: %s"
 
 #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8)
 #: apt-pkg/acquire-item.cc
@@ -206,12 +235,23 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
+"Isso deve ser aceito explicitamente antes que as atualizações para este "
+"repositório possam ser aplicadas. Veja a página man %s para detalhes."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
 #, c-format
 msgid "Failed to fetch %s  %s"
 msgstr "Falhou ao buscar %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Os repositórios devem fornecer um arquivo InRelease assinado, mas nenhum foi "
+"encontrado em %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -220,35 +260,28 @@ msgid ""
 msgstr ""
 "Não foi possível localizar um arquivo para o pacote %s. Isto pode significar "
 "que você precisa consertar manualmente este pacote. (devido a arquitetura "
-"não especificada)."
+"não especificada)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Can't find a source to download version '%s' of '%s'"
-msgstr ""
+msgstr "Não foi possível encontrar uma fonte para baixar a versão '%s' de '%s'"
 
 #. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-msgid "Changelog unavailable for %s=%s"
-msgstr "Conectando em %s (%s)"
-
-#: apt-pkg/acquire-worker.cc
 #, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changelog indisponível para %s=%s"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
-msgstr ""
+msgstr "O método '%s' está desabilitado explicitamente via configuração."
 
 #: apt-pkg/acquire-worker.cc methods/connect.cc
 #, c-format
 msgid "If you meant to use Tor remember to use %s instead of %s."
-msgstr ""
+msgstr "Se você pretendia usar o Tor, lembre-se de usar %s em vez de %s."
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
@@ -256,9 +289,9 @@ msgid "The method driver %s could not be found."
 msgstr "O driver do método %s não pode ser encontrado."
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Is the package %s installed?"
-msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n"
+msgstr "O pacote %s está instalado?"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
@@ -266,31 +299,33 @@ msgid "Method %s did not start correctly"
 msgstr "Método %s não iniciou corretamente"
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
 msgstr ""
-"Por favor, insira o disco nomeado: '%s' na unidade '%s' e pressione enter."
+"Por favor, insira o disco nomeado: '%s' na unidade '%s' e pressione [Enter]."
 
 #: apt-pkg/acquire.cc apt-pkg/cdrom.cc
-#, fuzzy, c-format
+#, c-format
 msgid "List directory %s is missing."
 msgstr "Diretório de listas %s está faltando."
 
 #: apt-pkg/acquire.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Archives directory %s is missing."
 msgstr "Diretório de arquivos %s está faltando."
 
 #: apt-pkg/acquire.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to lock directory %s"
-msgstr "Impossível criar trava no diretório de listas"
+msgstr "Impossível travar o diretório %s"
 
 #: apt-pkg/acquire.cc
 #, c-format
 msgid "No sandbox user '%s' on the system, can not drop privileges"
 msgstr ""
+"Nenhum usuário de isolamento '%s' no sistema, então não é possível descartar "
+"privilégios"
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -298,11 +333,13 @@ msgid ""
 "Download is performed unsandboxed as root as file '%s' couldn't be accessed "
 "by user '%s'."
 msgstr ""
+"O download é executado sem isolamento e como root, pois o arquivo '%s' não "
+"pôde ser acessado pelo usuário '%s'."
 
 #: apt-pkg/acquire.cc apt-pkg/clean.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Clean of %s is not supported"
-msgstr "Tipo de arquivo de índice '%s' não é suportado"
+msgstr "A limpeza de %s não é suportada"
 
 #. Only warn if there are no sources.list.d.
 #. Only warn if there is no sources.list file.
@@ -337,11 +374,13 @@ msgid ""
 "held packages."
 msgstr ""
 "Erro, pkgProblemResolver::Resolve gerou falhas, isto pode ser causado por "
-"pacotes mantidos (hold)."
+"pacotes marcados para não atualizar."
 
 #: apt-pkg/algorithms.cc
 msgid "Unable to correct problems, you have held broken packages."
-msgstr "Impossível corrigir problemas, você manteve (hold) pacotes quebrados."
+msgstr ""
+"Impossível corrigir problemas, você tem pacotes quebrados marcados para não "
+"atualizar."
 
 #: apt-pkg/cachefile.cc
 msgid "The package lists or status file could not be parsed or opened."
@@ -351,7 +390,7 @@ msgstr ""
 
 #: apt-pkg/cachefile.cc
 msgid "You may want to run apt-get update to correct these problems"
-msgstr "Você terá que executar apt-get update para corrigir estes problemas"
+msgstr "Você terá que executar apt-get update para corrigir esses problemas"
 
 #: apt-pkg/cachefile.cc methods/mirror.cc
 msgid "The list of sources could not be read."
@@ -364,19 +403,19 @@ msgid "Regex compilation error - %s"
 msgstr "Erro de compilação de regex - %s"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find task '%s'"
-msgstr "Impossível achar tarefa %s"
+msgstr "Impossível achar tarefa '%s'"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find any package by regex '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível achar qualquer pacote com a regex '%s'"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find any package by glob '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível achar qualquer pacote com o glob '%s'"
 
 #: apt-pkg/cacheset.cc apt-private/private-show.cc
 #, c-format
@@ -387,21 +426,29 @@ msgstr "Impossível encontrar o pacote %s"
 #, c-format
 msgid "Can't select versions from package '%s' as it is purely virtual"
 msgstr ""
+"Não é possível selecionar versões do pacote '%s', pois ele é puramente "
+"virtual"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select newest version from package '%s' as it is purely virtual"
 msgstr ""
+"Não é possível selecionar a versão mais nova do pacote '%s', pois ele é "
+"puramente virtual"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select candidate version from package %s as it has no candidate"
 msgstr ""
+"Não é possível selecionar a versão candidata do pacote %s, pois ele não "
+"possui candidato"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select installed version from package %s as it is not installed"
 msgstr ""
+"Não é possível selecionar a versão instalada do pacote %s, pois ele não está "
+"instalado"
 
 #: apt-pkg/cacheset.cc
 #, c-format
@@ -409,6 +456,8 @@ msgid ""
 "Can't select installed nor candidate version from package '%s' as it has "
 "neither of them"
 msgstr ""
+"Não é possível selecionar a versão instalada ou candidata do pacote '%s', "
+"pois ele não possui nenhuma das duas"
 
 #: apt-pkg/cacheset.cc
 #, c-format
@@ -444,7 +493,7 @@ msgstr "Identificando... "
 #: apt-pkg/cdrom.cc
 #, c-format
 msgid "Stored label: %s\n"
-msgstr "Rótulo armazenado: %s \n"
+msgstr "Rótulo armazenado: %s\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Scanning disc for index files...\n"
@@ -464,6 +513,8 @@ msgid ""
 "Unable to locate any package files, perhaps this is not a Debian Disc or the "
 "wrong architecture?"
 msgstr ""
+"Impossível localizar os arquivos do pacote. Talvez não seja um Disco Debian "
+"ou seja a arquitetura incorreta?"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -530,18 +581,22 @@ msgid "Failed to stat the cdrom"
 msgstr "Impossível executar \"stat\" no cdrom"
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option '%c' [from %s] is not understood in combination with the "
 "other options."
-msgstr "Opção de linha de comando '%c' [de %s] é desconhecida."
+msgstr ""
+"Opção de linha de comando '%c' [de %s] não é compreendida na combinação com "
+"outras opções."
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option %s is not understood in combination with the other "
 "options"
-msgstr "Opção de linha de comando %s não é compreendida"
+msgstr ""
+"Opção de linha de comando %s não é compreendida na combinação com outras "
+"opções"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
@@ -621,20 +676,45 @@ msgid "Syntax error %s:%u: Unsupported directive '%s'"
 msgstr "Erro de sintaxe %s:%u: Não há suporte para a diretiva '%s'"
 
 #: apt-pkg/contrib/configuration.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
 msgstr ""
-"Erro de sintaxe %s:%u: Diretivas podem ser feitas somente no nível mais alto"
+"Erro de sintaxe %s:%u: Diretivas clear requerem uma árvore de opções como "
+"argumento"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Erro de sintaxe %s:%u: Lixo extra no final do arquivo"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Erro:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Aviso:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Nota:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Auditoria:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Depuração:"
+
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot find a configured compressor for '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível encontrar um compactador configurado para '%s'"
 
 #: apt-pkg/contrib/extracttar.cc
 msgid "Corrupted archive"
@@ -645,20 +725,19 @@ msgid "Tar checksum failed, archive corrupted"
 msgstr "Checksum do arquivo tar falhou, arquivo corrompido"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Tipo de cabeçalho TAR %u desconhecido, membro %s"
+msgstr "Tipo de cabeçalho TAR %u desconhecido"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem unlinking the file %s"
-msgstr "Problema removendo o arquivo"
+msgstr "Problema ao remover o arquivo %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Not using locking for read only lock file %s"
-msgstr "Não usando travamento para arquivo de trava somente leitura %s"
+msgstr "Evitando usar travamento para arquivo de trava somente leitura %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -668,50 +747,58 @@ msgstr "Não foi possível abrir arquivo de trava %s"
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Not using locking for nfs mounted lock file %s"
-msgstr "Não usando travamento para arquivo de trava montado via nfs %s"
+msgstr "Evitando usar travamento para arquivo de trava montado via nfs %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "Não foi possível obter trava %s"
+msgstr ""
+"Não foi possível obter a trava %s. Ela está sendo mantida pelo processo %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
 msgstr ""
+"Não foi possível obter a trava %s. Ela está sendo mantida pelo processo %d "
+"(%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s"
-msgstr "Não foi possível obter trava %s"
+msgstr "Não foi possível obter a trava %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Esteja ciente de que remover o arquivo de trava não é uma solução e pode "
+"quebrar seu sistema."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "List of files can't be created as '%s' is not a directory"
-msgstr ""
+msgstr "A lista de arquivos não pode ser criada porque '%s' não é um diretório"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
-msgstr ""
+msgstr "Ignorando '%s' no diretório '%s', pois não é um arquivo comum"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
 msgstr ""
+"Ignorando o arquivo '%s' no diretório '%s', pois não possui extensão de nome "
+"de arquivo"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid ""
 "Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
 msgstr ""
+"Ignorando o arquivo '%s' no diretório '%s', pois possui uma extensão de nome "
+"de arquivo inválida"
 
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
 #: cmdline/apt-dump-solver.cc
@@ -722,40 +809,40 @@ msgstr "Esperado %s mas este não estava lá"
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Sub-process %s received a segmentation fault."
-msgstr "Sub-processo %s recebeu uma falha de segmentação."
+msgstr "Subprocesso %s recebeu uma falha de segmentação."
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Sub-process %s received signal %u."
-msgstr "Sub-processo %s recebeu uma falha de segmentação."
+msgstr "Subprocesso %s recebeu um sinal %u."
 
 #. we forward the statuscode, so don't generate a message on the fd in this case
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
 #, c-format
 msgid "Sub-process %s returned an error code (%u)"
-msgstr "Sub-processo %s retornou um código de erro (%u)"
+msgstr "Subprocesso %s retornou um código de erro (%u)"
 
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
 #, c-format
 msgid "Sub-process %s exited unexpectedly"
-msgstr "Sub-processo %s finalizou inesperadamente"
+msgstr "Subprocesso %s finalizou inesperadamente"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Erro de leitura"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Erro de escrita"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem closing the gzip file %s"
-msgstr "Problema fechando o arquivo"
+msgstr "Problema ao fechar o arquivo gzip %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Unexpected end of file"
-msgstr ""
+msgstr "Fim de arquivo inesperado"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to create subprocess IPC"
@@ -771,38 +858,38 @@ msgid "Could not open file %s"
 msgstr "Não foi possível abrir arquivo %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not open file descriptor %d"
-msgstr "Não foi possível abrir \"pipe\" para %s"
+msgstr "Não foi possível abrir o descritor de arquivo %d"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "read, still have %llu to read but none left"
-msgstr "leitura, ainda restam %lu para serem lidos mas nenhum deixado"
+msgstr "leitura, ainda restam %llu para serem lidos mas nenhum restante"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "write, still have %llu to write but couldn't"
-msgstr "escrita, ainda restam %lu para gravar mas não foi possível"
+msgstr "escrita, ainda restam %llu para gravar mas não foi possível"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem closing the file %s"
-msgstr "Problema fechando o arquivo"
+msgstr "Problema ao fechar o arquivo %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem renaming the file %s to %s"
-msgstr "Problema sincronizando o arquivo"
+msgstr "Problema ao renomear o arquivo %s para %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Problem syncing the file"
-msgstr "Problema sincronizando o arquivo"
+msgstr "Problema ao sincronizar o arquivo"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to mkstemp %s"
-msgstr "Impossível executar \"stat\" em %s"
+msgstr "Impossível executar \"mkstemp\" em %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -814,29 +901,27 @@ msgid "Can't mmap an empty file"
 msgstr "Não foi possível fazer \"mmap\" de um arquivo vazio"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't make mmap of %llu bytes"
-msgstr "Não foi possível fazer \"mmap\" de %lu bytes"
+msgstr "Não foi possível fazer \"mmap\" de %llu bytes"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't duplicate file descriptor %i"
-msgstr "Não foi possível abrir \"pipe\" para %s"
+msgstr "Não foi possível duplicar o descritor de arquivo %i"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy
 msgid "Unable to close mmap"
-msgstr "Impossível abrir %s"
+msgstr "Impossível fechar mmap"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy
 msgid "Unable to synchronize mmap"
-msgstr "Impossível invocar "
+msgstr "Impossível sincronizar mmap"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
-msgstr "Não foi possível fazer \"mmap\" de %lu bytes"
+msgstr "Não foi possível fazer mmap de %lu bytes"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Failed to truncate file"
@@ -848,6 +933,8 @@ msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
+"MMap dinâmico ficou sem espaço. Aumente o tamanho do APT::Cache-Start. Valor "
+"atual: %lu. (man 5 apt.conf)"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
@@ -855,11 +942,15 @@ msgid ""
 "Unable to increase the size of the MMap as the limit of %lu bytes is already "
 "reached."
 msgstr ""
+"Não foi possível aumentar o tamanho do MMap, pois o limite de %lu bytes já "
+"foi atingido."
 
 #: apt-pkg/contrib/mmap.cc
 msgid ""
 "Unable to increase size of the MMap as automatic growing is disabled by user."
 msgstr ""
+"Não foi possível aumentar o tamanho do MMap, pois o crescimento automático "
+"foi desabilitado pelo usuário."
 
 #: apt-pkg/contrib/netrc.cc
 #, c-format
@@ -867,6 +958,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: As credenciais para %s correspondem, mas o protocolo não está "
+"criptografado. Anote com %s:// para usar."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -880,46 +973,46 @@ msgstr "%c%s... Pronto"
 
 #: apt-pkg/contrib/progress.cc
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s... Pronto"
+msgstr "%c%s... %llu/%llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s... Pronto"
+msgstr "%c%s... %llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %u%%"
-msgstr "%c%s... Pronto"
+msgstr "%c%s... %u%%"
 
 #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lid %lih %limin %lis"
-msgstr ""
+msgstr "%lid %lih %limin %lis"
 
 #. TRANSLATOR: h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lih %limin %lis"
-msgstr ""
+msgstr "%lih %limin %lis"
 
 #. TRANSLATOR: min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%limin %lis"
-msgstr ""
+msgstr "%limin %lis"
 
 #. TRANSLATOR: s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lis"
-msgstr ""
+msgstr "%lis"
 
 #: apt-pkg/contrib/strutl.cc
 #, c-format
@@ -941,10 +1034,9 @@ msgid "Unparsable control file"
 msgstr "Arquivo de controle não interpretável"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "Não foi possível obter trava %s"
+msgstr "Não foi possível ler os metadados de %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -952,7 +1044,7 @@ msgstr "Não foi possível obter trava %s"
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
-msgstr ""
+msgstr "O alvo %s deseja adquirir o mesmo arquivo (%s) que %s da fonte %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; filename and linenumber of
@@ -960,22 +1052,22 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s (%s) is configured multiple times in %s and %s"
-msgstr ""
+msgstr "O alvo %s (%s) está configurado várias vezes em %s e %s"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to parse Release file %s"
-msgstr "Impossível analisar arquivo de pacote %s (1)"
+msgstr "Impossível analisar o arquivo Release %s"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "No sections in Release file %s"
-msgstr "Nota, selecionando %s ao invés de %s\n"
+msgstr "Nenhuma seção no arquivo Release %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "No Hash entry in Release file %s"
-msgstr ""
+msgstr "Nenhuma entrada Hash no arquivo Release %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -983,27 +1075,32 @@ msgid ""
 "No Hash entry in Release file %s which is considered strong enough for "
 "security purposes"
 msgstr ""
+"Nenhuma entrada Hash no arquivo Release %s que é considerada forte o "
+"suficiente para fins de segurança"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid '%s' entry in Release file %s"
-msgstr "Linha inválida no arquivo de desvios: %s"
+msgstr "Entrada '%s' inválida no arquivo Release %s"
 
 #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s"
 msgstr ""
+"Valores conflitantes definidos para a opção %s em relação à fonte %s %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid value set for option %s regarding source %s %s (%s)"
-msgstr ""
+msgstr "Valor inválido definido para a opção %s em relação à fonte %s %s (%s)"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
 msgstr ""
+"Valores conflitantes definidos para a opção %s em relação à fonte %s %s: %s !"
+"= %s"
 
 #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
 #, c-format
@@ -1011,21 +1108,22 @@ msgid "Unable to parse package file %s (%d)"
 msgstr "Impossível analisar arquivo de pacote %s (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "Aguardando por cabeçalhos"
+msgstr "Aguardando por trava de cache: %s"
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
 msgid ""
 "Unable to acquire the dpkg frontend lock (%s), is another process using it?"
 msgstr ""
+"Impossível adquirir a trava da interface do dpkg (%s), outro processo está "
+"usando-a?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
-msgstr "Impossível criar trava no diretório de listas"
+msgstr "Impossível adquirir a trava da interface do dpkg (%s), você é root?"
 
 #. TRANSLATORS: the %s contains the recovery command, usually
 #. dpkg --configure -a
@@ -1034,6 +1132,8 @@ msgstr "Impossível criar trava no diretório de listas"
 msgid ""
 "dpkg was interrupted, you must manually run '%s' to correct the problem. "
 msgstr ""
+"dpkg foi interrompido, você deve executar manualmente '%s' para corrigir o "
+"problema. "
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
@@ -1041,14 +1141,22 @@ msgid ""
 "Unable to lock the administration directory (%s), is another process using "
 "it?"
 msgstr ""
+"Impossível travar o diretório de administração (%s), outro processo está "
+"usando-o?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to lock the administration directory (%s), are you root?"
-msgstr "Impossível criar trava no diretório de listas"
+msgstr "Impossível travar o diretório de administração (%s), você é root?"
 
 #: apt-pkg/deb/debsystem.cc
 msgid "Not locked"
+msgstr "Sem trava"
+
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
 msgstr ""
 
 #. we don't care for the difference
@@ -1075,7 +1183,7 @@ msgstr "Preparando para remover completamente %s"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Noting disappearance of %s"
-msgstr ""
+msgstr "Observando o desaparecimento de %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1099,9 +1207,9 @@ msgid "Directory '%s' missing"
 msgstr "Diretório '%s' está faltando"
 
 #: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not open file '%s'"
-msgstr "Não foi possível abrir arquivo %s"
+msgstr "Não foi possível abrir arquivo '%s'"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1119,9 +1227,9 @@ msgid "Removing %s"
 msgstr "Removendo %s"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removing %s"
-msgstr "%s completamente removido"
+msgstr "Removendo completamente %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1129,55 +1237,65 @@ msgid "Completely removed %s"
 msgstr "%s completamente removido"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not write log (%s)"
-msgstr "Impossível escrever para %s"
+msgstr "Impossível escrever log (%s)"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Is /dev/pts mounted?"
-msgstr ""
+msgstr "/dev/pts está montado?"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Operation was interrupted before it could finish"
-msgstr ""
+msgstr "A operação foi interrompida antes que pudesse terminar"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "No apport report written because MaxReports is reached already"
-msgstr ""
+msgstr "Nenhum relatório de apport escrito porque MaxReports já foi alcançado"
 
 #. check if its not a follow up error
 #: apt-pkg/deb/dpkgpm.cc
 msgid "dependency problems - leaving unconfigured"
-msgstr ""
+msgstr "problemas de dependência - deixando desconfigurado"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates its a followup "
 "error from a previous failure."
 msgstr ""
+"Nenhum relatório de apport escrito porque a mensagem de erro indica que é um "
+"erro de acompanhamento de uma falha anterior."
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a disk full "
 "error"
 msgstr ""
+"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro "
+"de disco cheio"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a out of memory "
 "error"
 msgstr ""
+"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro "
+"de memória insuficiente"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates an issue on the "
 "local system"
 msgstr ""
+"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro "
+"no sistema local"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a dpkg I/O error"
 msgstr ""
+"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro "
+"de E/S do dpkg"
 
 #: apt-pkg/depcache.cc
 msgid "Building dependency tree"
@@ -1198,12 +1316,12 @@ msgstr "Lendo informação de estado"
 #: apt-pkg/depcache.cc
 #, c-format
 msgid "Failed to open StateFile %s"
-msgstr "Falha ao abrir Arquivo de Estado (\"StateFile\") %s"
+msgstr "Falha ao abrir Arquivo de Estado (StateFile) %s"
 
 #: apt-pkg/depcache.cc
 #, c-format
 msgid "Failed to write temporary StateFile %s"
-msgstr "Falha ao escrever Arquivo de Estado (\"StateFile\") temporário %s"
+msgstr "Falha ao escrever Arquivo de Estado (StateFile) temporário %s"
 
 #: apt-pkg/dirstream.cc
 #, c-format
@@ -1217,39 +1335,47 @@ msgstr "Falhou ao fechar arquivo %s"
 
 #: apt-pkg/edsp.cc
 msgid "Send scenario to solver"
-msgstr ""
+msgstr "Enviar cenário para o resolvedor"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to solver"
-msgstr ""
+msgstr "Enviar solicitação para o resolvedor"
 
 #: apt-pkg/edsp.cc
 msgid "Prepare for receiving solution"
-msgstr ""
+msgstr "Preparar para receber solução"
 
 #: apt-pkg/edsp.cc
 msgid "External solver failed without a proper error message"
-msgstr ""
+msgstr "Resolvedor externo falhou sem uma mensagem de erro adequada"
+
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando atualização"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Resolvendo dependências"
 
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
-msgstr ""
+msgstr "Executar resolvedor externo"
 
 #: apt-pkg/edsp.cc
 msgid "Execute external planner"
-msgstr ""
+msgstr "Executar planejador externo"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to planner"
-msgstr ""
+msgstr "Enviar solicitação para o planejador"
 
 #: apt-pkg/edsp.cc
 msgid "Send scenario to planner"
-msgstr ""
+msgstr "Enviar cenário para o planejador"
 
 #: apt-pkg/edsp.cc
 msgid "External planner failed without a proper error message"
-msgstr ""
+msgstr "Planejador externo falhou sem uma mensagem de erro adequada"
 
 #: apt-pkg/indexcopy.cc
 #, c-format
@@ -1276,12 +1402,12 @@ msgstr ""
 #: apt-pkg/indexcopy.cc
 #, c-format
 msgid "Can't find authentication record for: %s"
-msgstr ""
+msgstr "Não foi possível encontrar o registro de autenticação para: %s"
 
 #: apt-pkg/indexcopy.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Hash mismatch for: %s"
-msgstr "Hash Sum incorreto"
+msgstr "Incompatibilidade de hash para: %s"
 
 #: apt-pkg/init.cc
 #, c-format
@@ -1290,17 +1416,17 @@ msgstr "Sistema de empacotamento '%s' não é suportado"
 
 #: apt-pkg/init.cc
 msgid "Unable to determine a suitable packaging system type"
-msgstr "Impossível determinar um tipo de sistema de empacotamento aplicável."
+msgstr "Impossível determinar um tipo de sistema de empacotamento aplicável"
 
 #: apt-pkg/install-progress.cc
 #, c-format
 msgid "Progress: [%3li%%]"
-msgstr ""
+msgstr "Progresso: [%3li%%]"
 
 #. send status information that we are about to fork dpkg
 #: apt-pkg/install-progress.cc
 msgid "Running dpkg"
-msgstr ""
+msgstr "Executando dpkg"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1308,11 +1434,13 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
+"Não foi possível realizar a configuração imediata em '%s'. Veja man 5 "
+"apt.conf em APT::Immediate-Configure para detalhes. (%d)"
 
 #: apt-pkg/packagemanager.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not configure '%s'. "
-msgstr "Não foi possível abrir arquivo %s"
+msgstr "Não foi possível configurar '%s'. "
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1344,14 +1472,14 @@ msgid "This APT does not support the versioning system '%s'"
 msgstr "Este APT não suporta o sistema de versões '%s'"
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The package cache was built for different architectures: %s vs %s"
-msgstr "O cache de pacotes foi gerado para uma arquitetura diferente"
+msgstr "O cache de pacotes foi gerado para uma arquitetura diferente: %s vs %s"
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy
 msgid "The package cache file is corrupted, it has the wrong hash"
-msgstr "O arquivo de cache de pacotes está corrompido"
+msgstr ""
+"O arquivo de cache de pacotes está corrompido, ele tem o hash incorreto"
 
 #: apt-pkg/pkgcache.cc
 msgid "Depends"
@@ -1383,7 +1511,7 @@ msgstr "Quebra"
 
 #: apt-pkg/pkgcache.cc
 msgid "Enhances"
-msgstr ""
+msgstr "Melhora"
 
 #: apt-pkg/pkgcache.cc
 msgid "Obsoletes"
@@ -1416,9 +1544,9 @@ msgstr "O cache possui um sistema de versões incompatível"
 #. TRANSLATOR: The first placeholder is a package name,
 #. the other two should be copied verbatim as they include debug info
 #: apt-pkg/pkgcachegen.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (%s%d)"
-msgstr "Um erro ocorreu processando %s (EncontrarPacote)"
+msgstr "Ocorreu um erro ao processar %s (%s%d)"
 
 #: apt-pkg/pkgcachegen.cc
 msgid "Wow, you exceeded the number of package names this APT is capable of."
@@ -1460,11 +1588,14 @@ msgid ""
 "The value '%s' is invalid for APT::Default-Release as such a release is not "
 "available in the sources"
 msgstr ""
+"O valor '%s' é inválido para APT::Default-Release, pois essa versão não está "
+"disponível nas fontes"
 
 #: apt-pkg/policy.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid record in the preferences file %s, no Package header"
-msgstr "Registro inválido no arquivo de preferências, sem cabeçalho Package"
+msgstr ""
+"Registro inválido no arquivo de preferências %s, sem o cabeçalho Package"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1476,11 +1607,15 @@ msgstr "Não foi possível entender o tipo de \"pin\" %s"
 msgid ""
 "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records"
 msgstr ""
+"%s: O 'Pin-Priority: %s' especial só pode ser usado para registros 'Package: "
+"*'"
 
 #: apt-pkg/policy.cc
 #, c-format
 msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
 msgstr ""
+"%s: O valor %s está fora do intervalo de prioridades de 'pin' válidas (%d a "
+"%d)"
 
 #: apt-pkg/policy.cc
 msgid "No priority (or zero) specified for pin"
@@ -1488,9 +1623,9 @@ msgstr "Nenhuma prioridade (ou zero) especificada para \"pin\""
 
 #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed entry %u in %s file %s (%s)"
-msgstr "Override malformado %s linha %lu #1"
+msgstr "Entrada malformada %u no arquivo %s %s (%s)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
@@ -1503,43 +1638,37 @@ msgid "Type '%s' is not known on line %u in source list %s"
 msgstr "Tipo '%s' não é conhecido na linha %u na lista de fontes %s"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed stanza %u in source list %s (type)"
-msgstr "Linha mal formada %u no arquivo de fontes %s (tipo)"
+msgstr "Linha ou grupo de linhas malformada %u no arquivo de fontes %s (tipo)"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on stanza %u in source list %s"
-msgstr "Tipo '%s' não é conhecido na linha %u na lista de fontes %s"
+msgstr ""
+"Tipo '%s' não é conhecido na linha ou grupo de linha %u na lista de fontes %s"
 
 #: apt-pkg/sourcelist.cc apt-private/private-install.cc
 #, c-format
 msgid "Unsupported file %s given on commandline"
-msgstr ""
+msgstr "Arquivo sem suporte %s fornecido na linha de comando"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
-msgstr "Você deve colocar algumas URIs 'source' em seu sources.list"
+msgstr "Você deve colocar algumas URIs 'deb-src' em seu sources.list"
 
 #: apt-pkg/tagfile.cc
 #, c-format
 msgid "Cannot convert %s to integer: out of range"
-msgstr ""
+msgstr "Não foi possível converter %s para inteiro: fora do intervalo"
 
 #: apt-pkg/update.cc
-#, fuzzy
 msgid ""
 "Some index files failed to download. They have been ignored, or old ones "
 "used instead."
 msgstr ""
-"Alguns arquivos de índice falharam para baixar, eles foram ignorados ou os "
-"antigos foram usados no lugar."
-
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando atualização"
+"Falha no download de alguns arquivos de índice. Eles foram ignorados, ou os "
+"antigos usados em seu lugar."
 
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
@@ -1559,14 +1688,14 @@ msgstr "Obter:%lu %s"
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Ign:%lu %s"
-msgstr ""
+msgstr "Ignorar:%lu %s"
 
 #. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
 #. which failed to download and the error is critical (compare "Ign:")
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Err:%lu %s"
-msgstr ""
+msgstr "Erro:%lu %s"
 
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1578,7 +1707,7 @@ msgid " [Working]"
 msgstr " [Trabalhando]"
 
 #: apt-private/acqprogress.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Media change: please insert the disc labeled\n"
 " '%s'\n"
@@ -1586,13 +1715,15 @@ msgid ""
 msgstr ""
 "Troca de mídia: por favor, insira o disco nomeado\n"
 " '%s'\n"
-"na unidade '%s' e pressione enter\n"
+"na unidade '%s' e pressione [Enter]\n"
 
 #: apt-private/acqprogress.cc
 msgid ""
 "Do you want to accept these changes and continue updating from this "
 "repository?"
 msgstr ""
+"Deseja aceitar essas alterações e continuar atualizando a partir deste "
+"repositório?"
 
 #: apt-private/private-cachefile.cc
 msgid "Correcting dependencies..."
@@ -1616,7 +1747,7 @@ msgstr " Pronto"
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid "You might want to run 'apt --fix-broken install' to correct these."
-msgstr "Você pode querer executar 'apt --fix-broken install' para corrigí-los."
+msgstr "Você pode executar 'apt --fix-broken install' para corrigi-los."
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid ""
@@ -1628,22 +1759,22 @@ msgstr ""
 
 #: apt-private/private-cacheset.cc apt-private/private-search.cc
 msgid "Sorting"
-msgstr ""
+msgstr "Ordenando"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for task '%s'\n"
-msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+msgstr "Nota, selecionando '%s' para tarefa '%s'\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for glob '%s'\n"
-msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+msgstr "Nota, selecionando '%s' para glob '%s'\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for regex '%s'\n"
-msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+msgstr "Nota, selecionando '%s' para expressão regular '%s'\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1651,18 +1782,16 @@ msgid "Package %s is a virtual package provided by:\n"
 msgstr "O pacote %s é um pacote virtual fornecido por:\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Installed]"
 msgstr " [Instalado]"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Not candidate version]"
-msgstr "Versões candidatas"
+msgstr " [Versão não candidata]"
 
 #: apt-private/private-cacheset.cc
 msgid "You should explicitly select one to install."
-msgstr "Você deveria selecionar explicitamente um para instalar."
+msgstr "Você deveria selecionar algum explicitamente para instalar."
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1680,39 +1809,41 @@ msgid "However the following packages replace it:"
 msgstr "No entanto, os pacotes a seguir o substituem:"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' has no installation candidate"
-msgstr "O pacote %s não tem candidato para instalação"
+msgstr "O pacote '%s' não tem candidato para instalação"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Virtual packages like '%s' can't be removed\n"
-msgstr ""
+msgstr "Pacotes virtuais como '%s' não podem ser removidos\n"
 
 #. TRANSLATORS: Note, this is not an interactive question
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
-msgstr "O pacote %s não está instalado, então não será removido\n"
+msgstr ""
+"O pacote '%s' não está instalado, então não será removido. Você quis dizer "
+"'%s'?\n"
 
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' is not installed, so not removed\n"
-msgstr "O pacote %s não está instalado, então não será removido\n"
+msgstr "O pacote '%s' não está instalado, então não será removido\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' instead of '%s'\n"
-msgstr "Nota, selecionando %s ao invés de %s\n"
+msgstr "Nota, selecionando '%s' em vez de '%s'\n"
 
 #: apt-private/private-cmndline.cc
 msgid "Most used commands:"
-msgstr ""
+msgstr "Comandos mais usados:"
 
 #: apt-private/private-cmndline.cc
 #, c-format
 msgid "See %s for more information about the available commands."
-msgstr ""
+msgstr "Veja %s para obter mais informações sobre os comandos disponíveis."
 
 #: apt-private/private-cmndline.cc
 msgid ""
@@ -1721,6 +1852,11 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
+"As opções de configuração e sintaxe são detalhadas em apt.conf(5).\n"
+"Encontre informações sobre como configurar fontes em sources.list(5).\n"
+"As escolhas de pacotes e versões podem ser expressas via "
+"apt_preferences(5).\n"
+"Os detalhes de segurança estão disponíveis no apt-secure(8).\n"
 
 #: apt-private/private-cmndline.cc
 msgid "This APT has Super Cow Powers."
@@ -1728,13 +1864,14 @@ msgstr "Este APT tem Poderes de Super Vaca."
 
 #: apt-private/private-cmndline.cc
 msgid "This APT helper has Super Meep Powers."
-msgstr ""
+msgstr "Este ajudante do APT tem Poderes de Super Meep."
 
 #: apt-private/private-cmndline.cc
 msgid ""
 "--force-yes is deprecated, use one of the options starting with --allow "
 "instead."
 msgstr ""
+"--force-yes foi descontinuado, use uma das opções começando com --allow."
 
 #: apt-private/private-depends.cc apt-private/private-download.cc
 #: apt-private/private-show.cc cmdline/apt-mark.cc
@@ -1755,14 +1892,14 @@ msgstr "Alguns pacotes não puderam ser autenticados"
 
 #: apt-private/private-download.cc
 msgid "Install these packages without verification?"
-msgstr "Instalar estes pacotes sem verificação?"
+msgstr "Instalar esses pacotes sem verificação?"
 
 #: apt-private/private-download.cc
-#, fuzzy
 msgid ""
 "There were unauthenticated packages and -y was used without --allow-"
 "unauthenticated"
-msgstr "Há problemas e -y foi usado sem --force-yes"
+msgstr ""
+"Havia pacotes não autenticados e -y foi usado sem --allow-unauthenticated"
 
 #: apt-private/private-download.cc
 #, c-format
@@ -1808,6 +1945,20 @@ msgstr "A informação a seguir pode ajudar a resolver a situação:"
 msgid "Broken packages"
 msgstr "Pacotes quebrados"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"O usr não mesclado não é mais suportado, use usrmerge para converter para um "
+"sistema usr mesclado."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Veja %s para mais detalhes."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1825,22 +1976,24 @@ msgid "Packages need to be removed but remove is disabled."
 msgstr "Pacotes precisam ser removidos mas a remoção está desabilitada."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "Essential packages were removed and -y was used without --allow-remove-"
 "essential."
-msgstr "Há problemas e -y foi usado sem --force-yes"
+msgstr ""
+"Os pacotes essenciais foram removidos e -y foi usado sem --allow-remove-"
+"essential."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
-msgstr "Há problemas e -y foi usado sem --force-yes"
+msgstr "Os pacotes foram revertidos e -y foi usado sem --allow-downgrades."
 
 #: apt-private/private-install.cc
 msgid ""
 "Held packages were changed and -y was used without --allow-change-held-"
 "packages."
 msgstr ""
+"Os pacotes marcados para não atualizar foram alterados e -y foi usado sem --"
+"allow-change-held-packages."
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
@@ -1849,8 +2002,13 @@ msgstr "Erro interno, Ordenação não finalizou"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Que estranho... Os tamanhos não batem, mande e-mail para apt@packages.debian."
-"org"
+"Que estranho... Os tamanhos não batem, mande e-mail para "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Tamanho de download: %sB / %sB\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1859,6 +2017,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "É preciso baixar %sB/%sB de arquivos.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Tamanho de download: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1866,14 +2029,59 @@ msgstr "É preciso baixar %sB/%sB de arquivos.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "É preciso baixar %sB de arquivos.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Depois desta operação, %sB adicionais de espaço em disco serão usados.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Espaço necessário: %sB / %sB disponível\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Mais espaço necessário do que o disponível: %sB > %sB, a instalação pode "
+"falhar"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "em %s:  %sB / %sB disponível\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"Mais espaço necessário em %s do que o disponível: %sB > %sB, a instalação "
+"pode falhar"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Espaço necessário: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Espaço liberado: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1883,13 +2091,23 @@ msgstr "Depois desta operação, %sB de espaço em disco serão liberados.\n"
 
 #: apt-private/private-install.cc
 msgid "Trivial Only specified but this is not a trivial operation."
-msgstr "\"Trivial Only\" especificado mas esta não é uma operação trivial."
+msgstr "\"Trivial Only\" especificado, mas esta não é uma operação trivial."
 
 #: apt-private/private-install.cc
 msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"A remoção de pacotes essenciais ao sistema não é permitida. Isso pode "
+"quebrar o sistema."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Continuar mesmo assim?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Continuar?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -1905,7 +2123,7 @@ msgstr "Alguns arquivos falharam ao baixar"
 
 #: apt-private/private-install.cc apt-private/private-source.cc
 msgid "Download complete and in download only mode"
-msgstr "Baixar completo e no modo somente baixar (\"download only\")"
+msgstr "Baixar completo e no modo somente baixar (download only)"
 
 #: apt-private/private-install.cc
 msgid "--fix-missing and media swapping is not currently supported"
@@ -1927,11 +2145,15 @@ msgid_plural ""
 "The following packages disappeared from your system as\n"
 "all files have been overwritten by other packages:"
 msgstr[0] ""
+"O seguinte pacote desapareceu do seu sistema, pois\n"
+"todos os arquivos foram substituídos por outros pacotes:"
 msgstr[1] ""
+"Os seguintes pacotes desapareceram do seu sistema, pois\n"
+"todos os arquivos foram substituídos por outros pacotes:"
 
 #: apt-private/private-install.cc
 msgid "Note: This is done automatically and on purpose by dpkg."
-msgstr ""
+msgstr "Nota: Isso é feito automaticamente e propositalmente pelo dpkg."
 
 #: apt-private/private-install.cc
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
@@ -1942,7 +2164,7 @@ msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
 msgstr ""
-"Hmm, parece que o AutoRemover destruiu algo o que realmente não deveria\n"
+"Hmm, parece que o AutoRemover destruiu algo e isto realmente não deveria\n"
 "acontecer. Por favor, reporte um bug contra o apt."
 
 #: apt-private/private-install.cc
@@ -1950,42 +2172,32 @@ msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Erro Interno, o AutoRemover quebrou coisas"
 
 #: apt-private/private-install.cc
-#, fuzzy
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Use '%s' para removê-lo."
+msgstr[1] "Use '%s' para removê-los."
+
+#: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
 msgid_plural ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr[0] ""
-"Os seguintes pacotes foram automaticamente instalados e não são mais "
-"requeridos:"
+"O seguinte pacote foi automaticamente instalado e não é mais requerido:"
 msgstr[1] ""
 "Os seguintes pacotes foram automaticamente instalados e não são mais "
 "requeridos:"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%lu package was automatically installed and is no longer required.\n"
 msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
-msgstr[0] ""
-"Os seguintes pacotes foram automaticamente instalados e não são mais "
-"requeridos:"
+msgstr[0] "%lu pacote foi automaticamente instalado e não é mais requerido.\n"
 msgstr[1] ""
-"Os seguintes pacotes foram automaticamente instalados e não são mais "
-"requeridos:"
-
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Use '%s' para removê-los."
-msgstr[1] "Use '%s' para removê-los."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Os pacotes extra a seguir serão instalados:"
+"%lu pacotes foram automaticamente instalados e não são mais requeridos.\n"
 
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
@@ -1995,15 +2207,19 @@ msgstr "Pacotes sugeridos:"
 msgid "Recommended packages:"
 msgstr "Pacotes recomendados:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Os pacotes adicionais a seguir serão instalados:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
 msgstr "Pulando %s, já está instalado e a atualização não está configurada.\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
-msgstr "Pulando %s, já está instalado e a atualização não está configurada.\n"
+msgstr "Pulando %s, já está instalado e apenas atualizações são requeridas.\n"
 
 #: apt-private/private-install.cc
 #, c-format
@@ -2012,9 +2228,9 @@ msgstr "A reinstalação de %s não é possível, não pode ser baixado.\n"
 
 #. TRANSLATORS: First string is package name, second is version
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s is already the newest version (%s).\n"
-msgstr "%s já é a versão mais nova.\n"
+msgstr "%s já é a versão mais nova (%s).\n"
 
 #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
@@ -2022,26 +2238,26 @@ msgid "%s set to manually installed.\n"
 msgstr "%s configurado para instalar manualmente.\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Selected version '%s' (%s) for '%s'\n"
-msgstr "Versão selecionada %s (%s) para %s\n"
+msgstr "Versão selecionada '%s' (%s) para '%s'\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
-msgstr "Versão selecionada %s (%s) para %s\n"
+msgstr "Versão selecionada '%s' (%s) para '%s' por causa de '%s'\n"
 
 #: apt-private/private-list.cc
 msgid "Listing"
-msgstr ""
+msgstr "Listando"
 
 #: apt-private/private-list.cc
 #, c-format
 msgid "There is %i additional version. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional versions. Please use the '-a' switch to see them."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Há %i versão adicional. Por favor, use a opção '-a' para vê-la"
+msgstr[1] "Há %i versões adicionais. Por favor, use a opção '-a' para vê-las."
 
 #. TRANSLATORS: placeholder is a binary name like apt or apt-get
 #: apt-private/private-main.cc
@@ -2052,43 +2268,44 @@ msgid ""
 "      Keep also in mind that locking is deactivated,\n"
 "      so don't depend on the relevance to the real current situation!\n"
 msgstr ""
+"NOTA: Esta é apenas uma simulação!\n"
+"      %s precisa de privilégios de root para execução real.\n"
+"      Lembre-se também de que a trava está desativada e,\n"
+"      portanto, não dependa da relevância para a situação real atual!\n"
 
 #: apt-private/private-output.cc apt-private/private-show.cc
 msgid "unknown"
-msgstr ""
+msgstr "desconhecido"
 
 #: apt-private/private-output.cc
-#, fuzzy, c-format
+#, c-format
 msgid "[installed,upgradable to: %s]"
-msgstr " [Instalado]"
+msgstr "[instalado,atualizável para: %s]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,local]"
-msgstr " [Instalado]"
+msgstr "[instalado,local]"
 
 #: apt-private/private-output.cc
 msgid "[installed,auto-removable]"
-msgstr ""
+msgstr "[instalado,autorremovível]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,automatic]"
-msgstr " [Instalado]"
+msgstr "[instalado,automático]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed]"
-msgstr " [Instalado]"
+msgstr "[instalado]"
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "[upgradable from: %s]"
-msgstr ""
+msgstr "[atualizável de: %s]"
 
 #: apt-private/private-output.cc
 msgid "[residual-config]"
-msgstr ""
+msgstr "[configuração-residual]"
 
 #: apt-private/private-output.cc
 #, c-format
@@ -2124,14 +2341,42 @@ msgstr " ou"
 msgid "The following packages have unmet dependencies:"
 msgstr "Os pacotes a seguir têm dependências desencontradas:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Dependências não satisfeitas:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Os NOVOS pacotes a seguir serão instalados:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Instalando:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Instalando dependências:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "REMOVENDO:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Os pacotes a seguir serão REMOVIDOS:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "As seguintes atualizações foram adiadas devido ao faseamento:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Ainda não atualizando devido ao faseamento:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Não atualizando:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Os pacotes a seguir serão mantidos em suas versões atuais:"
@@ -2140,13 +2385,25 @@ msgstr "Os pacotes a seguir serão mantidos em suas versões atuais:"
 msgid "The following packages will be upgraded:"
 msgstr "Os pacotes a seguir serão atualizados:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Atualizando:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "FAZENDO DOWNGRADE:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Os pacotes a seguir serão REVERTIDOS:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Alterando pacotes retidos:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
-msgstr "Os seguintes pacotes mantidos serão mudados:"
+msgstr "Os seguintes pacotes marcados para não atualizar serão mudados:"
 
 #: apt-private/private-output.cc
 #, c-format
@@ -2159,29 +2416,53 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 "AVISO: Os pacotes essenciais a seguir serão removidos.\n"
-"Isso NÃO deveria ser feito a menos que você saiba exatamente o que você está "
+"Isso NÃO deveria ser feito a menos que você saiba exatamente o que está "
 "fazendo!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Resumo:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu pacotes atualizados, %lu pacotes novos instalados, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Atualizando: %lu, Instalando: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinstalados, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Reinstalando %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu revertidos, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Fazendo downgrade: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu a serem removidos e %lu não atualizados.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Removendo: %lu, Não atualizando: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2209,30 +2490,30 @@ msgid "Y"
 msgstr "S"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
-msgstr ""
+msgstr "N"
 
 #: apt-private/private-search.cc
-#, fuzzy
 msgid "You must give at least one search pattern"
-msgstr "Você deve passar exatamente um padrão"
+msgstr "Você deve fornecer pelo menos um padrão de pesquisa"
 
 #: apt-private/private-search.cc
 msgid "Full Text Search"
-msgstr ""
+msgstr "Pesquisa de texto completo"
 
 #: apt-private/private-show.cc
 #, c-format
 msgid "There is %i additional record. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional records. Please use the '-a' switch to see them."
-msgstr[0] ""
+msgstr[0] "Há %i registro adicional. Por favor, use a opção '-a' para vê-lo"
 msgstr[1] ""
+"Há %i registros adicionais. Por favor, use a opção '-a' para vê-los."
 
 #: apt-private/private-show.cc
 msgid "not a real package (virtual)"
-msgstr ""
+msgstr "não é um pacote real (virtual)"
 
 #: apt-private/private-show.cc
 msgid "Package files:"
@@ -2247,13 +2528,13 @@ msgstr ""
 #. Show any packages have explicit pins
 #: apt-private/private-show.cc
 msgid "Pinned packages:"
-msgstr "Pacotes alfinetados (\"pinned\"):"
+msgstr "Pacotes alfinetados (pinned):"
 
 #. Print the package name and the version we are forcing to
 #: apt-private/private-show.cc
 #, c-format
 msgid "%s -> %s with priority %d\n"
-msgstr ""
+msgstr "%s -> %s com prioridade %d\n"
 
 #: apt-private/private-show.cc
 msgid "  Installed: "
@@ -2274,32 +2555,32 @@ msgstr "  Tabela de versão:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "faseado"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package for architecture '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível encontrar um pacote para a arquitetura '%s'"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with version '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível encontrar um pacote '%s' com versão '%s'"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with release '%s'"
-msgstr "Impossível achar pacote %s"
+msgstr "Impossível encontrar um pacote '%s' com lançamento '%s'"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
-msgstr "Não foi possível executar \"stat\" na lista de pacotes fonte %s"
+msgstr "Escolhendo '%s' como pacote-fonte em vez de '%s'\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Can not find version '%s' of package '%s'"
-msgstr ""
+msgstr "Impossível encontrar a versão '%s' do pacote '%s'"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to fetch source for"
@@ -2308,7 +2589,7 @@ msgstr "Deve-se especificar pelo menos um pacote para que se busque o fonte"
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unable to find a source package for %s"
-msgstr "Impossível encontrar um pacote fonte para %s"
+msgstr "Impossível encontrar um pacote-fonte para %s"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2316,6 +2597,8 @@ msgid ""
 "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
 "%s\n"
 msgstr ""
+"AVISO: O pacote '%s' é mantido no sistema de controle de versão '%s' em:\n"
+"%s\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2324,6 +2607,10 @@ msgid ""
 "%s\n"
 "to retrieve the latest (possibly unreleased) updates to the package.\n"
 msgstr ""
+"Por favor, use:\n"
+"%s\n"
+"para recuperar as atualizações mais recentes (possivelmente não lançadas) do "
+"pacote.\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2335,14 +2622,14 @@ msgstr "Pulando arquivo já baixado '%s'\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
-msgstr "Preciso obter %sB/%sB de arquivos fonte.\n"
+msgstr "Preciso obter %sB/%sB de arquivamentos-fonte.\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-source.cc
 #, c-format
 msgid "Need to get %sB of source archives.\n"
-msgstr "Preciso obter %sB de arquivos fonte.\n"
+msgstr "Preciso obter %sB de arquivamentos-fonte.\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2385,9 +2672,11 @@ msgstr "%s não tem dependências de construção.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
+"Nenhuma informação de arquitetura disponível para %s. Veja apt.conf(5) "
+"APT::Architectures para configuração"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2400,29 +2689,37 @@ msgstr ""
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"Operador '%c' inválido no deslocamento %d, você quis dizer '%c%c' ou '%c='? "
+"- em: %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Note, using directory '%s' to get the build dependencies\n"
 msgstr ""
+"Nota, usando o diretório '%s' para obter as dependências de construção\n"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, using file '%s' to get the build dependencies\n"
-msgstr "Falhou ao processar as dependências de construção"
+msgstr "Nota, usando o arquivo '%s' para obter as dependências de construção\n"
 
 #: apt-private/private-source.cc
 msgid "Failed to process build dependencies"
 msgstr "Falhou ao processar as dependências de construção"
 
 #: apt-private/private-sources.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to parse %s. Edit again? "
-msgstr "Falha ao baixar %s  %s\n"
+msgstr "Falha ao analisar %s. Editar novamente? "
 
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
+msgstr "Seu arquivo '%s' mudou, por favor execute 'apt-get update'.\n"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
 msgstr ""
 
 #: apt-private/private-unmet.cc
@@ -2441,6 +2738,45 @@ msgid ""
 "Usage of %s should be preferred over embedding login information directly in "
 "the %s entry for '%s'"
 msgstr ""
+"O uso de %s deve ser preferido em vez de incorporar informações de login "
+"diretamente na entrada %s para '%s'"
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Faltando Signed-By na entrada %s para '%s'"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Veja a página man apt-secure(8) para detalhes sobre criação de repositório e "
+"configuração de usuário."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
 
 #: apt-private/private-update.cc
 #, c-format
@@ -2448,25 +2784,27 @@ msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
 msgid_plural ""
 "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
 msgstr[0] ""
+"%i pacote pode ser atualizado. Execute 'apt list --upgradable' para vê-lo.\n"
 msgstr[1] ""
+"%i pacotes podem ser atualizados. Execute 'apt list --upgradable' para vê-"
+"los.\n"
 
 #: apt-private/private-update.cc
 msgid "All packages are up to date."
-msgstr ""
+msgstr "Todos os pacotes estão atualizados."
 
 #: cmdline/apt-cache.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s does not take any arguments"
-msgstr "O comando update não leva argumentos"
+msgstr "%s não leva argumentos"
 
 #: cmdline/apt-cache.cc
 msgid "Total package names: "
-msgstr "Total de Nomes de Pacotes: "
+msgstr "Total de nomes de pacotes: "
 
 #: cmdline/apt-cache.cc
-#, fuzzy
 msgid "Total package structures: "
-msgstr "Total de Nomes de Pacotes: "
+msgstr "Total de estruturas de pacotes: "
 
 #: cmdline/apt-cache.cc
 msgid "  Normal packages: "
@@ -2488,6 +2826,12 @@ msgstr "  Pacotes virtuais misturados: "
 msgid "  Missing: "
 msgstr "  Faltando: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Total de versões distintas: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Total de versões distintas: "
@@ -2510,11 +2854,11 @@ msgstr "Total de relações Desc/Arquivo: "
 
 #: cmdline/apt-cache.cc
 msgid "Total Provides mappings: "
-msgstr "Total de mapeamentos \"Provides\": "
+msgstr "Total de mapeamentos Provides: "
 
 #: cmdline/apt-cache.cc
 msgid "Total globbed strings: "
-msgstr "Total de strings \"globbed\": "
+msgstr "Total de strings globbed: "
 
 #: cmdline/apt-cache.cc
 msgid "Total slack space: "
@@ -2527,6 +2871,8 @@ msgstr "Total de espaço contabilizado para: "
 #: cmdline/apt-cache.cc
 msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
 msgstr ""
+"Este comando foi descontinuado. Por favor, use 'apt-mark showauto' em vez "
+"disso."
 
 #: cmdline/apt-cache.cc
 msgid ""
@@ -2540,10 +2886,20 @@ msgid ""
 "too long ago, but in exchange apt-cache works independently of the\n"
 "availability of the configured sources (e.g. offline).\n"
 msgstr ""
+"Uso: apt-cache [opções] comando\n"
+"     apt-cache [opções] show pacote1 [pacote2 ...]\n"
+"\n"
+"o apt-cache consulta e exibe as informações disponíveis sobre os pacotes\n"
+"instalados e instaláveis. Funciona exclusivamente nos dados adquiridos no\n"
+"cache local através do comando 'update' de, por exemplo, apt-get. As\n"
+"informações exibidas podem, portanto, estar desatualizadas se a última\n"
+"atualização foi há muito tempo, mas em troca o apt-cache funciona\n"
+"independentemente da disponibilidade das fontes configuradas (ex., "
+"offline).\n"
 
 #: cmdline/apt-cache.cc
 msgid "Show source records"
-msgstr "Mostra registros fontes"
+msgstr "Mostra registros-fonte"
 
 #: cmdline/apt-cache.cc
 msgid "Search the package list for a regex pattern"
@@ -2570,20 +2926,18 @@ msgid "Show policy settings"
 msgstr "Mostra as configurações de políticas"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy
 msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
 msgstr ""
-"Por favor, forneça um nome para este Disco, algo como 'Debian 2.1r1 Disco 1'"
+"Por favor, forneça um nome para este Disco, algo como 'Debian 5.0.3 Disco 1'"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy
 msgid "Please insert a Disc in the drive and press [Enter]"
-msgstr "Por favor, insira um Disco na unidade e pressione enter"
+msgstr "Por favor, insira um Disco na unidade e pressione [Enter]"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to mount '%s' to '%s'"
-msgstr "Falhou ao renomear %s para %s"
+msgstr "Falhou ao montar '%s' para '%s'"
 
 #: cmdline/apt-cdrom.cc
 msgid ""
@@ -2592,6 +2946,12 @@ msgid ""
 "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
 "mount point."
 msgstr ""
+"Nenhum CD-ROM pôde ser detectado automaticamente ou encontrado usando o "
+"ponto de montagem padrão.\n"
+"Você pode tentar a opção --cdrom para definir o ponto de montagem do CD-"
+"ROM.\n"
+"Consulte 'man apt-cdrom' para obter mais informações sobre a detecção "
+"automática de CD-ROM e o ponto de montagem."
 
 #: cmdline/apt-cdrom.cc
 msgid "Repeat this process for the rest of the CDs in your set."
@@ -2605,13 +2965,18 @@ msgid ""
 "media types as package sources to APT. The mount point and device\n"
 "information is taken from apt.conf(5), udev(7) and fstab(5).\n"
 msgstr ""
+"Uso: apt-cdrom [opções] comando\n"
+"\n"
+"O apt-cdrom é usado para adicionar CDROMs, unidades flash USB e outros\n"
+"tipos de mídia removível como fontes de pacote ao APT. As informações\n"
+"do ponto de montagem e do dispositivo são obtidas de apt.conf(5),\n"
+"udev(7) e fstab(5).\n"
 
 #: cmdline/apt-config.cc
 msgid "Arguments not in pairs"
 msgstr "Argumentos não estão em pares"
 
 #: cmdline/apt-config.cc
-#, fuzzy
 msgid ""
 "Usage: apt-config [options] command\n"
 "\n"
@@ -2620,16 +2985,17 @@ msgid ""
 msgstr ""
 "Uso: apt-config [opções] comando\n"
 "\n"
-"O apt-config é uma ferramenta simples para ler o arquivo de configuração do "
-"APT\n"
+"O apt-config é uma interface para as definições de configuração\n"
+"usadas por todas as ferramentas do APT, principalmente destinado\n"
+"para depuração e criação de scripts shell.\n"
 
 #: cmdline/apt-config.cc
 msgid "get configuration values via shell evaluation"
-msgstr ""
+msgstr "obtém valores de configuração por meio de avaliação do shell"
 
 #: cmdline/apt-config.cc
 msgid "show the active configuration setting"
-msgstr ""
+msgstr "mostra a definição de configurações ativas"
 
 #: cmdline/apt-dump-solver.cc
 msgid ""
@@ -2638,9 +3004,12 @@ msgid ""
 "apt-dump-solver is an interface to store an EDSP scenario in\n"
 "a file and optionally forwards it to another solver.\n"
 msgstr ""
+"Uso: apt-dump-solver\n"
+"\n"
+"apt-dump-solver é uma interface para armazenar um cenário EDSP\n"
+"em um arquivo e, opcionalmente, o encaminha a um resolvedor.\n"
 
 #: cmdline/apt-extracttemplates.cc
-#, fuzzy
 msgid ""
 "Usage: apt-extracttemplates file1 [file2 ...]\n"
 "\n"
@@ -2650,15 +3019,10 @@ msgid ""
 msgstr ""
 "Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
 "\n"
-"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
-"(\"template\") e configuração de pacotes debian.\n"
-"\n"
-"Opções:\n"
-"  -h   Este texto de ajuda\n"
-"  -t   Define o diretório temporário\n"
-"  -c=? Lê o arquivo de configuração especificado.\n"
-"  -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
-"tmp\n"
+"O apt-extracttemplates é usado para extrair arquivos de modelo\n"
+"(templates) e configurações de pacotes debian. É usado\n"
+"principalmente pelo debconf(1) para pedir perguntas de configuração\n"
+"antes da instalação de pacotes.\n"
 
 #: cmdline/apt-extracttemplates.cc
 msgid "Cannot get debconf version. Is debconf installed?"
@@ -2670,15 +3034,17 @@ msgid "Couldn't find package %s"
 msgstr "Impossível achar pacote %s"
 
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s set to automatically installed.\n"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "%s configurado para instalado automaticamente.\n"
 
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
 msgid ""
 "This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
 "instead."
 msgstr ""
+"Este comando foi descontinuado. Por favor, use 'apt-mark auto' e 'apt-mark "
+"manual'."
 
 #: cmdline/apt-get.cc
 msgid "Internal error, problem resolver broke stuff"
@@ -2689,7 +3055,6 @@ msgid "Supported modules:"
 msgstr "Módulos para os quais há suporte:"
 
 #: cmdline/apt-get.cc
-#, fuzzy
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -2704,9 +3069,10 @@ msgstr ""
 "     apt-get [opções] install|remove pacote1 [pacote2 ...]\n"
 "     apt-get [opções] source pacote1 [pacote2 ...]\n"
 "\n"
-"O apt-get é uma interface simples de linha de comando para baixar\n"
-"pacotes e instalá-los. Os comandos usados mais frequentemente são\n"
-"update e install.\n"
+"O apt-get é uma interface de linha de comando para obter\n"
+"pacotes e informações sobre eles de fontes autenticadas e\n"
+"para instalação, atualização e remoção de pacotes junto com\n"
+"suas dependências.\n"
 
 #: cmdline/apt-get.cc
 msgid "Retrieve new lists of packages"
@@ -2721,10 +3087,8 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgstr "Instala novos pacotes (um pacote é libc6 e não libc6.deb)"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Instala novos pacotes (um pacote é libc6 e não libc6.deb)"
+msgstr "Reinstala pacotes (um pacote é libc6 e não libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
@@ -2732,7 +3096,7 @@ msgstr "Remove pacotes"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages and config files"
-msgstr "Remove e expurga (\"purge\") pacotes"
+msgstr "Remove pacotes e arquivos de configuração"
 
 #: cmdline/apt-get.cc
 msgid "Remove automatically all unused packages"
@@ -2748,21 +3112,19 @@ msgstr "Segue as seleções do dselect"
 
 #: cmdline/apt-get.cc
 msgid "Configure build-dependencies for source packages"
-msgstr "Configura as dependências de compilação de pacotes fonte"
+msgstr "Configura as dependências de compilação de pacotes-fonte"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Construindo árvore de dependências"
+msgstr "Satisfaz as strings de dependência"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
-msgstr "Apaga arquivos baixados para instalação"
+msgstr "Apaga arquivamentos baixados para instalação"
 
 #: cmdline/apt-get.cc
 msgid "Erase old downloaded archive files"
-msgstr "Apaga arquivos antigos baixados para instalação"
+msgstr "Apaga arquivamentos antigos baixados para instalação"
 
 #: cmdline/apt-get.cc
 msgid "Verify that there are no broken dependencies"
@@ -2770,33 +3132,32 @@ msgstr "Verifica se não há dependências quebradas"
 
 #: cmdline/apt-get.cc
 msgid "Download source archives"
-msgstr "Baixa arquivos fonte"
+msgstr "Baixa arquivamentos-fonte"
 
 #: cmdline/apt-get.cc
 msgid "Download the binary package into the current directory"
-msgstr ""
+msgstr "Baixa o pacote binário para o diretório atual"
 
 #: cmdline/apt-get.cc
 msgid "Download and display the changelog for the given package"
-msgstr ""
+msgstr "Baixa e exibe o changelog do pacote fornecido"
 
 #: cmdline/apt-helper.cc
 msgid "Need one URL as argument"
-msgstr ""
+msgstr "É necessária uma URL como argumento"
 
 #: cmdline/apt-helper.cc
-#, fuzzy
 msgid "Must specify at least one pair url/filename"
-msgstr "Deve-se especificar pelo menos um pacote para que se busque o fonte"
+msgstr "Deve-se especificar pelo menos um par url/nome de arquivo"
 
 #: cmdline/apt-helper.cc
 msgid "Download Failed"
-msgstr ""
+msgstr "Falha no download"
 
 #: cmdline/apt-helper.cc
 #, c-format
 msgid "GetSrvRec failed for %s"
-msgstr ""
+msgstr "Falha no GetSrvRec para %s"
 
 #: cmdline/apt-helper.cc
 msgid ""
@@ -2807,37 +3168,47 @@ msgid ""
 "apt-helper bundles a variety of commands for shell scripts to use\n"
 "e.g. the same proxy configuration or acquire system as APT would.\n"
 msgstr ""
+"Uso: apt-helper [opções] comando\n"
+"     apt-helper [opções] arquivo-cat arquivo ...\n"
+"     apt-helper [opções] arquivo-download uri caminho-alvo\n"
+"\n"
+"O apt-helper agrupa uma variedade de comandos para que scripts shell\n"
+"usem, por exemplo, a mesma configuração de proxy ou sistema de\n"
+"aquisição que o APT faria.\n"
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
-msgstr ""
+msgstr "baixa o uri fornecido para o caminho-alvo"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
-msgstr ""
+msgstr "consulta um registro SRV (ex.: _http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
-msgstr ""
+msgstr "concatena arquivos, com descompactação automática"
+
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr "arquivo hash"
 
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
-msgstr ""
+msgstr "detecta proxy usando apt.conf"
 
 #: cmdline/apt-helper.cc
 msgid "wait for system to be online"
-msgstr ""
+msgstr "aguarda pelo sistema ficar online"
 
 #: cmdline/apt-helper.cc
 msgid "drop privileges before running given command"
-msgstr ""
+msgstr "descarta privilégios antes de executar o comando fornecido"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "analisa um padrão"
 
 #: cmdline/apt-internal-planner.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-planner\n"
 "\n"
@@ -2845,20 +3216,13 @@ msgid ""
 "installation planner for the APT family like an external one,\n"
 "for debugging or the like.\n"
 msgstr ""
-"Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
-"\n"
-"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
-"(\"template\") e configuração de pacotes debian.\n"
+"Uso: apt-internal-planner\n"
 "\n"
-"Opções:\n"
-"  -h   Este texto de ajuda\n"
-"  -t   Define o diretório temporário\n"
-"  -c=? Lê o arquivo de configuração especificado.\n"
-"  -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
-"tmp\n"
+"O apt-internal-planner é uma interface para usar o atual planejador\n"
+"de instalação interno para a família APT como um externo, para\n"
+"depuração ou motivo similar.\n"
 
 #: cmdline/apt-internal-solver.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-solver\n"
 "\n"
@@ -2866,81 +3230,73 @@ msgid ""
 "resolver for the APT family like an external one, for debugging or\n"
 "the like.\n"
 msgstr ""
-"Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
-"\n"
-"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
-"(\"template\") e configuração de pacotes debian.\n"
+"Uso: apt-internal-solver\n"
 "\n"
-"Opções:\n"
-"  -h   Este texto de ajuda\n"
-"  -t   Define o diretório temporário\n"
-"  -c=? Lê o arquivo de configuração especificado.\n"
-"  -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
-"tmp\n"
+"O apt-internal-solver é uma interface para usar o atual resolvedor\n"
+"interno para a família APT como um externo, para depuração ou motivo\n"
+"similar.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s can not be marked as it is not installed.\n"
-msgstr "mas não está instalado"
+msgstr "%s não pode ser marcado, pois não está instalado.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set to manually installed.\n"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "%s já tinha sido configurado como instalado manualmente.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set to automatically installed.\n"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "%s já tinha sido configurado como instalado automaticamente.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
-msgstr ""
+msgstr "Nenhuma alteração necessária"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "The following NEW packages will be installed:"
 msgid "The following packages will be marked as automatically installed:"
-msgstr "Os NOVOS pacotes a seguir serão instalados:"
+msgstr "Os pacotes a seguir serão marcados como instalados automaticamente:"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set on hold.\n"
-msgstr "%s já é a versão mais nova.\n"
+msgstr "%s já tinha sido configurado para não atualizar.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already not on hold.\n"
-msgstr "%s já é a versão mais nova.\n"
+msgstr "%s já estava como não suspenso.\n"
 
 #: cmdline/apt-mark.cc
 msgid "Executing dpkg failed. Are you root?"
-msgstr ""
+msgstr "Falha na execução do dpkg. Você é root?"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s set on hold.\n"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "%s configurado para não atualizar.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Canceled hold on %s.\n"
-msgstr "Falhou ao abrir %s"
+msgstr "Cancelada a configuração de não atualizar %s.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for purge.\n"
-msgstr ""
+msgstr "%s selecionado para ser expurgado (purge).\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for removal.\n"
-msgstr ""
+msgstr "%s selecionado para remoção.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for installation.\n"
-msgstr ""
+msgstr "%s selecionado para instalação.\n"
 
 #: cmdline/apt-mark.cc
 msgid ""
@@ -2951,43 +3307,45 @@ msgid ""
 "manipulate the dpkg(1) selection states of packages, and to list\n"
 "all packages with or without a certain marking.\n"
 msgstr ""
+"Uso: apt-mark [opções] {auto|manual} pacote1 [pacote2 ...]\n"
+"\n"
+"O apt-mark é uma interface simples de linha de comando para marcar\n"
+"pacotes como instalados manual ou automaticamente. Ele também pode\n"
+"ser usado para manipular os estados de seleção de pacotes do dpkg(1)\n"
+"e para listar todos os pacotes com ou sem uma certa marcação.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark the given packages as automatically installed"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "Marca os pacotes fornecidos como instalados automaticamente"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark the given packages as manually installed"
-msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n"
+msgstr "Marca os pacotes fornecidos como instalados manualmente"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark all dependencies of meta packages as automatically installed."
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr ""
+"Marca todas as dependências de metapacotes como instalados automaticamente."
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
-msgstr ""
+msgstr "Marca um pacote para não atualizar"
 
 #: cmdline/apt-mark.cc
 msgid "Unset a package set as held back"
-msgstr ""
+msgstr "Desmarca um pacote configurado para não atualizar"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Print the list of automatically installed packages"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "Exibe a lista de pacotes instalados automaticamente"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Print the list of manually installed packages"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "Exibe a lista de pacotes instalados manualmente"
 
 #: cmdline/apt-mark.cc
 msgid "Print the list of packages on hold"
-msgstr ""
+msgstr "Exibe a lista de pacotes marcados para não atualizar"
 
 #: cmdline/apt-sortpkgs.cc
 msgid "Unknown package record!"
@@ -3001,6 +3359,12 @@ msgid ""
 "By default it sorts by binary package information, but the -s option\n"
 "can be used to switch to source package ordering instead.\n"
 msgstr ""
+"Uso: apt-sortpkgs [opções] arquivo1 [arquivo2 ...]\n"
+"\n"
+"O apt-sortpkgs é uma ferramenta simples para classificar arquivos de\n"
+"informações de pacotes. Por padrão, ele classifica por informações do\n"
+"pacote binário, mas a opção -s pode ser usada para alternar para a\n"
+"ordenação do pacote-fonte.\n"
 
 #: cmdline/apt.cc
 msgid ""
@@ -3012,77 +3376,77 @@ msgid ""
 "like apt-get and apt-cache, but enables options more suitable for\n"
 "interactive use by default.\n"
 msgstr ""
+"Uso: apt [opções] comando\n"
+"\n"
+"apt é um gerenciador de pacotes de linha de comando e fornece\n"
+"comandos para pesquisar e gerenciar, bem como consultar informações\n"
+"sobre pacotes. Ele fornece a mesma funcionalidade que as ferramentas\n"
+"especializadas do APT, como apt-get e apt-cache, mas por padrão habilita\n"
+"opções mais adequadas para uso interativo.\n"
 
 #. query
 #: cmdline/apt.cc
 msgid "list packages based on package names"
-msgstr ""
+msgstr "lista pacotes com base nos nomes dos pacotes"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "search in package descriptions"
-msgstr "Lendo listas de pacotes"
+msgstr "pesquisa nas descrições dos pacotes"
 
 #: cmdline/apt.cc
 msgid "show package details"
-msgstr ""
+msgstr "mostra detalhes dos pacotes"
 
 #. package stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "install packages"
-msgstr "Pacotes alfinetados (\"pinned\"):"
+msgstr "instala pacotes"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "reinstall packages"
-msgstr "Pacotes alfinetados (\"pinned\"):"
+msgstr "reinstala pacotes"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "remove packages"
-msgstr "Pacotes quebrados"
+msgstr "remove pacotes"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Remove automaticamente todos os pacotes não usados"
+msgstr "remove automaticamente todos os pacotes não usados"
 
 #. system wide stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "update list of available packages"
-msgstr "%s configurado para instalar manualmente.\n"
+msgstr "atualiza a lista de pacotes disponíveis"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by installing/upgrading packages"
-msgstr ""
+msgstr "atualiza o sistema instalando/atualizando pacotes"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by removing/installing/upgrading packages"
-msgstr ""
+msgstr "atualiza o sistema removendo/instalando/atualizando pacotes"
 
 #. misc
 #: cmdline/apt.cc
-#, fuzzy
 msgid "edit the source information file"
-msgstr "Lendo informação de estado"
+msgstr "edita o arquivo de informações de fontes"
+
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Failed to satisfy %s dependency for %s: %s"
 msgid "satisfy dependency strings"
-msgstr "Falhou ao satisfazer a dependência de %s por %s: %s"
+msgstr "satisfaz strings de dependência"
 
 #: dselect/install
 msgid "Bad default setting!"
 msgstr "Configuração padrão ruim!"
 
 #: dselect/install dselect/update
-#, fuzzy
 msgid "Press [Enter] to continue."
-msgstr "Pressione enter para continuar."
+msgstr "Pressione [Enter] para continuar."
 
 #: dselect/install
 msgid "Do you want to erase any previously downloaded .deb files?"
@@ -3092,26 +3456,23 @@ msgstr "Você quer apagar quaisquer arquivos .deb previamente baixados?"
 # matter where sentences start, but it has to fit in just these four lines, and
 # at only 80 characters per line, if possible.
 #: dselect/install
-#, fuzzy
 msgid "Some errors occurred while unpacking. Packages that were installed"
 msgstr ""
-"Alguns erros ocorreram ao desempacotar. Vou configurar os pacotes que foram"
+"Ocorreram alguns erros ao desempacotar. Pacotes que foram instalados serão"
 
 #: dselect/install
-#, fuzzy
 msgid "will be configured. This may result in duplicate errors"
 msgstr ""
-"instalados. Isto pode resultar em erros duplicados ou erros causados por"
+"configurados. Isto pode resultar em erros duplicados ou erros causados por"
 
 #: dselect/install
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
-msgstr ""
-"dependências faltantes. Isto está OK, somente os erros acima desta mensagem"
+msgstr "dependências faltantes. Não tem problema, apenas os erros acima são"
 
 #: dselect/install
 msgid ""
 "above this message are important. Please fix them and run [I]nstall again"
-msgstr "são importantes. Por favor, conserte-os e execute [I]nstalar novamente"
+msgstr "importantes. Por favor, conserte-os e execute [I]nstalar novamente"
 
 #: dselect/update
 msgid "Merging available information"
@@ -3195,8 +3556,8 @@ msgstr ""
 "O apt-ftparchive gera arquivos Package a partir de uma árvore de .debs.\n"
 "O arquivo Package contém o conteúdo de todos os campos controle de\n"
 "cada pacote bem como o hash MD5 e o tamanho do arquivo. Há suporte para\n"
-"um arquivo override para forçar o valor da prioridade (\"Priority\") e a\n"
-"a seção (\"Section\").\n"
+"um arquivo override para forçar o valor da prioridade (Priority) e a\n"
+"a seção (Section).\n"
 "\n"
 "Similarmente, o apt-ftparchive gera arquivos Sources a partir de uma\n"
 "árvore de .dscs. A opção --source-override pode ser usada para\n"
@@ -3213,13 +3574,13 @@ msgstr ""
 "Opções:\n"
 "  -h    Este texto de ajuda\n"
 "  --md5 Controla a geração de MD5\n"
-"  -s=?  Arquivo fonte (\"source\") override\n"
+"  -s=?  Arquivo-fonte (source) override\n"
 "  -q    Quieto\n"
 "  -d=?  Seleciona o banco de dados de caching opcional\n"
-"  --no-delink Habilita o modo de depuração \"delinking\"\n"
-"  --contents  Controla a geração do arquivo de conteúdo\n"
-"  -c=? Lê o arquivo de configuração especificado.\n"
-"  -o=? Define uma opção de configuração arbitrária"
+"  --no-delink  Habilita o modo de depuração \"delinking\"\n"
+"  --contents   Controla a geração do arquivo de conteúdo\n"
+"  -c=?  Lê o arquivo de configuração especificado.\n"
+"  -o=?  Define uma opção de configuração arbitrária"
 
 #: ftparchive/apt-ftparchive.cc
 msgid "No selections matched"
@@ -3241,7 +3602,6 @@ msgid "DB is old, attempting to upgrade %s"
 msgstr "BD é antigo, tentando atualizar %s"
 
 #: ftparchive/cachedb.cc
-#, fuzzy
 msgid ""
 "DB format is invalid. If you upgraded from an older version of apt, please "
 "remove and re-create the database."
@@ -3255,9 +3615,8 @@ msgid "Unable to open DB file %s: %s"
 msgstr "Impossível abrir o arquivo BD %s: %s"
 
 #: ftparchive/cachedb.cc
-#, fuzzy
 msgid "Failed to read .dsc"
-msgstr "Falhou ao executar \"readlink\" %s"
+msgstr "Falhou ao ler .dsc"
 
 #: ftparchive/cachedb.cc
 msgid "Archive has no control record"
@@ -3281,9 +3640,9 @@ msgstr "Algoritmo de compactação desconhecido '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Saída compactada %s precisa de um conjunto de compactação"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
-msgstr "Falhou ao criar pipe IPC para sub-processo"
+msgstr "Falhou ao criar pipe IPC para subprocesso"
 
 #: ftparchive/multicompress.cc
 msgid "Failed to fork"
@@ -3300,7 +3659,7 @@ msgstr "Erro interno, falhou ao criar %s"
 
 #: ftparchive/multicompress.cc
 msgid "IO to subprocess/file failed"
-msgstr "E/S para sub-processo/arquivo falhou"
+msgstr "E/S para subprocesso/arquivo falhou"
 
 #: ftparchive/multicompress.cc
 msgid "Failed to read while computing MD5"
@@ -3319,9 +3678,9 @@ msgstr "Impossível abrir %s"
 #. skip spaces
 #. find end of word
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu (%s)"
-msgstr "Override malformado %s linha %lu #1"
+msgstr "Override malformado %s linha %llu (%s)"
 
 #: ftparchive/override.cc
 #, c-format
@@ -3329,19 +3688,19 @@ msgid "Failed to read the override file %s"
 msgstr "Falha ao ler o arquivo override %s"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #1"
-msgstr "Override malformado %s linha %lu #1"
+msgstr "Override malformado %s linha %llu #1"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #2"
-msgstr "Override malformado %s linha %lu #2"
+msgstr "Override malformado %s linha %llu #2"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #3"
-msgstr "Override malformado %s linha %lu #3"
+msgstr "Override malformado %s linha %llu #3"
 
 #: ftparchive/writer.cc
 #, c-format
@@ -3400,23 +3759,23 @@ msgstr "Repositório não possuía campo pacote"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s não possui entrada override\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s não possui entrada override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  mantenedor de %s é %s, não %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  mantenedor de %.*s é %.*s, não %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s não possui entrada override fonte\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s não possui entrada override fonte\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s também não possui entrada override binária\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s também não possui entrada override binária\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3454,10 +3813,12 @@ msgstr "Dados de cabeçalho ruins"
 msgid "Connection failed"
 msgstr "Conexão falhou"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
+"O arquivo tem um tamanho inesperado (%llu != %llu). Sincronização de espelho "
+"em progresso?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3465,6 +3826,8 @@ msgid ""
 "Automatically disabled %s due to incorrect response from server/proxy. (man "
 "5 apt.conf)"
 msgstr ""
+"%s desabilitado automaticamente devido a uma resposta incorreta do servidor/"
+"proxy. (man 5 apt.conf)"
 
 #: methods/basehttp.cc
 msgid "Internal error"
@@ -3496,7 +3859,7 @@ msgstr "Impossível desmontar o CD-ROM em %s, o mesmo ainda pode estar em uso."
 msgid "Disk not found."
 msgstr "Disco não encontrado."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Arquivo não encontrado"
 
@@ -3504,7 +3867,7 @@ msgstr "Arquivo não encontrado"
 #: methods/connect.cc
 #, c-format
 msgid "Direct connection to %s domains is blocked by default."
-msgstr ""
+msgstr "A conexão direta com os domínios %s está bloqueada por padrão."
 
 #: methods/connect.cc
 #, c-format
@@ -3512,10 +3875,9 @@ msgid "[IP: %s %s]"
 msgstr "[IP: %s %s]"
 
 #: methods/connect.cc
-#, fuzzy, c-format
-#| msgid "Connecting to %s (%s)"
+#, c-format
 msgid "Connected to %s (%s)"
-msgstr "Conectando em %s (%s)"
+msgstr "Conectado em %s (%s)"
 
 #: methods/connect.cc methods/http.cc
 #, c-format
@@ -3532,7 +3894,7 @@ msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Não foi possível iniciar a conexão para %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Falhou"
 
@@ -3546,9 +3908,7 @@ msgstr "Não foi possível conectar em %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Não foi possível conectar em %s:%s (%s), conexão expirou"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Conectando a %s"
@@ -3564,17 +3924,17 @@ msgid "Temporary failure resolving '%s'"
 msgstr "Falha temporária resolvendo '%s'"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "System error resolving '%s:%s'"
-msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)"
+msgstr "Erro de sistema ao resolver '%s:%s'"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
-msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)"
+msgstr "Algo estranho aconteceu ao resolver '%s:%s' (%i - %s)"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to connect to %s:%s:"
 msgstr "Impossível conectar em %s %s:"
 
@@ -3586,144 +3946,15 @@ msgstr "Falhou ao executar \"stat\""
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI inválida, URIs locais não devem iniciar com //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Efetuando login"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Impossível determinar o nome do ponto"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Impossível determinar o nome local"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "O servidor recusou a conexão e disse: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER falhou, servidor disse: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS falhou, servidor disse: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Um servidor proxy foi especificado mas não um script de login, Acquire::ftp::"
-"ProxyLogin está vazio."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Comando de script de login '%s' falhou, servidor disse: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE falhou, servidor disse: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Conexão expirou"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Servidor fechou a conexão"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Uma resposta sobrecarregou o buffer"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Corrupção de protocolo"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Não foi possível criar um socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Não foi possível conectar um socket de dados, conexão expirou"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Não foi possível conectar um socket passivo."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Não foi possível fazer \"bind\" de um socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Não foi possível ouvir no socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Não foi possível determinar o nome do socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Impossível enviar o comando PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Família de endereços %u desconhecida (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT falhou, servidor disse: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Conexão do socket de dados expirou"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Impossível aceitar conexão"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problema criando o hash do arquivo"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Impossível obter arquivo, servidor disse '%s'"
+msgid "untrusted public key algorithm: %s"
+msgstr "algoritmo de chave pública não confiável: %s"
 
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Socket de dados expirou"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Transferência de dados falhou, servidor disse '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Pesquisa"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Impossível invocar "
+msgid "%s will be deprecated in a future release"
+msgstr "%s será descontinuado em uma versão futura"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3731,6 +3962,7 @@ msgstr "Impossível invocar "
 msgid ""
 "Signed file isn't valid, got '%s' (does the network require authentication?)"
 msgstr ""
+"O arquivo assinado não é válido, obteve '%s' (a rede requer autenticação?)"
 
 #: methods/gpgv.cc
 msgid "At least one invalid signature was encountered."
@@ -3744,28 +3976,20 @@ msgstr ""
 "digital da chave?!"
 
 #: methods/gpgv.cc
-#, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
-"Não foi possível executar '%s' para verificar a assinatura (o gnupg está "
+"Não foi possível executar 'gpgv' para verificar a assinatura (o gnupg está "
 "instalado?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "Erro desconhecido executando apt-key"
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
+msgid "Unknown error executing gpgv"
+msgstr "Erro desconhecido executando gpgv"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "Assinatura pela chave %s usa algoritmo fraco (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3799,17 +4023,141 @@ msgstr "Seleção falhou"
 msgid "Connection timed out"
 msgstr "Conexão expirou"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problema criando o hash do arquivo"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Falhou ao definir hora de modificação"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Conexão encerrada prematuramente"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
-msgstr ""
+msgstr "Arquivos vazios não podem ser arquivos válidos"
+
+#, c-format
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "A chave é armazenada no chaveiro legado trusted.gpg (%s). Use Signed-By. "
+#~ "Veja a seção USER CONFIGURATION no apt-secure(8) para detalhes."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "O método '%s' não é suportado e está desabilitado por padrão. Considere "
+#~ "mudar para http(s). Defina Dir::Bin::Methods::%s como \"%s\" para "
+#~ "habilitá-lo novamente."
+
+#~ msgid "Logging in"
+#~ msgstr "Efetuando login"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Impossível determinar o nome do ponto"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Impossível determinar o nome local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "O servidor recusou a conexão e disse: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER falhou, servidor disse: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS falhou, servidor disse: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Um servidor proxy foi especificado mas não um script de login, "
+#~ "Acquire::ftp::ProxyLogin está vazio."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Comando de script de login '%s' falhou, servidor disse: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE falhou, servidor disse: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Conexão expirou"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Servidor fechou a conexão"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Uma resposta sobrecarregou o buffer"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Corrupção de protocolo"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Não foi possível criar um socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Não foi possível conectar um socket de dados, conexão expirou"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Não foi possível conectar um socket passivo."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Não foi possível fazer \"bind\" de um socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Não foi possível ouvir no socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Não foi possível determinar o nome do socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Impossível enviar o comando PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Família de endereços %u desconhecida (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT falhou, servidor disse: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Conexão do socket de dados expirou"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Impossível aceitar conexão"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Impossível obter arquivo, servidor disse '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Socket de dados expirou"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Transferência de dados falhou, servidor disse '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Pesquisa"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Impossível invocar "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Conexão encerrada prematuramente"
 
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Sim, faça o que eu digo!"
@@ -4421,8 +4769,8 @@ msgstr ""
 
 #~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
 #~ msgstr ""
-#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar os ."
-#~ "debs."
+#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar "
+#~ "os .debs."
 
 #~ msgid "Extract "
 #~ msgstr "extra"
@@ -4445,9 +4793,6 @@ msgstr ""
 #~ msgid "Couldn't wait for subprocess"
 #~ msgstr "Não foi possível checar a lista de pacotes fonte %s"
 
-#~ msgid " files "
-#~ msgstr " falhou."
-
 #~ msgid "Done. "
 #~ msgstr "Pronto"
 
diff --git a/po/ro.po b/po/ro.po
index c803da3..dc11703 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,4 +1,5 @@
-# translation of ro.po to Romanian
+# Translation of apt messages to Romanian.
+# Mesajele în limba română pentru pachetul „apt”.
 #
 # Licensing is complex as the msgid come from several files, please see
 # the individual files for licensing information.
@@ -8,88 +9,114 @@
 #
 # Sorin Batariuc <sorin@bonbon.net>, 2004, 2005, 2006.
 # Eddy Petrișor <eddy.petrisor@gmail.com>, 2008.
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2023, 2024.
+#
+# Cronologia traducerii fișierului „apt”:
+# Traducerea inițială, făcută de SB, pentru versiunea apt 0.5.24, noi-2004.
+# Actualizare a traducerii pentru versiunea 0.6.40.1, făcută de SB, aug-2005.
+# Actualizare a traducerii pentru versiunea 0.6.4.2, făcută de SB, ian-2006.
+# Actualizare a traducerii pentru versiunea 0.6.43.2, făcută de SB, mar-2006.
+# Actualizare a traducerii pentru versiunea 0.6.43.3, făcută de SB, iun-2006.
+# Actualizare a traducerii pentru versiunea 0.6.44.2, făcută de SB, sep-2006.
+# Actualizare a traducerii pentru versiunea 1.0.5, făcută de EP, noi-2008.
+# Actualizare a traducerii pentru versiunea 2.7.2, făcută de R-GC, iul-2023.
+# Actualizare a traducerii pentru versiunea 2.9.8, făcută de R-GC, aug-2024.
+# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 1.0.5\n"
+"Project-Id-Version: apt 2.9.8\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2008-11-15 02:21+0200\n"
-"Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-09-02 00:21+0200\n"
+"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
 "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2;\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.4.3\n"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
+"Actualizarea dintr-un astfel de depozit nu poate fi efectuată în siguranță "
+"și, prin urmare, este dezactivată în mod implicit."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Data from such a repository can't be authenticated and is therefore "
 "potentially dangerous to use."
 msgstr ""
+"Datele dintr-un astfel de depozit nu pot fi autentificate și, prin urmare, "
+"utilizarea lor este potențial periculoasă."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
+"Consultați pagina de manual apt-secure(8) pentru detalii privind crearea "
+"depozitului și configurarea utilizatorilor."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is no longer signed."
-msgstr "Directorul %s este redirectat"
+msgstr "Depozitul „%s” nu mai este semnat."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' no longer has a Release file."
-msgstr "Directorul %s este redirectat"
+msgstr "Depozitul „%s” nu mai are un fișier „Release” (versiunea lansată)."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
+"În mod normal, acest lucru nu este permis, dar opțiunea "
+"Acquire::AllowDowngradeToInsecureRepositories a fost dată pentru a-l "
+"suprascrie."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is not signed."
-msgstr "Directorul %s este redirectat"
+msgstr "Depozitul „%s” nu este semnat."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' does not have a Release file."
-msgstr "Directorul %s este redirectat"
+msgstr "Depozitul „%s” nu are un fișier „Release” (versiunea lansată)."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' provides only weak security information."
-msgstr "Directorul %s este redirectat"
+msgstr "Depozitul „%s” oferă doar informații de securitate slabe."
 
 #: apt-pkg/acquire-item.cc ftparchive/writer.cc
 #, c-format
 msgid "Failed to readlink %s"
-msgstr "Eșec la „readlink” pentru %s"
+msgstr "Nu s-a putut citi legătura %s"
 
 #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc
 #, c-format
 msgid "Failed to stat %s"
-msgstr "Eșec la „stat” pentru %s"
+msgstr "Nu s-a putut obține starea lui %s"
 
 #: apt-pkg/acquire-item.cc
 msgid "Hash Sum mismatch"
-msgstr "Nepotrivire la suma de căutare"
+msgstr "Nepotrivire la suma de control"
 
 #: apt-pkg/acquire-item.cc
 msgid "Insufficient information available to perform this download securely"
 msgstr ""
+"Nu există suficiente informații disponibile pentru a efectua această "
+"descărcare în siguranță"
 
 #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -98,17 +125,15 @@ msgstr "redenumire eșuată, %s (%s -> %s)."
 
 #: apt-pkg/acquire-item.cc
 msgid "Size mismatch"
-msgstr "Nepotrivire dimensiune"
+msgstr "Nepotrivire a dimensiunii"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Invalid file format"
-msgstr "Operațiune invalidă %s"
+msgstr "Format de fișier nevalid"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy
 msgid "Signature error"
-msgstr "Eroare de scriere"
+msgstr "Eroare de semnătură"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: apt-pkg/acquire-item.cc methods/gpgv.cc
@@ -117,6 +142,8 @@ msgid ""
 "Clearsigned file isn't valid, got '%s' (does the network require "
 "authentication?)"
 msgstr ""
+"Fișierul semnat în clar nu este valid, s-a primit „%s” (rețeaua necesită "
+"autentificare?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -124,12 +151,15 @@ msgid ""
 "An error occurred during the signature verification. The repository is not "
 "updated and the previous index files will be used. GPG error: %s: %s"
 msgstr ""
+"S-a produs o eroare în timpul verificării semnăturii. Depozitul nu este "
+"actualizat și vor fi utilizate fișierele de index anterioare. Eroare GPG: "
+"%s: %s"
 
 #. Invalid signature file, reject (LP: #346386) (Closes: #627642)
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "GPG error: %s: %s"
-msgstr ""
+msgstr "Eroare GPG: %s: %s"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -137,6 +167,9 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
+"Se omite achiziționarea fișierului configurat „%s” deoarece depozitul „%s” "
+"nu are componenta „%s” (componenta este scrisă greșit în fișierul „/etc/apt/"
+"sources.list”?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -144,6 +177,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
+"Se omite achiziționarea fișierului configurat „%s” deoarece depozitul „%s” "
+"nu acceptă arhitectura „%s”."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -151,6 +186,9 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
+"Se omite achiziționarea fișierului configurat „%s” deoarece depozitul „%s” "
+"nu pare să îl furnizeze (intrarea din fișierul „/etc/apt/sources.list” este "
+"greșit scrisă?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -158,6 +196,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' provides only "
 "weak security information for it"
 msgstr ""
+"Se omite achiziționarea fișierului configurat „%s” deoarece depozitul „%s” "
+"oferă doar informații slabe de securitate pentru acesta"
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time since then the file is invalid - formatted in the same way as in
@@ -168,6 +208,8 @@ msgid ""
 "Release file for %s is expired (invalid since %s). Updates for this "
 "repository will not be applied."
 msgstr ""
+"Fișierul de lansare „Release” pentru %s a expirat ( nu mai este valid din "
+"%s). Actualizările pentru acest depozit nu vor fi aplicate."
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time until the file will be valid - formatted in the same way as in
@@ -178,29 +220,34 @@ msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
+"Fișierul de lansare „Release” pentru %s nu este încă valid (nevalid pentru "
+"încă %s). Actualizările pentru acest depozit nu vor fi aplicate."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
-msgstr ""
+msgstr "Distribuție în conflict: %s (se aștepta %s, dar s-a obținut %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
-msgstr ""
+msgstr "Depozitul „%s” și-a schimbat valoarea „%s” din „%s” în „%s”"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
+"Depozitul „%s” și-a schimbat prioritatea implicită pentru %s de la %hi la "
+"%hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
 msgstr ""
+"Mai multe informații despre acest lucru pot fi găsite în notele de lansare "
+"„Release” la: %s"
 
 #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8)
 #: apt-pkg/acquire-item.cc
@@ -209,90 +256,100 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
+"Acest lucru trebuie acceptat în mod explicit înainte ca actualizările pentru "
+"acest depozit să poată fi aplicate. Pentru detalii, consultați pagina de "
+"manual %s."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
 #, c-format
 msgid "Failed to fetch %s  %s"
 msgstr "Eșec la aducerea lui %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Depozitele ar trebui să furnizeze un fișier InRelease cu semnătură clară, "
+"dar nu s-a găsit niciunul la %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "to manually fix this package. (due to missing arch)"
 msgstr ""
-"N-am putut localiza un fișier pentru pachetul %s. Aceasta ar putea însemna "
-"că aveți nevoie să reparați manual acest pachet (din pricina unui arch lipsă)"
+"Nu s-a putut localiza un fișier pentru pachetul %s. Acest lucru ar putea "
+"însemna că trebuie să reparați manual acest pachet. (din cauza lipsei "
+"arhitecturii)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Can't find a source to download version '%s' of '%s'"
-msgstr ""
+msgstr "Nu se poate găsi o sursă pentru a descărca versiunea „%s” a „%s”"
 
 #. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-msgid "Changelog unavailable for %s=%s"
-msgstr "Conectare la %s (%s)"
-
-#: apt-pkg/acquire-worker.cc
 #, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
+msgid "Changelog unavailable for %s=%s"
+msgstr "Jurnalul de modificări nu este disponibil pentru %s=%s"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
 msgstr ""
+"Metoda „%s” este dezactivată în mod explicit în parametrii de configurare."
 
 #: apt-pkg/acquire-worker.cc methods/connect.cc
 #, c-format
 msgid "If you meant to use Tor remember to use %s instead of %s."
 msgstr ""
+"Dacă intenționați să utilizați Tor, nu uitați să folosiți %s în loc de %s."
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method driver %s could not be found."
-msgstr "Metoda driver %s nu poate fi găsită."
+msgstr "Controlorul pentru metoda %s nu a putut fi găsit."
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Is the package %s installed?"
-msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+msgstr "Este instalat pachetul %s?"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "Method %s did not start correctly"
-msgstr "Metoda %s nu s-a lansat corect"
+msgstr "Metoda %s nu s-a inițiat corect"
 
 #: apt-pkg/acquire-worker.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
 msgstr ""
-"Vă rog introduceți discul numit: '%s' în unitatea '%s' și apăsați Enter."
+"Introduceți discul numit: «%s» în unitatea „%s” și apăsați tasta [ Enter ]."
 
 #: apt-pkg/acquire.cc apt-pkg/cdrom.cc
-#, fuzzy, c-format
+#, c-format
 msgid "List directory %s is missing."
-msgstr "Directorul de liste %s lipsește."
+msgstr "Lipsește directorul de liste %s."
 
 #: apt-pkg/acquire.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Archives directory %s is missing."
-msgstr "Directorul de arhive %s lipsește."
+msgstr "Lipsește directorul de arhive %s."
 
 #: apt-pkg/acquire.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to lock directory %s"
-msgstr "Nu pot încuia directorul cu lista"
+msgstr "Nu se poate bloca directorul %s"
 
 #: apt-pkg/acquire.cc
 #, c-format
 msgid "No sandbox user '%s' on the system, can not drop privileges"
 msgstr ""
+"Nu există niciun utilizator sandbox „%s” în sistem, nu se poate renunța la "
+"privilegii"
 
 #: apt-pkg/acquire.cc
 #, c-format
@@ -300,11 +357,13 @@ msgid ""
 "Download is performed unsandboxed as root as file '%s' couldn't be accessed "
 "by user '%s'."
 msgstr ""
+"Descărcarea este efectuată în afara cutiei de nisip (celulei de probă) ca "
+"root, deoarece fișierul „%s” nu a putut fi accesat de utilizatorul „%s”."
 
 #: apt-pkg/acquire.cc apt-pkg/clean.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Clean of %s is not supported"
-msgstr "Tipul de fișier index '%s' nu este suportat"
+msgstr "Curățarea lui %s nu este acceptată"
 
 #. Only warn if there are no sources.list.d.
 #. Only warn if there is no sources.list file.
@@ -330,7 +389,8 @@ msgstr "Se descarcă fișierul %li din %li"
 msgid ""
 "The package %s needs to be reinstalled, but I can't find an archive for it."
 msgstr ""
-"Pachetul %s are nevoie să fie reinstalat, dar nu pot găsi o arhivă pentru el."
+"Pachetul %s trebuie să fie reinstalat, dar nu se poate găsi o arhivă pentru "
+"acesta."
 
 #: apt-pkg/algorithms.cc
 msgid ""
@@ -342,7 +402,7 @@ msgstr ""
 
 #: apt-pkg/algorithms.cc
 msgid "Unable to correct problems, you have held broken packages."
-msgstr "Nu pot corecta problema, ați ținut pachete deteriorate."
+msgstr "Nu se poate corecta problema, ați ținut pachete deteriorate."
 
 #: apt-pkg/cachefile.cc
 msgid "The package lists or status file could not be parsed or opened."
@@ -353,7 +413,8 @@ msgstr ""
 #: apt-pkg/cachefile.cc
 msgid "You may want to run apt-get update to correct these problems"
 msgstr ""
-"Ați putea vrea să porniți 'apt-get update' pentru a corecta aceste probleme."
+"Poate doriți să rulați comanda «apt-get update» pentru a corecta aceste "
+"probleme"
 
 #: apt-pkg/cachefile.cc methods/mirror.cc
 msgid "The list of sources could not be read."
@@ -366,19 +427,21 @@ msgid "Regex compilation error - %s"
 msgstr "Eroare de compilare expresie regulată - %s"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find task '%s'"
-msgstr "Nu s-a putut găsi sarcina %s"
+msgstr "Nu s-a putut găsi sarcina „%s”"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find any package by regex '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu s-a putut găsi niciun pachet cu ajutorul expresiei regulate „%s”"
 
 #: apt-pkg/cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find any package by glob '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr ""
+"Nu s-a putut găsi niciun pachet cu ajutorul expresiei regulate ce folosește "
+"caractere «jocker» „%s”"
 
 #: apt-pkg/cacheset.cc apt-private/private-show.cc
 #, c-format
@@ -389,21 +452,29 @@ msgstr "Nu s-a putut localiza pachetul %s"
 #, c-format
 msgid "Can't select versions from package '%s' as it is purely virtual"
 msgstr ""
+"Nu se pot selecta versiuni din pachetul „%s”, deoarece acesta este pur "
+"virtual"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select newest version from package '%s' as it is purely virtual"
 msgstr ""
+"Nu se poate selecta cea mai nouă versiune din pachetul „%s” deoarece acesta "
+"este pur virtual"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select candidate version from package %s as it has no candidate"
 msgstr ""
+"Nu se poate selecta versiunea candidată din pachetul %s deoarece acesta nu "
+"are o versiune candidată"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Can't select installed version from package %s as it is not installed"
 msgstr ""
+"Nu se poate selecta versiunea instalată din pachetul %s deoarece nu este "
+"instalat"
 
 #: apt-pkg/cacheset.cc
 #, c-format
@@ -411,16 +482,18 @@ msgid ""
 "Can't select installed nor candidate version from package '%s' as it has "
 "neither of them"
 msgstr ""
+"Nu se poate selecta nici versiunea instalată, nici versiunea candidată din "
+"pachetul '%s', deoarece nu are niciuna dintre ele"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Release '%s' for '%s' was not found"
-msgstr "Release '%s' pentru '%s' n-a fost găsită"
+msgstr "Versiunea „%s” pentru „%s” nu a fost găsită"
 
 #: apt-pkg/cacheset.cc
 #, c-format
 msgid "Version '%s' for '%s' was not found"
-msgstr "Versiunea '%s' pentru '%s' n-a fost găsită"
+msgstr "Versiunea distribuției „%s” pentru „%s” nu a fost găsită"
 
 #: apt-pkg/cdrom.cc
 msgid "Unmounting CD-ROM...\n"
@@ -429,19 +502,19 @@ msgstr "Se demontează CD-ul...\n"
 #: apt-pkg/cdrom.cc
 #, c-format
 msgid "Using CD-ROM mount point %s\n"
-msgstr "Utilizare punct de montare CD-ROM %s\n"
+msgstr "Se utilizează punctul de montare „%s” pentru CD-ROM\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Waiting for disc...\n"
-msgstr "Aștept discul...\n"
+msgstr "Se așteaptă discul...\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Mounting CD-ROM...\n"
-msgstr "Montez CD-ROM...\n"
+msgstr "Se montează CD-ROM-ul...\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Identifying... "
-msgstr "Identificare... "
+msgstr "Se identifică... "
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -450,9 +523,15 @@ msgstr "Etichetă memorată: %s \n"
 
 #: apt-pkg/cdrom.cc
 msgid "Scanning disc for index files...\n"
-msgstr "Scanez discul de fișierele index...\n"
+msgstr "Se scanează discul pentru fișierele index...\n"
 
 # DEVELOPERS: please consider using somehow plural forms
+# *************
+# R-GC, scrie:
+# trebuie văzut în practică acest mesaj,
+# pentru a vedea dacă are nevoie de
+# adăugarea „particulei” «de», adică:
+# „%zu «de» indexuri de pachete”, șamd
 #: apt-pkg/cdrom.cc
 #, c-format
 msgid ""
@@ -467,6 +546,8 @@ msgid ""
 "Unable to locate any package files, perhaps this is not a Debian Disc or the "
 "wrong architecture?"
 msgstr ""
+"Nu se poate localiza niciun fișier de pachete, poate că nu este un disc "
+"Debian sau arhitectura este greșită?"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -475,7 +556,7 @@ msgstr "A fost găsită eticheta „%s”\n"
 
 #: apt-pkg/cdrom.cc
 msgid "That is not a valid name, try again.\n"
-msgstr "Acesta nu este un nume valid, mai încercați.\n"
+msgstr "Acesta nu este un nume valid, încercați din nou.\n"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -484,28 +565,28 @@ msgid ""
 "'%s'\n"
 msgstr ""
 "Acest disc este numit: \n"
-"'%s'\n"
+"„%s”\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Copying package lists..."
-msgstr "Copiez listele de pachete.."
+msgstr "Se copiază listele de pachete.."
 
 #: apt-pkg/cdrom.cc
 msgid "Writing new source list\n"
-msgstr "Scriere noua listă sursă\n"
+msgstr "Se scrie noua listă de surse\n"
 
 #: apt-pkg/cdrom.cc
 msgid "Source list entries for this disc are:\n"
-msgstr "Intrările listei surselor pentru acest disc sunt:\n"
+msgstr "Intrările din lista de surse pentru acest disc sunt:\n"
 
 #: apt-pkg/clean.cc
 #, c-format
 msgid "Unable to stat %s."
-msgstr "Nu pot determina starea %s."
+msgstr "Nu se poate determina starea %s."
 
 #: apt-pkg/contrib/arfile.cc
 msgid "Invalid archive signature"
-msgstr "Semnătură de arhivă necorespunzătoare"
+msgstr "Semnătura de arhivă nu este validă"
 
 #: apt-pkg/contrib/arfile.cc
 msgid "Error reading archive member header"
@@ -526,71 +607,77 @@ msgstr "Eșec la citirea antetelor arhivei"
 #: apt-pkg/contrib/cdromutl.cc
 #, c-format
 msgid "Unable to stat the mount point %s"
-msgstr "Nu pot determina starea punctului de montare %s"
+msgstr "Nu se poate determina starea punctului de montare %s"
 
 #: apt-pkg/contrib/cdromutl.cc
 msgid "Failed to stat the cdrom"
-msgstr "Eșec la „stat” pentru CD"
+msgstr "Eșec la la obținerea stării cdrom-ului"
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option '%c' [from %s] is not understood in combination with the "
 "other options."
-msgstr "Opțiunea linie de comandă '%c' [din %s] este necunoscută."
+msgstr ""
+"Opțiunea din linia de comandă „%c” [din %s] nu este înțeleasă în combinație "
+"cu celelalte opțiuni."
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option %s is not understood in combination with the other "
 "options"
-msgstr "Opțiunea linie de comandă %s nu este înțeleasă"
+msgstr ""
+"Opțiunea din linia de comandă %s nu este înțeleasă în combinație cu "
+"celelalte opțiuni"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Command line option %s is not boolean"
-msgstr "Opțiunea linie de comandă %s nu este booleană"
+msgstr "Opțiunea %s din linia de comandă nu este booleană"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Option %s requires an argument."
-msgstr "Opțiunea %s necesită un argument"
+msgstr "Opțiunea %s necesită un argument."
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Option %s: Configuration item specification must have an =<val>."
 msgstr ""
-"Opțiunea %s: Specificația configurării articolului trebuie să aibă o =<val>."
+"Opțiunea %s: Specificația elementului de configurare trebuie să aibă o "
+"=<val>."
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Option %s requires an integer argument, not '%s'"
-msgstr "Opțiunea %s necesită un argument integru, nu '%s'"
+msgstr "Opțiunea %s necesită ca argument un număr întreg, nu „%s”"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Option '%s' is too long"
-msgstr "Opțiunea '%s' este prea lungă"
+msgstr "Opțiunea „%s” este prea lungă"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Sense %s is not understood, try true or false."
-msgstr "Sensul %s nu este înțeles, încercați adevărat (true) sau fals (false)."
+msgstr ""
+"Sensul %s nu este înțeles, încercați „true” (adevărat) sau „false” (fals)."
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
 msgid "Invalid operation %s"
-msgstr "Operațiune invalidă %s"
+msgstr "Operație nevalidă %s"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Unrecognized type abbreviation: '%c'"
-msgstr "Abreviere de tip nerecunoscut: „%c”"
+msgstr "Tip de abreviere nerecunoscut: „%c”"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Block starts with no name."
-msgstr "Eroare de sintaxă %s:%u: Blocul începe fără nume"
+msgstr "Eroare de sintaxă %s:%u: blocul începe fără nume."
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
@@ -600,13 +687,13 @@ msgstr "Eroare de sintaxă %s:%u: etichetă greșită"
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Extra junk after value"
-msgstr "Eroare de sintaxă %s:%u: mizerii suplimentare după valoare"
+msgstr "Eroare de sintaxă %s:%u: deșeuri suplimentare după valoare"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Directives can only be done at the top level"
 msgstr ""
-"Eroare de sintaxă %s:%u: Directivele pot fi date doar la nivelul superior"
+"Eroare de sintaxă %s:%u: directivele pot fi date doar la nivelul superior"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
@@ -616,28 +703,53 @@ msgstr "Eroare de sintaxă %s:%u: prea multe imbricări incluse"
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Included from here"
-msgstr "Eroare de sintaxă %s:%u: incluse de aici"
+msgstr "Eroare de sintaxă %s:%u: inclus începând de aici"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Unsupported directive '%s'"
-msgstr "Eroare de sintaxă %s:%u: directivă nesuportată '%s'"
+msgstr "Eroare de sintaxă %s:%u: directivă neacceptată „%s”"
 
 #: apt-pkg/contrib/configuration.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
 msgstr ""
-"Eroare de sintaxă %s:%u: Directivele pot fi date doar la nivelul superior"
+"Eroare de sintaxă %s:%u: directiva „clear” necesită un arbore de opțiuni ca "
+"argument"
 
 #: apt-pkg/contrib/configuration.cc
 #, c-format
 msgid "Syntax error %s:%u: Extra junk at end of file"
-msgstr "Eroare de sintaxă %s:%u: mizerii suplimentare la sfârșitul fișierului"
+msgstr "Eroare de sintaxă %s:%u: deșeuri suplimentare la sfârșitul fișierului"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Eroare:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Avertisment:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Aviz:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Audit:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Depanare:"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot find a configured compressor for '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu se poate găsi un compresor configurat pentru „%s”"
 
 #: apt-pkg/contrib/extracttar.cc
 msgid "Corrupted archive"
@@ -646,82 +758,88 @@ msgstr "Arhivă deteriorată"
 #: apt-pkg/contrib/extracttar.cc
 msgid "Tar checksum failed, archive corrupted"
 msgstr ""
-"Suma de control a arhivei tar nu s-a verificat, arhiva este deteriorată"
+"Verificarea sumei de control a arhivei tar a eșuat, arhiva este coruptă"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Tip antet TAR %u necunoscut, membrul %s"
+msgstr "Tip de antet TAR necunoscut %u"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem unlinking the file %s"
-msgstr "Problemă la dezlegarea fișierului"
+msgstr "Problemă la eliminarea legăturii fișierului %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Not using locking for read only lock file %s"
-msgstr "Nu s-a folosit închiderea pentru fișierul disponibil doar-citire %s"
+msgstr ""
+"Nu se utilizează blocarea pentru fișierul de blocare numai-pentru-citire %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not open lock file %s"
-msgstr "Nu pot deschide fișierul blocat %s"
+msgstr "Nu s-a putut deschide fișierul de blocare %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Not using locking for nfs mounted lock file %s"
-msgstr "Nu este folosit blocajul pentru fișierul montat nfs %s"
+msgstr "Nu se utilizează blocarea pentru fișierul de blocare montat pe nfs %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "Nu pot determina blocajul %s"
+msgstr "Nu s-a putut obține blocarea %s. Aceasta este deținută de procesul %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
 msgstr ""
+"Nu s-a putut obține blocarea %s. Aceasta este deținută de procesul %d (%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s"
-msgstr "Nu pot determina blocajul %s"
+msgstr "Nu s-a putut obține blocarea %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Rețineți că eliminarea fișierului de blocare nu este o soluție și vă poate "
+"strica sistemul."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "List of files can't be created as '%s' is not a directory"
-msgstr ""
+msgstr "Lista de fișiere nu poate fi creată deoarece „%s” nu este un director"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
-msgstr ""
+msgstr "Se ignoră „%s” din directorul „%s” deoarece nu este un fișier obișnuit"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
 msgstr ""
+"Se ignoră fișierul „%s” din directorul „%s”, deoarece nu are extensie de "
+"nume de fișier"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid ""
 "Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
 msgstr ""
+"Se ignoră fișierul „%s” din directorul „%s”, deoarece are o extensie de nume "
+"de fișier nevalidă"
 
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
 #: cmdline/apt-dump-solver.cc
 #, c-format
 msgid "Waited for %s but it wasn't there"
-msgstr "Așteptat %s, dar n-a fost acolo"
+msgstr "Se aștepta %s, dar nu era acolo"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -729,45 +847,45 @@ msgid "Sub-process %s received a segmentation fault."
 msgstr "Subprocesul %s a primit o eroare de segmentare."
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Sub-process %s received signal %u."
-msgstr "Subprocesul %s a primit o eroare de segmentare."
+msgstr "Subprocesul %s a primit semnalul %u."
 
 #. we forward the statuscode, so don't generate a message on the fd in this case
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
 #, c-format
 msgid "Sub-process %s returned an error code (%u)"
-msgstr "Subprocesul %s a întors un cod de eroare (%u)"
+msgstr "Subprocesul %s a returnat un cod de eroare (%u)"
 
 #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
 #, c-format
 msgid "Sub-process %s exited unexpectedly"
-msgstr "Subprocesul %s s-a terminat brusc"
+msgstr "Subprocesul %s a ieșit în mod neașteptat"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Eroare de citire"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Eroare de scriere"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem closing the gzip file %s"
-msgstr "Problemă la închiderea fișierului"
+msgstr "Problemă la închiderea fișierului gzip %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Unexpected end of file"
-msgstr ""
+msgstr "Sfârșit neașteptat al fișierului"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to create subprocess IPC"
-msgstr "Eșec la crearea IPC-ului pentru subproces"
+msgstr "Nu s-a putut crea subprocesul IPC"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to exec compressor "
-msgstr "Eșec la executarea compresorului"
+msgstr "Eșec la executarea compresorului "
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -775,38 +893,38 @@ msgid "Could not open file %s"
 msgstr "Nu s-a putut deschide fișierul %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not open file descriptor %d"
-msgstr "Nu s-a putut deschide conexiunea pentru %s"
+msgstr "Nu s-a putut deschide descriptorul de fișier %d"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "read, still have %llu to read but none left"
-msgstr "citire, încă mai am %lu de citit dar n-a mai rămas nimic"
+msgstr "citire, mai sunt încă %llu de citit, dar nimic nu mai este disponibil"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "write, still have %llu to write but couldn't"
-msgstr "scriere, încă mai am %lu de scris dar nu pot"
+msgstr "scriere, încă mai sunt %llu de scris, dar nu s-a putut"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem closing the file %s"
-msgstr "Problemă la închiderea fișierului"
+msgstr "Problemă la închiderea fișierului %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Problem renaming the file %s to %s"
-msgstr "Problemă în timpul sincronizării fișierului"
+msgstr "Problemă la redenumirea fișierului %s în %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Problem syncing the file"
 msgstr "Problemă în timpul sincronizării fișierului"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to mkstemp %s"
-msgstr "Nu se poate executa „stat” pe %s"
+msgstr "Nu s-a putut crea cu mkstemp() fișierul %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -815,32 +933,30 @@ msgstr "Nu s-a putut scrie în %s"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Can't mmap an empty file"
-msgstr "Nu s-a putut executa „mmap” cu un fișier gol"
+msgstr "Nu s-a putut efectua mmap() alocarea în memorie a unui fișier gol"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't make mmap of %llu bytes"
-msgstr "Nu s-a putut face mmap cu %lu octeți"
+msgstr "Nu s-a putut efectua cu mmap() alocarea în memorie a %llu octeți"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't duplicate file descriptor %i"
-msgstr "Nu s-a putut deschide conexiunea pentru %s"
+msgstr "Nu s-a putut duplica descriptorul de fișier %i"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy
 msgid "Unable to close mmap"
-msgstr "Nu s-a putut deschide %s"
+msgstr "Nu s-a putut închide mmap()"
 
 #: apt-pkg/contrib/mmap.cc
-#, fuzzy
 msgid "Unable to synchronize mmap"
-msgstr "Nu s-a putut invoca"
+msgstr "Nu s-a putut sincroniza mmap()"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
-msgstr "Nu s-a putut face mmap cu %lu octeți"
+msgstr "Nu s-a putut efectua cu mmap() alocarea în memorie a %lu octeți"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Failed to truncate file"
@@ -852,6 +968,9 @@ msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
+"Zona dinamică de alocare a memoriei „dynamic MMap” a rămas fără spațiu. Vă "
+"rugăm să măriți dimensiunea lui APT::Cache-Start. Valoarea curentă: %lu. (a "
+"se vedea pagina de manual apt.conf(5))"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
@@ -859,11 +978,15 @@ msgid ""
 "Unable to increase the size of the MMap as the limit of %lu bytes is already "
 "reached."
 msgstr ""
+"Nu se poate mări dimensiunea zonei de alocare a MMap deoarece limita de %lu "
+"octeți este deja atinsă."
 
 #: apt-pkg/contrib/mmap.cc
 msgid ""
 "Unable to increase size of the MMap as automatic growing is disabled by user."
 msgstr ""
+"Nu se poate mări dimensiunea zonei de alocare a MMap deoarece creșterea "
+"automată a acesteia este dezactivată de utilizator."
 
 #: apt-pkg/contrib/netrc.cc
 #, c-format
@@ -871,6 +994,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: Datele de identificare pentru %s se potrivesc, dar protocolul nu este "
+"criptat. Adnotați cu %s:// pentru a-l utiliza."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -884,46 +1009,46 @@ msgstr "%c%s... Terminat"
 
 #: apt-pkg/contrib/progress.cc
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s... Terminat"
+msgstr "%c%s... %llu/%llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s... Terminat"
+msgstr "%c%s... %llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%c%s... %u%%"
-msgstr "%c%s... Terminat"
+msgstr "%c%s... %u%%"
 
 #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lid %lih %limin %lis"
-msgstr ""
+msgstr "%lizi(le) %lioră/ore %limin %lis"
 
 #. TRANSLATOR: h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lih %limin %lis"
-msgstr ""
+msgstr "%lioră/ore  %limin %lis"
 
 #. TRANSLATOR: min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%limin %lis"
-msgstr ""
+msgstr "%limin %lis"
 
 #. TRANSLATOR: s means seconds
 #: apt-pkg/contrib/strutl.cc
 #, c-format
 msgid "%lis"
-msgstr ""
+msgstr "%lis"
 
 #: apt-pkg/contrib/strutl.cc
 #, c-format
@@ -938,17 +1063,16 @@ msgstr "Aceasta nu este o arhivă DEB validă, lipsește membrul „%s”"
 #: apt-pkg/deb/debfile.cc
 #, c-format
 msgid "Internal error, could not locate member %s"
-msgstr "Eroare internă, nu pot localiza membrul %s"
+msgstr "Eroare internă, nu s-a putut localiza membrul %s"
 
 #: apt-pkg/deb/debfile.cc
 msgid "Unparsable control file"
 msgstr "Fișier de control neanalizabil"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "Nu pot determina blocajul %s"
+msgstr "Nu s-au putut citi metadatele din %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -957,6 +1081,7 @@ msgstr "Nu pot determina blocajul %s"
 #, c-format
 msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
 msgstr ""
+"Ținta %s vrea să achiziționeze același fișier (%s) ca %s de la sursa %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; filename and linenumber of
@@ -964,22 +1089,22 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s (%s) is configured multiple times in %s and %s"
-msgstr ""
+msgstr "Ținta %s (%s) este configurată de mai multe ori în %s și %s"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to parse Release file %s"
-msgstr "Nu s-a putut analiza fișierul pachet %s (1)"
+msgstr "Nu s-a putut analiza fișierul „Release” %s"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "No sections in Release file %s"
-msgstr "Notă, se selectează %s în locul lui %s\n"
+msgstr "Nu există secțiuni în fișierul „Release” %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "No Hash entry in Release file %s"
-msgstr ""
+msgstr "Nu există nicio intrare «Hash» în fișierul „Release” %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -987,27 +1112,35 @@ msgid ""
 "No Hash entry in Release file %s which is considered strong enough for "
 "security purposes"
 msgstr ""
+"Nu există nicio intrare «Hash» în fișierul „Release” %s care să fie "
+"considerată suficient de robustă în scopuri de securitate"
 
 #: apt-pkg/deb/debmetaindex.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid '%s' entry in Release file %s"
-msgstr "Linie necorespunzătoare în fișierul-redirectare: %s"
+msgstr "Intrare „%s” nevalidă în fișierul „Release” %s"
 
 #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s"
 msgstr ""
+"Valori conflictuale stabilite pentru opțiunea %s în ceea ce privește sursa "
+"%s %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid value set for option %s regarding source %s %s (%s)"
 msgstr ""
+"Valoare nevalidă stabilită pentru opțiunea %s în ceea ce privește sursa %s "
+"%s (%s)"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
 msgstr ""
+"Valori conflictuale stabilite pentru opțiunea %s în ceea ce privește sursa "
+"%s %s: %s != %s"
 
 #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
 #, c-format
@@ -1015,21 +1148,22 @@ msgid "Unable to parse package file %s (%d)"
 msgstr "Nu s-a putut analiza fișierul pachet %s (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "În așteptarea antetelor"
+msgstr "În așteptare pentru blocarea zonei de prestocare a datelor (cache): %s"
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
 msgid ""
 "Unable to acquire the dpkg frontend lock (%s), is another process using it?"
 msgstr ""
+"Nu se poate obține blocarea interfeței «dpkg» (%s), este un alt proces care "
+"o folosește?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
-msgstr "Nu pot încuia directorul cu lista"
+msgstr "Nu se poate obține blocarea interfeței «dpkg» (%s), sunteți „root”?"
 
 #. TRANSLATORS: the %s contains the recovery command, usually
 #. dpkg --configure -a
@@ -1038,6 +1172,8 @@ msgstr "Nu pot încuia directorul cu lista"
 msgid ""
 "dpkg was interrupted, you must manually run '%s' to correct the problem. "
 msgstr ""
+"dpkg a fost întrerupt, trebuie să rulați manual «%s» pentru a corecta "
+"problema. "
 
 #: apt-pkg/deb/debsystem.cc
 #, c-format
@@ -1045,14 +1181,22 @@ msgid ""
 "Unable to lock the administration directory (%s), is another process using "
 "it?"
 msgstr ""
+"Nu se poate bloca directorul de administrare (%s), este un alt proces care "
+"îl folosește?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to lock the administration directory (%s), are you root?"
-msgstr "Nu pot încuia directorul cu lista"
+msgstr "Nu se poate bloca directorul de administrare (%s), sunteți „root”?"
 
 #: apt-pkg/deb/debsystem.cc
 msgid "Not locked"
+msgstr "Nu este blocat"
+
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
 msgstr ""
 
 #. we don't care for the difference
@@ -1069,17 +1213,17 @@ msgstr "Se pregătește configurarea %s"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Preparing for removal of %s"
-msgstr "Se pregătește ștergerea lui %s"
+msgstr "Se pregătește eliminarea lui %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Preparing to completely remove %s"
-msgstr "Se pregătește ștergerea completă a %s"
+msgstr "Se pregătește eliminarea completă a %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Noting disappearance of %s"
-msgstr ""
+msgstr "S-a constatat dispariția lui %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1100,12 +1244,12 @@ msgstr "Se configurează %s"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Directory '%s' missing"
-msgstr "Directorul „%s” lipsește."
+msgstr "Directorul „%s” lipsește"
 
 #: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not open file '%s'"
-msgstr "Nu s-a putut deschide fișierul %s"
+msgstr "Nu s-a putut deschide fișierul „%s”"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1120,68 +1264,80 @@ msgstr "Se instalează %s"
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Removing %s"
-msgstr "Se șterge %s"
+msgstr "Se elimină %s"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removing %s"
-msgstr "Șters complet %s"
+msgstr "Eliminare completă a lui %s"
 
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
 msgid "Completely removed %s"
-msgstr "Șters complet %s"
+msgstr "Eliminat complet %s"
 
 #: apt-pkg/deb/dpkgpm.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not write log (%s)"
-msgstr "Nu s-a putut scrie în %s"
+msgstr "Nu se poate scrie în jurnal (%s)"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Is /dev/pts mounted?"
-msgstr ""
+msgstr "Este „/dev/pts” montat?"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "Operation was interrupted before it could finish"
-msgstr ""
+msgstr "Operațiunea a fost întreruptă înainte de a se termina"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "No apport report written because MaxReports is reached already"
 msgstr ""
+"Nu se scrie niciun raport de «apport» deoarece „MaxReports” (limita maximă "
+"de rapoarte) a fost deja atinsă"
 
 #. check if its not a follow up error
 #: apt-pkg/deb/dpkgpm.cc
 msgid "dependency problems - leaving unconfigured"
-msgstr ""
+msgstr "probleme de dependență - se lasă neconfigurat"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates its a followup "
 "error from a previous failure."
 msgstr ""
+"Nu s-a scris niciun raport de «apport», deoarece mesajul de eroare indică "
+"faptul că este o eroare de urmărire a unui eșec anterior."
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a disk full "
 "error"
 msgstr ""
+"Nu s-a scris niciun raport de «apport» deoarece mesajul de eroare indică o "
+"eroare de disc plin (fără spațiu pe disc)"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a out of memory "
 "error"
 msgstr ""
+"Nu s-a scris niciun raport de «apport» deoarece mesajul de eroare indică o "
+"eroare de lipsă de memorie."
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates an issue on the "
 "local system"
 msgstr ""
+"Nu s-a scris niciun raport de «apport» deoarece mesajul de eroare indică o "
+"problemă în sistemul local"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a dpkg I/O error"
 msgstr ""
+"Nu s-a scris niciun raport de apport deoarece mesajul de eroare indică o "
+"eroare de In/Ieș a «dpkg»"
 
 #: apt-pkg/depcache.cc
 msgid "Building dependency tree"
@@ -1193,7 +1349,7 @@ msgstr "Versiuni candidat"
 
 #: apt-pkg/depcache.cc
 msgid "Dependency generation"
-msgstr "Generare dependențe"
+msgstr "Generarea dependențelor"
 
 #: apt-pkg/depcache.cc
 msgid "Reading state information"
@@ -1222,38 +1378,50 @@ msgstr "Eșec la închiderea fișierului %s"
 #: apt-pkg/edsp.cc
 msgid "Send scenario to solver"
 msgstr ""
+"Se trimite „scenariul” (mediul de lucru și datele problemei) către "
+"soluționator"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to solver"
-msgstr ""
+msgstr "Se trimite o cerere către soluționator"
 
 #: apt-pkg/edsp.cc
 msgid "Prepare for receiving solution"
-msgstr ""
+msgstr "Se pregătește pentru primirea soluției"
 
 #: apt-pkg/edsp.cc
 msgid "External solver failed without a proper error message"
-msgstr ""
+msgstr "Soluționatorul extern a eșuat fără un mesaj de eroare relevant"
+
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Se calculează înnoirea"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Se rezolvă dependențele"
 
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
-msgstr ""
+msgstr "Executarea soluționatorului extern"
 
 #: apt-pkg/edsp.cc
 msgid "Execute external planner"
-msgstr ""
+msgstr "Executarea planificatorului extern"
 
 #: apt-pkg/edsp.cc
 msgid "Send request to planner"
-msgstr ""
+msgstr "Se trimite o cerere către planificator"
 
 #: apt-pkg/edsp.cc
 msgid "Send scenario to planner"
 msgstr ""
+"Se trimite „scenariul” (mediul de lucru și datele problemei) către "
+"planificator"
 
 #: apt-pkg/edsp.cc
 msgid "External planner failed without a proper error message"
-msgstr ""
+msgstr "Planificatorul extern a eșuat fără un mesaj de eroare relevant"
 
 #: apt-pkg/indexcopy.cc
 #, c-format
@@ -1279,17 +1447,17 @@ msgstr ""
 #: apt-pkg/indexcopy.cc
 #, c-format
 msgid "Can't find authentication record for: %s"
-msgstr ""
+msgstr "Nu se poate găsi înregistrarea de autentificare pentru: %s"
 
 #: apt-pkg/indexcopy.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Hash mismatch for: %s"
-msgstr "Nepotrivire la suma de căutare"
+msgstr "Suma de control nu corespunde pentru: %s"
 
 #: apt-pkg/init.cc
 #, c-format
 msgid "Packaging system '%s' is not supported"
-msgstr "Sistemul de pachete '%s' nu este suportat"
+msgstr "Sistemul de împachetare „%s” nu este acceptat"
 
 #: apt-pkg/init.cc
 msgid "Unable to determine a suitable packaging system type"
@@ -1298,12 +1466,12 @@ msgstr "Nu s-a putut determina un tip de sistem de împachetare potrivit"
 #: apt-pkg/install-progress.cc
 #, c-format
 msgid "Progress: [%3li%%]"
-msgstr ""
+msgstr "Progres: [%3li%%]"
 
 #. send status information that we are about to fork dpkg
 #: apt-pkg/install-progress.cc
 msgid "Running dpkg"
-msgstr ""
+msgstr "Se execută «dpkg»"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1311,11 +1479,14 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
+"Nu s-a putut efectua configurarea imediată a „%s”. Consultați pagina de "
+"manual apt.conf(5), rulând «man 5 apt.conf» sub APT::Immediate-Configurare "
+"pentru detalii. (%d)"
 
 #: apt-pkg/packagemanager.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Could not configure '%s'. "
-msgstr "Nu s-a putut deschide fișierul %s"
+msgstr "Nu s-a putut configura „%s”. "
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1324,37 +1495,43 @@ msgid ""
 "package %s 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."
 msgstr ""
-"Aceasta instalare va avea nevoie de ștergerea temporară a pachetului "
-"esențial %s din cauza unui bucle conflict/pre-dependență. Asta de multe ori "
-"nu-i de bine, dar dacă vreți întradevăr s-o faceți, activați opțiunea APT::"
-"Force-LoopBreak."
+"Această instalare va necesita eliminarea temporară a pachetului esențial %s "
+"din cauza unei bucle conflict/pre-dependență (Conflicts/Pre-Depends). Acest "
+"lucru este adesea rău, dar dacă doriți cu adevărat să o faceți, activați "
+"opțiunea „APT::Force-LoopBreak” rulând comanda «apt-get -u -o APT::Force-"
+"LoopBreak=1» sau manual, adăugând linia »APT::Force-LoopBreak \"true\";« "
+"(fără săgeți) în fișierul „/etc/apt/apt.conf”."
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
-msgstr "Cache gol de pachet"
+msgstr "Zonă de prestocare (cache) a pachetelor goală"
 
 #: apt-pkg/pkgcache.cc
 msgid "The package cache file is corrupted"
-msgstr "Cache-ul fișierului pachet este deteriorat"
+msgstr "Fișierul de prestocare(cache) al pachetului este corupt"
 
 #: apt-pkg/pkgcache.cc
 msgid "The package cache file is an incompatible version"
-msgstr "Fișierul cache al pachetului este o versiune incompatibilă"
+msgstr ""
+"Fișierul de prestocare(cache) al pachetului are o versiune incompatibilă"
 
 #: apt-pkg/pkgcache.cc
 #, c-format
 msgid "This APT does not support the versioning system '%s'"
-msgstr "Acest APT nu suportă versioning system '%s'"
+msgstr "Acest APT nu este compatibil cu sistemul de versiuni „%s”."
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The package cache was built for different architectures: %s vs %s"
-msgstr "Cache-ul pachetului a fost construit pentru o arhitectură diferită"
+msgstr ""
+"Zona de prestocare(cache) a pachetelor a fost construită pentru o "
+"arhitectură diferită: %s vs %s"
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy
 msgid "The package cache file is corrupted, it has the wrong hash"
-msgstr "Cache-ul fișierului pachet este deteriorat"
+msgstr ""
+"Fișierul de prestocare(cache) al pachetului este corupt, are o sumă de "
+"control greșită"
 
 #: apt-pkg/pkgcache.cc
 msgid "Depends"
@@ -1386,11 +1563,11 @@ msgstr "Corupe"
 
 #: apt-pkg/pkgcache.cc
 msgid "Enhances"
-msgstr ""
+msgstr "Îmbunătățește"
 
 #: apt-pkg/pkgcache.cc
 msgid "Obsoletes"
-msgstr "ÃŽnvechit"
+msgstr "ÃŽnvechite"
 
 #: apt-pkg/pkgcache.cc
 msgid "important"
@@ -1414,15 +1591,22 @@ msgstr "opțional"
 
 #: apt-pkg/pkgcachegen.cc
 msgid "Cache has an incompatible versioning system"
-msgstr "Cache are un versioning system incompatibil"
+msgstr "Zona de prestocare(cache) are un sistem de versiune incompatibil"
 
 #. TRANSLATOR: The first placeholder is a package name,
 #. the other two should be copied verbatim as they include debug info
 #: apt-pkg/pkgcachegen.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (%s%d)"
-msgstr "Eroare apărută în timpul procesării %s (FindPkg)"
-
+msgstr "A apărut o eroare în timpul procesării %s (%s%d)"
+
+# R-GC, scrie:
+# traducerea acestui mesaj și a următoarelor
+# 3 mesaje, aparține traducătorilor anteriori:
+# Sorin Batariuc (SB) / Eddy Petrișor (EP).
+# *****
+# m-a amuzat, mult, traducerea lui „WoW”
+# → «Mamăăă»
 #: apt-pkg/pkgcachegen.cc
 msgid "Wow, you exceeded the number of package names this APT is capable of."
 msgstr ""
@@ -1446,16 +1630,17 @@ msgstr ""
 
 #: apt-pkg/pkgcachegen.cc
 msgid "Reading package lists"
-msgstr "Citire liste de pachete"
+msgstr "Se citesc listele de pachete"
 
 #: apt-pkg/pkgcachegen.cc
 msgid "IO Error saving source cache"
-msgstr "Eroare IO în timpul salvării sursei cache"
+msgstr ""
+"Eroare de In/Ieș în timpul salvării fișierului de prestocare a surselor"
 
 #: apt-pkg/pkgrecords.cc
 #, c-format
 msgid "Index file type '%s' is not supported"
-msgstr "Tipul de fișier index '%s' nu este suportat"
+msgstr "Tipul de fișier index „%s” nu este acceptat"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1463,11 +1648,14 @@ msgid ""
 "The value '%s' is invalid for APT::Default-Release as such a release is not "
 "available in the sources"
 msgstr ""
+"Valoarea „%s” este nu este validă pentru opțiunea „APT::Default-Release”, "
+"deoarece o astfel de versiune nu este disponibilă în surse"
 
 #: apt-pkg/policy.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid record in the preferences file %s, no Package header"
-msgstr "Înregistrare invalidă în fișierul de preferințe, fără antet de pachet"
+msgstr ""
+"Înregistrare nevalidă în fișierul de preferințe %s, fără antet de pachet"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1479,70 +1667,69 @@ msgstr "Nu s-a înțeles tipul de pin %s"
 msgid ""
 "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records"
 msgstr ""
+"%s: Opțiunea specială „Pin-Priority: %s” poate fi utilizată numai pentru "
+"înregistrări „Package: *”"
 
 #: apt-pkg/policy.cc
 #, c-format
 msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
 msgstr ""
+"%s: Valoarea %s este în afara intervalului de priorități valide pentru pin "
+"(%d la %d)."
 
 #: apt-pkg/policy.cc
 msgid "No priority (or zero) specified for pin"
-msgstr "Fără prioritate (sau zero) specificată pentru pin"
+msgstr "Nici o prioritate (sau zero) specificată pentru pin"
 
 #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed entry %u in %s file %s (%s)"
-msgstr "Înlocuire greșită %s linia %lu #1"
+msgstr "Intrare incorect formată %u în fișierul %s %s (%s)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Malformed line %u in source list %s (type)"
-msgstr "Linie greșită %u în lista sursă %s (tip)"
+msgstr "Linie greșită %u în lista de surse %s (tip)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
-msgstr "Tipul '%s' nu este cunoscut în linia %u din lista sursă %s"
+msgstr "Tipul „%s” nu este cunoscut în linia %u din lista de surse %s"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed stanza %u in source list %s (type)"
-msgstr "Linie greșită %u în lista sursă %s (tip)"
+msgstr "Structură incorectă %u în lista de surse %s (tip)"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on stanza %u in source list %s"
-msgstr "Tipul '%s' nu este cunoscut în linia %u din lista sursă %s"
+msgstr "Tipul „%s” nu este cunoscut în structura %u din lista de surse %s"
 
 #: apt-pkg/sourcelist.cc apt-private/private-install.cc
 #, c-format
 msgid "Unsupported file %s given on commandline"
-msgstr ""
+msgstr "Fișier neacceptat %s furnizat în linia de comandă"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
-msgstr "Trebuie să puneți niște 'surse' de URI în sources.list"
+msgstr ""
+"Trebuie să puneți câteva adrese „deb-src” în fișierul „/etc/apt/sources.list”"
 
 #: apt-pkg/tagfile.cc
 #, c-format
 msgid "Cannot convert %s to integer: out of range"
 msgstr ""
+"Nu se poate converti %s în număr întreg: în afara intervalului de valori"
 
 #: apt-pkg/update.cc
-#, fuzzy
 msgid ""
 "Some index files failed to download. They have been ignored, or old ones "
 "used instead."
 msgstr ""
 "Descărcarea unor fișiere index a eșuat, acestea fie au fost ignorate, fie au "
-"fost folosite în loc unele vechi."
-
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculez înnoirea"
+"fost folosite în loc cele vechi."
 
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
@@ -1574,32 +1761,34 @@ msgstr "Eroare:%lu %s"
 #: apt-private/acqprogress.cc
 #, c-format
 msgid "Fetched %sB in %s (%sB/s)\n"
-msgstr "Aduși: %sB în %s (%sB/s)\n"
+msgstr "Aduși: %so în %s (%so/s)\n"
 
 #: apt-private/acqprogress.cc
 msgid " [Working]"
 msgstr " [ÃŽn lucru]"
 
 #: apt-private/acqprogress.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Media change: please insert the disc labeled\n"
 " '%s'\n"
 "in the drive '%s' and press [Enter]\n"
 msgstr ""
-"Schimbare de mediu: introduceți discul numit\n"
+"Schimbare de mediu: introduceți discul cu eticheta\n"
 " „%s”\n"
-"în unitatea „%s” și apăsați Enter\n"
+"în unitatea „%s” și apăsați [Enter]\n"
 
 #: apt-private/acqprogress.cc
 msgid ""
 "Do you want to accept these changes and continue updating from this "
 "repository?"
 msgstr ""
+"Doriți să acceptați aceste modificări și să continuați actualizarea din "
+"acest depozit?"
 
 #: apt-private/private-cachefile.cc
 msgid "Correcting dependencies..."
-msgstr "Corectez dependențele..."
+msgstr "Se corectează dependențele..."
 
 #: apt-private/private-cachefile.cc
 msgid " failed."
@@ -1615,39 +1804,38 @@ msgstr "Nu s-a putut micșora mulțimea pachetelor de înnoit"
 
 #: apt-private/private-cachefile.cc
 msgid " Done"
-msgstr " Terminat"
+msgstr " Gata"
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid "You might want to run 'apt --fix-broken install' to correct these."
-msgstr ""
-"Ați putea să porniți 'apt --fix-broken install' pentru a corecta acestea."
+msgstr "Poate doriți să rulați «apt --fix-broken install» pentru a le corecta."
 
 #: apt-private/private-cachefile.cc apt-private/private-install.cc
 msgid ""
 "Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
 "specify a solution)."
 msgstr ""
-"Dependențe neîndeplinite. Încercați 'apt --fix-broken install' fără nici un "
+"Dependențe nesatisfăcute. Încercați «apt --fix-broken install» fără nici un "
 "pachet (sau oferiți o altă soluție)."
 
 #: apt-private/private-cacheset.cc apt-private/private-search.cc
 msgid "Sorting"
-msgstr ""
+msgstr "Se sortează"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for task '%s'\n"
-msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+msgstr "Notă: se selectează „%s” pentru sarcina „%s”\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for glob '%s'\n"
-msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+msgstr "Notă: se selectează „%s” pentru caracterul(ele) Jocker „%s”\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for regex '%s'\n"
-msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+msgstr "Notă: se selectează „%s” pentru expresia regulată „%s”\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1655,14 +1843,12 @@ msgid "Package %s is a virtual package provided by:\n"
 msgstr "Pachetul %s este un pachet virtual furnizat de către:\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Installed]"
 msgstr " [Instalat]"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Not candidate version]"
-msgstr "Versiuni candidat"
+msgstr " [Nu este versiunea candidată]"
 
 #: apt-private/private-cacheset.cc
 msgid "You should explicitly select one to install."
@@ -1675,48 +1861,51 @@ msgid ""
 "This may mean that the package is missing, has been obsoleted, or\n"
 "is only available from another source\n"
 msgstr ""
-"Pachetul %s nu este disponibil, dar este menționat de către alt pachet.\n"
-"Aceasta ar putea însemna că pachetul lipsește, s-a învechit, sau\n"
-"este disponibil numai din altă sursă\n"
+"Pachetul %s nu este disponibil, dar este menționat de un alt pachet.\n"
+"Acest lucru poate însemna că pachetul lipsește, a fost înlocuit sau\n"
+"este disponibil doar dintr-o altă sursă\n"
 
 #: apt-private/private-cacheset.cc
 msgid "However the following packages replace it:"
 msgstr "Oricum următoarele pachete îl înlocuiesc:"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' has no installation candidate"
-msgstr "Pachetul %s nu are nici un candidat la instalare"
+msgstr "Pachetul „%s” nu are un candidat pentru instalare"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Virtual packages like '%s' can't be removed\n"
-msgstr ""
+msgstr "Pachetele virtuale precum „%s” nu pot fi eliminate\n"
 
 #. TRANSLATORS: Note, this is not an interactive question
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
-msgstr "Pachetul %s nu este instalat, așa încât nu este șters\n"
+msgstr ""
+"Pachetul „%s” nu este instalat, deci nu a fost eliminat. Ați vrut să spuneți "
+"„%s”?\n"
 
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package '%s' is not installed, so not removed\n"
-msgstr "Pachetul %s nu este instalat, așa încât nu este șters\n"
+msgstr "Pachetul „%s” nu este instalat, deci nu a fost eliminat.\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' instead of '%s'\n"
-msgstr "Notă, se selectează %s în locul lui %s\n"
+msgstr "Notă: se selectează „%s” în loc de „%s”\n"
 
 #: apt-private/private-cmndline.cc
 msgid "Most used commands:"
-msgstr ""
+msgstr "Cele mai utilizate comenzi:"
 
 #: apt-private/private-cmndline.cc
 #, c-format
 msgid "See %s for more information about the available commands."
 msgstr ""
+"Consultați %s pentru mai multe informații despre comenzile disponibile."
 
 #: apt-private/private-cmndline.cc
 msgid ""
@@ -1725,6 +1914,12 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
+"Opțiunile de configurare și sintaxa sunt detaliate în apt.conf(5).\n"
+"Informații despre modul de configurare a surselor pot fi găsite în\n"
+"sources.list(5).\n"
+"Alegerile privind pachetele și versiunile pot fi exprimate prin\n"
+"apt_preferences(5).\n"
+"Detalii privind securitatea sunt disponibile în apt-secure(8).\n"
 
 #: apt-private/private-cmndline.cc
 msgid "This APT has Super Cow Powers."
@@ -1732,13 +1927,15 @@ msgstr "Acest APT are puterile unei Super Vaci."
 
 #: apt-private/private-cmndline.cc
 msgid "This APT helper has Super Meep Powers."
-msgstr ""
+msgstr "Acest asistent APT are puterile unui Super Bocet."
 
 #: apt-private/private-cmndline.cc
 msgid ""
 "--force-yes is deprecated, use one of the options starting with --allow "
 "instead."
 msgstr ""
+"-opțiunea „--force-yes” este învechită, utilizați în schimb una dintre "
+"opțiunile care încep cu „--allow”."
 
 #: apt-private/private-depends.cc apt-private/private-download.cc
 #: apt-private/private-show.cc cmdline/apt-mark.cc
@@ -1751,7 +1948,7 @@ msgstr "AVERTISMENT: Următoarele pachete nu pot fi autentificate!"
 
 #: apt-private/private-download.cc
 msgid "Authentication warning overridden.\n"
-msgstr "Avertisment de autentificare înlocuit.\n"
+msgstr "Avertisment de autentificare ignorat.\n"
 
 #: apt-private/private-download.cc
 msgid "Some packages could not be authenticated"
@@ -1762,21 +1959,22 @@ msgid "Install these packages without verification?"
 msgstr "Instalați aceste pachete fără verificare?"
 
 #: apt-private/private-download.cc
-#, fuzzy
 msgid ""
 "There were unauthenticated packages and -y was used without --allow-"
 "unauthenticated"
-msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+msgstr ""
+"Au existat pachete neautentificate și opțiunea „-y” a fost folosită fără "
+"opțiunea „--allow-unauthenticated”"
 
 #: apt-private/private-download.cc
 #, c-format
 msgid "Couldn't determine free space in %s"
-msgstr "N-am putut determina spațiul disponibil în %s"
+msgstr "Nu s-a putut determina spațiul liber din %s"
 
 #: apt-private/private-download.cc
 #, c-format
 msgid "You don't have enough free space in %s."
-msgstr "Nu aveți suficient spațiu în %s."
+msgstr "Nu aveți suficient spațiu liber în %s."
 
 #: apt-private/private-download.cc
 msgid "Unable to lock the download directory"
@@ -1813,91 +2011,184 @@ msgstr "Următoarele informații ar putea să vă ajute la rezolvarea situației
 msgid "Broken packages"
 msgstr "Pachete deteriorate"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Un „/usr” neunificat nu mai este acceptat, utilizați «usrmerge» pentru a "
+"converti la un sistem cu un „/usr” unificat (în care directoarele /"
+"{bin,sbin,lib}/ sunt legate simbolic la directoarele corespondente din /"
+"usr/)."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Consultați %s pentru mai multe detalii."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
 "missing?"
 msgstr ""
-"Nu s-au putut aduce unele arhive, poate ar fi o idee bună să rulați 'apt-get "
-"update' sau încercați cu --fix-missing?"
+"Nu s-au putut aduce unele arhive, poate ar fi o idee bună să rulați «apt-get "
+"update» sau încercați cu „--fix-missing”?"
 
 #: apt-private/private-install.cc
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr "Eroare internă, InstallPackages a fost apelat cu pachete deteriorate!"
+msgstr ""
+"Eroare internă, funcția „InstallPackages” a fost apelată cu pachete "
+"deteriorate!"
 
 #: apt-private/private-install.cc
 msgid "Packages need to be removed but remove is disabled."
-msgstr "Pachete trebuiesc șterse dar ștergerea este dezactivată."
+msgstr ""
+"Pachetele trebuie să fie eliminate, dar opțiunea de eliminare este "
+"dezactivată."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "Essential packages were removed and -y was used without --allow-remove-"
 "essential."
-msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+msgstr ""
+"Au fost eliminate pachete esențiale și opțiunea „-y” a fost utilizată fără "
+"opțiunea „--allow-remove-essential”."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
-msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+msgstr ""
+"S-au retrogradat unele pachete, iar opțiunea „-y” a fost utilizată fără "
+"opțiunea „--allow-downgrades”."
 
 #: apt-private/private-install.cc
 msgid ""
 "Held packages were changed and -y was used without --allow-change-held-"
 "packages."
 msgstr ""
+"Pachetele păstrate au fost modificate și opțiunea „-y” a fost utilizată fără "
+"opțiunea „--allow-change-held-packages”."
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
-msgstr "Eroare internă, Ordering nu s-a terminat"
+msgstr "Eroare internă, execuția funcției de sortare a fost întreruptă"
 
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Ce ciudat... Dimensiunile nu se potrivesc, scrieți la apt@packages.debian.org"
+"Ce ciudat... Dimensiunile nu se potrivesc, trimiteți un mesaj la "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Dimensiunea descărcării: %so / %so\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "Need to get %sB/%sB of archives.\n"
-msgstr "Este nevoie să descărcați %sB/%sB de arhive.\n"
+msgstr "Este nevoie să descărcați %so/%so de arhive.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Dimensiunea descărcării: %so\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "Need to get %sB of archives.\n"
-msgstr "Este nevoie să descărcați %sB de arhive.\n"
+msgstr "Este nevoie să descărcați %so de arhive.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
-msgstr "După această operație vor fi folosiți din disc încă %sB.\n"
+msgstr "După această operație vor fi folosiți din disc încă %so.\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
-msgid "After this operation, %sB disk space will be freed.\n"
-msgstr "După această operație se vor elibera %sB din spațiul ocupat pe disc.\n"
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Spațiu necesar: %so / %so disponibil\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
-msgid "Trivial Only specified but this is not a trivial operation."
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
 msgstr ""
-"A fost specificat 'doar neimportant' dar nu este o operațiune neimportantă."
+"Este necesar mai mult spațiu decât cel disponibil: %so > %so, instalarea "
+"poate eșua"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
 #: apt-private/private-install.cc
-msgid ""
-"Removing essential system-critical packages is not permitted. This might "
-"break the system."
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "în %s: %so / %so disponibil\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"Este nevoie de mai mult spațiu pe %s decât este disponibil: %so > %so, "
+"instalarea poate eșua"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Spațiu necesar: %so\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Spațiu eliberat: %so\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "După această operație se vor elibera %so din spațiul ocupat pe disc.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"A fost specificată opțiunea „--trivial-only” (doar operațiile comune, "
+"obișnuite), dar aceasta nu este o operație obișnuită."
+
+#: apt-private/private-install.cc
+msgid ""
+"Removing essential system-critical packages is not permitted. This might "
+"break the system."
 msgstr ""
+"Eliminarea pachetelor esențiale, cruciale ale sistemului nu este permisă. "
+"Acest lucru ar putea deteriora sistemul."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Continuați totuși?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Continuați?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
-msgstr "Vreți să continuați?"
+msgstr ""
+"Continuați?\n"
+"Doriți să continuați?"
 
 #: apt-private/private-install.cc
 msgid "Abort."
@@ -1905,7 +2196,7 @@ msgstr "Renunțare."
 
 #: apt-private/private-install.cc
 msgid "Some files failed to download"
-msgstr "Descărcarea unor fișiere a eșuat"
+msgstr "Unele fișiere nu au putut fi descărcate"
 
 #: apt-private/private-install.cc apt-private/private-source.cc
 msgid "Download complete and in download only mode"
@@ -1913,15 +2204,17 @@ msgstr "Descărcare completă și în modul doar descărcare"
 
 #: apt-private/private-install.cc
 msgid "--fix-missing and media swapping is not currently supported"
-msgstr "--fix-missing și schimbul de mediu nu este deocamdată suportat"
+msgstr ""
+"combinarea opțiunii „--fix-missing” cu schimbarea de mediu (schimbarea cd-"
+"ului) nu este deocamdată suportată"
 
 #: apt-private/private-install.cc
 msgid "Unable to correct missing packages."
-msgstr "Nu pot corecta pachetele lipsă."
+msgstr "Nu se poate corecta faptul că unele pachetele lipsesc."
 
 #: apt-private/private-install.cc
 msgid "Aborting install."
-msgstr "Abandonez instalarea."
+msgstr "Se abandonează instalarea."
 
 #: apt-private/private-install.cc
 msgid ""
@@ -1931,69 +2224,76 @@ msgid_plural ""
 "The following packages disappeared from your system as\n"
 "all files have been overwritten by other packages:"
 msgstr[0] ""
+"Următorul pachet a dispărut din sistemul dvs. deoarece\n"
+"toate fișierele sale au fost suprascrise de alte pachete:"
 msgstr[1] ""
+"Următoarele pachete au dispărut din sistemul dvs. deoarece\n"
+"toate fișierele acestora au fost suprascrise de alte pachete:"
 msgstr[2] ""
+"Următoarele pachete au dispărut din sistemul dvs. deoarece\n"
+"toate fișierele acestora au fost suprascrise de alte pachete:"
 
 #: apt-private/private-install.cc
 msgid "Note: This is done automatically and on purpose by dpkg."
 msgstr ""
+"Notă: Acest lucru este făcut în mod automat și intenționat de către «dpkg»."
 
 # XXX: orice sugestie este bine-venită
+# „Nu este voie să se șteargă lucruri, nu se poate porni AutoRemover”
+# *****
+# R-GC, scrie:
+# am înlocuit traducerea, de mai sus cu
+# traducerea actuală:
+# „”; mesajul original este construit ca și cum
+# apt/programatorii săi ar vorbi; așa că traducerile făcute, sunt mai degrabă
+# adaptări ale acestui mesaj, decît o
+# traducere a sa.
 #: apt-private/private-install.cc
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
-msgstr "Nu este voie să se șteargă lucruri, nu se poate porni AutoRemover"
+msgstr ""
+"Se presupune că nu se vor șterge lucruri, nu se poate iniția "
+"„AutoRemover()”, (funcția de auto-eliminare a apt)"
 
 #: apt-private/private-install.cc
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
 msgstr ""
-"Hmm, se pare că AutoRemover a distrus ceva, lucru care n-ar trebui să se "
-"întâmple. Sunteți rugat să trimiteți un raportați de defect pentru pachetul "
-"apt."
+"Hmm, se pare că AutoRemover() a distrus ceva, lucru care n-ar trebui\n"
+"să se întâmple. Trimiteți un raport de eroare pentru pachetul „apt”."
 
 #: apt-private/private-install.cc
 msgid "Internal Error, AutoRemover broke stuff"
-msgstr "Eroare internă, AutoRemover a deteriorat diverse chestiuni"
+msgstr "Eroare internă, AutoRemover() a deteriorat anumite lucruri"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Folosiți «%s» pentru a-l elimina."
+msgstr[1] "Folosiți «%s» pentru a le elimina."
+msgstr[2] "Folosiți «%s» pentru a le elimina."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "The following package was automatically installed and is no longer required:"
 msgid_plural ""
 "The following packages were automatically installed and are no longer "
 "required:"
-msgstr[0] ""
-"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+msgstr[0] "Următorul pachet a fost instalat automat și nu mai este necesar:"
 msgstr[1] ""
 "Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
 msgstr[2] ""
 "Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%lu package was automatically installed and is no longer required.\n"
 msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
-msgstr[0] ""
-"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
-msgstr[1] ""
-"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
-msgstr[2] ""
-"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
-
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Folosiți '%s' pentru a le șterge."
-msgstr[1] "Folosiți '%s' pentru a le șterge."
-msgstr[2] "Folosiți '%s' pentru a le șterge."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Următoarele extra pachete vor fi instalate:"
+msgstr[0] "%lu pachet a fost instalat automat și nu mai este necesar:\n"
+msgstr[1] "%lu pachete au fost instalate automat și nu mai sunt necesare:\n"
+msgstr[2] "%lu de pachete au fost instalate automat și nu mai sunt necesare:\n"
 
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
@@ -2003,15 +2303,19 @@ msgstr "Pachete sugerate:"
 msgid "Recommended packages:"
 msgstr "Pachete recomandate:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Următoarele pachete adiționale vor fi instalate:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
-msgstr "Sar peste %s, este deja instalat și înnoirea nu este activată.\n"
+msgstr "Se omite %s, este deja instalat și înnoirea nu este activată.\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
-msgstr "Sar peste %s, este deja instalat și înnoirea nu este activată.\n"
+msgstr "Se omite %s, nu este instalat și se solicită doar înnoiri.\n"
 
 #: apt-private/private-install.cc
 #, c-format
@@ -2020,9 +2324,9 @@ msgstr "Reinstalarea lui %s nu este posibilă, nu poate fi descărcat.\n"
 
 #. TRANSLATORS: First string is package name, second is version
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s is already the newest version (%s).\n"
-msgstr "%s este deja la cea mai nouă versiune.\n"
+msgstr "%s este deja la cea mai nouă versiune (%s).\n"
 
 #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
@@ -2030,18 +2334,18 @@ msgid "%s set to manually installed.\n"
 msgstr "%s este marcat ca fiind instalat manual.\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Selected version '%s' (%s) for '%s'\n"
-msgstr "Versiune selectată %s (%s) pentru %s\n"
+msgstr "Versiunea „%s” (%s) selectată pentru „%s”\n"
 
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
-msgstr "Versiune selectată %s (%s) pentru %s\n"
+msgstr "Versiunea „%s” (%s) selectată pentru „%s” din cauza pachetului „%s”\n"
 
 #: apt-private/private-list.cc
 msgid "Listing"
-msgstr ""
+msgstr "Se listează"
 
 #: apt-private/private-list.cc
 #, c-format
@@ -2049,8 +2353,12 @@ msgid "There is %i additional version. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional versions. Please use the '-a' switch to see them."
 msgstr[0] ""
+"Există %i versiune suplimentară. Utilizați opțiunea „-a” pentru a o vedea."
 msgstr[1] ""
+"Există %i versiuni suplimentare. Utilizați opțiunea „-a” pentru a-le vedea."
 msgstr[2] ""
+"Există %i de versiuni suplimentare. Utilizați opțiunea „-a” pentru a-le "
+"vedea."
 
 #. TRANSLATORS: placeholder is a binary name like apt or apt-get
 #: apt-private/private-main.cc
@@ -2061,43 +2369,44 @@ msgid ""
 "      Keep also in mind that locking is deactivated,\n"
 "      so don't depend on the relevance to the real current situation!\n"
 msgstr ""
+"NOTÄ‚: Aceasta este doar o simulare!\n"
+"      %s are nevoie de privilegii de root pentru o execuție reală.\n"
+"      Rețineți, de asemenea, că blocarea este dezactivată, așa că\n"
+"      situația actuală nu este neapărat reprezentativă pentru realitate!\n"
 
 #: apt-private/private-output.cc apt-private/private-show.cc
 msgid "unknown"
-msgstr ""
+msgstr "necunoscut"
 
 #: apt-private/private-output.cc
-#, fuzzy, c-format
+#, c-format
 msgid "[installed,upgradable to: %s]"
-msgstr " [Instalat]"
+msgstr "[instalat, poate fi înnoit la versiunea: %s]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,local]"
-msgstr " [Instalat]"
+msgstr "[Instalat, local]"
 
 #: apt-private/private-output.cc
 msgid "[installed,auto-removable]"
-msgstr ""
+msgstr "[instalat, poate fi eliminat automat]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed,automatic]"
-msgstr " [Instalat]"
+msgstr "[Instalat, automat]"
 
 #: apt-private/private-output.cc
-#, fuzzy
 msgid "[installed]"
-msgstr " [Instalat]"
+msgstr "[Instalat]"
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "[upgradable from: %s]"
-msgstr ""
+msgstr "[poate fi înnoit de la: %s]"
 
 #: apt-private/private-output.cc
 msgid "[residual-config]"
-msgstr ""
+msgstr "[configurație reziduală]"
 
 #: apt-private/private-output.cc
 #, c-format
@@ -2133,13 +2442,41 @@ msgstr " sau"
 msgid "The following packages have unmet dependencies:"
 msgstr "Următoarele pachete au dependențe neîndeplinite:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Dependențe nesatisfăcute:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Următoarele pachete NOI vor fi instalate:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Se instalează:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Se instalează dependențele:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "SE ELIMINÄ‚:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
-msgstr "Următoarele pachete vor fi ȘTERSE:"
+msgstr "Următoarele pachete vor fi ELIMINATE:"
+
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Următoarele actualizări au fost amânate din cauza eșalonării:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Nu se actualizează încă din cauza eșalonării:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Nu se actualizează:"
 
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
@@ -2149,9 +2486,21 @@ msgstr "Următoarele pachete au fost reținute:"
 msgid "The following packages will be upgraded:"
 msgstr "Următoarele pachete vor fi ÎNNOITE:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Se înnoiește:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "SE RETROGRADEAZÄ‚:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
-msgstr "Următoarele pachete vor fi DE-GRADATE:"
+msgstr "Următoarele pachete vor fi RETROGRADATE:"
+
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Se schimbă pachetele ținute:"
 
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
@@ -2168,32 +2517,56 @@ msgid ""
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 "AVERTISMENT: Următoarele pachete esențiale vor fi șterse.\n"
-"Aceasta NU ar trebui făcută decât dacă știți exact ce vreți!"
+"Acest lucru NU trebuie făcut decât dacă știți exact ceea ce faceți!"
+
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Rezumat:"
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
-msgstr "%lu înnoite, %lu nou instalate, "
+msgstr "%lu înnoit(e), %lu nou instalat(e), "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Se înnoiește: %lu, Se instalează: %lu, "
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
-msgstr "%lu reinstalate, "
+msgstr "%lu reinstalat(e), "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Se reinstalează: %lu, "
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
-msgstr "%lu de-gradate, "
+msgstr "%lu retrogragradat(e), "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Se retrogradează: %lu, "
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
-msgstr "%lu de șters și %lu neînnoite.\n"
+msgstr "%lu de eliminat și %lu neactualizat(e).\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Se elimină: %lu, Nu se înnoiește: %lu\n"
 
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
-msgstr "%lu instalate sau șterse incomplet.\n"
+msgstr "%lu instalat(e) sau eliminat(e) incomplet.\n"
 
 #. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
 #. e.g. "Do you want to continue? [Y/n] "
@@ -2201,7 +2574,7 @@ msgstr "%lu instalate sau șterse incomplet.\n"
 #. YESEXPR/NOEXPR defined in your l10n.
 #: apt-private/private-output.cc
 msgid "[Y/n]"
-msgstr ""
+msgstr "[D/n]"
 
 #. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
 #. e.g. "Should this file be removed? [y/N] "
@@ -2209,26 +2582,25 @@ msgstr ""
 #. YESEXPR/NOEXPR defined in your l10n.
 #: apt-private/private-output.cc
 msgid "[y/N]"
-msgstr ""
+msgstr "[d/N]"
 
 #. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
 #: apt-private/private-output.cc
 msgid "Y"
-msgstr "Y"
+msgstr "D"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
-msgstr ""
+msgstr "N"
 
 #: apt-private/private-search.cc
-#, fuzzy
 msgid "You must give at least one search pattern"
-msgstr "Trebuie să dați exact un șablon"
+msgstr "Trebuie să dați cel puțin un model de căutare"
 
 #: apt-private/private-search.cc
 msgid "Full Text Search"
-msgstr ""
+msgstr "Căutare în întreg textul"
 
 #: apt-private/private-show.cc
 #, c-format
@@ -2236,32 +2608,39 @@ msgid "There is %i additional record. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional records. Please use the '-a' switch to see them."
 msgstr[0] ""
+"Există %i înregistrare suplimentară. Utilizați opțiunea „-a” pentru a-o "
+"vedea."
 msgstr[1] ""
+"Există %i înregistrări suplimentare. Utilizați opțiunea „-a” pentru a-le "
+"vedea."
 msgstr[2] ""
+"Există %i de înregistrări suplimentare. Utilizați opțiunea „-a” pentru a-le "
+"vedea."
 
 #: apt-private/private-show.cc
 msgid "not a real package (virtual)"
-msgstr ""
+msgstr "nu este un pachet real (virtual)"
 
 #: apt-private/private-show.cc
 msgid "Package files:"
-msgstr "Fișiere pachet: "
+msgstr "Fișiere pachet:"
 
 #: apt-private/private-show.cc
 msgid "Cache is out of sync, can't x-ref a package file"
 msgstr ""
-"Cache-ul este desincronizat, nu se poate executa x-ref pe un fișier pachet"
+"Zona de prestocare(cache) nu este sincronizată, nu se poate găsi legătura "
+"către fișierul pachetului"
 
 #. Show any packages have explicit pins
 #: apt-private/private-show.cc
 msgid "Pinned packages:"
-msgstr "Pachete alese special:"
+msgstr "Pachete marcate:"
 
 #. Print the package name and the version we are forcing to
 #: apt-private/private-show.cc
 #, c-format
 msgid "%s -> %s with priority %d\n"
-msgstr ""
+msgstr "%s -> %s cu prioritatea %d\n"
 
 #: apt-private/private-show.cc
 msgid "  Installed: "
@@ -2269,7 +2648,7 @@ msgstr "  Instalat: "
 
 #: apt-private/private-show.cc
 msgid "  Candidate: "
-msgstr "  Candidează: "
+msgstr "  Candidat: "
 
 #: apt-private/private-show.cc
 msgid "(none)"
@@ -2278,45 +2657,46 @@ msgstr "(niciunul)"
 #. Show the priority tables
 #: apt-private/private-show.cc
 msgid "  Version table:"
-msgstr "  Tabela de versiuni:"
+msgstr "  Tabelul de versiuni:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "în etape"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package for architecture '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu se poate găsi un pachet pentru arhitectura „%s”"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with version '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu se poate găsi un pachet „%s” cu versiunea „%s”"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Can not find a package '%s' with release '%s'"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu se găsește un pachet „%s” cu ediția „%s”"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
-msgstr "Nu pot determina starea listei surse de pachete %s"
+msgstr "Se alege „%s” ca pachet sursă în loc de „%s”\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Can not find version '%s' of package '%s'"
-msgstr ""
+msgstr "Nu se poate găsi versiunea „%s” a pachetului „%s”"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to fetch source for"
-msgstr "Trebuie specificat cel puțin un pachet pentru a-i aduce sursa"
+msgstr ""
+"Trebuie să specificați cel puțin un pachet pentru care să preluați sursa"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unable to find a source package for %s"
-msgstr "Nu s-a putut găsi o sursă pachet pentru %s"
+msgstr "Nu s-a putut găsi un pachet sursă pentru %s"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2324,6 +2704,9 @@ msgid ""
 "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
 "%s\n"
 msgstr ""
+"AVIZ: împachetarea lui „%s” este menținută în sistemul de control al "
+"versiunii „%s” la:\n"
+"%s\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2332,25 +2715,29 @@ msgid ""
 "%s\n"
 "to retrieve the latest (possibly unreleased) updates to the package.\n"
 msgstr ""
+"Utilizați:\n"
+"%s\n"
+"pentru a prelua cele mai recente actualizări ale pachetului (eventual "
+"nepublicate).\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "Sar peste fișierul deja descărcat '%s'\n"
+msgstr "Se sare peste fișierul deja descărcat „%s”\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-source.cc
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
-msgstr "Este nevoie să descărcați %sB/%sB din arhivele surselor.\n"
+msgstr "Este nevoie să descărcați %so/%so din arhivele surselor.\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-source.cc
 #, c-format
 msgid "Need to get %sB of source archives.\n"
-msgstr "Este nevoie să descărcați %sB din arhivele surselor.\n"
+msgstr "Este nevoie să descărcați %so din arhivele surselor.\n"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2364,73 +2751,86 @@ msgstr "Eșec la aducerea unor arhive."
 #: apt-private/private-source.cc
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
-msgstr "Sar peste despachetarea sursei deja despachetate în %s\n"
+msgstr "Se sare peste despachetarea sursei deja despachetate în %s\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unpack command '%s' failed.\n"
-msgstr "Comanda de despachetare '%s' eșuată.\n"
+msgstr "Comanda de despachetare „%s” a eșuat.\n"
 
 #: apt-private/private-source.cc
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+msgstr "Verificați dacă pachetul „dpkg-dev” este instalat.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Build command '%s' failed.\n"
-msgstr "Comanda de construire '%s' eșuată.\n"
+msgstr "Comanda de construire „%s” a eșuat.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Unable to get build-dependency information for %s"
-msgstr "Nu pot prelua informațiile despre dependențele înglobate ale lui %s"
+msgstr ""
+"Nu se pot obține informațiile despre dependențele de compilare pentru %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "%s has no build depends.\n"
-msgstr "%s nu are dependențe înglobate.\n"
+msgstr "%s nu are dependențe de compilare.\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
+"Nu sunt disponibile informații despre arhitectură pentru %s. Consultați "
+"apt.conf(5) „APT::Architectures” pentru configurare."
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
-"Trebuie specificat cel puțin un pachet pentru a-i verifica dependențele "
-"înglobate"
+"Trebuie să specificați cel puțin un pachet pentru a-i verifica dependențele "
+"de compilare"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"Operator nevalid „%c” la poziția %d, ați vrut să spuneți „%c%c” sau „%c=”? - "
+"în: %s"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid "Note, using directory '%s' to get the build dependencies\n"
 msgstr ""
+"Notă, se utilizează directorul „%s” pentru a obține dependențele de "
+"compilare\n"
 
 #: apt-private/private-source.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, using file '%s' to get the build dependencies\n"
-msgstr "Eșec la prelucrarea dependențelor de compilare"
+msgstr ""
+"Notă, se utilizează fișierul „%s” pentru a obține dependențele de compilare\n"
 
 #: apt-private/private-source.cc
 msgid "Failed to process build dependencies"
-msgstr "Eșec la prelucrarea dependențelor de compilare"
+msgstr "Eșec la procesarea dependențelor de compilare"
 
 #: apt-private/private-sources.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to parse %s. Edit again? "
-msgstr "Eșec la redenumirea lui %s în %s"
+msgstr "Nu s-a putut analiza %s. Editați din nou? "
 
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
+msgstr "Fișierul „%s” s-a modificat, executați «apt-get update».\n"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
 msgstr ""
 
 #: apt-private/private-unmet.cc
@@ -2440,7 +2840,7 @@ msgstr "Pachetul %s versiunea %s are o dependență neîndeplinită:\n"
 
 #: apt-private/private-update.cc
 msgid "The update command takes no arguments"
-msgstr "Comanda de actualizare nu are argumente"
+msgstr "Comanda de actualizare nu acceptă argumente"
 
 #. TRANSLATOR: the first two are manpage references, the last the URI from a sources.list
 #: apt-private/private-update.cc
@@ -2449,6 +2849,49 @@ msgid ""
 "Usage of %s should be preferred over embedding login information directly in "
 "the %s entry for '%s'"
 msgstr ""
+"Utilizarea lui %s ar trebui să fie preferată în locul încorporării "
+"informațiilor de autentificare direct în intrarea %s pentru „%s”."
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+# R-GC, scrie:
+# mesaj, tradus cu ajutorul lui
+# David Kalnischkies, actualul
+# menținător al lui „apt”.
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Lipsește opțiunea «Signed-By» din %s pentru „%s”"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Consultați pagina de manual apt-secure(8) pentru detalii privind crearea "
+"depozitului și configurarea utilizatorilor."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
 
 #: apt-private/private-update.cc
 #, c-format
@@ -2456,26 +2899,30 @@ msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
 msgid_plural ""
 "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
 msgstr[0] ""
+"%i pachet poate fi înnoit. Rulați «apt list --upgradable» pentru a-l vedea.\n"
 msgstr[1] ""
+"%i pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a-le "
+"vedea.\n"
 msgstr[2] ""
+"%i de pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a-le "
+"vedea.\n"
 
 #: apt-private/private-update.cc
 msgid "All packages are up to date."
-msgstr ""
+msgstr "Toate pachetele sunt la zi."
 
 #: cmdline/apt-cache.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s does not take any arguments"
-msgstr "Comanda de actualizare nu are argumente"
+msgstr "%s nu acceptă niciun argument"
 
 #: cmdline/apt-cache.cc
 msgid "Total package names: "
-msgstr "Total nume pachete : "
+msgstr "Total nume de pachete : "
 
 #: cmdline/apt-cache.cc
-#, fuzzy
 msgid "Total package structures: "
-msgstr "Total nume pachete : "
+msgstr "Total structuri de pachete : "
 
 #: cmdline/apt-cache.cc
 msgid "  Normal packages: "
@@ -2497,6 +2944,12 @@ msgstr "  Pachete virtuale mixte: "
 msgid "  Missing: "
 msgstr "  Lipsă: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Total versiuni distincte: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Total versiuni distincte: "
@@ -2519,23 +2972,25 @@ msgstr "Total relații desc/fișier: "
 
 #: cmdline/apt-cache.cc
 msgid "Total Provides mappings: "
-msgstr "Total cartări Furnizează: "
+msgstr "Total asocieri „Provides”: "
 
 #: cmdline/apt-cache.cc
 msgid "Total globbed strings: "
-msgstr "Total șiruri înglobate: "
+msgstr "Total șiruri globalizate (ce conțin caractere Jocker): "
 
 #: cmdline/apt-cache.cc
 msgid "Total slack space: "
-msgstr "Total spațiu intern: "
+msgstr "Total spațiu ocupat: "
 
 #: cmdline/apt-cache.cc
 msgid "Total space accounted for: "
-msgstr "Total spațiu contorizat pentru: "
+msgstr "Total spațiu contabilizat pentru: "
 
 #: cmdline/apt-cache.cc
 msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
 msgstr ""
+"Această comandă este depreciată. Utilizați în schimb comanda «apt-mark "
+"showauto»."
 
 #: cmdline/apt-cache.cc
 msgid ""
@@ -2549,26 +3004,37 @@ msgid ""
 "too long ago, but in exchange apt-cache works independently of the\n"
 "availability of the configured sources (e.g. offline).\n"
 msgstr ""
+"Utilizare: apt-cache [opțiuni] comanda\n"
+"       apt-cache [opțiuni] show pachet1 [pachet2 ...]\n"
+"\n"
+"«apt-cache» interoghează și afișează informațiile disponibile despre\n"
+"pachetele instalate și instalabile. Funcționează exclusiv pe baza\n"
+"datelor preluate în zona de prestocare(cache) locală prin intermediul\n"
+"comenzii „update” din «apt-get», de exemplu. Prin urmare, informațiile\n"
+"afișate pot fi învechite dacă ultima actualizare a fost efectuată cu\n"
+"prea mult timp în urmă, dar în schimb «apt-cache» funcționează independent\n"
+"de disponibilitatea surselor configurate (de exemplu, deconectat de la "
+"rețea).\n"
 
 #: cmdline/apt-cache.cc
 msgid "Show source records"
-msgstr "Arată înregistrările despre sursă"
+msgstr "Afișează înregistrările despre sursă"
 
 #: cmdline/apt-cache.cc
 msgid "Search the package list for a regex pattern"
-msgstr "Caută în lista de pachete folosind un șablon regex"
+msgstr "Caută în lista de pachete folosind un model de expresie regulată"
 
 #: cmdline/apt-cache.cc
 msgid "Show raw dependency information for a package"
-msgstr "Arată informații brute de dependențe pentru un pachet"
+msgstr "Afișează informații brute de dependență pentru un pachet"
 
 #: cmdline/apt-cache.cc
 msgid "Show reverse dependency information for a package"
-msgstr "Arată dependențele inverse pentru un pachet"
+msgstr "Afișează informațiile de dependență inversă pentru un pachet"
 
 #: cmdline/apt-cache.cc
 msgid "Show a readable record for the package"
-msgstr "Arată o înregistrare lizibilă pentru pachet"
+msgstr "Afișează descrierea pachetului"
 
 #: cmdline/apt-cache.cc
 msgid "List the names of all packages in the system"
@@ -2576,22 +3042,20 @@ msgstr "Afișează numele tuturor pachetelor din sistem"
 
 #: cmdline/apt-cache.cc
 msgid "Show policy settings"
-msgstr "Arată configurațiile de politici"
+msgstr "Afișeazăă configurațiile de politici"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy
 msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
-msgstr "Furnizați un nume pentru acest disc, de exemplu „Debian 2.1r1 Disk 1”"
+msgstr "Furnizați un nume pentru acest disc, de exemplu „Debian 5.0.3 Disk 1”"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy
 msgid "Please insert a Disc in the drive and press [Enter]"
-msgstr "Introduceți un disc în unitate și apăsați Enter"
+msgstr "Introduceți un disc în unitate și apăsați [Enter]"
 
 #: cmdline/apt-cdrom.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to mount '%s' to '%s'"
-msgstr "Eșec la redenumirea lui %s în %s"
+msgstr "Nu s-a putut monta „%s” pe „%s”"
 
 #: cmdline/apt-cdrom.cc
 msgid ""
@@ -2600,6 +3064,12 @@ msgid ""
 "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
 "mount point."
 msgstr ""
+"Niciun CD-ROM nu a putut fi detectat automat sau găsit utilizând punctul de "
+"montare implicit.\n"
+"Puteți încerca opțiunea „--cdrom” pentru a defini punctul de montare a CD-"
+"ROM-ului.\n"
+"Consultați «man apt-cdrom» pentru mai multe informații despre detectarea "
+"automată a CD-ROM-ului și punctul de montare."
 
 #: cmdline/apt-cdrom.cc
 msgid "Repeat this process for the rest of the CDs in your set."
@@ -2613,13 +3083,18 @@ msgid ""
 "media types as package sources to APT. The mount point and device\n"
 "information is taken from apt.conf(5), udev(7) and fstab(5).\n"
 msgstr ""
+"Utilizare: apt-cdrom [opțiuni] comanda\n"
+"\n"
+"Instrumentul «apt-cdrom» este utilizat pentru a adăuga CDROM-uri,\n"
+"unități flash USB și alte tipuri de suporturi amovibile ca surse\n"
+"de pachete pentru APT. Punctul de montare și informațiile despre\n"
+"dispozitiv sunt preluate din apt.conf(5), udev(7) și fstab(5).\n"
 
 #: cmdline/apt-config.cc
 msgid "Arguments not in pairs"
 msgstr "Argumentele nu sunt perechi"
 
 #: cmdline/apt-config.cc
-#, fuzzy
 msgid ""
 "Usage: apt-config [options] command\n"
 "\n"
@@ -2628,16 +3103,19 @@ msgid ""
 msgstr ""
 "Utilizare: apt-config [opțiuni] comanda\n"
 "\n"
-"apt-config este o unealtă simplă pentru citirea fișierului de configurare "
-"APT\n"
+"«apt-config» este o interfață către parametrii de configurare\n"
+"folosiți de către toate uneltele APT, destinată în principal\n"
+"pentru depanare și scripturi shell.\n"
 
 #: cmdline/apt-config.cc
 msgid "get configuration values via shell evaluation"
 msgstr ""
+"obține valorile de configurare prin intermediul evaluării făcute de către "
+"shell"
 
 #: cmdline/apt-config.cc
 msgid "show the active configuration setting"
-msgstr ""
+msgstr "afișează parametrii configurației active"
 
 #: cmdline/apt-dump-solver.cc
 msgid ""
@@ -2646,9 +3124,12 @@ msgid ""
 "apt-dump-solver is an interface to store an EDSP scenario in\n"
 "a file and optionally forwards it to another solver.\n"
 msgstr ""
+"Utilizare: apt-dump-solver\n"
+"\n"
+"«apt-dump-solver» este o interfață pentru a stoca un scenariu EDSP\n"
+"într-un fișier și, opțional, îl transmite unui alt soluționator.\n"
 
 #: cmdline/apt-extracttemplates.cc
-#, fuzzy
 msgid ""
 "Usage: apt-extracttemplates file1 [file2 ...]\n"
 "\n"
@@ -2658,26 +3139,22 @@ msgid ""
 msgstr ""
 "Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
 "\n"
-"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
-"de configurare și a șabloanelor dintr-un pachet Debian\n"
-"\n"
-"Opțiuni\n"
-"  -h   Acest text de ajutor.\n"
-"  -t   Impune directorul temporar\n"
-"  -c=? Citește acest fișier de configurare\n"
-"  -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+"«apt-extracttemplates» este utilizat pentru a extrage fișierele\n"
+"de configurare și șabloane din pachetele debian. Este utilizat\n"
+"în principal de debconf(1) pentru a solicita întrebări legate\n"
+"de configurare înainte de instalarea pachetelor.\n"
 
 #: cmdline/apt-extracttemplates.cc
 msgid "Cannot get debconf version. Is debconf installed?"
-msgstr "Nu s-a putut citi versiunea debconf. Este instalat debconf?"
+msgstr "Nu s-a putut obține versiunea de «debconf». Este «debconf» instalat?"
 
 #: cmdline/apt-get.cc
 #, c-format
 msgid "Couldn't find package %s"
-msgstr "Nu pot găsi pachetul %s"
+msgstr "Nu s-a putut găsi pachetul %s"
 
 #: cmdline/apt-get.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s set to automatically installed.\n"
 msgstr "%s este marcat ca fiind instalat manual.\n"
 
@@ -2686,18 +3163,18 @@ msgid ""
 "This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
 "instead."
 msgstr ""
+"Această comandă este depreciată. Vă rugăm să folosiți în schimb «apt-mark "
+"auto» și «apt-mark manual»."
 
 #: cmdline/apt-get.cc
 msgid "Internal error, problem resolver broke stuff"
-msgstr ""
-"Eroare internă, rezolvatorul de probleme a deteriorat diverse chestiuni"
+msgstr "Eroare internă, rezolvatorul de probleme a deteriorat diverse lucruri"
 
 #: cmdline/apt-get.cc
 msgid "Supported modules:"
-msgstr "Module suportate:"
+msgstr "Module incluse:"
 
 #: cmdline/apt-get.cc
-#, fuzzy
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -2712,13 +3189,14 @@ msgstr ""
 "           apt-get [opțiuni] install|remove pachet1 [pachet2 ...]\n"
 "           apt-get [opțiuni] source pachet1 [pachet2 ...]\n"
 "\n"
-"apt-get este o simplă interfață în linie de comandă pentru descărcarea și\n"
-"instalarea pachetelor. Cele mai frecvent folosite comenzi sunt update\n"
-"și install.\n"
+"«apt-get» este o interfață de linie de comandă pentru obținerea\n"
+"pachetelor și a informațiilor despre acestea din surse autentificate\n"
+"și pentru instalarea, actualizarea și eliminarea pachetelor împreună\n"
+"cu dependențele lor.\n"
 
 #: cmdline/apt-get.cc
 msgid "Retrieve new lists of packages"
-msgstr "Aduce listele noi de pachete"
+msgstr "Obține noile liste de pachete"
 
 #: cmdline/apt-get.cc
 msgid "Perform an upgrade"
@@ -2726,25 +3204,23 @@ msgstr "Realizează o înnoire"
 
 #: cmdline/apt-get.cc
 msgid "Install new packages (pkg is libc6 not libc6.deb)"
-msgstr "Instalează pachete noi (pachet este libc6, nu libc6.deb)"
+msgstr "Instalează pachete noi (pachet este „libc6”, nu „libc6.deb”)"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Instalează pachete noi (pachet este libc6, nu libc6.deb)"
+msgstr "Reinstalează pachete (pachet este „libc6”, nu „libc6.deb”)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
-msgstr "Șterge pachete"
+msgstr "Elimină pachete"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages and config files"
-msgstr "Șterge și curăță pachete"
+msgstr "Elimină pachetele și fișierele de configurare ale acestora"
 
 #: cmdline/apt-get.cc
 msgid "Remove automatically all unused packages"
-msgstr "Șterge automat toate pachetele nefolosite"
+msgstr "Elimină automat toate pachetele nefolosite"
 
 #: cmdline/apt-get.cc
 msgid "Distribution upgrade, see apt-get(8)"
@@ -2752,17 +3228,15 @@ msgstr "Înnoirea distribuției, a se vedea apt-get(8)"
 
 #: cmdline/apt-get.cc
 msgid "Follow dselect selections"
-msgstr "Urmează selecțiile dselect"
+msgstr "Urmează selecțiile «dselect»"
 
 #: cmdline/apt-get.cc
 msgid "Configure build-dependencies for source packages"
-msgstr "Configurează dependențele de compilare pentru pachetele-sursă"
+msgstr "Configurează dependențele de compilare pentru pachetele sursă"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Se construiește arborele de dependență"
+msgstr "Se efectuează operațiile pentru satisfacerea lanțurilor de dependențe"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
@@ -2770,7 +3244,7 @@ msgstr "Șterge fișierele-arhivă descărcate"
 
 #: cmdline/apt-get.cc
 msgid "Erase old downloaded archive files"
-msgstr "Șterge fișiere-arhivă descărcate învechite"
+msgstr "Șterge fișierele-arhivă descărcate învechite"
 
 #: cmdline/apt-get.cc
 msgid "Verify that there are no broken dependencies"
@@ -2778,33 +3252,32 @@ msgstr "Verifică dacă există dependențe neîndeplinite"
 
 #: cmdline/apt-get.cc
 msgid "Download source archives"
-msgstr "Descarcă pachete-sursă"
+msgstr "Descarcă pachetele-sursă"
 
 #: cmdline/apt-get.cc
 msgid "Download the binary package into the current directory"
-msgstr ""
+msgstr "Descarcă pachetul binar în directorul curent"
 
 #: cmdline/apt-get.cc
 msgid "Download and display the changelog for the given package"
-msgstr ""
+msgstr "Descarcă și afișează registrul de modificări pentru pachetul dat"
 
 #: cmdline/apt-helper.cc
 msgid "Need one URL as argument"
-msgstr ""
+msgstr "Necesită o adresă URL ca argument"
 
 #: cmdline/apt-helper.cc
-#, fuzzy
 msgid "Must specify at least one pair url/filename"
-msgstr "Trebuie specificat cel puțin un pachet pentru a-i aduce sursa"
+msgstr "Trebuie specificată cel puțin o pereche „adresă url/nume fișier”"
 
 #: cmdline/apt-helper.cc
 msgid "Download Failed"
-msgstr ""
+msgstr "Descărcarea a eșuat"
 
 #: cmdline/apt-helper.cc
 #, c-format
 msgid "GetSrvRec failed for %s"
-msgstr ""
+msgstr "GetSrvRec a eșuat pentru %s"
 
 #: cmdline/apt-helper.cc
 msgid ""
@@ -2815,37 +3288,49 @@ msgid ""
 "apt-helper bundles a variety of commands for shell scripts to use\n"
 "e.g. the same proxy configuration or acquire system as APT would.\n"
 msgstr ""
+"Utilizaree: apt-helper [opțiuni] comanda\n"
+"       apt-helper [opțiuni] cat-file fișier ...\n"
+"       apt-helper [opțiuni] download-file uri ruta-țintă\n"
+"\n"
+"«apt-helper» grupează o varietate de comenzi pentru ca scripturile shell\n"
+"să-le folosească, de exemplu, aceeași configurație de proxy sau să\n"
+"achiziționeze același sistem de configurare ca cel utilizat de APT.\n"
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
-msgstr ""
+msgstr "descarcă adresa uri dată în ruta-țintă"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
-msgstr ""
+msgstr "caută o înregistrare SRV (de ex. _http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
-msgstr ""
+msgstr "concatenează fișiere, cu decomprimare automată"
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problemă la calcularea sumei de control pentru fișierul"
 
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
-msgstr ""
+msgstr "detectează proxy-ul folosind apt.conf"
 
 #: cmdline/apt-helper.cc
 msgid "wait for system to be online"
-msgstr ""
+msgstr "așteaptă ca sistemul să fie conectat la rețea"
 
 #: cmdline/apt-helper.cc
 msgid "drop privileges before running given command"
-msgstr ""
+msgstr "renunță la privilegii înainte de a rula comanda dată"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "analizează un model"
 
 #: cmdline/apt-internal-planner.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-planner\n"
 "\n"
@@ -2853,19 +3338,13 @@ msgid ""
 "installation planner for the APT family like an external one,\n"
 "for debugging or the like.\n"
 msgstr ""
-"Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
+"Utilizare: apt-internal-planner\n"
 "\n"
-"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
-"de configurare și a șabloanelor dintr-un pachet Debian\n"
-"\n"
-"Opțiuni\n"
-"  -h   Acest text de ajutor.\n"
-"  -t   Impune directorul temporar\n"
-"  -c=? Citește acest fișier de configurare\n"
-"  -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+"«apt-internal-planner» este o interfață pentru a utiliza planificatorul\n"
+"intern de instalare curent pentru familia APT ca pe unul extern, pentru\n"
+"depanare sau altele asemenea.\n"
 
 #: cmdline/apt-internal-solver.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-solver\n"
 "\n"
@@ -2873,80 +3352,75 @@ msgid ""
 "resolver for the APT family like an external one, for debugging or\n"
 "the like.\n"
 msgstr ""
-"Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
+"Utilizare: apt-internal-solver\n"
 "\n"
-"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
-"de configurare și a șabloanelor dintr-un pachet Debian\n"
-"\n"
-"Opțiuni\n"
-"  -h   Acest text de ajutor.\n"
-"  -t   Impune directorul temporar\n"
-"  -c=? Citește acest fișier de configurare\n"
-"  -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+"«apt-internal-solver» este o interfață pentru a utiliza rezolvatorul\n"
+"intern curent pentru familia APT ca pe unul extern, pentru depanare\n"
+"sau altele asemenea.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s can not be marked as it is not installed.\n"
-msgstr "dar nu este instalat"
+msgstr "%s nu poate fi marcat deoarece nu este instalat.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set to manually installed.\n"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "%s a fost deja marcat ca fiind instalat manual.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set to automatically installed.\n"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "%s a fost deja marcat ca fiind instalat automat.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
-msgstr ""
+msgstr "Nu sunt necesare modificări"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "The following NEW packages will be installed:"
 msgid "The following packages will be marked as automatically installed:"
-msgstr "Următoarele pachete NOI vor fi instalate:"
+msgstr "Următoarele pachete vor fi marcate ca fiind instalate automat:"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already set on hold.\n"
-msgstr "%s este deja la cea mai nouă versiune.\n"
+msgstr "%s a fost deja marcat pentru păstrare, „hold”.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s was already not on hold.\n"
-msgstr "%s este deja la cea mai nouă versiune.\n"
+msgstr "%s a fost deja marcat pentru a numai fi păstrat.\n"
 
 #: cmdline/apt-mark.cc
 msgid "Executing dpkg failed. Are you root?"
-msgstr ""
+msgstr "Executarea programului «dpkg» a eșuat. Sunteți root?"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s set on hold.\n"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "%s marcat pentru păstrare, „hold”.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Canceled hold on %s.\n"
-msgstr "Eșec la „open” pentru %s"
+msgstr "S-a anulat păstrarea pentru %s.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for purge.\n"
 msgstr ""
+"%s a fost selectat pentru purjare (eliminare completă, inclusiv fișierele de "
+"configurare).\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for removal.\n"
-msgstr ""
+msgstr "%s a fost selectat pentru eliminare\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for installation.\n"
-msgstr ""
+msgstr "%s a fost selectat pentru instalare.\n"
 
 #: cmdline/apt-mark.cc
 msgid ""
@@ -2957,47 +3431,49 @@ msgid ""
 "manipulate the dpkg(1) selection states of packages, and to list\n"
 "all packages with or without a certain marking.\n"
 msgstr ""
+"Utilizare: apt-mark [opțiuni] {auto|manual} pachet1 [pachet2 ...]\n"
+"\n"
+"«apt-mark» este o simplă interfață de linie de comandă pentru a marca\n"
+"pachetele ca fiind instalate manual sau automat. De asemenea, poate fi\n"
+"utilizată pentru a manipula stările de selecție dpkg(1) ale pachetelor\n"
+"și pentru a lista toate pachetele cu sau fără o anumită marcare.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark the given packages as automatically installed"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "Marchează pachetele date ca fiind instalate automat"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark the given packages as manually installed"
-msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+msgstr "Marchează pachetele date ca fiind instalate manual"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Mark all dependencies of meta packages as automatically installed."
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr ""
+"Marchează toate dependențele meta-pachetelor ca fiind instalate automat."
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
-msgstr ""
+msgstr "Marchează un pachet ca fiind păstrat (din nou)"
 
 #: cmdline/apt-mark.cc
 msgid "Unset a package set as held back"
-msgstr ""
+msgstr "Demarchează un pachet marcat ca fiind păstrat (din nou)"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Print the list of automatically installed packages"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "Afișează lista pachetelor instalate automat"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid "Print the list of manually installed packages"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "Afișează lista pachetelor instalate manual"
 
 #: cmdline/apt-mark.cc
 msgid "Print the list of packages on hold"
-msgstr ""
+msgstr "Afișează lista pachetelor marcate pentru păstrare"
 
 #: cmdline/apt-sortpkgs.cc
 msgid "Unknown package record!"
-msgstr "ÃŽnregistrare de pachet necunoscut!"
+msgstr "Înregistrare de pachet necunoscută!"
 
 #: cmdline/apt-sortpkgs.cc
 msgid ""
@@ -3007,6 +3483,12 @@ msgid ""
 "By default it sorts by binary package information, but the -s option\n"
 "can be used to switch to source package ordering instead.\n"
 msgstr ""
+"Utilizare: apt-sortpkgs [opțiuni] fișier1 [fișier2 ...]\n"
+"\n"
+"«apt-sortpkgs» este un instrument simplu pentru a sorta fișierele cu\n"
+"informații despre pachete. În mod implicit, sortează în funcție de\n"
+"informațiile despre pachete binare, dar opțiunea „-s” poate fi utilizată\n"
+"pentru al face să treacă în schimb la ordonarea pachetelor sursă.\n"
 
 #: cmdline/apt.cc
 msgid ""
@@ -3018,92 +3500,91 @@ msgid ""
 "like apt-get and apt-cache, but enables options more suitable for\n"
 "interactive use by default.\n"
 msgstr ""
+"Utilizare: apt [opțiuni] comanda\n"
+"\n"
+"«apt» este un manager de pachete în linie de comandă și oferă comenzi\n"
+"pentru căutarea și gestionarea, precum și pentru interogarea informațiilor\n"
+"despre pachete.\n"
+"Oferă aceleași funcționalități ca și instrumentele specializate APT,\n"
+"cum ar fi «apt-get» și «apt-cache», dar activează în mod implicit\n"
+"opțiuni mai potrivite pentru utilizarea interactivă.\n"
 
 #. query
 #: cmdline/apt.cc
 msgid "list packages based on package names"
-msgstr ""
+msgstr "listează pachetele pe baza numelor pachetelor"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "search in package descriptions"
-msgstr "Citire liste de pachete"
+msgstr "caută în descrierile pachetelor"
 
 #: cmdline/apt.cc
 msgid "show package details"
-msgstr ""
+msgstr "afișează detalii despre pachet"
 
 #. package stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "install packages"
-msgstr "Pachete alese special:"
+msgstr "instalează pachete"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "reinstall packages"
-msgstr "Pachete alese special:"
+msgstr "reinstalează pachete"
 
 #: cmdline/apt.cc
-#, fuzzy
 msgid "remove packages"
-msgstr "Pachete deteriorate"
+msgstr "elimină pachete"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Șterge automat toate pachetele nefolosite"
+msgstr "elimină automat toate pachetele nefolosite"
 
 #. system wide stuff
 #: cmdline/apt.cc
-#, fuzzy
 msgid "update list of available packages"
-msgstr "%s este marcat ca fiind instalat manual.\n"
+msgstr "actualizează lista de pachete disponibile"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by installing/upgrading packages"
-msgstr ""
+msgstr "înnoiește sistemul prin instalarea/înnoirea pachetelor"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by removing/installing/upgrading packages"
-msgstr ""
+msgstr "înnoiește sistemul prin eliminarea/instalarea/înnoirea pachetelor"
 
 #. misc
 #: cmdline/apt.cc
-#, fuzzy
 msgid "edit the source information file"
-msgstr "Se citesc informațiile de stare"
+msgstr "editează fișierul cu informații despre surse"
+
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Failed to satisfy %s dependency for %s: %s"
 msgid "satisfy dependency strings"
-msgstr "Eșec la satisfacerea dependenței %s pentru %s: %s"
+msgstr "efectuează operațiile pentru satisfacerea lanțurilor de dependențe"
 
 #: dselect/install
 msgid "Bad default setting!"
 msgstr "Configurări implicite necorespunzătoare!"
 
 #: dselect/install dselect/update
-#, fuzzy
 msgid "Press [Enter] to continue."
-msgstr "Apăsați Enter pentru a continua."
+msgstr "Apăsați [Enter] pentru a continua."
 
 #: dselect/install
 msgid "Do you want to erase any previously downloaded .deb files?"
-msgstr "Doriți să ștergeți eventualele fișiere .deb descărcate anterior?"
+msgstr "Doriți să ștergeți orice fișier .deb descărcat anterior?"
 
 #: dselect/install
-#, fuzzy
 msgid "Some errors occurred while unpacking. Packages that were installed"
-msgstr "S-au produs unele erori în timpul despachetării. Se vor configura"
+msgstr ""
+"Au apărut unele erori în timpul despachetării. Pachete care au fost instalate"
 
 #: dselect/install
-#, fuzzy
 msgid "will be configured. This may result in duplicate errors"
-msgstr ""
-"pachetele care au fost instalate. Aceasta ar putea rezulta erori duplicate"
+msgstr "vor fi configurate. Acest lucru poate duce la erori duplicate"
 
 #: dselect/install
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
@@ -3113,8 +3594,8 @@ msgstr "sau erori cauzate de dependențe lipsă. Fiind normal, doar erorile de"
 msgid ""
 "above this message are important. Please fix them and run [I]nstall again"
 msgstr ""
-"deasupra acestui mesaj sunt importante. Corectați-le și reporniți "
-"[I]nstalarea"
+"deasupra acestui mesaj sunt importante. Corectați-le și rulați din nou "
+"[I]nstall"
 
 #: dselect/update
 msgid "Merging available information"
@@ -3127,7 +3608,7 @@ msgstr "Lista de extensii pentru pachet este prea lungă"
 #: ftparchive/apt-ftparchive.cc
 #, c-format
 msgid "Error processing directory %s"
-msgstr "Eroare la prelucrarea directorului %s"
+msgstr "Eroare la procesarea directorului %s"
 
 #: ftparchive/apt-ftparchive.cc
 msgid "Source extension list is too long"
@@ -3140,7 +3621,7 @@ msgstr "Eroare la scrierea antetului în fișierul index"
 #: ftparchive/apt-ftparchive.cc
 #, c-format
 msgid "Error processing contents %s"
-msgstr "Eroare la prelucrarea conținutului %s"
+msgstr "Eroare la procesarea conținutului %s"
 
 #: ftparchive/apt-ftparchive.cc
 msgid ""
@@ -3184,35 +3665,35 @@ msgid ""
 "  -o=?  Set an arbitrary configuration option"
 msgstr ""
 "Utilizare: apt-ftparchive [opțiuni] comanda\n"
-"Comenzi: packages cale_binare [fișier_înlocuire [prefix_cale]]\n"
-"          sources cale_src [fișier_înlocuire [prefix_cale]]\n"
-"          contents cale\n"
-"          release cale\n"
+"Comenzi: packages ruta_binare [fișier_înlocuire [prefix_rută]]\n"
+"          sources ruta_surse [fișier_înlocuire [prefix_rută]]\n"
+"          contents ruta\n"
+"          release ruta\n"
 "          generate config [grupuri]\n"
 "          clean config\n"
 "\n"
-"apt-ftparchive generează fișiere de indexare pentru arhivele Debian. "
+"«apt-ftparchive» generează fișiere de indexare pentru arhivele Debian. "
 "Suportă\n"
 "multe stiluri de generare de la complet automat la înlocuiri funcționale\n"
-"pentru dpkg-scanpackage și dpkg-scansources\n"
+"pentru «dpkg-scanpackage» și «dpkg-scansources»\n"
 "\n"
-"apt-ftparchive generează fișierele Package dintr-un arbore de .deb-uri.\n"
-"Fișierul Pachet înglobează conținutul tuturor câmpurilor de control din "
+"«apt-ftparchive» generează fișierele Package dintr-un arbore de .deb-uri.\n"
+"Fișierul Package înglobează conținutul tuturor câmpurilor de control din "
 "fiecare\n"
-"pachet cât și MD5 hash și dimensiunea fișierului. Un fișier de înlocuire "
-"este\n"
-"furnizat pentru a forța valoarea Priorității și Secțiunii.\n"
-"\n"
-"În mod asemănator apt-ftparchive generează fișierele Sources dintr-un arbore "
-"de .dsc-uri.\n"
-"Opțiunea --source-override poate fi folosită pentru a specifica fișierul de "
+"pachet cât și suma de control MD5 și dimensiunea fișierului. Un fișier de "
 "înlocuire\n"
+"este furnizat pentru a forța valoarea Priorității și Secțiunii.\n"
 "\n"
-"Comenzile 'packages' și 'sources' ar trebui executate în rădăcina "
+"În mod asemănător «apt-ftparchive» generează fișierele Sources dintr-un "
+"arbore de .dsc-uri.\n"
+"Opțiunea „--source-override” poate fi folosită pentru a specifica fișierul "
+"de înlocuire\n"
+"\n"
+"Comenzile „packages” și „sources” ar trebui executate în rădăcina "
 "arborelui.\n"
-"Cale_binare ar trebui să indice baza căutării recursive și fișierul de "
+"Ruta_binare ar trebui să indice baza căutării recursive și fișierul de "
 "înlocuire ar\n"
-"trebui să conțină semnalizatorul de înlocuire. Prefix_cale este adăugat "
+"trebui să conțină semnalizatorul de înlocuire. Prefix_rută este adăugat "
 "câmpului\n"
 "de nume fișier dacă acesta este prezent. Exemplu de utilizare din arhiva\n"
 "Debian:\n"
@@ -3220,15 +3701,15 @@ msgstr ""
 "               dists/potato/main/binary-i386/Packages\n"
 "\n"
 "Opțiuni:\n"
-"  -h   Acest text de ajutor.\n"
-"  --md5 Generarea controlului MD5\n"
+"  -h   Acest mesaj de ajutor.\n"
+"  --md5 Generarea sumelor de control MD5\n"
 "  -s=?  Fișierul de înlocuire pentru surse\n"
-"  -q    În liniște\n"
+"  -q    Lucrează silențios\n"
 "  -d=?  Selectează baza de date de cache opțională\n"
 "  --no-delink Activează modul de depanare dezlegare\n"
 "  --contents  Generarea fișierului cu sumarul de control\n"
 "  -c=? Citește acest fișier de configurare\n"
-"  -o=? Ajustează o opțiune de configurare arbitrară"
+"  -o=? Definește o opțiune de configurare arbitrară"
 
 #: ftparchive/apt-ftparchive.cc
 msgid "No selections matched"
@@ -3237,36 +3718,34 @@ msgstr "Nu s-a potrivit nici o selecție"
 #: ftparchive/apt-ftparchive.cc
 #, c-format
 msgid "Some files are missing in the package file group `%s'"
-msgstr "Unele fișiere lipsesc din grupul fișierului pachet '%s'"
+msgstr "Unele fișiere lipsesc din grupul de fișiere pachet „%s”"
 
 #: ftparchive/cachedb.cc
 #, c-format
 msgid "DB was corrupted, file renamed to %s.old"
-msgstr "DB a fost corupt, fișierul a fost redenumit %s.old"
+msgstr "Baza de date a fost coruptă, fișierul a fost redenumit la %s.old"
 
 #: ftparchive/cachedb.cc
 #, c-format
 msgid "DB is old, attempting to upgrade %s"
-msgstr "DB este vechi, se încearcă înnoirea %s"
+msgstr "Baza de date este veche se încearcă înnoirea %s"
 
 #: ftparchive/cachedb.cc
-#, fuzzy
 msgid ""
 "DB format is invalid. If you upgraded from an older version of apt, please "
 "remove and re-create the database."
 msgstr ""
-"Formatul DB este nevalid. Dacă l-ați înnoit pe apt de la o versiune mai "
-"veche, ștergeți și recreați baza de date."
+"Formatul bazei de date nu este valid. Dacă ați făcut înnoirea de la o "
+"versiune mai veche de «apt», eliminați și recreați baza de date."
 
 #: ftparchive/cachedb.cc
 #, c-format
 msgid "Unable to open DB file %s: %s"
-msgstr "Nu s-a putut deschide fișierul DB %s: %s"
+msgstr "Nu s-a putut deschide fișierul bazei de date %s: %s"
 
 #: ftparchive/cachedb.cc
-#, fuzzy
 msgid "Failed to read .dsc"
-msgstr "Eșec la „readlink” pentru %s"
+msgstr "Eșec la citirea fișierului .dsc"
 
 #: ftparchive/cachedb.cc
 msgid "Archive has no control record"
@@ -3283,20 +3762,20 @@ msgstr "realloc - Eșec la alocarea memoriei"
 #: ftparchive/multicompress.cc
 #, c-format
 msgid "Unknown compression algorithm '%s'"
-msgstr "Algoritm de compresie necunoscut '%s'"
+msgstr "Algoritm de comprimare necunoscut „%s”"
 
 #: ftparchive/multicompress.cc
 #, c-format
 msgid "Compressed output %s needs a compression set"
-msgstr "Rezultatul comprimat %s are nevoie de o ajustare a compresiei"
+msgstr "Rezultatul comprimat %s are nevoie de o ajustare a comprimării"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
-msgstr "Eșec la crearea conexiunii IPC către subproces"
+msgstr "Eșec la crearea conductei IPC către subproces"
 
 #: ftparchive/multicompress.cc
 msgid "Failed to fork"
-msgstr "Eșec la „fork”"
+msgstr "Eșec la bifurcare"
 
 #: ftparchive/multicompress.cc
 msgid "Compress child"
@@ -3309,11 +3788,11 @@ msgstr "Eroare internă, eșec la crearea lui %s"
 
 #: ftparchive/multicompress.cc
 msgid "IO to subprocess/file failed"
-msgstr "IE către subproces/fișier eșuat"
+msgstr "In/Ieș către subproces/fișier a eșuat"
 
 #: ftparchive/multicompress.cc
 msgid "Failed to read while computing MD5"
-msgstr "Eșec la citire în timpul calculului sumei MD5"
+msgstr "Eșec la citire în timpul calculării sumei de control MD5"
 
 #: ftparchive/multicompress.cc
 #, c-format
@@ -3328,56 +3807,56 @@ msgstr "Nu s-a putut deschide %s"
 #. skip spaces
 #. find end of word
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu (%s)"
-msgstr "Înlocuire greșită %s linia %lu #1"
+msgstr "Intrare „override” incorectă %s linia %llu (%s)"
 
 #: ftparchive/override.cc
 #, c-format
 msgid "Failed to read the override file %s"
-msgstr "Eșec la citirea fișierului de înlocuire a permisiunilor %s"
+msgstr "Nu s-a putut citi fișierul  „override” %s"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #1"
-msgstr "Înlocuire greșită %s linia %lu #1"
+msgstr "Intrare „override” incorectă %s linia %llu #1"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #2"
-msgstr "Înlocuire greșită %s linia %lu #2"
+msgstr "Intrare „override” incorectă %s linia %llu #2"
 
 #: ftparchive/override.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed override %s line %llu #3"
-msgstr "Înlocuire greșită %s linia %lu #3"
+msgstr "Intrare „override” incorectă %s linia %llu #3"
 
 #: ftparchive/writer.cc
 #, c-format
 msgid "W: Unable to read directory %s\n"
-msgstr "A: Nu s-a putut citi directorul %s\n"
+msgstr "Aviz: Nu s-a putut citi directorul %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
 msgid "W: Unable to stat %s\n"
-msgstr "A: Nu s-a putut efectua „stat” pentru %s\n"
+msgstr "Aviz: Nu s-a putut obține starea pentru %s\n"
 
 #: ftparchive/writer.cc
 msgid "E: "
-msgstr "E: "
+msgstr "Eroare: "
 
 #: ftparchive/writer.cc
 msgid "W: "
-msgstr "A: "
+msgstr "Aviz: "
 
 #: ftparchive/writer.cc
 msgid "E: Errors apply to file "
-msgstr "E: Erori la fișierul "
+msgstr "Eroare: Erorile se aplică fișierului "
 
 #: ftparchive/writer.cc
 #, c-format
 msgid "Failed to resolve %s"
-msgstr "Eșec la „resolve” pentru %s"
+msgstr "Nu s-a putut rezolva %s"
 
 #: ftparchive/writer.cc
 msgid "Tree walking failed"
@@ -3386,7 +3865,7 @@ msgstr "Parcurgerea arborelui a eșuat"
 #: ftparchive/writer.cc
 #, c-format
 msgid "Failed to open %s"
-msgstr "Eșec la „open” pentru %s"
+msgstr "Nu s-a putut deschide %s"
 
 #: ftparchive/writer.cc
 #, c-format
@@ -3396,12 +3875,12 @@ msgstr " Dezlegare %s [%s]\n"
 #: ftparchive/writer.cc
 #, c-format
 msgid "*** Failed to link %s to %s"
-msgstr "*** Eșec la „link” între %s și %s"
+msgstr "*** Nu s-a putut face legătura între %s și %s"
 
 #: ftparchive/writer.cc
 #, c-format
 msgid " DeLink limit of %sB hit.\n"
-msgstr " Limita de %sB a dezlegării a fost atinsă.\n"
+msgstr " Limita de %so a dezlegării a fost atinsă.\n"
 
 #: ftparchive/writer.cc
 msgid "Archive had no package field"
@@ -3409,23 +3888,23 @@ msgstr "Arhiva nu are câmp de pachet"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s nu are intrare de înlocuire\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s nu are intrare „override”\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s responsabil este %s nu %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s responsabil este %.*s nu %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s nu are nici o intrare sursă de înlocuire\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s nu are nici o intrare „source override”\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s nu are nici intrare binară de înlocuire\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s nu are nici intrare „binary override”\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3441,19 +3920,19 @@ msgstr "Linie de antet necorespunzătoare"
 
 #: methods/basehttp.cc
 msgid "The HTTP server sent an invalid Content-Length header"
-msgstr "Serverul HTTP a trimis un antet Content-Length necorespunzător"
+msgstr "Serverul HTTP a trimis un antet „Content-Length” necorespunzător"
 
 #: methods/basehttp.cc
 msgid "The HTTP server sent an invalid Content-Range header"
-msgstr "Serverul HTTP a trimis un antet zonă de conținut necorespunzător"
+msgstr "Serverul HTTP a trimis un antet „Content-Range” necorespunzător"
 
 #: methods/basehttp.cc
 msgid "This HTTP server has broken range support"
-msgstr "Acest server HTTP are un suport defect de intervale"
+msgstr "Acest server HTTP are suportul de interval defect"
 
 #: methods/basehttp.cc
 msgid "Unknown date format"
-msgstr "Format dată necunoscut"
+msgstr "Format de dată necunoscut"
 
 #: methods/basehttp.cc
 msgid "Bad header data"
@@ -3463,10 +3942,12 @@ msgstr "Antet de date necorespunzător"
 msgid "Connection failed"
 msgstr "Conectare eșuată"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
+"Fișierul are o dimensiune neașteptată (%llu != %llu). Sincronizarea oglinzii "
+"este în curs?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3474,6 +3955,8 @@ msgid ""
 "Automatically disabled %s due to incorrect response from server/proxy. (man "
 "5 apt.conf)"
 msgstr ""
+"S-a dezactivat automat %s din cauza unui răspuns incorect de la server/"
+"proxy. (man 5 apt.conf)"
 
 #: methods/basehttp.cc
 msgid "Internal error"
@@ -3482,15 +3965,16 @@ msgstr "Eroare internă"
 #: methods/cdrom.cc
 #, c-format
 msgid "Unable to read the cdrom database %s"
-msgstr "Nu s-a putut citi baza de date de CD %s"
+msgstr "Nu s-a putut citi baza de date de pe cdrom-ul %s"
 
 #: methods/cdrom.cc
 msgid ""
 "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
 "cannot be used to add new CD-ROMs"
 msgstr ""
-"Folosiți apt-cdrom pentru a-l face pe APT să recunoască acest CD. „apt-get "
-"update” nu poate fi folosit pentru adăugarea de noi CD-uri"
+"Folosiți «apt-cdrom» pentru a face ca acest CD-ROM să fie recunoscut de "
+"către APT. «apt-get update» nu poate fi folosit pentru a adăuga noi CD-ROM-"
+"uri."
 
 #: methods/cdrom.cc
 msgid "Wrong CD-ROM"
@@ -3499,13 +3983,15 @@ msgstr "CD-ROM necorespunzător"
 #: methods/cdrom.cc
 #, c-format
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
-msgstr "Nu se poate demonta CD-ul din %s, poate este încă utilizat."
+msgstr ""
+"Nu se poate demonta CD-ROM-ul din %s, este posibil ca acesta să fie încă în "
+"uz."
 
 #: methods/cdrom.cc
 msgid "Disk not found."
 msgstr "Disc negăsit."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Fișier negăsit"
 
@@ -3513,7 +3999,7 @@ msgstr "Fișier negăsit"
 #: methods/connect.cc
 #, c-format
 msgid "Direct connection to %s domains is blocked by default."
-msgstr ""
+msgstr "Conexiunea directă la domeniile %s este blocată în mod implicit."
 
 #: methods/connect.cc
 #, c-format
@@ -3521,10 +4007,9 @@ msgid "[IP: %s %s]"
 msgstr "[IP: %s %s]"
 
 #: methods/connect.cc
-#, fuzzy, c-format
-#| msgid "Connecting to %s (%s)"
+#, c-format
 msgid "Connected to %s (%s)"
-msgstr "Conectare la %s (%s)"
+msgstr "Conectat la %s (%s)"
 
 #: methods/connect.cc methods/http.cc
 #, c-format
@@ -3534,14 +4019,14 @@ msgstr "Conectare la %s (%s)"
 #: methods/connect.cc
 #, c-format
 msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
-msgstr "Nu s-a putut crea un socket pentru %s (f=%u t=%u p=%u)"
+msgstr "Nu s-a putut crea un soclu pentru %s (f=%u t=%u p=%u)"
 
 #: methods/connect.cc
 #, c-format
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Nu s-a putut iniția conexiunea cu %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Eșec"
 
@@ -3556,9 +4041,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 "Nu s-a putut realiza conexiunea cu %s:%s (%s), timpul de conectare expirat"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Conectare la %s"
@@ -3571,171 +4054,40 @@ msgstr "Nu s-a putut rezolva „%s”"
 #: methods/connect.cc
 #, c-format
 msgid "Temporary failure resolving '%s'"
-msgstr "Eșec temporar la rezolvarea lui „%s”"
+msgstr "Eșec temporar la rezolvarea „%s”"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "System error resolving '%s:%s'"
-msgstr "S-a întâmplat ceva „necurat” la rezolvarea lui „%s:%s” (%i)"
+msgstr "Eroare de sistem la rezolvarea „%s:%s”"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
-msgstr "S-a întâmplat ceva „necurat” la rezolvarea lui „%s:%s” (%i)"
+msgstr "S-a întâmplat ceva „necurat” la rezolvarea lui „%s:%s” (%i - %s)"
 
 #: methods/connect.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to connect to %s:%s:"
-msgstr "Nu s-a putut realiza conexiunea cu %s %s:"
+msgstr "Nu s-a putut realiza conectarea la %s:%s:"
 
 #: methods/copy.cc
 msgid "Failed to stat"
-msgstr "Eșec la „stat”"
+msgstr "Nu s-au putut obține atributele (executarea stat() a eșuat)"
 
 #: methods/file.cc
 msgid "Invalid URI, local URIS must not start with //"
-msgstr "URI invalid, URI-uile locale trebuie să nu înceapă cu //"
-
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Se autentifică"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nu se poate detecta numele perechii"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nu s-a putut detecta numele local"
+msgstr "Adresă URI nevalidă, adresele URI locale nu trebuie să înceapă cu //"
 
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Serverul a refuzat conexiunea și a spus: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "„USER” a eșuat, serverul a spus: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "„PASS” a eșuat, serverul a spus: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Un server proxy a fost precizat, dar nu există nici un script de conectare, "
-"Acquire::ftp::ProxyLogin este gol."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Scriptul „%s” cu comenzile de conectare a eșuat, serverul a spus: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "„TYPE” a eșuat, serverul a spus: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Timpul de conectare a expirat"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Serverul a închis conexiunea"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Un răspuns a depășit zona de tampon."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protocol corupt"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nu s-a putut crea un socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-"Nu s-a putut realiza conectarea la socket-ul de date, timpul de conectare a "
-"expirat"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nu s-a putut realiza conectarea la un socket pasiv"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "„getaddrinfo” n-a reușit să obțină un socket de ascultare"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nu s-a putut realiza asocierea la un socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Nu s-a putut asculta pe socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Nu s-a putut detecta numele socket-ului"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Nu s-a putut trimite comanda PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Familie de adrese necunoscută %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "„EPRT” a eșuat, serverul a spus: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Timpul de conectare la socket-ul de date expirat"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Nu s-a putut accepta conexiune"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problemă la calcularea dispersiei pentru fișierul"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Nu s-a putut aduce fișierul, serverul a spus „%s”"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Timp expirat pentru socket-ul de date"
+msgid "untrusted public key algorithm: %s"
+msgstr "algoritm de cheie publică nesigur (nu este de încredere): %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Transferul de date a eșuat, serverul a spus: '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Interogare"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nu s-a putut invoca"
+msgid "%s will be deprecated in a future release"
+msgstr "%s va fi depreciat într-o versiune viitoare"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3743,6 +4095,8 @@ msgstr "Nu s-a putut invoca"
 msgid ""
 "Signed file isn't valid, got '%s' (does the network require authentication?)"
 msgstr ""
+"Fișierul semnat nu este valid, a primit „%s” (rețeaua necesită "
+"autentificare?)."
 
 #: methods/gpgv.cc
 msgid "At least one invalid signature was encountered."
@@ -3753,31 +4107,29 @@ msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
 "Eroare internă: Semnătură corespunzătoare, dar nu s-a putut determina "
-"amprenta digitale a cheii?!"
+"amprenta digitală a cheii?!"
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
-"Nu s-a putut executa „%s” pentru verificarea semnăturii (gnupg este "
+"Nu s-a putut executa «apt-key» pentru verificarea semnăturii («gnupg» este "
 "instalat?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "Eroare necunoscută în timp ce se execută apt-key"
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
+msgstr "Eroare necunoscută în timp ce se executa «apt-key»"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
+"Semnătura cu cheia %s utilizează un algoritm de sumă de control slab (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3812,17 +4164,157 @@ msgstr "Selecția a eșuat"
 msgid "Connection timed out"
 msgstr "Timp de conectare expirat"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problemă la calcularea sumei de control pentru fișierul"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Eșec la ajustarea timpului de modificare"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Conexiune închisă prematur"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
-msgstr ""
+msgstr "Fișierele goale nu pot fi arhive valide"
+
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "Cheia este stocată în trusted.gpg keyring (%s), consultați secțiunea "
+#~ "DEPRECATION din apt-key(8) pentru detalii."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Metoda „%s” nu este acceptată și este dezactivată în mod implicit. Luați "
+#~ "în considerare trecerea la http(s). Configurați Dir::Bin::Methods::%s la "
+#~ "„%s” pentru a o activa din nou."
+
+#~ msgid "Logging in"
+#~ msgstr "Autentificare în curs"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nu se poate determina numele mașinii de la distanță"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nu s-a putut detecta numele local"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Serverul a refuzat conexiunea și a răspuns: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "„USER” a eșuat, serverul a răspuns: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "„PASS” a eșuat, serverul a răspuns: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Un server proxy a fost precizat, dar nu există nici un script de "
+#~ "conectare, valoarea opțiunii „Acquire::ftp::ProxyLogin” este goală."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Comanda scriptului de autentificare „%s” a eșuat, serverul a răspuns: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "„TYPE” a eșuat, serverul a răspuns: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Timpul de conectare a expirat"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Serverul a închis conexiunea"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Un răspuns a depășit zona memoriei tampon."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protocol corupt"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Nu s-a putut crea un soclu"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Nu s-a putut realiza conectarea la soclul de date, timpul de conectare a "
+#~ "expirat"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nu s-a putut realiza conectarea la un soclu pasiv."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo() n-a reușit să obțină un soclu de ascultare"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nu s-a putut realiza asocierea la un soclu"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Nu s-a putut asculta pe soclu"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Nu s-a putut detecta numele soclului"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Nu s-a putut trimite comanda PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Familie de adrese necunoscută %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Comanda „EPRT” a eșuat, serverul a răspuns: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Timpul de conectare la soclul de date a expirat"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Nu s-a putut accepta conexiunea"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Nu s-a putut aduce fișierul, serverul a răspuns „%s”"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Timp expirat pentru soclul de date"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Transferul de date a eșuat, serverul a răspuns: „%s”"
+
+#~ msgid "Query"
+#~ msgstr "Interogare"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Nu s-a putut invoca "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Conexiune închisă prematur"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Instalat: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Următoarele pachete ținute vor fi schimbate:"
 
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Da, fă cum îți spun!"
diff --git a/po/ru.po b/po/ru.po
index 1c06c7b..7a0cbc4 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -12,21 +12,21 @@
 # Yuri Kozlov <kozlov.y@gmail.com>, 2004, 2005, 2006, 2007, 2008.
 # Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012, 2015, 2016.
 # Lev Lamberov <dogsleg@debian.org>, 2018.
-# Алексей Шилин <rootlexx@mail.ru>, 2017-2021.
+# Алексей Шилин <shilin.aleksej@gmail.com>, 2017-2024.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.2.0\n"
+"Project-Id-Version: apt 2.9.11\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2021-02-22 20:02+0300\n"
-"Last-Translator: Алексей Шилин <rootlexx@mail.ru>\n"
-"Language-Team: русский <debian-l10n-russian@lists.debian.org>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2024-11-18 23:14+0300\n"
+"Last-Translator: Алексей Шилин <shilin.aleksej@gmail.com>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Gtranslator 3.30.1\n"
+"X-Generator: Gtranslator 42.0\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
 
@@ -66,11 +66,11 @@ msgstr "Репозиторий «%s» больше не содержит фай
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Обычно это не разрешается, однако указан параметр Acquire::"
-"AllowDowngradeToInsecureRepositories для продолжения."
+"Обычно это не разрешается, однако указан параметр "
+"Acquire::AllowDowngradeToInsecureRepositories для продолжения."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -154,8 +154,8 @@ msgid ""
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
 "Пропускается получение настроенного файла «%s», так как в репозитории «%s» "
-"отсутствует компонент «%s» (возможно, компонент указан с ошибкой в sources."
-"list?)"
+"отсутствует компонент «%s» (возможно, компонент указан с ошибкой в "
+"sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -213,8 +213,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Противоречивый выпуск: %s (ожидался %s, но получен %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "Репозиторий «%s» изменил значение поля «%s» с «%s» на «%s»"
@@ -226,7 +225,7 @@ msgstr ""
 "Репозиторий «%s» изменил свой приоритет по умолчанию для %s с %hi на %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -249,6 +248,15 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Не удалось получить %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Репозитории должны предоставлять незашифрованный подписанный файл InRelease, "
+"однако он не найден в %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -269,16 +277,6 @@ msgstr "Невозможно найти источник для загрузки
 msgid "Changelog unavailable for %s=%s"
 msgstr "Журнал изменений для %s=%s недоступен"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"Метод «%s» не поддерживается и по умолчанию отключён. Рассмотрите "
-"возможность перехода на использование http(s). Чтобы включить его снова, "
-"установите параметр Dir::Bin::Methods::%s в значение «%s»."
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -688,6 +686,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Синтаксическая ошибка %s:%u: лишние символы в конце файла"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Ошибка:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Предупреждение:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Уведомление:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Аудит:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Отладка:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -804,11 +826,11 @@ msgstr "Порождённый процесс %s вернул код ошибк
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Порождённый процесс %s неожиданно завершился"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Ошибка чтения"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Ошибка записи"
 
@@ -1133,6 +1155,12 @@ msgstr ""
 msgid "Not locked"
 msgstr "Не заблокирован"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1323,6 +1351,14 @@ msgstr "Подготовка к приёму решения"
 msgid "External solver failed without a proper error message"
 msgstr "Внешний решатель завершился с ошибкой, не передав сообщения об ошибке"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Расчёт обновлений"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "Разрешение зависимостей"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Выполнение внешнего решателя"
@@ -1637,10 +1673,6 @@ msgstr ""
 "Некоторые индексные файлы скачать не удалось. Они были проигнорированы, или "
 "вместо них были использованы старые версии."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Расчёт обновлений"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1916,6 +1948,20 @@ msgstr "Следующая информация, возможно, вам пом
 msgid "Broken packages"
 msgstr "Сломанные пакеты"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Необъединённый usr более не поддерживается, воспользуйтесь usrmerge для "
+"перехода к системе с объединённым usr."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "См. %s для получения дополнительной информации."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1961,7 +2007,12 @@ msgstr "Внутренняя ошибка: упорядочение пакето
 
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
-msgstr "Странно. Несовпадение размеров, напишите на apt@packages.debian.org"
+msgstr "Странно… Несовпадение размеров, напишите на apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Объём загрузки: %sB / %sB\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1970,6 +2021,11 @@ msgstr "Странно. Несовпадение размеров, напиши
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Необходимо скачать %sB/%sB архивов.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Объём загрузки: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1977,8 +2033,6 @@ msgstr "Необходимо скачать %sB/%sB архивов.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Необходимо скачать %sB архивов.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
@@ -1986,6 +2040,54 @@ msgstr ""
 "После данной операции объём занятого дискового пространства возрастёт на "
 "%sB.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Требуемое пространство: %sB / %sB доступно\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Требуется больше дискового пространства, чем доступно: %sB > %sB, установка "
+"может завершиться с ошибкой"
+
+# "Лишние" пробелы служат для выравнивания с выводимым выше сообщением.
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "в %s:             %sB / %sB доступно\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"В %s требуется больше дискового пространства, чем доступно: %sB > %sB, "
+"установка может завершиться с ошибкой"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Требуемое пространство: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Освобождаемое пространство: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -2006,6 +2108,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"Удаление критически важных для системы пакетов запрещено. Это может привести "
+"к поломке системы."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Всё равно продолжить?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Продолжить?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -2072,6 +2184,14 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Внутренняя ошибка: AutoRemover всё поломал"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Для его удаления используйте «%s»."
+msgstr[1] "Для их удаления используйте «%s»."
+msgstr[2] "Для их удаления используйте «%s»."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2093,18 +2213,6 @@ msgstr[0] "%lu пакет был установлен автоматически
 msgstr[1] "%lu пакета было установлено автоматически и больше не требуется.\n"
 msgstr[2] "%lu пакетов было установлено автоматически и больше не требуется.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Для его удаления используйте «%s»."
-msgstr[1] "Для их удаления используйте «%s»."
-msgstr[2] "Для их удаления используйте «%s»."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Будут установлены следующие дополнительные пакеты:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Предлагаемые пакеты:"
@@ -2113,6 +2221,10 @@ msgstr "Предлагаемые пакеты:"
 msgid "Recommended packages:"
 msgstr "Рекомендуемые пакеты:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Будут установлены следующие дополнительные пакеты:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2244,14 +2356,43 @@ msgstr " или"
 msgid "The following packages have unmet dependencies:"
 msgstr "Следующие пакеты имеют неудовлетворённые зависимости:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Неудовлетворённые зависимости:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Следующие НОВЫЕ пакеты будут установлены:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Установка:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Установка зависимостей:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "УДАЛЕНИЕ:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Следующие пакеты будут УДАЛЕНЫ:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr ""
+"Обновление следующих пакетов отложено из-за поэтапного распространения:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Обновление отложено из-за поэтапного распространения:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Пропуск обновления:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Следующие пакеты будут оставлены в неизменном виде:"
@@ -2260,10 +2401,22 @@ msgstr "Следующие пакеты будут оставлены в неи
 msgid "The following packages will be upgraded:"
 msgstr "Следующие пакеты будут обновлены:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Обновление:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "Замена на СТАРЫЕ версии:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Следующие пакеты будут заменены на СТАРЫЕ версии:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Изменение зафиксированных пакетов:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Следующие зафиксированные пакеты будут изменены:"
@@ -2281,26 +2434,50 @@ msgstr ""
 "ВНИМАНИЕ: Следующие пакеты первой необходимости будут удалены.\n"
 "НЕ ДЕЛАЙТЕ этого, если вы НЕ представляете себе все возможные последствия!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Сводка:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "Обновлено %lu пакетов, установлено %lu новых пакетов, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Обновление: %lu, Установка: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "переустановлено %lu пакетов, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Переустановка: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu пакетов заменено на старые версии, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Замена на старые версии: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "для удаления отмечено %lu пакетов, и %lu пакетов не обновлено.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Удаление: %lu, Пропуск обновления: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2328,7 +2505,7 @@ msgid "Y"
 msgstr "Д"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "Н"
 
@@ -2509,11 +2686,11 @@ msgstr "%s не имеет сборочных зависимостей.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Отсутствует информация об архитектуре %s. Для её настройки смотрите apt."
-"conf(5) об APT::Architectures"
+"Отсутствует информация об архитектуре %s. Для её настройки смотрите "
+"apt.conf(5) об APT::Architectures"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2554,6 +2731,11 @@ msgstr "Не удалось разобрать содержимое %s. Повт
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Файл «%s» изменён, запустите «apt-get update».\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2573,6 +2755,43 @@ msgstr ""
 "Использование %s предпочтительнее, чем встраивание данных для входа "
 "непосредственно в запись %s для «%s»"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Отсутствует поле Signed-By в записи %s для '%s'"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Информацию о создании репозитория и настройках пользователя смотрите в "
+"справочной странице apt-secure(8)."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2624,6 +2843,12 @@ msgstr "  Смешанных виртуальных пакетов: "
 msgid "  Missing: "
 msgstr "  Отсутствует: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Всего уникальных версий: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Всего уникальных версий: "
@@ -2873,14 +3098,14 @@ msgstr "выполнить обновление"
 #: cmdline/apt-get.cc
 msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgstr ""
-"установить новые пакеты (указывается имя пакета libc6, а не имя файла libc6."
-"deb)"
+"установить новые пакеты (указывается имя пакета libc6, а не имя файла "
+"libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
 msgstr ""
-"переустановить пакеты (указывается имя пакета libc6, а не имя файла libc6."
-"deb)"
+"переустановить пакеты (указывается имя пакета libc6, а не имя файла "
+"libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
@@ -2980,6 +3205,12 @@ msgstr "найти запись типа SRV (например, _http._tcp.ftp.d
 msgid "concatenate files, with automatic decompression"
 msgstr "объединить файлы, с автоматическим разжатием"
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Проблема при хешировании файла"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "определить прокси с помощью apt.conf"
@@ -3197,8 +3428,6 @@ msgid "remove packages"
 msgstr "удалить пакеты"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
 msgstr "автоматически удалить все неиспользуемые пакеты"
 
@@ -3220,6 +3449,10 @@ msgstr "обновить систему, удаляя/устанавливая/
 msgid "edit the source information file"
 msgstr "редактировать файл с источниками пакетов"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "удовлетворить строки зависимостей"
@@ -3430,7 +3663,7 @@ msgid "Compressed output %s needs a compression set"
 msgstr ""
 "Для получения сжатого вывода %s необходимо указать набор алгоритмов сжатия"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Не удалось создать IPC-канал для порождённого процесса"
 
@@ -3549,27 +3782,27 @@ msgstr "В архиве нет поля package"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  Нет записи о переназначении (override) для %s\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  Нет записи о переназначении (override) для %.*s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  Пакет %s сопровождает %s, а не %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  Пакет %.*s сопровождает %.*s, а не %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr ""
 "  Нет записи о переназначении пакетов с исходным кодом (source override) для "
-"%s\n"
+"%.*s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr ""
 "  Также нет записи о переназначении двоичных пакетов (binary override) для "
-"%s\n"
+"%.*s\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3608,7 +3841,7 @@ msgstr "Неверные данные заголовка"
 msgid "Connection failed"
 msgstr "Соединение разорвано"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3654,7 +3887,7 @@ msgstr "Не удалось размонтировать CD-ROM в %s; возм
 msgid "Disk not found."
 msgstr "Диск не найден."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Файл не найден"
 
@@ -3689,7 +3922,7 @@ msgstr "Не удалось создать сокет для %s (f=%u t=%u p=%u)
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Невозможно инициализировать соединение с %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Неудачно"
 
@@ -3704,9 +3937,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 "Не удалось соединиться с %s:%s (%s): время ожидания для соединения истекло"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Соединение с %s"
@@ -3744,147 +3975,15 @@ msgstr "Не удалось получить атрибуты"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Неправильный URI: локальный URI не должен начинаться с //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Вход в систему"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Невозможно определить имя удалённого узла"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Невозможно определить локальное имя"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Сервер разорвал соединение и сообщил: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Команда USER не выполнена, сервер сообщил: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Команда PASS не выполнена, сервер сообщил: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"Прокси-сервер указан, однако нет сценария входа в систему: Acquire::ftp::"
-"ProxyLogin пуст."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-"Команда «%s» сценария входа в систему завершилась неудачно, сервер сообщил: "
-"%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Команда TYPE не выполнена, сервер сообщил: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Допустимое время ожидания для соединения истекло"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Сервер прервал соединение"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Ответ переполнил буфер."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Искажение протокола"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Не удалось создать сокет"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-"Не удалось присоединить сокет данных: время ожидания для соединения истекло"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Не удалось присоединить пассивный сокет"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "Вызов getaddrinfo не смог получить сокет"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Не удалось привязать сокет"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Не удалось принимать соединения на сокете"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Не удалось определить имя сокета"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Невозможно послать команду PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Неизвестное семейство адресов %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Команда EPRT не выполнена, сервер сообщил: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Время на установление соединения для сокета данных истекло"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Невозможно принять соединение"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Проблема при хешировании файла"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Невозможно получить файл, сервер сообщил: «%s»"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Время ожидания для сокета данных истекло"
+msgid "untrusted public key algorithm: %s"
+msgstr "ненадёжный алгоритм с открытым ключом: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Передача данных завершилась неудачно, сервер сообщил: «%s»"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Запрос"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Невозможно вызвать "
+msgid "%s will be deprecated in a future release"
+msgstr "%s будет признан устаревшим в будущем выпуске"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3907,27 +4006,25 @@ msgstr ""
 "ключа?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Не удалось выполнить «apt-key» для проверки подписи (программа gnupg "
 "установлена?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Неизвестная ошибка при выполнении apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr "При подписи ключом %s используется нестойкий алгоритм свёртки (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "При подписи ключом %s используется нестойкий алгоритм (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3961,18 +4058,160 @@ msgstr "Ошибка в select"
 msgid "Connection timed out"
 msgstr "Время ожидания для соединения истекло"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Проблема при хешировании файла"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Не удалось установить время модификации"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Соединение закрыто преждевременно"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Пустые файлы не могут быть допустимыми архивами"
 
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "Ключ сохранён в устаревшей связке ключей trusted.gpg (%s), обратитесь к "
+#~ "разделу DEPRECATION справочной страницы apt-key(8) для подробной "
+#~ "информации."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Метод «%s» не поддерживается и по умолчанию отключён. Рассмотрите "
+#~ "возможность перехода на использование http(s). Чтобы включить его снова, "
+#~ "установите параметр Dir::Bin::Methods::%s в значение «%s»."
+
+#~ msgid "Logging in"
+#~ msgstr "Вход в систему"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Невозможно определить имя удалённого узла"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Невозможно определить локальное имя"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Сервер разорвал соединение и сообщил: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Команда USER не выполнена, сервер сообщил: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Команда PASS не выполнена, сервер сообщил: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Прокси-сервер указан, однако нет сценария входа в систему: "
+#~ "Acquire::ftp::ProxyLogin пуст."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Команда «%s» сценария входа в систему завершилась неудачно, сервер "
+#~ "сообщил: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Команда TYPE не выполнена, сервер сообщил: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Допустимое время ожидания для соединения истекло"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Сервер прервал соединение"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Ответ переполнил буфер."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Искажение протокола"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Не удалось создать сокет"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Не удалось присоединить сокет данных: время ожидания для соединения "
+#~ "истекло"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Не удалось присоединить пассивный сокет"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "Вызов getaddrinfo не смог получить сокет"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Не удалось привязать сокет"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Не удалось принимать соединения на сокете"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Не удалось определить имя сокета"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Невозможно послать команду PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Неизвестное семейство адресов %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Команда EPRT не выполнена, сервер сообщил: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Время на установление соединения для сокета данных истекло"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Невозможно принять соединение"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Невозможно получить файл, сервер сообщил: «%s»"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Время ожидания для сокета данных истекло"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Передача данных завершилась неудачно, сервер сообщил: «%s»"
+
+#~ msgid "Query"
+#~ msgstr "Запрос"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Невозможно вызвать "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Соединение закрыто преждевременно"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Установлен: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Следующие зафиксированные пакеты будут изменены:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Да, делать, как я говорю!"
 
@@ -4420,9 +4659,6 @@ msgstr "Пустые файлы не могут быть допустимыми
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Игнорируется недоступный выпуск «%s» пакета «%s»"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Выполняется загрузка %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Это неправильный DEB-архив — отсутствует составная часть «%s», «%s» или "
diff --git a/po/sk.po b/po/sk.po
index 379025c..d75f586 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2012-06-28 20:49+0100\n"
 "Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -53,8 +53,8 @@ msgstr "Adresár %s je divertovaný"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -192,8 +192,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "V konflikte s distribúciou: %s (očakávalo sa %s ale dostali sme %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -204,7 +203,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -223,6 +222,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Zlyhalo stiahnutie %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -243,13 +249,6 @@ msgstr "Nie je možné nájsť zdroj na stiahnutie verzie „%s“ balíka „%s
 msgid "Changelog unavailable for %s=%s"
 msgstr "Záznam zmien %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -644,6 +643,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaktická chyba %s:%u: Na konci súboru sú chybné údaje"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -754,11 +777,11 @@ msgstr "Podproces %s vrátil chybový kód (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Podproces %s neočakávane skončil"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Chyba pri čítaní"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Chyba pri zápise"
 
@@ -1072,6 +1095,12 @@ msgstr "Nedá sa zamknúť adresár na správu (%s), ste root?"
 msgid "Not locked"
 msgstr "Nie je zamknuté"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1262,6 +1291,16 @@ msgstr "Pripraviť sa na prijatie riešenia"
 msgid "External solver failed without a proper error message"
 msgstr "Externý riešiteľ zlyhal bez uvedenia chybovej správy"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Prepočítava sa aktualizácia"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Celkom závislostí: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Spustiť externého riešiteľa"
@@ -1569,10 +1608,6 @@ msgstr ""
 "Niektoré indexové súbory sa nepodarilo stiahnuť. Boli ignorované alebo sa "
 "použili staršie verzie."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Prepočítava sa aktualizácia"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1840,6 +1875,18 @@ msgstr "Nasledovné informácie vám možno pomôžu vyriešiť túto situáciu:
 msgid "Broken packages"
 msgstr "Poškodené balíky"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1881,8 +1928,14 @@ msgstr "Vnútorná chyba, Triedenie sa neukončilo"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Nezvyčajná udalosť... Veľkosti nesúhlasia, pošlite e-mail na apt@packages."
-"debian.org"
+"Nezvyčajná udalosť... Veľkosti nesúhlasia, pošlite e-mail na "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "SÅ¥ahuje sa %s %s"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1891,6 +1944,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Je potrebné stiahnuť %sB/%sB archívov.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "SÅ¥ahuje sa %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1898,13 +1957,55 @@ msgstr "Je potrebné stiahnuť %sB/%sB archívov.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Je potrebné stiahnuť %sB archívov.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Po tejto operácii sa na disku použije ďalších %sB.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Uložená menovka: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1922,6 +2023,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Chcete pokračovať?"
@@ -1987,6 +2096,14 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Vnútorná chyba, AutoRemover niečo pokazil"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Na jeho odstránenie použite „%s“."
+msgstr[1] "Na ich odstránenie použite „%s“."
+msgstr[2] "Na ich odstránenie použite „%s“."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2012,19 +2129,6 @@ msgstr[1] ""
 msgstr[2] ""
 "%lu balíkov bolo nainštalovaných automaticky a už viac nie sú potrebné.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Na jeho odstránenie použite „%s“."
-msgstr[1] "Na ich odstránenie použite „%s“."
-msgstr[2] "Na ich odstránenie použite „%s“."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Nainštalujú sa nasledovné extra balíky:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Navrhované balíky:"
@@ -2033,6 +2137,11 @@ msgstr "Navrhované balíky:"
 msgid "Recommended packages:"
 msgstr "Odporúčané balíky:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Nainštalujú sa nasledovné extra balíky:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2168,14 +2277,52 @@ msgstr " alebo"
 msgid "The following packages have unmet dependencies:"
 msgstr "Nasledovné balíky majú nesplnené závislosti:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Zlyhalo splnenie %s závislosti pre %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Nainštalujú sa nasledovné NOVÉ balíky:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Inštaluje sa %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Celkom závislostí: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Nasledovné balíky sa ODSTRÁNIA:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:"
@@ -2184,10 +2331,24 @@ msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:"
 msgid "The following packages will be upgraded:"
 msgstr "Nasledovné balíky sa aktualizujú:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Nasledovné balíky sa DEGRADUJÚ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Pripevnené balíky:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Nasledovné pridržané balíky sa zmenia:"
@@ -2205,26 +2366,53 @@ msgstr ""
 "UPOZORNENIE: Nasledovné dôležité balíky sa odstránia.\n"
 "Ak presne neviete, čo robíte, tak to NEROBTE!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu aktualizovaných, %lu nových nainštalovaných, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Inštaluje sa %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu reinštalovaných, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Inštaluje sa %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu degradovaných, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "SÅ¥ahuje sa %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu na odstránenie a %lu neaktualizovaných.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2252,7 +2440,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2433,8 +2621,8 @@ msgstr "%s nemá žiadne závislosti na zostavenie.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Informácie o architektúre nie sú dostupné pre %s. Informácie o nastavení "
 "nájdete v apt.conf(5) APT::Architectures"
@@ -2475,6 +2663,11 @@ msgstr "Premenovanie %s na %s zlyhalo"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2492,6 +2685,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2538,6 +2762,12 @@ msgstr "  Zmiešaných virtuálnych balíkov: "
 msgid "  Missing: "
 msgstr "  Chýbajúcich: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Celkom rôznych verzií: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Celkom rôznych verzií: "
@@ -2869,6 +3099,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problém s hašovaním súboru"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3119,6 +3355,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Načítavajú sa stavové informácie"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3322,7 +3562,7 @@ msgstr "Neznámy kompresný algoritmus „%s“"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimovaný výstup %s potrebuje kompresnú sadu"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Zlyhalo vytvorenie IPC rúry k podprocesu"
 
@@ -3441,23 +3681,23 @@ msgstr "Archív neobsahuje pole „package“"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr " %s nemá žiadnu položku override\n"
+msgid "  %.*s has no override entry\n"
+msgstr " %.*s nemá žiadnu položku override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  správcom %s je %s, nie %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  správcom %.*s je %.*s, nie %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr " %s nemá žiadnu položku „source override“\n"
+msgid "  %.*s has no source override entry\n"
+msgstr " %.*s nemá žiadnu položku „source override“\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr " %s nemá žiadnu položku „binary override“\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr " %.*s nemá žiadnu položku „binary override“\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3495,7 +3735,7 @@ msgstr "Zlé dátové záhlavie"
 msgid "Connection failed"
 msgstr "Spojenie zlyhalo"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3537,7 +3777,7 @@ msgstr "Nedá sa odpojiť CD-ROM v %s - možno sa ešte používa."
 msgid "Disk not found."
 msgstr "Disk sa nenašiel."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Súbor sa nenašiel"
 
@@ -3573,7 +3813,7 @@ msgstr "Nedá sa vytvoriť socket pre %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Nedá sa nadviazať spojenie na %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Chyba"
 
@@ -3587,9 +3827,7 @@ msgstr "Nedá sa pripojiť k %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nedá sa pripojiť k %s:%s (%s), uplynul čas spojenia"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Pripája sa k %s"
@@ -3627,144 +3865,15 @@ msgstr "Vyhodnotenie zlyhalo"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Neplatné URI, lokálne URI nesmie začínať s //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Prihlasovanie"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Nedá sa zistiť názov druhej strany"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Nedá sa zistiť lokálny názov"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Server zamietol naše spojenie s chybou: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Zlyhalo zadanie používateľa, server odpovedal: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Zlyhalo zadanie hesla, server odpovedal: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Bol zadaný proxy server, ale nie prihlasovací skript. Acquire::ftp::"
-"ProxyLogin je prázdny."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Príkaz „%s“ prihlasovacieho skriptu zlyhal, server odpovedal: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Zlyhalo zadanie typu, server odpovedal: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Uplynul čas spojenia"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Server ukončil spojenie"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Odpoveď preplnila zásobník."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Narušenie protokolu"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Nedá sa vytvoriť socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Nedá sa pripojiť dátový socket, uplynul čas spojenia"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Nedá sa pripojiť pasívny socket."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo nezískal počúvajúci socket"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Nedá sa nadviazať socket"
 
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Na sockete sa nedá počúvať"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Názov socketu sa nedá zistiť"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Príkaz PORT sa nedá odoslať"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Neznáma rodina adries %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Zlyhalo zadanie EPRT, server odpovedal: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Uplynulo spojenie dátového socketu"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Spojenie sa nedá prijať"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problém s hašovaním súboru"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Súbor sa nedá stiahnuť, server odpovedal „%s“"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Uplynula doba dátového socketu"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Prenos dát zlyhal, server odpovedal „%s“"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Dotaz"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Nedá sa vyvolať "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3783,25 +3892,23 @@ msgid ""
 msgstr "Vnútorná chyba: Správna signatúra, ale sa nedá zistiť odtlačok kľúča?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Nedá sa spustiť „apt-key“ kvôli overeniu podpisu (je nainštalované gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Neznáma chyba pri spustení apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3836,18 +3943,134 @@ msgstr "Výber zlyhal"
 msgid "Connection timed out"
 msgstr "Uplynul čas spojenia"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problém s hašovaním súboru"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Zlyhalo nastavenie času zmeny"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Spojenie bolo predčasne ukončené"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Prázdne súbory nemôžu byť platné archívy"
 
+#~ msgid "Logging in"
+#~ msgstr "Prihlasovanie"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Nedá sa zistiť názov druhej strany"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Nedá sa zistiť lokálny názov"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Server zamietol naše spojenie s chybou: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Zlyhalo zadanie používateľa, server odpovedal: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Zlyhalo zadanie hesla, server odpovedal: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Bol zadaný proxy server, ale nie prihlasovací skript. "
+#~ "Acquire::ftp::ProxyLogin je prázdny."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Príkaz „%s“ prihlasovacieho skriptu zlyhal, server odpovedal: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Zlyhalo zadanie typu, server odpovedal: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Uplynul čas spojenia"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Server ukončil spojenie"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Odpoveď preplnila zásobník."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Narušenie protokolu"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Nedá sa vytvoriť socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Nedá sa pripojiť dátový socket, uplynul čas spojenia"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Nedá sa pripojiť pasívny socket."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo nezískal počúvajúci socket"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Nedá sa nadviazať socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Na sockete sa nedá počúvať"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Názov socketu sa nedá zistiť"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Príkaz PORT sa nedá odoslať"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Neznáma rodina adries %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Zlyhalo zadanie EPRT, server odpovedal: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Uplynulo spojenie dátového socketu"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Spojenie sa nedá prijať"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Súbor sa nedá stiahnuť, server odpovedal „%s“"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Uplynula doba dátového socketu"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Prenos dát zlyhal, server odpovedal „%s“"
+
+#~ msgid "Query"
+#~ msgstr "Dotaz"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Nedá sa vyvolať "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Spojenie bolo predčasne ukončené"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Nainštalovaná verzia: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Nasledovné pridržané balíky sa zmenia:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Áno, urob to, čo vravím!"
 
@@ -4085,8 +4308,8 @@ msgstr "Prázdne súbory nemôžu byť platné archívy"
 #~ "  -f  čítanie/zápis označenia auto/manálne v uvedenom súbore\n"
 #~ "  -c=? Načítať tento konfiguračný súbor\n"
 #~ "  -o=? Nastaviť ľubovoľný konfiguračnú voľbu, napr. -o dir::cache=/tmp\n"
-#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a apt."
-#~ "conf(5)."
+#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a "
+#~ "apt.conf(5)."
 
 #~ msgid ""
 #~ "Options:\n"
@@ -4118,8 +4341,8 @@ msgstr "Prázdne súbory nemôžu byť platné archívy"
 #~ "  -f  čítanie/zápis označenia auto/manálne v uvedenom súbore\n"
 #~ "  -c=? Načítať tento konfiguračný súbor\n"
 #~ "  -o=? Nastaviť ľubovoľný konfiguračnú voľbu, napr. -o dir::cache=/tmp\n"
-#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a apt."
-#~ "conf(5)."
+#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a "
+#~ "apt.conf(5)."
 
 #~ msgid ""
 #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
@@ -4264,9 +4487,6 @@ msgstr "Prázdne súbory nemôžu byť platné archívy"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Ignorovať nedostupné cieľové vydanie „%s“ balíka „%s“"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "SÅ¥ahuje sa %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "Toto nie je platný DEB archív, chýba časť „%s“, „%s“ alebo „%s“"
 
diff --git a/po/sl.po b/po/sl.po
index f5bc8a5..91204ad 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2012-06-27 21:29+0000\n"
 "Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n"
 "Language-Team: Slovenian <sl@li.org>\n"
@@ -53,8 +53,8 @@ msgstr "Mapa %s je odklonjena"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -192,8 +192,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Distribucija v sporu: %s (pričakovana %s, toda dobljena %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -204,7 +203,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -223,6 +222,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Ni mogoče dobiti %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -243,13 +249,6 @@ msgstr "Ni mogoče najti vira za prejem različice '%s' paketa '%s'"
 msgid "Changelog unavailable for %s=%s"
 msgstr "Dnevnik sprememb za %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -641,6 +640,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Skladenjska napaka %s:%u: Dodatna krama na koncu datoteke"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -751,11 +774,11 @@ msgstr "Pod-opravilo %s je vrnilo kodo napake (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Pod-opravilo %s se je nepričakovano zaključilo"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Napaka branja"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Napaka pisanja"
 
@@ -1070,6 +1093,12 @@ msgstr "Skrbniške mape (%s) ni mogoče zakleniti. Ali ste skrbnik?"
 msgid "Not locked"
 msgstr "Ni zaklenjeno"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1261,6 +1290,16 @@ msgstr "Priprava za rešitev prejemanja"
 msgid "External solver failed without a proper error message"
 msgstr "Zunanji reševalnik je spodletel brez pravega sporočila o napakah"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Preračunavanje nadgradnje"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Vseh odvisnosti: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Izvedi zunanji reševalnik"
@@ -1568,10 +1607,6 @@ msgstr ""
 "Prejem nekaterih datotek kazala je spodletel. Bile so prezrte ali pa so bile "
 "namesto njih uporabljene stare."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Preračunavanje nadgradnje"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1840,6 +1875,18 @@ msgstr "Naslednji podatki vam bodo morda pomagali rešiti težavo:"
 msgid "Broken packages"
 msgstr "Pokvarjeni paketi"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1881,8 +1928,14 @@ msgstr "Notranja napaka, Urejanje se ni končalo"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Kako čudno ... Velikosti se ne ujemata, pošljite sporočilo na apt@packages."
-"debian.org"
+"Kako čudno ... Velikosti se ne ujemata, pošljite sporočilo na "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Prejemanje %s %s"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1891,6 +1944,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Potrebno je dobiti %sB/%sB arhivov.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Prejemanje %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1898,13 +1957,55 @@ msgstr "Potrebno je dobiti %sB/%sB arhivov.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Potrebno je dobiti %sB arhivov.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Po tem opravilu bo porabljenega %sB dodatnega prostora.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Shranjena oznaka: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1922,6 +2023,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Ali želite nadaljevati?"
@@ -1993,6 +2102,15 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Notranja napaka, SamodejniOdstranjevalnik je pokvaril stvari"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Uporabite '%s' za njihovo odstranitev."
+msgstr[1] "Uporabite '%s' za njegovo odstranitev."
+msgstr[2] "Uporabite '%s' za njuno odstranitev."
+msgstr[3] "Uporabite '%s' za njihovo odstranitev."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2015,20 +2133,6 @@ msgstr[1] "%lu paket je bil samodejno nameščen in ni bil več zahtevan.\n"
 msgstr[2] "%lu paketa sta bila samodejno nameščena in nista več zahtevana.\n"
 msgstr[3] "%lu paketi so bili samodejno nameščeni in niso več zahtevani.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Uporabite '%s' za njihovo odstranitev."
-msgstr[1] "Uporabite '%s' za njegovo odstranitev."
-msgstr[2] "Uporabite '%s' za njuno odstranitev."
-msgstr[3] "Uporabite '%s' za njihovo odstranitev."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Naslednji dodatni paketi bodo nameščeni:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Predlagani paketi:"
@@ -2037,6 +2141,11 @@ msgstr "Predlagani paketi:"
 msgid "Recommended packages:"
 msgstr "Priporočeni paketi:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Naslednji dodatni paketi bodo nameščeni:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2172,14 +2281,52 @@ msgstr " ali"
 msgid "The following packages have unmet dependencies:"
 msgstr "Naslednji paketi imajo nerešene odvisnosti:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Ni mogoče zadostiti %s odvisnosti za %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Naslednji NOVI paketi bodo nameščeni:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Nameščanje %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Vseh odvisnosti: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Naslednji novi paketi bodo ODSTRANJENI:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Naslednji paketi so bili zadržani:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Naslednji paketi so bili zadržani:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Naslednji paketi so bili zadržani:"
@@ -2188,10 +2335,24 @@ msgstr "Naslednji paketi so bili zadržani:"
 msgid "The following packages will be upgraded:"
 msgstr "Naslednji paketi bodo nadgrajeni:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Naslednji paketi bodo POSTARANI:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Pripeti paketi:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Naslednji zadržani paketi bodo spremenjeni:"
@@ -2209,26 +2370,53 @@ msgstr ""
 "OPOZORILO: Naslednji nujni paketi bodo odstranjeni.\n"
 "Tega NE storite, razen če ne veste natanko kaj počenjate!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu nadgrajenih, %lu na novo nameščenih, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Nameščanje %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu posodobljenih, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Nameščanje %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu postaranih, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Prejemanje %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu bo odstranjenih in %lu ne nadgrajenih.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2256,7 +2444,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2437,8 +2625,8 @@ msgstr "%s nima odvisnosti za gradnjo.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "Za %s ni bilo mogoče najti podatkov o arhitekturi. Za nastavitev si oglejte "
 "apt.conf(5) APT::Architectures"
@@ -2479,6 +2667,11 @@ msgstr "Ni mogoče preimenovati %s v %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2496,6 +2689,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2543,6 +2767,12 @@ msgstr "  Mešani navidezni paketi: "
 msgid "  Missing: "
 msgstr "  Manjka: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Vseh različic: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Vseh različic: "
@@ -2873,6 +3103,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Težava med razprševanjem datoteke"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3124,6 +3360,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Branje podatkov o stanju"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3328,7 +3568,7 @@ msgstr "Neznan algoritem stiskanja '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Stisnjen izhod %s potrebuje niz stiskanja"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Ustvarjanje cevi IPC do podopravila je spodletelo"
 
@@ -3447,23 +3687,23 @@ msgstr "Arhiv ni imel polja s paketom"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s nima prepisanega vnosa\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s nima prepisanega vnosa\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  Vzdrževalec %s je %s in ne %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  Vzdrževalec %.*s je %.*s in ne %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s nima izvornega vnosa prepisa\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s nima izvornega vnosa prepisa\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s nima tudi binarnega vnosa prepisa\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s nima tudi binarnega vnosa prepisa\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3501,7 +3741,7 @@ msgstr "Napačni podatki glave"
 msgid "Connection failed"
 msgstr "Povezava ni uspela"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3543,7 +3783,7 @@ msgstr "Ni mogoče odklopiti CD-ROM-a v %s, ker je morda še v uporabi."
 msgid "Disk not found."
 msgstr "Diska ni mogoče najti."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Datoteke ni mogoče najti"
 
@@ -3579,7 +3819,7 @@ msgstr "Ni mogoče ustvariti vtiča za %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Ni mogoče začeti povezave z %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Spodletelo"
 
@@ -3593,9 +3833,7 @@ msgstr "Ni se mogoče povezati z %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Ni se mogoče povezati z %s:%s (%s). Povezava je zakasnela."
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Povezovanje z %s"
@@ -3633,144 +3871,15 @@ msgstr "Določitev ni uspela"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Neveljaven URI. Krajevni URI-ji se morajo začeti z //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Prijavljanje"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Ni mogoče ugotoviti imena gostitelja"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Ni mogoče določiti krajevnega imena"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Strežnik je zavrnil povezavo in sporočil: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER je spodletel, strežnik je odgovoril: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS je spodletel, strežnik je odgovoril: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Naveden je bil posredniški strežnik, ne pa tudi prijavni skript. Acquire::"
-"ftp::ProxyLogin je prazen."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Ukaz prijavne skripte '%s' ni uspel, strežnik je odgovoril: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE je spodletel, strežnik je odgovoril: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Povezava je zakasnela"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Strežnik je zaprl povezavo"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Odgovor je prekoračil predpomnilnik."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Okvara protokola"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Ni mogoče ustvariti vtiča"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Ni mogoče povezati podatkovnega vtiča. Povezava je zakasnela."
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Ni mogoče povezat pasivnega vtiča."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo ni mogel dobiti poslušajočega vtiča"
 
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Ni mogoče povezati vtiča"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Ni mogoče poslušati na vtiču"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Ni mogoče določiti imena vtiča"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Ni mogoče poslati ukaza PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Neznan naslov družine %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT ni uspel, strežnik je odgovoril: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Povezava podatkovne vtičnice je zakasnela"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Ni mogoče sprejeti povezave"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Težava med razprševanjem datoteke"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Ni mogoče pridobiti datoteke, strežnik je odgovoril '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Podatkovna vtič je potekel"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Prenos podatkov ni uspel, strežnik je odgovoril '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Poizvedba"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Ni mogoče klicati "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3790,25 +3899,23 @@ msgstr ""
 "Notranja napaka: Dober podpis, toda ni mogoče določiti podpisa ključa?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Ni mogoče izvesti 'apt-key' za preverjanje podpisa (je gnupg nameščen?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Neznana napaka med izvajanjem apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3842,18 +3949,134 @@ msgstr "Izbira ni uspela"
 msgid "Connection timed out"
 msgstr "Povezava je zakasnela"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Težava med razprševanjem datoteke"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Nastavitev časa spremembe je spodletela"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Povezava se je prezgodaj zaprla"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Prazne datoteke ne morejo biti veljavni arhivi"
 
+#~ msgid "Logging in"
+#~ msgstr "Prijavljanje"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Ni mogoče ugotoviti imena gostitelja"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Ni mogoče določiti krajevnega imena"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Strežnik je zavrnil povezavo in sporočil: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER je spodletel, strežnik je odgovoril: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS je spodletel, strežnik je odgovoril: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Naveden je bil posredniški strežnik, ne pa tudi prijavni skript. "
+#~ "Acquire::ftp::ProxyLogin je prazen."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Ukaz prijavne skripte '%s' ni uspel, strežnik je odgovoril: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE je spodletel, strežnik je odgovoril: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Povezava je zakasnela"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Strežnik je zaprl povezavo"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Odgovor je prekoračil predpomnilnik."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Okvara protokola"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Ni mogoče ustvariti vtiča"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Ni mogoče povezati podatkovnega vtiča. Povezava je zakasnela."
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Ni mogoče povezat pasivnega vtiča."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo ni mogel dobiti poslušajočega vtiča"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Ni mogoče povezati vtiča"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Ni mogoče poslušati na vtiču"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Ni mogoče določiti imena vtiča"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Ni mogoče poslati ukaza PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Neznan naslov družine %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT ni uspel, strežnik je odgovoril: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Povezava podatkovne vtičnice je zakasnela"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Ni mogoče sprejeti povezave"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Ni mogoče pridobiti datoteke, strežnik je odgovoril '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Podatkovna vtič je potekel"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Prenos podatkov ni uspel, strežnik je odgovoril '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Poizvedba"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Ni mogoče klicati "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Povezava se je prezgodaj zaprla"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Nameščen: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Naslednji zadržani paketi bodo spremenjeni:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Da, naredi tako kot pravim!"
 
@@ -4069,8 +4292,8 @@ msgstr "Prazne datoteke ne morejo biti veljavni arhivi"
 #~ "  -i Pokaže le pomembne odvisnosti za neujemajoč ukaz.\n"
 #~ "  -c=? Prebere to nastavitveno datoteko\n"
 #~ "  -o=? Nastavi poljubno možnost nastavitve, na primer -o dir::cache=/tmp\n"
-#~ "Za več podrobnosti si oglejte strani priročnikov apt-cache(8) in apt."
-#~ "conf(5).\n"
+#~ "Za več podrobnosti si oglejte strani priročnikov apt-cache(8) in "
+#~ "apt.conf(5).\n"
 
 #, fuzzy
 #~ msgid ""
@@ -4282,9 +4505,6 @@ msgstr "Prazne datoteke ne morejo biti veljavni arhivi"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Prezri nerazpoložljiv cilj izdaje '%s' paketa '%s'"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Prejemanje %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "To ni veljaven arhiv DEB, nima člana '%s', '%s' ali '%s'"
 
diff --git a/po/sv.po b/po/sv.po
index cc1b670..2353438 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,42 +5,48 @@
 # the individual files for licensing information.
 #
 # This file is distributed under the same license as the apt package.
-# Peter Karlsson <peterk@debian.org>, 2002-2008.
+# Peter Krefting <peter@softwolves.pp.se>, 2002-2025.
 # Daniel Nylander <po@danielnylander.se>, 2005-2010.
 # Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 1.0.5\n"
+"Project-Id-Version: apt 2.9.2\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2015-08-19 21:33+0200\n"
-"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
-"Language-Team: Swedish <debian-l10n-swedish@debian.org>\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2025-02-12 22:07+0100\n"
+"Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
+"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.8.3\n"
+"X-Generator: Gtranslator 42.0\n"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Updating from such a repository can't be done securely, and is therefore "
 "disabled by default."
 msgstr ""
+"Kan inte uppdatera från ett sådant förråd på ett säkert sätt, det har därför "
+"inaktiverats som standard."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "Data from such a repository can't be authenticated and is therefore "
 "potentially dangerous to use."
 msgstr ""
+"Kan inte autentisera data från ett sådant förråd och det kan därför "
+"potentiellt vara farligt att använda."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
 "See apt-secure(8) manpage for repository creation and user configuration "
 "details."
 msgstr ""
+"Se manualsidan apt-secure(8) för detaljer om att skapa förråd och "
+"användarkonfiguration."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -48,32 +54,32 @@ msgid "The repository '%s' is no longer signed."
 msgstr "Förrådet ”%s” är inte längre signerat."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' no longer has a Release file."
-msgstr "Förrådet ”%s” är inte längre signerat."
+msgstr "Förrådet ”%s” har inte längre någon Release-fil."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Detta är vanligen inte tillåtet, men flaggan Acquire::"
-"AllowDowngradeToInsecureRepositories gavs för att åsidosätta detta."
+"Detta är vanligen inte tillåtet, men flaggan "
+"Acquire::AllowDowngradeToInsecureRepositories gavs för att åsidosätta detta."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' is not signed."
-msgstr "Förrådet ”%s” är inte längre signerat."
+msgstr "Förrådet ”%s” är inte signerat."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' does not have a Release file."
-msgstr "Förrådet ”%s” är inte längre signerat."
+msgstr "Förrådet ”%s” saknar filen Release."
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid "The repository '%s' provides only weak security information."
-msgstr "Förrådet ”%s” är inte längre signerat."
+msgstr "Förrådet ”%s” tillhandahåller endast svag säkerhetsinformation."
 
 #: apt-pkg/acquire-item.cc ftparchive/writer.cc
 #, c-format
@@ -91,7 +97,7 @@ msgstr "Hash-kontrollsumman stämmer inte"
 
 #: apt-pkg/acquire-item.cc
 msgid "Insufficient information available to perform this download securely"
-msgstr ""
+msgstr "Inte tillräcklig information för att utföra hämtningen säkert"
 
 #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -121,14 +127,13 @@ msgstr ""
 "autentisering?)"
 
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "An error occurred during the signature verification. The repository is not "
 "updated and the previous index files will be used. GPG error: %s: %s"
 msgstr ""
 "Ett fel inträffade vid verifiering av signaturen. Förrådet har inte "
-"uppdaterats och de tidigare indexfilerna kommer att användas. GPG-fel: %s: "
-"%s\n"
+"uppdaterats och de tidigare indexfilerna kommer att användas. GPG-fel: %s: %s"
 
 #. Invalid signature file, reject (LP: #346386) (Closes: #627642)
 #: apt-pkg/acquire-item.cc
@@ -142,6 +147,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
+"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” "
+"saknar komponenten ”%s” (felstavad komponent i sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -149,6 +156,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't support "
 "architecture '%s'"
 msgstr ""
+"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” "
+"inte stöder arkitekturen ”%s”"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -156,6 +165,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' does not seem to "
 "provide it (sources.list entry misspelt?)"
 msgstr ""
+"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” "
+"inte verkar tillhandahålla den (felstavad post i sources.list?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -163,6 +174,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' provides only "
 "weak security information for it"
 msgstr ""
+"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” "
+"endast tillhandahåller svag säkerhetsinformation för den"
 
 #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
 #. the time since then the file is invalid - formatted in the same way as in
@@ -180,39 +193,35 @@ msgstr ""
 #. the time until the file will be valid - formatted in the same way as in
 #. the download progress display (e.g. 7d 3h 42min 1s)
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Release file for %s is expired (invalid since %s). Updates for this "
-#| "repository will not be applied."
+#, c-format
 msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
-"Release-fil för %s har gått ut (ogiltig sedan %s). Uppdateringar för detta "
-"förråd kommer inte verkställas."
+"Release-fil för %s är inte giltig ännu (ogiltig ytterligare %s). "
+"Uppdateringar för detta förråd kommer inte verkställas."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Konflikt i distribution: %s (förväntade %s men fick %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
-msgstr ""
+msgstr "Förrådet ”%s” ändrade värdet på ”%s” från ”%s” till ”%s”"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
-msgstr ""
+msgstr "Förrådet ”%s” ändrade sin förvalda prioritet för %s från %hi till %hi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
-msgstr ""
+msgstr "Ytterligare information om detta finns på nätet i versionsfakta på: %s"
 
 #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8)
 #: apt-pkg/acquire-item.cc
@@ -221,12 +230,23 @@ msgid ""
 "This must be accepted explicitly before updates for this repository can be "
 "applied. See %s manpage for details."
 msgstr ""
+"Detta måste accepteras explicit innan uppdateringar från förrådet kan tas "
+"emot. Se manualsidan %s för detaljer."
 
 #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc
 #, c-format
 msgid "Failed to fetch %s  %s"
 msgstr "Misslyckades med att hämta %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+"Förrådet bör tillhandahålla en läslig signerad ”InRelease”-fil, men ingen "
+"hittades på %s."
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -243,26 +263,20 @@ msgstr "Kan inte hitta en källa för att hämta version ”%s” av ”%s”"
 
 #. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-msgid "Changelog unavailable for %s=%s"
-msgstr "Ändringslogg för %s (%s)"
-
-#: apt-pkg/acquire-worker.cc
 #, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
+msgid "Changelog unavailable for %s=%s"
+msgstr "Ändringslogg inte tillgänglig för %s=%s"
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
-msgstr ""
+msgstr "Metoden ”%s” har explicit inaktiverats i konfigurationen."
 
 #: apt-pkg/acquire-worker.cc methods/connect.cc
 #, c-format
 msgid "If you meant to use Tor remember to use %s instead of %s."
 msgstr ""
+"Om det är meningen att använda Tor, kom ihåg att använda %s istället för %s."
 
 #: apt-pkg/acquire-worker.cc
 #, c-format
@@ -304,18 +318,16 @@ msgstr "Kunde inte låsa katalogen %s"
 #, c-format
 msgid "No sandbox user '%s' on the system, can not drop privileges"
 msgstr ""
+"Ingen sandlåda för användaren ”%s” på systemet, kan inte släppa privilegier"
 
 #: apt-pkg/acquire.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
-#| "by user '%s'."
+#, c-format
 msgid ""
 "Download is performed unsandboxed as root as file '%s' couldn't be accessed "
 "by user '%s'."
 msgstr ""
-"Kan inte släppa privilegier för hämtning eftersom filen ”%s” inte kunde "
-"kommas åt av användaren ”%s”."
+"Hämtningen utförs utan sandlåda eftersom filen ”%s” inte kunde kommas åt av "
+"användaren ”%s”."
 
 #: apt-pkg/acquire.cc apt-pkg/clean.cc
 #, c-format
@@ -556,18 +568,20 @@ msgid "Failed to stat the cdrom"
 msgstr "Kunde inte ta status på cd-romen"
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option '%c' [from %s] is not understood in combination with the "
 "other options."
-msgstr "Kommandoradsflaggan ”%c” [från %s] är inte känd."
+msgstr ""
+"Kommandoradsflaggan ”%c” [från %s] förstås inte tillsammans med de andra "
+"flaggorna."
 
 #: apt-pkg/contrib/cmndline.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Command line option %s is not understood in combination with the other "
 "options"
-msgstr "Förstår inte kommandoradsflaggan %s"
+msgstr "Kommandoradsflaggan %s förstås inte tillsammans med de andra flaggorna"
 
 #: apt-pkg/contrib/cmndline.cc
 #, c-format
@@ -655,10 +669,34 @@ msgstr "Syntaxfel %s:%u: clear-direktivet kräver ett flaggträd som argument"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntaxfel %s:%u: Överflödigt skräp vid filens slut"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "Fel:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "Varning:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "Notis:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "Granskning:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "Felsökning:"
+
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot find a configured compressor for '%s'"
-msgstr "Kan inte hitta autentiseringspost för: %s"
+msgstr "Kan inte hitta konfigurerad komprimerare för ”%s”"
 
 #: apt-pkg/contrib/extracttar.cc
 msgid "Corrupted archive"
@@ -669,10 +707,9 @@ msgid "Tar checksum failed, archive corrupted"
 msgstr "Tar-kontrollsumma misslyckades, arkivet skadat"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Okänd TAR-rubriktyp %u, del %s"
+msgstr "Okänd TAR-rubriktyp %u"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -695,15 +732,14 @@ msgid "Not using locking for nfs mounted lock file %s"
 msgstr "Använder inte låsning för nfs-monterade låsfilen %s"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "Kunde inte erhålla låset %s"
+msgstr "Kunde inte erhålla låset %s. Det hålls av process %d"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
-msgstr ""
+msgstr "Kunde inte erhålla låset %s. Det hålls av process %d (%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -715,6 +751,8 @@ msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Observera att ta bort låsfilen inte är en lösning och kan ödelägga ditt "
+"system."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -766,11 +804,11 @@ msgstr "Underprocessen %s svarade med en felkod (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Underprocessen %s avslutades oväntat"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Läsfel"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Skrivfel"
 
@@ -781,7 +819,7 @@ msgstr "Problem med att stänga gzip-filen %s"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Unexpected end of file"
-msgstr ""
+msgstr "Oväntat filslut"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to create subprocess IPC"
@@ -897,6 +935,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: Vitsorden för %s stämmer, men protokollet är inte krypterat. Förse med "
+"%s:// för att använda."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -913,16 +953,14 @@ msgid "..."
 msgstr "…"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s… %u%%"
+msgstr "%c%s... %llu/%llus"
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s… %u%%"
+msgstr "%c%s... %llus"
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -973,10 +1011,9 @@ msgid "Unparsable control file"
 msgstr "Kunde inte tolka control-filen"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "Kunde inte erhålla låset %s"
+msgstr "Kunde inte läsa metadata från %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -984,7 +1021,7 @@ msgstr "Kunde inte erhålla låset %s"
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
-msgstr ""
+msgstr "Målet %s önskar hämta samma fil (%s) som %s från källan %s"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; filename and linenumber of
@@ -992,7 +1029,7 @@ msgstr ""
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Target %s (%s) is configured multiple times in %s and %s"
-msgstr ""
+msgstr "Målet %s (%s) är konfigurerat flera gånger i %s och %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -1015,6 +1052,8 @@ msgid ""
 "No Hash entry in Release file %s which is considered strong enough for "
 "security purposes"
 msgstr ""
+"Ingen Hash-post i Release-filen %s som anses vara stark nog för "
+"säkerhetsmässiga syften."
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -1026,16 +1065,19 @@ msgstr "Ogiltig ”%s”-post i Release-filen %s"
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s"
 msgstr ""
+"Motstridiga värden inställda för flaggan %s i förhållande till källan %s %s"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Invalid value set for option %s regarding source %s %s (%s)"
-msgstr ""
+msgstr "Ogiltigt värde för flaggan %s i förhållande till källan %s %s (%s)"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
 msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
 msgstr ""
+"Motstridiga värden inställda för flaggan %s i förhållande till källan %s %s: "
+"%s != %s"
 
 #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
 #, c-format
@@ -1043,26 +1085,21 @@ msgid "Unable to parse package file %s (%d)"
 msgstr "Kunde inte tolka paketfilen %s (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "Väntar på rubriker"
+msgstr "Väntar på cachelås: %s"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Unable to lock the administration directory (%s), is another process "
-#| "using it?"
+#, c-format
 msgid ""
 "Unable to acquire the dpkg frontend lock (%s), is another process using it?"
 msgstr ""
-"Kunde inte låsa administrationskatalogen (%s). Använder en annan process den?"
+"Kunde inte låsa dpkg-framändelåset (%s), använder en annan process det?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Unable to lock the administration directory (%s), are you root?"
+#, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
-msgstr "Kunde inte låsa administrationskatalogen (%s). Är du root?"
+msgstr "Kunde inte låsa dpkg-framändelåset (%s), är du root?"
 
 #. TRANSLATORS: the %s contains the recovery command, usually
 #. dpkg --configure -a
@@ -1090,6 +1127,12 @@ msgstr "Kunde inte låsa administrationskatalogen (%s). Är du root?"
 msgid "Not locked"
 msgstr "Inte låst"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1280,29 +1323,35 @@ msgstr "Förbered för att motta lösning"
 msgid "External solver failed without a proper error message"
 msgstr "Extern lösare misslyckades utan något informativt felmeddelande"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beräknar uppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Installing dependencies:"
+msgid "Solving dependencies"
+msgstr "Installerar beroenden:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Kör extern lösare"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Execute external planner"
-msgstr "Kör extern lösare"
+msgstr "Kör extern planerare"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Send request to planner"
-msgstr "Skicka förfrågan till lösare"
+msgstr "Skicka förfrågan till planerare"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "Send scenario to planner"
-msgstr "Skicka scenario till lösare"
+msgstr "Skicka scenario till planerare"
 
 #: apt-pkg/edsp.cc
-#, fuzzy
 msgid "External planner failed without a proper error message"
-msgstr "Extern lösare misslyckades utan något informativt felmeddelande"
+msgstr "Extern planerare misslyckades utan något informativt felmeddelande"
 
 #: apt-pkg/indexcopy.cc
 #, c-format
@@ -1404,9 +1453,8 @@ msgid "The package cache was built for different architectures: %s vs %s"
 msgstr "Paketcachen byggdes för andra arkitekturer: %s gentemot %s"
 
 #: apt-pkg/pkgcache.cc
-#, fuzzy
 msgid "The package cache file is corrupted, it has the wrong hash"
-msgstr "Paketcachefilen är skadad, den är för liten"
+msgstr "Paketcachefilen är skadad, den har fel hash-värde"
 
 #: apt-pkg/pkgcache.cc
 msgid "Depends"
@@ -1532,11 +1580,15 @@ msgstr "Förstod inte nåltypen %s"
 msgid ""
 "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records"
 msgstr ""
+"%s: Den speciella ”Pin-Priority: %s” kan endast användas för ”Package: *”-"
+"poster"
 
 #: apt-pkg/policy.cc
 #, c-format
 msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
 msgstr ""
+"%s: Värdet %s är utanför intervallet för giltiga fastnålningsprioriteter (%d "
+"till %d)"
 
 #: apt-pkg/policy.cc
 msgid "No priority (or zero) specified for pin"
@@ -1545,9 +1597,9 @@ msgstr "Prioritet ej angiven (eller noll) för nål"
 # parametrar: filnamn, radnummer
 #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed entry %u in %s file %s (%s)"
-msgstr "Felaktig åsidosättning %s rad %llu (%s)"
+msgstr "Felaktig post %u i %s-filen %s (%s)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
@@ -1560,9 +1612,9 @@ msgid "Type '%s' is not known on line %u in source list %s"
 msgstr "Typ ”%s” är inte känd på rad %u i källistan %s"
 
 #: apt-pkg/sourcelist.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Malformed stanza %u in source list %s (type)"
-msgstr "Rad %u i källistan %s har fel format (typ)"
+msgstr "Stycket %u i källistan %s har fel format (typ)"
 
 #: apt-pkg/sourcelist.cc
 #, c-format
@@ -1572,18 +1624,16 @@ msgstr "Typen ”%s” är inte känd i post %u i källistan %s"
 #: apt-pkg/sourcelist.cc apt-private/private-install.cc
 #, c-format
 msgid "Unsupported file %s given on commandline"
-msgstr ""
+msgstr "Filen %s som angavs på kommandoraden stöds ej"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
-msgstr "Du måste lägga till några ”source”-URI:er i din sources.list"
+msgstr "Du måste lägga till några ”deb-src”-URI:er i din sources.list"
 
 #: apt-pkg/tagfile.cc
 #, c-format
 msgid "Cannot convert %s to integer: out of range"
-msgstr ""
+msgstr "Kan inte omvandla %s till heltal: utanför intervallet"
 
 #: apt-pkg/update.cc
 msgid ""
@@ -1593,10 +1643,6 @@ msgstr ""
 "Vissa indexfiler kunde inte hämtas. De har ignorerats eller så har de gamla "
 "använts istället."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beräknar uppgradering"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1649,6 +1695,7 @@ msgid ""
 "Do you want to accept these changes and continue updating from this "
 "repository?"
 msgstr ""
+"Vill du godta dessa ändringar och fortsätta uppdatera från detta förråd?"
 
 #: apt-private/private-cachefile.cc
 msgid "Correcting dependencies..."
@@ -1689,17 +1736,17 @@ msgstr "Sorterar"
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Note, selecting '%s' for task '%s'\n"
-msgstr "Observera, väljer \"%s\" för funktionen \"%s\"\n"
+msgstr "Observera, väljer ”%s” för funktionen ”%s”\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Note, selecting '%s' for glob '%s'\n"
-msgstr "Observera, väljer \"%s\" för det reguljära uttrycket \"%s\"\n"
+msgstr "Observera, väljer ”%s” för jokermönstret ”%s”\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Note, selecting '%s' for regex '%s'\n"
-msgstr "Observera, väljer \"%s\" för det reguljära uttrycket \"%s\"\n"
+msgstr "Observera, väljer ”%s” för det reguljära uttrycket ”%s”\n"
 
 #: apt-private/private-cacheset.cc
 #, c-format
@@ -1707,9 +1754,8 @@ msgid "Package %s is a virtual package provided by:\n"
 msgstr "Paketet %s är ett virtuellt paket som tillhandahålls av:\n"
 
 #: apt-private/private-cacheset.cc
-#, fuzzy
 msgid " [Installed]"
-msgstr "[installerat]"
+msgstr " [Installerat]"
 
 #: apt-private/private-cacheset.cc
 msgid " [Not candidate version]"
@@ -1737,12 +1783,12 @@ msgstr "Dock kan följande paket ersätta det:"
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Package '%s' has no installation candidate"
-msgstr "Paketet \"%s\" har ingen installationskandidat"
+msgstr "Paketet ”%s” har ingen installationskandidat"
 
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Virtual packages like '%s' can't be removed\n"
-msgstr "Virtuella paket som \"%s\" kan inte tas bort\n"
+msgstr "Virtuella paket som ”%s” kan inte tas bort\n"
 
 #. TRANSLATORS: Note, this is not an interactive question
 #: apt-private/private-cacheset.cc apt-private/private-install.cc
@@ -1759,16 +1805,16 @@ msgstr "Paketet ”%s” är inte installerat, så det tas inte bort\n"
 #: apt-private/private-cacheset.cc
 #, c-format
 msgid "Note, selecting '%s' instead of '%s'\n"
-msgstr "Observera, väljer \"%s\" istället för \"%s\"\n"
+msgstr "Observera, väljer ”%s” istället för ”%s”\n"
 
 #: apt-private/private-cmndline.cc
 msgid "Most used commands:"
-msgstr ""
+msgstr "Vanligaste kommandona:"
 
 #: apt-private/private-cmndline.cc
 #, c-format
 msgid "See %s for more information about the available commands."
-msgstr ""
+msgstr "Se %s för mer information om tillgängliga kommandon."
 
 #: apt-private/private-cmndline.cc
 msgid ""
@@ -1777,6 +1823,10 @@ msgid ""
 "Package and version choices can be expressed via apt_preferences(5).\n"
 "Security details are available in apt-secure(8).\n"
 msgstr ""
+"Konfigurationsflaggor och –syntax beskrivs i apt.conf(5).\n"
+"Information om hur du konfigurerar källor hittas i sources.list(5).\n"
+"Paket- och versionsval kan uttryckas genom apt_preferences(5).\n"
+"Säkerhetsinformation finns i apt-secure(8).\n"
 
 #: apt-private/private-cmndline.cc
 msgid "This APT has Super Cow Powers."
@@ -1791,6 +1841,8 @@ msgid ""
 "--force-yes is deprecated, use one of the options starting with --allow "
 "instead."
 msgstr ""
+"--force-yes rekommenderas inte, använd en av flaggorna som börjar med --"
+"allow istället."
 
 #: apt-private/private-depends.cc apt-private/private-download.cc
 #: apt-private/private-show.cc cmdline/apt-mark.cc
@@ -1814,11 +1866,11 @@ msgid "Install these packages without verification?"
 msgstr "Installera dessa paket utan verifiering?"
 
 #: apt-private/private-download.cc
-#, fuzzy
 msgid ""
 "There were unauthenticated packages and -y was used without --allow-"
 "unauthenticated"
-msgstr "Problem har uppstått och -y användes utan --force-yes"
+msgstr ""
+"Hittade oautentiserade paket och -y användes utan --allow-unauthenticated"
 
 #: apt-private/private-download.cc
 #, c-format
@@ -1864,6 +1916,20 @@ msgstr "Följande information kan vara till hjälp för att lösa situationen:"
 msgid "Broken packages"
 msgstr "Trasiga paket"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"Ej sammanslagen usr stöds inte längre, använd usrmerge för att konvertera "
+"till system med sammanslaget usr."
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "Se %s för ytterligare detaljer."
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1881,23 +1947,22 @@ msgid "Packages need to be removed but remove is disabled."
 msgstr "Paketen måste tas bort men ”Remove” är inaktiverat."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "Essential packages were removed and -y was used without --allow-remove-"
 "essential."
-msgstr "Problem har uppstått och -y användes utan --force-yes"
+msgstr ""
+"Systemkritiska paket togs bort och -y användes utan --allow-remove-essential."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid "Packages were downgraded and -y was used without --allow-downgrades."
-msgstr "Problem har uppstått och -y användes utan --force-yes"
+msgstr "Paket nedgraderades och -y användes utan --allow-downgrades."
 
 #: apt-private/private-install.cc
-#, fuzzy
 msgid ""
 "Held packages were changed and -y was used without --allow-change-held-"
 "packages."
-msgstr "Problem har uppstått och -y användes utan --force-yes"
+msgstr ""
+"Fasthållna paket ändrades -y användes utan --allow-change-held-packages."
 
 #: apt-private/private-install.cc
 msgid "Internal error, Ordering didn't finish"
@@ -1906,8 +1971,13 @@ msgstr "Internt fel. Sorteringen färdigställdes inte"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Konstigt… storlekarna stämde inte överens, skicka e-post till apt@packages."
-"debian.org"
+"Konstigt… storlekarna stämde inte överens, skicka e-post till "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Hämtningsstorlek: %sB / %sB\n"
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1916,6 +1986,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Behöver hämta %sB/%sB arkiv.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  Hämtningsstorlek: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1923,14 +1998,58 @@ msgstr "Behöver hämta %sB/%sB arkiv.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Behöver hämta %sB arkiv.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Efter denna åtgärd kommer ytterligare %sB utrymme användas på disken.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "Nödvändigt utrymme: %sB / %sB tillgängligt\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+"Behöver mer plats än tillgängligt: %sB > %sB, installationen kan misslyckas"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "i %s:  %sB / %sB tillgängligt\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+"Behöver mer plats i %s än tillgängligt: %sB > %sB, installationen kan "
+"misslyckas"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "Nödvändigt utrymme: %sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  Frigjort utrymme: %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1947,6 +2066,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"Tillåter inte ta bort nödvändiga systemkritiska paket. Detta kan ödelägga "
+"systemet."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "Fortsätta ändå?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "Fortsätta?"
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -2012,6 +2141,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Internt fel, AutoRemover förstörde något"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Använd ”%s” för att ta bort det."
+msgstr[1] "Använd ”%s” för att ta bort dem."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2033,18 +2169,6 @@ msgstr[0] ""
 msgstr[1] ""
 "%lu paket blev installerade automatiskt och är inte längre nödvändiga.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Använd ”%s” för att ta bort det."
-msgstr[1] "Använd ”%s” för att ta bort dem."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Följande ytterligare paket kommer att installeras:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Föreslagna paket:"
@@ -2053,6 +2177,10 @@ msgstr "Föreslagna paket:"
 msgid "Recommended packages:"
 msgstr "Rekommenderade paket:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Följande ytterligare paket kommer att installeras:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2073,9 +2201,9 @@ msgstr "Ominstallation av %s är inte möjlig, det kan inte hämtas.\n"
 
 #. TRANSLATORS: First string is package name, second is version
 #: apt-private/private-install.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s is already the newest version (%s).\n"
-msgstr "%s är redan den senaste versionen.\n"
+msgstr "%s är redan den senaste versionen (%s).\n"
 
 #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
 #, c-format
@@ -2116,7 +2244,7 @@ msgid ""
 "      Keep also in mind that locking is deactivated,\n"
 "      so don't depend on the relevance to the real current situation!\n"
 msgstr ""
-"OBSERVERA: Detta är endast en simulation!\n"
+"OBSERVERA: Detta är endast en simulering!\n"
 "           %s behöver root-privilegier för verklig körning.\n"
 "           Tänk också på att låsningen är inaktiverad, så\n"
 "           förlita dig inte på relevansen till den verkliga situationen!\n"
@@ -2189,14 +2317,42 @@ msgstr " eller"
 msgid "The following packages have unmet dependencies:"
 msgstr "Följande paket har beroenden som inte kan tillfredsställas:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "Otillfredsställda beroenden:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Följande NYA paket kommer att installeras:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "Installerar:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "Installerar beroenden:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "TAR BORT:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Följande paket kommer att TAS BORT:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Följande uppgraderingar har skjutits upp på grund av fasning:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "Uppgraderar inte ännu på grund av fasning:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "Uppgraderar inte:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Följande paket har hållits tillbaka:"
@@ -2205,10 +2361,22 @@ msgstr "Följande paket har hållits tillbaka:"
 msgid "The following packages will be upgraded:"
 msgstr "Följande paket kommer att uppgraderas:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "Uppgraderar:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "NEDGRADERAR:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Följande paket kommer att NEDGRADERAS:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "Ändrar kvarhållna paket:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Följande tillbakahållna paket kommer att ändras:"
@@ -2226,26 +2394,50 @@ msgstr ""
 "VARNING: Följande systemkritiska paket kommer att tas bort.\n"
 "Detta bör INTE genomföras såvida du inte vet exakt vad du gör!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "Sammanfattning:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu att uppgradera, %lu att nyinstallera, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Uppgraderar: %lu, Installerar: %lu,"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu att installera om, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Ominstallerar: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu att nedgradera, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "Nedgraderar: %lu, "
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu att ta bort och %lu att inte uppgradera.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "Tar bort: %lu, Uppgraderar inte: %lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2273,7 +2465,7 @@ msgid "Y"
 msgstr "J"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2314,7 +2506,7 @@ msgstr "Fastnålade paket:"
 #: apt-private/private-show.cc
 #, c-format
 msgid "%s -> %s with priority %d\n"
-msgstr ""
+msgstr "%s -> %s med prioritet %d\n"
 
 #: apt-private/private-show.cc
 msgid "  Installed: "
@@ -2335,7 +2527,7 @@ msgstr "  Versionstabell:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "fasad"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2453,11 +2645,11 @@ msgstr "%s har inga byggberoenden.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Ingen arkitekturinformation tillgänglig för %s. Se apt.conf(5) APT::"
-"Architectures för inställning"
+"Ingen arkitekturinformation tillgänglig för %s. Se apt.conf(5) "
+"APT::Architectures för inställning"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2468,6 +2660,7 @@ msgstr "Du måste ange minst ett paket att kontrollera byggberoenden för"
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"Ogiltig operator ”%c” vid offset %d, menade du ”%c%c” eller ”%c=”? - i: %s"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2493,11 +2686,15 @@ msgstr "Misslyckades med att tolka %s. Redigera igen? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Din ”%s”-fil ändrades, kör ”apt-get update”.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
-#, fuzzy, c-format
+#, c-format
 msgid "Package %s version %s has an unmet dep:\n"
-msgstr ""
-"Paketet %s med version %s har ett beroende som inte kan tillfredsställas:\n"
+msgstr "Paketet %s med version %s har ett otillfredsställt beroende:\n"
 
 #: apt-private/private-update.cc
 msgid "The update command takes no arguments"
@@ -2510,6 +2707,45 @@ msgid ""
 "Usage of %s should be preferred over embedding login information directly in "
 "the %s entry for '%s'"
 msgstr ""
+"Det rekommenderas att använda %s istället för att bädda in "
+"inloggningsinformation direkt i %s-posten för ”%s”"
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "Saknad Signed-By i %s-posten för ”%s”"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Se manualsidan apt-secure(8) för detaljer om att skapa förråd och "
+"användarkonfiguration."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
 
 #: apt-private/private-update.cc
 #, c-format
@@ -2526,9 +2762,9 @@ msgid "All packages are up to date."
 msgstr "Alla paket är uppdaterade."
 
 #: cmdline/apt-cache.cc cmdline/apt-mark.cc
-#, fuzzy, c-format
+#, c-format
 msgid "%s does not take any arguments"
-msgstr "Uppdateringskommandot tar inga argument"
+msgstr "%s tar inga argument"
 
 #: cmdline/apt-cache.cc
 msgid "Total package names: "
@@ -2558,6 +2794,12 @@ msgstr "  Blandade virtuella paket: "
 msgid "  Missing: "
 msgstr "  Saknade: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Totalt antal olika versioner: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Totalt antal olika versioner: "
@@ -2610,6 +2852,15 @@ msgid ""
 "too long ago, but in exchange apt-cache works independently of the\n"
 "availability of the configured sources (e.g. offline).\n"
 msgstr ""
+"Användning: apt-cache [flaggor] kommando\n"
+"            apt-cache [flaggor] show paket1 [paket2 …]\n"
+"\n"
+"apt-cache efterfrågar och visar tillgänglig information om installerade\n"
+"och installerbara paket. Det jobbar helt och hållet på data hämtat till\n"
+"den lokala cachen med kommandot ”update” i t.ex. apt-get. Den visade\n"
+"information kan därför vara föråldrad och den senaste uppdateringen\n"
+"gjordes för länge sedan, men apt-cache fungerar däremot oavsett om de\n"
+"konfigurerade källorna är tillgängliga (t.ex. utan nätverk).\n"
 
 #: cmdline/apt-cache.cc
 msgid "Show source records"
@@ -2678,13 +2929,17 @@ msgid ""
 "media types as package sources to APT. The mount point and device\n"
 "information is taken from apt.conf(5), udev(7) and fstab(5).\n"
 msgstr ""
+"Användning: apt-cdrom [flaggor] kommando\n"
+"\n"
+"apt-cdrom används för att lägga till CDROM:ar, USB-minnen och andra\n"
+"borttagbara mediatyper som paketkällor för APT. Monteringspunkten\n"
+"och enhetsinformationen hämtas från apt.conf(5), udev(7) och fstab(5).\n"
 
 #: cmdline/apt-config.cc
 msgid "Arguments not in pairs"
 msgstr "Argumenten gavs inte parvis"
 
 #: cmdline/apt-config.cc
-#, fuzzy
 msgid ""
 "Usage: apt-config [options] command\n"
 "\n"
@@ -2693,15 +2948,17 @@ msgid ""
 msgstr ""
 "Användning: apt-config [flaggor] kommando\n"
 "\n"
-"apt-config är ett enkelt verktyg för att läsa APTs konfigurationsfil\n"
+"apt-config är ett gränssnitt mot konfigurationsinställningarna som\n"
+"används av alla APT-verktyg, huvudsakligen tänkt för felsökning\n"
+"och skalskript.\n"
 
 #: cmdline/apt-config.cc
 msgid "get configuration values via shell evaluation"
-msgstr ""
+msgstr "hämta konfigurationsvärden via skalutvärdering"
 
 #: cmdline/apt-config.cc
 msgid "show the active configuration setting"
-msgstr ""
+msgstr "visa aktiv konfigurationsinställning"
 
 #: cmdline/apt-dump-solver.cc
 msgid ""
@@ -2710,9 +2967,12 @@ msgid ""
 "apt-dump-solver is an interface to store an EDSP scenario in\n"
 "a file and optionally forwards it to another solver.\n"
 msgstr ""
+"Användning: apt-dump-solver\n"
+"\n"
+"apt-dump-solver är ett gränssnitt för att lagra ett EDSP-scenario\n"
+"i en fil och möjligen vidaresända den till en annan lösare.\n"
 
 #: cmdline/apt-extracttemplates.cc
-#, fuzzy
 msgid ""
 "Usage: apt-extracttemplates file1 [file2 ...]\n"
 "\n"
@@ -2722,14 +2982,10 @@ msgid ""
 msgstr ""
 "Användning: apt-extracttemplates fil1 [fil2 …]\n"
 "\n"
-"apt-extracttemplates är ett verktyg för att hämta ut konfigurations- \n"
-"och mallinformation från paket\n"
-"\n"
-"Flaggor:\n"
-"  -h   Denna hjälptext.\n"
-"  -t   Ställ in temporärkatalogen.\n"
-"  -c=? Läs denna konfigurationsfil.\n"
-"  -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+"apt-extracttemplates används för att hämta ut konfigurations- \n"
+"och mallfiler från debianpaket. Det används huvudsakligen av\n"
+"debconf(1) för att ställa konfigurationsfrågor innan paket\n"
+"installeras.\n"
 
 #: cmdline/apt-extracttemplates.cc
 msgid "Cannot get debconf version. Is debconf installed?"
@@ -2762,7 +3018,6 @@ msgid "Supported modules:"
 msgstr "Moduler som stöds:"
 
 #: cmdline/apt-get.cc
-#, fuzzy
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -2774,11 +3029,12 @@ msgid ""
 "with their dependencies.\n"
 msgstr ""
 "Användning: apt-get [flaggor] kommando\n"
-"       apt-get [flaggor] install|remove paket1 [paket2 …]\n"
-"       apt-get [flaggor] source paket1 [paket2 …]\n"
+"            apt-get [flaggor] install|remove paket1 [paket2 …]\n"
+"            apt-get [flaggor] source paket1 [paket2 …]\n"
 "\n"
-"apt-get är ett enkelt kommandoradsgränssnitt för att hämta och installera\n"
-"paket. De mest använda kommandona är ”update” och ”install”.\n"
+"apt-get är ett kommandoradsgränssnitt för att hämta paket\n"
+"och installation om dem från autentiserade källor och för att\n"
+"installera, uppgradera och ta bort paket och deras beroenden.\n"
 
 #: cmdline/apt-get.cc
 msgid "Retrieve new lists of packages"
@@ -2793,10 +3049,8 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgstr "Installera nya paket (paket är libc6, inte libc6.deb)"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Installera nya paket (paket är libc6, inte libc6.deb)"
+msgstr "Ominstallera paket (paket är libc6, inte libc6.deb)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
@@ -2823,10 +3077,8 @@ msgid "Configure build-dependencies for source packages"
 msgstr "Tillfredsställ byggberoenden för källkodspaket"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Bygger beroendeträd"
+msgstr "Uppfyll beroendesträngar"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
@@ -2867,10 +3119,9 @@ msgstr "Hämtning misslyckades"
 #: cmdline/apt-helper.cc
 #, c-format
 msgid "GetSrvRec failed for %s"
-msgstr ""
+msgstr "GetSrvRec misslyckades för %s"
 
 #: cmdline/apt-helper.cc
-#, fuzzy
 msgid ""
 "Usage: apt-helper [options] command\n"
 "       apt-helper [options] cat-file file ...\n"
@@ -2880,9 +3131,12 @@ msgid ""
 "e.g. the same proxy configuration or acquire system as APT would.\n"
 msgstr ""
 "Användning: apt-helper [flaggor] kommando\n"
-"       apt-helper [flaggor] download-file uri målsökväg\n"
+"            apt-helper [flaggor] cat-file file …\n"
+"            apt-helper [flaggor] download-file uri målsökväg\n"
 "\n"
-"apt-helper är en intern hjälpare för apt\n"
+"apt-helper innehåller flera olika kommandon som kan användas av\n"
+"skalskript för att t.ex använda samma mellanserverinställningar\n"
+"eller hämtningssystem som APT.\n"
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
@@ -2890,11 +3144,17 @@ msgstr "hämta angiven uri till målsökvägen"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
-msgstr ""
+msgstr "slå upp en SRV-post (t.ex. _http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
-msgstr ""
+msgstr "slå ihop filer, med automatisk dekomprimering"
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problem med att lägga filen till hashtabellen"
 
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
@@ -2902,18 +3162,17 @@ msgstr "hitta proxy med hjälp av apt.conf"
 
 #: cmdline/apt-helper.cc
 msgid "wait for system to be online"
-msgstr ""
+msgstr "vänta på att systemet ansluter till nätverket"
 
 #: cmdline/apt-helper.cc
 msgid "drop privileges before running given command"
-msgstr ""
+msgstr "släpp privilegier innan angivet kommando körs"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "analysera ett mönster"
 
 #: cmdline/apt-internal-planner.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-planner\n"
 "\n"
@@ -2921,20 +3180,13 @@ msgid ""
 "installation planner for the APT family like an external one,\n"
 "for debugging or the like.\n"
 msgstr ""
-"Användning: apt-internal-solver\n"
-"\n"
-"apt-internal-solver är ett gränssnitt för att använda den interna\n"
-"lösaren som en extern lösare för APT-familjen för felsökning eller\n"
-"liknande\n"
+"Användning: apt-internal-planner\n"
 "\n"
-"Flaggor:\n"
-"  -h   Denna hjälptext.\n"
-"  -q  Loggbar utmatning - ingen förloppsindikator\n"
-"  -c=? Läs denna konfigurationsfil.\n"
-"  -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+"apt-internal-planner är ett gränssnitt för att använda den aktuella\n"
+"interna installationsplaneraren för APT-familjen på samma sätt som\n"
+"en extern, för felsökning eller liknande.\n"
 
 #: cmdline/apt-internal-solver.cc
-#, fuzzy
 msgid ""
 "Usage: apt-internal-solver\n"
 "\n"
@@ -2944,15 +3196,9 @@ msgid ""
 msgstr ""
 "Användning: apt-internal-solver\n"
 "\n"
-"apt-internal-solver är ett gränssnitt för att använda den interna\n"
-"lösaren som en extern lösare för APT-familjen för felsökning eller\n"
-"liknande\n"
-"\n"
-"Flaggor:\n"
-"  -h   Denna hjälptext.\n"
-"  -q  Loggbar utmatning - ingen förloppsindikator\n"
-"  -c=? Läs denna konfigurationsfil.\n"
-"  -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+"apt-internal-solver är ett gränssnitt för att använda den aktuella\n"
+"interna lösaren för APT-familjen på samma sätt som en extern, för\n"
+"felsökning eller liknande.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -2971,13 +3217,11 @@ msgstr "%s var redan satt till automatiskt installerad.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
-msgstr ""
+msgstr "Inga ändringar nödvändiga"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "The following NEW packages will be installed:"
 msgid "The following packages will be marked as automatically installed:"
-msgstr "Följande NYA paket kommer att installeras:"
+msgstr "Följande paket kommer markeras som automatiskt installerade:"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -3006,20 +3250,19 @@ msgstr "Avbröt tillbakahållning av %s.\n"
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for purge.\n"
-msgstr ""
+msgstr "Valde ”%s” för radering.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for removal.\n"
-msgstr ""
+msgstr "Valde ”%s” för borttagning.\n"
 
 #: cmdline/apt-mark.cc
 #, c-format
 msgid "Selected %s for installation.\n"
-msgstr ""
+msgstr "Valde ”%s” för installation.\n"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
 msgid ""
 "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
 "\n"
@@ -3032,7 +3275,8 @@ msgstr ""
 "\n"
 "apt-mark är ett enkelt kommandoradsgränssnitt för att markera\n"
 "paket som manuellt eller automatiskt installerade. Det kan också\n"
-"lista markeringar.\n"
+"användas för att ändra dpkg(1)-markeringsläge för paket, och\n"
+"för att lista alla paket med eller utan vissa markeringar.\n"
 
 #: cmdline/apt-mark.cc
 msgid "Mark the given packages as automatically installed"
@@ -3043,10 +3287,8 @@ msgid "Mark the given packages as manually installed"
 msgstr "Markera de angivna paketen som manuellt installerade"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "Mark the given packages as automatically installed"
 msgid "Mark all dependencies of meta packages as automatically installed."
-msgstr "Markera de angivna paketen som automatiskt installerade"
+msgstr "Markera alla beroenden för metapaket som automatiskt installerade."
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
@@ -3080,6 +3322,12 @@ msgid ""
 "By default it sorts by binary package information, but the -s option\n"
 "can be used to switch to source package ordering instead.\n"
 msgstr ""
+"Användning: apt-sortpkgs [flaggor] fil1 [fil2 …]\n"
+"\n"
+"apt-sortpkgs är ett enkelt verktyg för att sortera paket-\n"
+"informationsfiler. Som standard sorterar det efter binär\n"
+"paketinformation, men flaggan -s kan användas för att byta till\n"
+"källkodspaketsortering istället.\n"
 
 #: cmdline/apt.cc
 msgid ""
@@ -3091,6 +3339,13 @@ msgid ""
 "like apt-get and apt-cache, but enables options more suitable for\n"
 "interactive use by default.\n"
 msgstr ""
+"Användning: apt [flaggor] kommando\n"
+"\n"
+"apt är ett kommandoradspakethanterare och tillhandahåller kommandon\n"
+"för att söka och hantera såväl som efterfråga information om paket.\n"
+"Det tillhandahåller samma funktionalitet som de specialiserade\n"
+"APT-verktygen, såsom apt-get och apt-cache, men tillhandahåller\n"
+"som standard flaggor som är mer lämpliga för att användas interaktivt.\n"
 
 #. query
 #: cmdline/apt.cc
@@ -3111,20 +3366,16 @@ msgid "install packages"
 msgstr "installera paket"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "install packages"
 msgid "reinstall packages"
-msgstr "installera paket"
+msgstr "ominstallera paket"
 
 #: cmdline/apt.cc
 msgid "remove packages"
 msgstr "ta bort paket"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "Ta automatiskt bort alla oanvända paket"
+msgstr "ta automatiskt bort alla oanvända paket"
 
 #. system wide stuff
 #: cmdline/apt.cc
@@ -3145,10 +3396,12 @@ msgid "edit the source information file"
 msgstr "redigera källinformationsfilen"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "modernize .list files to .sources files"
+msgstr ""
+
+#: cmdline/apt.cc
 msgid "satisfy dependency strings"
-msgstr "Misslyckades med att tillfredsställa %s-beroendet för %s: %s"
+msgstr "tillfredsställ beroendesträngar"
 
 #: dselect/install
 msgid "Bad default setting!"
@@ -3171,8 +3424,7 @@ msgstr "Det uppstod fel vid uppackning. Paketen som blev installerade kommer"
 
 #: dselect/install
 msgid "will be configured. This may result in duplicate errors"
-msgstr ""
-"att konfigureras. Detta kan resultera i dubbletta fel eller fel orsakade"
+msgstr "att konfigureras. Detta kan resultera i dubblettfel eller fel orsakade"
 
 #: dselect/install
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
@@ -3350,7 +3602,7 @@ msgstr "Okänd komprimeringsalgoritm ”%s”"
 msgid "Compressed output %s needs a compression set"
 msgstr "Komprimerade utdata %s behöver en komprimeringsuppsättning"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Misslyckades med att skapa IPC-rör till underprocess"
 
@@ -3472,24 +3724,28 @@ msgid "Archive had no package field"
 msgstr "Arkivet har inget package-fält"
 
 #: ftparchive/writer.cc
-#, c-format
-msgid "  %s has no override entry\n"
+#, fuzzy, c-format
+#| msgid "  %s has no override entry\n"
+msgid "  %.*s has no override entry\n"
 msgstr "  %s har ingen post i åsidosättningsfilen\n"
 
 # parametrar: paket, ny, gammal
 #: ftparchive/writer.cc
-#, c-format
-msgid "  %s maintainer is %s not %s\n"
+#, fuzzy, c-format
+#| msgid "  %s maintainer is %s not %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
 msgstr "  ansvarig för paketet %s är %s ej %s\n"
 
 #: ftparchive/writer.cc
-#, c-format
-msgid "  %s has no source override entry\n"
+#, fuzzy, c-format
+#| msgid "  %s has no source override entry\n"
+msgid "  %.*s has no source override entry\n"
 msgstr "  %s har ingen källåsidosättningspost\n"
 
 #: ftparchive/writer.cc
-#, c-format
-msgid "  %s has no binary override entry either\n"
+#, fuzzy, c-format
+#| msgid "  %s has no binary override entry either\n"
+msgid "  %.*s has no binary override entry either\n"
 msgstr "  %s har heller ingen binär åsidosättningspost\n"
 
 #: methods/basehttp.cc
@@ -3528,10 +3784,10 @@ msgstr "Felaktiga data i huvud"
 msgid "Connection failed"
 msgstr "Anslutningen misslyckades"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
-msgstr ""
+msgstr "Filen har oväntad storlek (%llu != %llu). Spegelsynkning pågår?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3572,7 +3828,7 @@ msgstr "Kunde inte avmontera cd-rom:en i %s, den kanske fortfarande används."
 msgid "Disk not found."
 msgstr "Skivan hittades inte."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Filen hittades inte"
 
@@ -3580,7 +3836,7 @@ msgstr "Filen hittades inte"
 #: methods/connect.cc
 #, c-format
 msgid "Direct connection to %s domains is blocked by default."
-msgstr ""
+msgstr "Direkt anslutning till %s-domäner blockeras som standard."
 
 #: methods/connect.cc
 #, c-format
@@ -3588,10 +3844,9 @@ msgid "[IP: %s %s]"
 msgstr "[IP: %s %s]"
 
 #: methods/connect.cc
-#, fuzzy, c-format
-#| msgid "Connecting to %s (%s)"
+#, c-format
 msgid "Connected to %s (%s)"
-msgstr "Ansluter till %s (%s)"
+msgstr "Ansluten till %s (%s)"
 
 #: methods/connect.cc methods/http.cc
 #, c-format
@@ -3609,7 +3864,7 @@ msgstr "Kunde inte skapa ett uttag (socket) för %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Kunde inte initiera anslutningen till %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Misslyckades"
 
@@ -3623,9 +3878,7 @@ msgstr "Kunde inte ansluta till %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Kunde inte ansluta till %s:%s (%s), anslutningen överskred tidsgräns"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Ansluter till %s"
@@ -3665,154 +3918,23 @@ msgstr "Misslyckades med att ta status"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Ogiltig URI, lokala URI:er får inte börja med //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Loggar in"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Kunde inte fastställa namnet på partnern"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Kunde inte fastställa det lokala namnet"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Servern nekade anslutningen och sade: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER misslyckades, servern sade: %s"
+msgid "untrusted public key algorithm: %s"
+msgstr "obetrodd algoritm för öppen nyckel: %s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS misslyckades, servern sade: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "%s will be deprecated in a future release"
 msgstr ""
-"En mellanserver (proxy) angavs men inget inloggningsskript, Acquire::ftp::"
-"ProxyLogin är tom."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Kommandot ”%s” i inloggningsskriptet misslyckades, servern sade: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE misslyckades, servern sade: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Tidsgränsen för anslutningen överskreds"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Servern stängde anslutningen"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Ett svar spillde bufferten."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Protokollet skadat"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Kunde inte skapa ett uttag (socket)"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Kunde inte ansluta datauttaget (socket), inget svar inom tidsgräns"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Kunde inte ansluta passivt uttag (socket)."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo kunde inte få tag i ett lyssnande uttag (socket)"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Kunde inte binda ett uttag (socket)"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Kunde inte lyssna på uttaget (socket)"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Kunde inte fastställa uttagets namn (socket)"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Kunde inte sända PORT-kommando"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Okänd adressfamilj %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT misslyckades, servern sade: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Anslutet datauttag (socket) fick inte svar inom tidsgränsen"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Kunde inte ta emot anslutningen"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problem med att lägga filen till hashtabellen"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Kunde inte hämta filen, servern sade ”%s”"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Datauttag (socket) fick inte svar inom tidsgränsen"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Dataöverföringen misslyckades, servern sade ”%s”"
-
-# Statusmeddelande, byter från substantiv till verb
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Frågar"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Kunde inte starta "
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Signed file isn't valid, got '%s' (does the network require authentication?)"
 msgstr ""
-"Klartextsignerad fil är inte giltig, fick ”%s” (kräver nätverket "
-"autentisering?)"
+"Signerad fil är inte giltig, fick ”%s” (kräver nätverket autentisering?)"
 
 #: methods/gpgv.cc
 msgid "At least one invalid signature was encountered."
@@ -3826,26 +3948,19 @@ msgstr ""
 "fingeravtryck?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
-"Kunde inte köra ”apt-key” för att verifiera signatur (är gnupg installerad?)"
-
-#: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "Okänt fel vid körning av apt-key"
+"Kunde inte köra ”gpgv” för att verifiera signatur (är gnupg installerad?)"
 
 #: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
+msgid "Unknown error executing gpgv"
+msgstr "Okänt fel vid körning av gpgv"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr ""
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "Signaturen för nyckeln %s använder en svag algoritm (%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3879,18 +3994,151 @@ msgstr "”Select” misslyckades"
 msgid "Connection timed out"
 msgstr "Anslutningen överskred tidsgränsen"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problem med att lägga filen till hashtabellen"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Misslyckades med att ställa in ändringstid"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Anslutningen stängdes i förtid"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Tomma filer kan inte vara giltiga arkiv"
 
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "Metoden ”%s” stöds inte och har inaktiverats som standard. Överväg att "
+#~ "byta till http(s). Sätt Dir::Bin::Methods::%s till ”%s” för att aktivera "
+#~ "det igen."
+
+#~ msgid "Logging in"
+#~ msgstr "Loggar in"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Kunde inte fastställa namnet på partnern"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Kunde inte fastställa det lokala namnet"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Servern nekade anslutningen och sade: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER misslyckades, servern sade: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS misslyckades, servern sade: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "En mellanserver (proxy) angavs men inget inloggningsskript, "
+#~ "Acquire::ftp::ProxyLogin är tom."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Kommandot ”%s” i inloggningsskriptet misslyckades, servern sade: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE misslyckades, servern sade: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Tidsgränsen för anslutningen överskreds"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Servern stängde anslutningen"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Ett svar spillde bufferten."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Protokollet skadat"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Kunde inte skapa ett uttag (socket)"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Kunde inte ansluta datauttaget (socket), inget svar inom tidsgräns"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Kunde inte ansluta passivt uttag (socket)."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo kunde inte få tag i ett lyssnande uttag (socket)"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Kunde inte binda ett uttag (socket)"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Kunde inte lyssna på uttaget (socket)"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Kunde inte fastställa uttagets namn (socket)"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Kunde inte sända PORT-kommando"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Okänd adressfamilj %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT misslyckades, servern sade: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Anslutet datauttag (socket) fick inte svar inom tidsgränsen"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Kunde inte ta emot anslutningen"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Kunde inte hämta filen, servern sade ”%s”"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Datauttag (socket) fick inte svar inom tidsgränsen"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Dataöverföringen misslyckades, servern sade ”%s”"
+
+# Statusmeddelande, byter från substantiv till verb
+#~ msgid "Query"
+#~ msgstr "Frågar"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Kunde inte starta "
+
+#, c-format
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~ "section in apt-key(8) for details."
+#~ msgstr ""
+#~ "Nyckel lagras i den gamla nyckelringen trusted.gpg (%s), se DEPRECATION-"
+#~ "stycket i apt-key(8) för detaljer."
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Anslutningen stängdes i förtid"
+
+#, fuzzy, c-format
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Installerad: "
+
+#, fuzzy
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Följande tillbakahållna paket kommer att ändras:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Ja, gör som jag säger!"
 
diff --git a/po/th.po b/po/th.po
index 2729fd1..b0e0408 100644
--- a/po/th.po
+++ b/po/th.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2014-12-12 13:00+0700\n"
 "Last-Translator: Theppitak Karoonboonyanan <thep@debian.org>\n"
 "Language-Team: Thai <thai-l10n@googlegroups.com>\n"
@@ -51,8 +51,8 @@ msgstr "ไดเรกทอรี %s ถูก divert"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -113,8 +113,8 @@ msgid ""
 "Clearsigned file isn't valid, got '%s' (does the network require "
 "authentication?)"
 msgstr ""
-"แฟ้มที่เซ็นกำกับครอบข้อความมีเนื้อหาไม่ถูกต้อง ได้รับผลลัพธ์ "
-"'%s' (เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
+"แฟ้มที่เซ็นกำกับครอบข้อความมีเนื้อหาไม่ถูกต้อง ได้รับผลลัพธ์ '%s' "
+"(เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
 
 #: apt-pkg/acquire-item.cc
 #, fuzzy, c-format
@@ -191,8 +191,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "ชุดจัดแจกขัดแย้งกัน: %s (ต้องการ %s แต่พบ %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -203,7 +202,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -222,6 +221,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "ไม่สามารถดาวน์โหลด %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -240,13 +246,6 @@ msgstr "ไม่พบแหล่งที่จะดาวน์โหลด
 msgid "Changelog unavailable for %s=%s"
 msgstr "ปูมการแก้ไขสำหรับ %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -631,6 +630,30 @@ msgstr "ไวยากรณ์ผิดพลาด %s:%u: directive 'clear' 
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "ไวยากรณ์ผิดพลาด %s:%u: มีขยะเกินหลังจบแฟ้ม"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -740,11 +763,11 @@ msgstr "โพรเซสย่อย %s คืนค่าข้อผิด
 msgid "Sub-process %s exited unexpectedly"
 msgstr "โพรเซสย่อย %s จบการทำงานกะทันหัน"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "การอ่านข้อมูลผิดพลาด"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "การเขียนข้อมูลผิดพลาด"
 
@@ -1057,6 +1080,12 @@ msgstr "ไม่สามารถล็อคไดเรกทอรีดู
 msgid "Not locked"
 msgstr "ไม่ได้ล็อคอยู่"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1240,6 +1269,16 @@ msgstr "เตรียมรับคำตอบ"
 msgid "External solver failed without a proper error message"
 msgstr "กลไกการแก้ปัญหาภายนอกทำงานล้มเหลวโดยไม่มีข้อความข้อผิดพลาดที่เหมาะสม"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "กำลังคำนวณการปรับรุ่น"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "จำนวนการเชื่อมโยงระหว่างแพกเกจทั้งหมด: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "เรียกกลไกการแก้ปัญหาภายนอก"
@@ -1542,10 +1581,6 @@ msgid ""
 "used instead."
 msgstr "ดาวน์โหลดแฟ้มดัชนีบางแฟ้มไม่สำเร็จ จะข้ามรายการดังกล่าวไป หรือใช้ข้อมูลเก่าแทน"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "กำลังคำนวณการปรับรุ่น"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1810,6 +1845,18 @@ msgstr "ข้อมูลต่อไปนี้อาจช่วยแก้
 msgid "Broken packages"
 msgstr "แพกเกจมีปัญหา"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1852,6 +1899,12 @@ msgstr "ข้อผิดพลาดภายใน: การเรียง
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "แปลกประหลาด... ขนาดไม่ตรงกัน กรุณาอีเมลแจ้ง apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "กำลังดาวน์โหลด %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1859,6 +1912,12 @@ msgstr "แปลกประหลาด... ขนาดไม่ตรงก
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "ต้องดาวน์โหลดแพกเกจ %sB/%sB\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "กำลังดาวน์โหลด %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1866,13 +1925,55 @@ msgstr "ต้องดาวน์โหลดแพกเกจ %sB/%sB\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "ต้องดาวน์โหลดแพกเกจ %sB\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "หลังจากการกระทำนี้ ต้องใช้เนื้อที่บนดิสก์อีก %sB\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "ชื่อที่เก็บไว้: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1890,6 +1991,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "คุณต้องการจะดำเนินการต่อไปหรือไม่?"
@@ -1949,6 +2058,12 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "เกิดข้อผิดพลาดภายใน: AutoRemover ทำความเสียหาย"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ใช้ '%s' เพื่อถอดถอนแพกเกจดังกล่าวได้"
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1964,17 +2079,6 @@ msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
 msgstr[0] "มีแพกเกจ %lu แพกเกจถูกติดตั้งแบบอัตโนมัติไว้ และไม่ต้องใช้อีกต่อไปแล้ว\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "ใช้ '%s' เพื่อถอดถอนแพกเกจดังกล่าวได้"
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "จะติดตั้งแพกเกจเพิ่มเติมต่อไปนี้:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "แพกเกจที่แนะนำ:"
@@ -1983,6 +2087,11 @@ msgstr "แพกเกจที่แนะนำ:"
 msgid "Recommended packages:"
 msgstr "แพกเกจที่ควรใช้ร่วมกัน:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "จะติดตั้งแพกเกจเพิ่มเติมต่อไปนี้:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2112,14 +2221,52 @@ msgstr " หรือ"
 msgid "The following packages have unmet dependencies:"
 msgstr "แพกเกจต่อไปนี้ขาดแพกเกจที่ต้องใช้:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "จะติดตั้งแพกเกจ *ใหม่* ต่อไปนี้:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "กำลังติดตั้ง %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "จำนวนการเชื่อมโยงระหว่างแพกเกจทั้งหมด: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "จะ *ลบ* แพกเกจต่อไปนี้:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "จะคงรุ่นแพกเกจต่อไปนี้:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "จะคงรุ่นแพกเกจต่อไปนี้:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "จะคงรุ่นแพกเกจต่อไปนี้:"
@@ -2128,10 +2275,24 @@ msgstr "จะคงรุ่นแพกเกจต่อไปนี้:"
 msgid "The following packages will be upgraded:"
 msgstr "จะปรับรุ่นแพกเกจต่อไปนี้ขึ้น:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "จะปรับรุ่นแพกเกจต่อไปนี้ *ลง*:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "แพกเกจที่ถูกตรึง:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "จะเปลี่ยนแปลงรายการคงรุ่นแพกเกจต่อไปนี้:"
@@ -2149,26 +2310,53 @@ msgstr ""
 "*คำเตือน*: แพกเกจที่จำเป็นต่อไปนี้จะถูกถอดถอน\n"
 "คุณ *ไม่ควร* ทำเช่นนี้ นอกจากคุณเข้าใจสิ่งที่จะทำ!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "ปรับรุ่นขึ้น %lu, ติดตั้งใหม่ %lu, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "กำลังติดตั้ง %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "ติดตั้งซ้ำ %lu, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "กำลังติดตั้ง %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "ปรับรุ่นลง %lu, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "กำลังดาวน์โหลด %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "ถอดถอน %lu และไม่ปรับรุ่น %lu\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2196,7 +2384,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2373,8 +2561,8 @@ msgstr "%s ไม่ต้องการสิ่งใดสำหรับ bu
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "ไม่มีข้อมูลสถาปัตยกรรมสำหรับ %s ดูวิธีตั้งค่าที่หัวข้อ APT::Architectures ของ apt.conf(5)"
 
@@ -2412,6 +2600,11 @@ msgstr "แจง %s ไม่สำเร็จ จะแก้ไขอีก
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "แฟ้ม '%s' ของคุณมีการเปลี่ยนแปลง กรุณาเรียก 'apt-get update'\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2429,6 +2622,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2474,6 +2698,12 @@ msgstr "  แพกเกจเสมือนผสม: "
 msgid "  Missing: "
 msgstr "  แพกเกจที่ขาดหาย: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "จำนวนรุ่นที่แตกต่างกันทั้งหมด: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "จำนวนรุ่นที่แตกต่างกันทั้งหมด: "
@@ -2808,6 +3038,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "เกิดปัญหาขณะคำนวณค่าแฮชของแฟ้ม"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "ตรวจหาพร็อกซีโดยใช้ apt.conf"
@@ -3055,6 +3291,10 @@ msgstr "ปรับรุ่นระบบโดยถอดถอน/ติ
 msgid "edit the source information file"
 msgstr "แก้ไขแฟ้มข้อมูลแหล่งแพกเกจ"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3250,7 +3490,7 @@ msgstr "ไม่รู้จักอัลกอริทึมบีบอั
 msgid "Compressed output %s needs a compression set"
 msgstr "ผลลัพธ์ของการบีบอัด %s ต้องมีชุดของการบีบอัดด้วย"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "ไม่สามารถสร้างไปป์ IPC ไปยังโพรเซสย่อย"
 
@@ -3369,23 +3609,23 @@ msgstr "แพกเกจไม่มีช่องข้อมูล 'Package
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s ไม่มีข้อมูล override\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s ไม่มีข้อมูล override\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  ผู้ดูแล %s คือ %s ไม่ใช่ %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  ผู้ดูแล %.*s คือ %.*s ไม่ใช่ %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s ไม่มีข้อมูล override สำหรับซอร์ส\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s ไม่มีข้อมูล override สำหรับซอร์ส\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s ไม่มีข้อมูล override สำหรับไบนารีเช่นกัน\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s ไม่มีข้อมูล override สำหรับไบนารีเช่นกัน\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3423,7 +3663,7 @@ msgstr "ข้อมูลส่วนหัวผิดพลาด"
 msgid "Connection failed"
 msgstr "เชื่อมต่อไม่สำเร็จ"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3464,7 +3704,7 @@ msgstr "ไม่สามารถเลิกเมานท์ซีดีร
 msgid "Disk not found."
 msgstr "ไม่พบแผ่น"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "ไม่พบแฟ้ม"
 
@@ -3500,7 +3740,7 @@ msgstr "ไม่สามารถสร้างซ็อกเก็ตสำ
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "ไม่สามารถเริ่มการเชื่อมต่อไปยัง %s:%s (%s)"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "ล้มเหลว"
 
@@ -3514,9 +3754,7 @@ msgstr "ไม่สามารถเชื่อมต่อไปยัง %s
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "ไม่สามารถเชื่อมต่อไปยัง %s:%s (%s) เนื่องจากหมดเวลาคอย"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "เชื่อมต่อไปยัง %s"
@@ -3554,142 +3792,15 @@ msgstr "stat ไม่สำเร็จ"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "URI ไม่ถูกต้อง  URI ของแฟ้มในเครื่องต้องขึ้นต้นด้วย //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "เข้าระบบ"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "ไม่สามารถอ่านชื่อของอีกฝ่ายได้"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "ไม่สามารถอ่านชื่อของเครื่องนี้ได้"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "เซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อโดยรายงานว่า: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr "มีการระบุพร็อกซี แต่ไม่มีสคริปต์สำหรับเข้าระบบ ค่า Acquire::ftp:ProxyLogin ว่างเปล่า"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "คำสั่งสคริปต์เข้าระบบ '%s' ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "หมดเวลารอเชื่อมต่อ"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "เซิร์ฟเวอร์ปิดการเชื่อมต่อ"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "คำตอบท่วมบัฟเฟอร์"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "มีความเสียหายของโพรโทคอล"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "ไม่สามารถสร้างซ็อกเก็ต"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "ไม่สามารถเชื่อมต่อซ็อกเก็ตข้อมูล เนื่องจากหมดเวลาคอย"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "ไม่สามารถเชื่อมต่อซ็อกเกตแบบ passive"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo ไม่สามารถนำซ็อกเก็ตที่รอรับการเชื่อมต่อมาใช้"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "ไม่สามารถ bind ซ็อกเก็ต"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "ไม่สามารถ listen ที่ซ็อกเก็ต"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "ไม่สามารถระบุชื่อซ็อกเก็ต"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "ไม่สามารถส่งคำสั่ง PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "ไม่รู้จักตระกูลที่อยู่ %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "หมดเวลารอเชื่อมต่อซ็อกเก็ตข้อมูล"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "ไม่สามารถรับการเชื่อมต่อ"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "เกิดปัญหาขณะคำนวณค่าแฮชของแฟ้ม"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "ไม่สามารถดาวน์โหลดแฟ้ม เซิร์ฟเวอร์ตอบว่า: '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "หมดเวลาคอยที่ซ็อกเก็ตข้อมูล"
+msgid "untrusted public key algorithm: %s"
+msgstr ""
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "ถ่ายโอนข้อมูลไม่สำเร็จ เซิร์ฟเวอร์ตอบว่า '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "สอบถาม"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "ไม่สามารถเรียก "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3697,8 +3808,8 @@ msgstr "ไม่สามารถเรียก "
 msgid ""
 "Signed file isn't valid, got '%s' (does the network require authentication?)"
 msgstr ""
-"แฟ้มที่เซ็นกำกับครอบข้อความมีเนื้อหาไม่ถูกต้อง ได้รับผลลัพธ์ "
-"'%s' (เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
+"แฟ้มที่เซ็นกำกับครอบข้อความมีเนื้อหาไม่ถูกต้อง ได้รับผลลัพธ์ '%s' "
+"(เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
 
 #: methods/gpgv.cc
 msgid "At least one invalid signature was encountered."
@@ -3710,24 +3821,22 @@ msgid ""
 msgstr "ข้อผิดพลาดภายใน: ลายเซ็นใช้การได้ แต่ไม่สามารถระบุลายนิ้วมือของกุญแจ?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "ไม่สามารถเรียก 'apt-key' เพื่อตรวจสอบลายเซ็น (ได้ติดตั้ง gnupg ไว้หรือไม่?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุขณะเรียก apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3760,18 +3869,133 @@ msgstr "select ไม่สำเร็จ"
 msgid "Connection timed out"
 msgstr "หมดเวลารอเชื่อมต่อ"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "เกิดปัญหาขณะคำนวณค่าแฮชของแฟ้ม"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "กำหนดเวลาแก้ไขไม่สำเร็จ"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "การเชื่อมต่อถูกปิดก่อนเวลาอันควร"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "แฟ้มว่างเปล่าไม่สามารถเป็นแฟ้มจัดเก็บที่ใช้การได้"
 
+#~ msgid "Logging in"
+#~ msgstr "เข้าระบบ"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "ไม่สามารถอ่านชื่อของอีกฝ่ายได้"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "ไม่สามารถอ่านชื่อของเครื่องนี้ได้"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "เซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อโดยรายงานว่า: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "มีการระบุพร็อกซี แต่ไม่มีสคริปต์สำหรับเข้าระบบ ค่า Acquire::ftp:ProxyLogin ว่างเปล่า"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "คำสั่งสคริปต์เข้าระบบ '%s' ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "หมดเวลารอเชื่อมต่อ"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "เซิร์ฟเวอร์ปิดการเชื่อมต่อ"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "คำตอบท่วมบัฟเฟอร์"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "มีความเสียหายของโพรโทคอล"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "ไม่สามารถสร้างซ็อกเก็ต"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "ไม่สามารถเชื่อมต่อซ็อกเก็ตข้อมูล เนื่องจากหมดเวลาคอย"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "ไม่สามารถเชื่อมต่อซ็อกเกตแบบ passive"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo ไม่สามารถนำซ็อกเก็ตที่รอรับการเชื่อมต่อมาใช้"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "ไม่สามารถ bind ซ็อกเก็ต"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "ไม่สามารถ listen ที่ซ็อกเก็ต"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "ไม่สามารถระบุชื่อซ็อกเก็ต"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "ไม่สามารถส่งคำสั่ง PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "ไม่รู้จักตระกูลที่อยู่ %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "หมดเวลารอเชื่อมต่อซ็อกเก็ตข้อมูล"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "ไม่สามารถรับการเชื่อมต่อ"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "ไม่สามารถดาวน์โหลดแฟ้ม เซิร์ฟเวอร์ตอบว่า: '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "หมดเวลาคอยที่ซ็อกเก็ตข้อมูล"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "ถ่ายโอนข้อมูลไม่สำเร็จ เซิร์ฟเวอร์ตอบว่า '%s'"
+
+#~ msgid "Query"
+#~ msgstr "สอบถาม"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "ไม่สามารถเรียก "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "การเชื่อมต่อถูกปิดก่อนเวลาอันควร"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  ที่ติดตั้งอยู่: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "จะเปลี่ยนแปลงรายการคงรุ่นแพกเกจต่อไปนี้:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Yes, do as I say!"
 
@@ -4187,9 +4411,6 @@ msgstr "แฟ้มว่างเปล่าไม่สามารถเป
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "จะละเลยรุ่นเป้าหมาย '%s' ซึ่งไม่มีอยู่ของแพกเกจ '%s'"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "กำลังดาวน์โหลด %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "แฟ้มนี้ไม่ใช่แพกเกจ DEB ที่ใช้การได้ ขาดข้อมูล '%s', '%s' หรือ '%s'"
 
diff --git a/po/tl.po b/po/tl.po
index b2e6e0d..6e55434 100644
--- a/po/tl.po
+++ b/po/tl.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2007-03-29 21:36+0800\n"
 "Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
 "Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"
@@ -53,8 +53,8 @@ msgstr "Ang directory %s ay divertado"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -184,8 +184,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr ""
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -196,7 +195,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -215,6 +214,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Bigo sa pagkuha ng %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -235,13 +241,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "Kumokonekta sa %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -636,6 +635,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Syntax error %s:%u: May basura sa dulo ng talaksan"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -748,11 +771,11 @@ msgstr "Naghudyat ang sub-process %s ng error code (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Ang sub-process %s ay lumabas ng di inaasahan"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Error sa pagbasa"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Error sa pagsulat"
 
@@ -1060,6 +1083,12 @@ msgstr "Hindi maaldaba ang directory ng talaan"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1241,6 +1270,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Sinusuri ang pag-upgrade"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Kabuuan ng mga Dependensiya: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1544,10 +1583,6 @@ msgstr ""
 "May mga talaksang index na hindi nakuha, sila'y di pinansin, o ginamit ang "
 "mga luma na lamang."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Sinusuri ang pag-upgrade"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1818,6 +1853,18 @@ msgstr ""
 msgid "Broken packages"
 msgstr "Sirang mga pakete"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1861,8 +1908,14 @@ msgstr "Error na internal, hindi natapos ang pagsaayos na pagkasunud-sunod"
 #: apt-private/private-install.cc
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
-"Nakapagtataka... Hindi magkatugma ang laki, mag-email sa apt@packages.debian."
-"org"
+"Nakapagtataka... Hindi magkatugma ang laki, mag-email sa "
+"apt@packages.debian.org"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  Nakaluklok: "
 
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
@@ -1871,6 +1924,11 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Kailangang kumuha ng %sB/%sB ng arkibo.\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1878,14 +1936,56 @@ msgstr "Kailangang kumuha ng %sB/%sB ng arkibo.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Kailangang kumuha ng %sB ng arkibo.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, fuzzy, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Matapos magbuklat ay %sB na karagdagang puwang sa disk ang magagamit.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Naka-imbak na Label: %s \n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1903,6 +2003,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Nais niyo bang magpatuloy?"
@@ -1960,6 +2068,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Error na internal, may nasira ang problem resolver"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1978,18 +2093,6 @@ msgid_plural ""
 msgstr[0] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
 msgstr[1] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Ang mga sumusunod na extra na pakete ay luluklokin:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Mga paketeng mungkahi:"
@@ -1998,6 +2101,11 @@ msgstr "Mga paketeng mungkahi:"
 msgid "Recommended packages:"
 msgstr "Mga paketeng rekomendado:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ang mga sumusunod na extra na pakete ay luluklokin:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2129,14 +2237,51 @@ msgstr " o"
 msgid "The following packages have unmet dependencies:"
 msgstr "Ang sumusunod na mga pakete ay may kulang na dependensiya:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Bigo sa pagbuo ng dependensiyang %s para sa %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "Installing:"
+msgstr "Iniluklok ang %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Kabuuan ng mga Dependensiya: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Ang sumusunod na mga pakete ay TATANGGALIN:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:"
@@ -2145,10 +2290,24 @@ msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:"
 msgid "The following packages will be upgraded:"
 msgstr "Ang susunod na mga pakete ay iu-upgrade:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Ang susunod na mga pakete ay ida-DOWNGRADE:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Mga naka-Pin na Pakete:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:"
@@ -2166,26 +2325,50 @@ msgstr ""
 "BABALA: Ang susunod na mga paketeng esensyal ay tatanggalin.\n"
 "HINDI ito dapat gawin kung hindi niyo alam ng husto ang inyong ginagawa!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu na nai-upgrade, %lu na bagong luklok, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Iniluklok ang %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu iniluklok muli, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "Reinstalling: %lu, "
+msgstr "Iniluklok ang %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu nai-downgrade, "
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu na tatanggalin at %lu na hindi inupgrade\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2213,7 +2396,7 @@ msgid "Y"
 msgstr "O"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "H"
 
@@ -2387,8 +2570,8 @@ msgstr "Walang build depends ang %s.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2425,6 +2608,11 @@ msgstr "Bigo ang pagpangalan muli ng %s tungong %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2442,6 +2630,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2488,6 +2707,12 @@ msgstr "  Halong Birtwal na Pakete: "
 msgid "  Missing: "
 msgstr "  Kulang/Nawawala: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Kabuuan ng Natatanging mga Bersyon: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Kabuuan ng Natatanging mga Bersyon: "
@@ -2820,6 +3045,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Problema sa pag-hash ng talaksan"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3061,6 +3292,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Pinagsasama ang magagamit na impormasyon"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3273,7 +3508,7 @@ msgstr "Hindi kilalang algorithmong compression '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Kailangan ng compression set ang compressed output %s"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Bigo sa paglikha ng IPC pipe sa subprocess"
 
@@ -3392,23 +3627,23 @@ msgstr "Walang field ng pakete ang arkibo"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s ay walang override entry\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s ay walang override entry\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  Tagapangalaga ng %s ay %s hindi %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  Tagapangalaga ng %.*s ay %.*s hindi %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s ay walang override entry para sa pinagmulan\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s ay walang override entry para sa pinagmulan\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s ay wala ring override entry na binary\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s ay wala ring override entry na binary\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3446,7 +3681,7 @@ msgstr "Maling datos sa panimula"
 msgid "Connection failed"
 msgstr "Bigo ang koneksyon"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3488,7 +3723,7 @@ msgstr "Hindi mai-unmount ang CD-ROM sa %s, maaaring ginagamit pa ito."
 msgid "Disk not found."
 msgstr "Hindi nahanap ang Disk."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Hindi Nahanap ang Talaksan"
 
@@ -3524,7 +3759,7 @@ msgstr "Hindi makalikha ng socket para sa %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Hindi maumpisahan ang koneksyon sa %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Bigo"
 
@@ -3538,9 +3773,7 @@ msgstr "Hindi maka-konekta sa %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Hindi maka-konekta sa %s:%s (%s), nag-timeout ang koneksyon"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Kumokonekta sa %s"
@@ -3578,144 +3811,15 @@ msgstr "Bigo ang pag-stat"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Di tanggap na URI, mga lokal na URI ay di dapat mag-umpisa ng //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Pumapasok"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Hindi malaman ang pangalan ng peer"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Hindi malaman ang pangalang lokal"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Inayawan ng server ang ating koneksyon at ang sabi ay: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Bigo ang USER/GUMAGAMIT, sabi ng server ay: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Bigo ang PASS, sabi ng server ay: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"May tinakdang katuwang na server ngunit walang login script, walang laman "
-"ang Acquire::ftp::ProxyLogin."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Bigo ang utos sa login script '%s', sabi ng server ay: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Bigo ang TYPE, sabi ng server ay: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Lumipas ang koneksyon"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Sinarhan ng server ang koneksyon"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "May sagot na bumubo sa buffer."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Sira ang protocol"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Hindi maka-likha ng socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Hindi maka-konekta sa socket ng datos, nag-time-out ang koneksyon"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Hindi maka-konekta sa socket na passive."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "di makakuha ang getaddrinfo ng socket na nakikinig"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Hindi maka-bind ng socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Hindi makarinig sa socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Hindi malaman ang pangalan ng socket"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Hindi makapagpadala ng utos na PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Di kilalang pamilya ng address %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Bigo ang EPRT, sabi ng server ay: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Nag-timeout ang socket ng datos"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Hindi makatanggap ng koneksyon"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Problema sa pag-hash ng talaksan"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Hindi makakuha ng talaksan, sabi ng server ay '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Nag-timeout ang socket ng datos"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Bigo ang paglipat ng datos, sabi ng server ay '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Tanong"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Hindi ma-invoke "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3737,25 +3841,20 @@ msgstr ""
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Hindi maitakbo ang '%s' upang maberipika ang lagda (nakaluklok ba ang gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Hindi kilalang error sa pag-execute ng apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3790,18 +3889,129 @@ msgstr "Bigo ang pagpili"
 msgid "Connection timed out"
 msgstr "Nag-timeout ang koneksyon"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Problema sa pag-hash ng talaksan"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Bigo ang pagtakda ng oras ng pagbago"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Nagsara ng maaga ang koneksyon"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "Pumapasok"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Hindi malaman ang pangalan ng peer"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Hindi malaman ang pangalang lokal"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Inayawan ng server ang ating koneksyon at ang sabi ay: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Bigo ang USER/GUMAGAMIT, sabi ng server ay: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Bigo ang PASS, sabi ng server ay: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "May tinakdang katuwang na server ngunit walang login script, walang laman "
+#~ "ang Acquire::ftp::ProxyLogin."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Bigo ang utos sa login script '%s', sabi ng server ay: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Bigo ang TYPE, sabi ng server ay: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Lumipas ang koneksyon"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Sinarhan ng server ang koneksyon"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "May sagot na bumubo sa buffer."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Sira ang protocol"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Hindi maka-likha ng socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Hindi maka-konekta sa socket ng datos, nag-time-out ang koneksyon"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Hindi maka-konekta sa socket na passive."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "di makakuha ang getaddrinfo ng socket na nakikinig"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Hindi maka-bind ng socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Hindi makarinig sa socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Hindi malaman ang pangalan ng socket"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Hindi makapagpadala ng utos na PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Di kilalang pamilya ng address %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Bigo ang EPRT, sabi ng server ay: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Nag-timeout ang socket ng datos"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Hindi makatanggap ng koneksyon"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Hindi makakuha ng talaksan, sabi ng server ay '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Nag-timeout ang socket ng datos"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Bigo ang paglipat ng datos, sabi ng server ay '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Tanong"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Hindi ma-invoke "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Nagsara ng maaga ang koneksyon"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Oo, gawin ang sinasabi ko!"
 
diff --git a/po/tr.po b/po/tr.po
index 4124143..0cdd7fb 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,7 +1,7 @@
 # Turkish translation for apt
 # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
 # Copyright (c) 2013 Debian L10n Turkish 2013
-# Mert Dirik <mertdirik@gmail.com>, 2013-2018.
+# Mert Dirik <mertdirik@gmail.com>, 2013-2023.
 # Licensing is complex as the msgid come from several files, please see
 # the individual files for licensing information.
 #
@@ -9,10 +9,10 @@
 # Rosetta Contributors, 2009.
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 1.0.5\n"
+"Project-Id-Version: apt 2.6.0\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2018-01-03 16:32+0300\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2023-04-19 15:15+0300\n"
 "Last-Translator: Mert Dirik <mertdirik@gmail.com>\n"
 "Language-Team: Debian l10n Turkish <debian-l10n-turkish@lists.debian.org>\n"
 "Language: tr\n"
@@ -20,8 +20,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n!=1;\n"
-"X-Generator: Poedit 1.8.11\n"
-"X-Launchpad-Export-Date: 2013-02-04 12:16+0000\n"
+"X-Generator: Poedit 2.2.1\n"
+"X-Poedit-Basepath: .\n"
 "X-Poedit-SearchPath-0: .\n"
 
 #: apt-pkg/acquire-item.cc
@@ -51,7 +51,7 @@ msgstr ""
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "The repository '%s' is no longer signed."
-msgstr "'%s' deposu imzalanmamış"
+msgstr "'%s' deposu artık imzalı değil."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -60,12 +60,12 @@ msgstr "'%s' deposu artık Release dosyası barındırmıyor."
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
-"Bu duruma normalde izin verilmez, ama Acquire::"
-"AllowDowngradeToInsecureRepositories seçeneği kullanıldığı için izin "
-"veriliyor."
+"Bu duruma normalde izin verilmez, ama "
+"Acquire::AllowDowngradeToInsecureRepositories seçeneği kullanıldığı için "
+"izin veriliyor."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -197,24 +197,20 @@ msgstr ""
 #. the time until the file will be valid - formatted in the same way as in
 #. the download progress display (e.g. 7d 3h 42min 1s)
 #: apt-pkg/acquire-item.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Release file for %s is expired (invalid since %s). Updates for this "
-#| "repository will not be applied."
+#, c-format
 msgid ""
 "Release file for %s is not valid yet (invalid for another %s). Updates for "
 "this repository will not be applied."
 msgstr ""
-"%s konumundaki 'Release' dosyasının vâdesi dolmuş (%s önce). Bu deponun "
-"güncelleştirmeleri uygulanmayacak."
+"%s konumundaki 'Release' dosyası ileri bir tarihte geçerli olacak (%s "
+"sonra). Bu deponun güncelleştirmeleri uygulanmayacak."
 
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Dağıtım çakışması: %s (beklenen %s ama eldeki %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "'%s' deposu '%s' deÄŸerini '%s' yerine '%s' olarak deÄŸiÅŸtirmiÅŸ"
@@ -227,7 +223,7 @@ msgstr ""
 "deÄŸiÅŸtirdi."
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -250,6 +246,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "%s alınamadı %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -270,13 +273,6 @@ msgstr "'%2$s' paketinin '%1$s' sürümü hiçbir kaynakta bulunamadı"
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s=%s için değişim günlüğü mevcut değil"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -505,8 +501,8 @@ msgid ""
 "Unable to locate any package files, perhaps this is not a Debian Disc or the "
 "wrong architecture?"
 msgstr ""
-"Hiç paket dosyası bulunamadı. Belirttiğiniz disk bir Debian diski değil ya "
-"da yanlış mimariye sahip."
+"Hiç paket dosyası bulunamadı, bu disk bir Debian diski değil ya da yanlış "
+"mimariye sahip olabilir mi?"
 
 #: apt-pkg/cdrom.cc
 #, c-format
@@ -678,6 +674,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Söz dizimi hatası %s:%u: Dosya sonunda ilave gereksiz"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -692,10 +712,9 @@ msgid "Tar checksum failed, archive corrupted"
 msgstr "Tar sağlama toplamı başarısız, arşiv bozulmuş"
 
 #: apt-pkg/contrib/extracttar.cc
-#, fuzzy, c-format
-#| msgid "Unknown TAR header type %u, member %s"
+#, c-format
 msgid "Unknown TAR header type %u"
-msgstr "Bilinmeyen TAR başlığı türü %u, üye %s"
+msgstr "Bilinmeyen TAR başlığı türü %u"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -715,18 +734,18 @@ msgstr "Kilit dosyası %s açılamadı"
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Not using locking for nfs mounted lock file %s"
-msgstr "nfs ile bağlanmış kilit dosyası %s için kilitleme kullanılmıyor"
+msgstr ""
+"NFS ile bağlanmış bölümdeki kilit dosyası %s için kilitleme kullanılmıyor"
 
 #: apt-pkg/contrib/fileutl.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not get lock %s. It is held by process %d"
-msgstr "%s kilidi alınamadı"
+msgstr "%s kilidi alınamadı. %d süreci tarafından tutuluyor"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Could not get lock %s. It is held by process %d (%s)"
-msgstr ""
+msgstr "%s kilidi alınamadı. %d süreci tarafından tutuluyor (%s)"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -738,6 +757,8 @@ msgid ""
 "Be aware that removing the lock file is not a solution and may break your "
 "system."
 msgstr ""
+"Kilit dosyasını silmenin bir çözüm olmadığını ve sisteminizi bozabileceğini "
+"göz önünde bulundurun."
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -791,11 +812,11 @@ msgstr "%s altsüreci bir hata kodu gönderdi (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "%s altsüreci beklenmeyen bir şekilde sona erdi"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Okuma hatası"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Yazma hatası"
 
@@ -921,6 +942,8 @@ msgid ""
 "%s: Credentials for %s match, but the protocol is not encrypted. Annotate "
 "with %s:// to use."
 msgstr ""
+"%s: %s için kimlik bilgileri uyuşuyor, ancak protokol şifreli değil. "
+"Kullanmak için başına %s:// koyunuz."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
@@ -937,21 +960,19 @@ msgid "..."
 msgstr "..."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llu/%llus"
-msgstr "%c%s... %u%%"
+msgstr "%c%s... %llu/%llu sn."
 
 #: apt-pkg/contrib/progress.cc
-#, fuzzy, c-format
-#| msgid "%c%s... %u%%"
+#, c-format
 msgid "%c%s... %llus"
-msgstr "%c%s... %u%%"
+msgstr "%c%s... %llu sn."
 
 #: apt-pkg/contrib/progress.cc
 #, c-format
 msgid "%c%s... %u%%"
-msgstr "%c%s... %u%%"
+msgstr "%c%s... %%%u"
 
 #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc
@@ -997,10 +1018,9 @@ msgid "Unparsable control file"
 msgstr "Ayrıştırılamayan 'control' dosyası"
 
 #: apt-pkg/deb/debindexfile.cc
-#, fuzzy, c-format
-#| msgid "Could not get lock %s"
+#, c-format
 msgid "Could not read meta data from %s"
-msgstr "%s kilidi alınamadı"
+msgstr "%s üst verisi alınamadı"
 
 #. TRANSLATOR: an identifier like Packages; Releasefile key indicating
 #. a file like main/binary-amd64/Packages; another identifier like Contents;
@@ -1069,27 +1089,22 @@ msgid "Unable to parse package file %s (%d)"
 msgstr "Paket dosyası (%s) ayrıştırılamadı (%d)"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Waiting for headers"
+#, c-format
 msgid "Waiting for cache lock: %s"
-msgstr "Başlıklar bekleniyor"
+msgstr "Önbellek kilidi bekleniyor: %s"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid ""
-#| "Unable to lock the administration directory (%s), is another process "
-#| "using it?"
+#, c-format
 msgid ""
 "Unable to acquire the dpkg frontend lock (%s), is another process using it?"
 msgstr ""
-"Yönetim dizini (%s) kilitlenemiyor, başka bir işlem tarafından kullanılıyor "
+"dpkg önyüzü (%s) kilitlenemiyor, başka bir işlem tarafından kullanılıyor "
 "olmasın?"
 
 #: apt-pkg/deb/debsystem.cc
-#, fuzzy, c-format
-#| msgid "Unable to lock the administration directory (%s), are you root?"
+#, c-format
 msgid "Unable to acquire the dpkg frontend lock (%s), are you root?"
-msgstr "Yönetim dizini (%s) kilitlenemiyor, root kullanıcısı mısınız?"
+msgstr "dpkg önyüzü (%s) kilitlenemiyor, root kullanıcısı mısınız?"
 
 #. TRANSLATORS: the %s contains the recovery command, usually
 #. dpkg --configure -a
@@ -1118,6 +1133,12 @@ msgstr "Yönetim dizini (%s) kilitlenemiyor, root kullanıcısı mısınız?"
 msgid "Not locked"
 msgstr "KilitlenmemiÅŸ"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1308,6 +1329,16 @@ msgstr "Çözüm almak için hazırlan"
 msgid "External solver failed without a proper error message"
 msgstr "Harici çözücü düzgün bir hata iletisi göstermeden başarısız oldu"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Yükseltme hesaplanıyor"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Toplam bağımlılıklar: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Harici çözücüyü çalıştır"
@@ -1383,8 +1414,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"\"%s\" paketinin anında yapılandırması başarısız oldu. Ayrıntılar için apt."
-"conf(5) rehber sayfasının APT::Immediate-Configure kısmına bakın. (%d)"
+"\"%s\" paketinin anında yapılandırması başarısız oldu. Ayrıntılar için "
+"apt.conf(5) rehber sayfasının APT::Immediate-Configure kısmına bakın. (%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1550,6 +1581,8 @@ msgstr "İğne türü %s anlaşılamadı"
 msgid ""
 "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records"
 msgstr ""
+"%s: Özel 'Pin-Priority: %s' ayarı yalnızca 'Package: *' kayıtlarında "
+"kullanılabilir"
 
 #: apt-pkg/policy.cc
 #, c-format
@@ -1592,10 +1625,8 @@ msgid "Unsupported file %s given on commandline"
 msgstr "Komut satırında desteklenmeyen bir dosya (%s) verildi"
 
 #: apt-pkg/srcrecords.cc
-#, fuzzy
-#| msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'deb-src' URIs in your sources.list"
-msgstr "'sources.list' dosyası içine bazı 'source' adresleri koymalısınız"
+msgstr "'sources.list' dosyası içine bazı 'deb-src' adresleri koymalısınız"
 
 #: apt-pkg/tagfile.cc
 #, c-format
@@ -1610,10 +1641,6 @@ msgstr ""
 "Bazı indeks dosyaları indirilemedi. Bu dosyalar yok sayıldılar ya da önceki "
 "sürümleri kullanıldı."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Yükseltme hesaplanıyor"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1895,6 +1922,19 @@ msgstr "Aşağıdaki bilgiler durumu çözmenize yardımcı olabilir:"
 msgid "Broken packages"
 msgstr "Bozuk paketler"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Selected %s for removal.\n"
+msgid "See %s for more details."
+msgstr "%s paketi kaldırma için seçildi.\n"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1945,6 +1985,12 @@ msgstr ""
 "Ne kadar ilginç... Boyutlar eşleşmedi, apt@packages.debian.org adresine e-"
 "posta atın"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "İndiriliyor %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1952,6 +1998,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "%sB/%sB arşiv dosyası indirilecek.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "İndiriliyor %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1959,13 +2011,55 @@ msgstr "%sB/%sB arşiv dosyası indirilecek.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "%sB arşiv dosyası indirilecek.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Bu işlem tamamlandıktan sonra %sB ek disk alanı kullanılacak.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Kayıtlı etiket: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1982,6 +2076,16 @@ msgid ""
 "Removing essential system-critical packages is not permitted. This might "
 "break the system."
 msgstr ""
+"Kritik sistem paketlerini kaldırmak sisteminizi bozabileceği için "
+"yasaklanmıştır."
+
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
 
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
@@ -2045,6 +2149,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "İç hata, AutoRemover bazı şeyleri bozdu"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Bu paketi kaldırmak için '%s' komutunu kullanın."
+msgstr[1] "Bu paketleri kaldırmak için '%s' komutunu kullanın."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2065,17 +2176,6 @@ msgid_plural ""
 msgstr[0] "%lu paket otomatik olarak kurulmuş ve artık gerekli değil.\n"
 msgstr[1] "%lu paket otomatik olarak kurulmuş ve artık gerekli değil.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Bu paketi kaldırmak için '%s' komutunu kullanın."
-msgstr[1] "Bu paketleri kaldırmak için '%s' komutunu kullanın."
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "Aşağıdaki ek paketler kurulacak:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Önerilen paketler:"
@@ -2084,6 +2184,10 @@ msgstr "Önerilen paketler:"
 msgid "Recommended packages:"
 msgstr "Tavsiye edilen paketler:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Aşağıdaki ek paketler kurulacak:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2218,14 +2322,52 @@ msgstr " ya da"
 msgid "The following packages have unmet dependencies:"
 msgstr "Aşağıdaki paketler karşılanmamış bağımlılıklara sahip:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "satisfy dependency strings"
+msgid "Unsatisfied dependencies:"
+msgstr "Bağımlılık dizgilerini karşıla"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Aşağıdaki YENİ paketler kurulacak:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "%s kuruluyor"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Toplam bağımlılıklar: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Aşağıdaki paketler KALDIRILACAK:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:"
@@ -2234,10 +2376,24 @@ msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:"
 msgid "The following packages will be upgraded:"
 msgstr "Aşağıdaki paketler yükseltilecek:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Aşağıdaki paketlerin SÜRÜMLERİ DÜŞÜRÜLECEK:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "SabitlenmiÅŸ paketler:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Aşağıdaki eski sürümlerinde tutulan paketler değiştirilecek:"
@@ -2255,26 +2411,53 @@ msgstr ""
 "UYARI: Aşağıdaki temel paketler kaldırılacak.\n"
 "Bu işlem ne yaptığınızı tam olarak bilmediğiniz takdirde YAPILMAMALIDIR!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu paket yükseltilecek, %lu yeni paket kurulacak, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "%s kuruluyor"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu paket yeniden kurulacak, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "%s kuruluyor"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu paketin sürümü düşürülecek, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "İndiriliyor %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu paket kaldırılacak ve %lu paket yükseltilmeyecek.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2302,7 +2485,7 @@ msgid "Y"
 msgstr "E"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "H"
 
@@ -2367,7 +2550,7 @@ msgstr "  Sürüm çizelgesi:"
 
 #: apt-private/private-show.cc
 msgid "phased"
-msgstr ""
+msgstr "aşamalı"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2485,8 +2668,8 @@ msgstr "%s paketinin hiç inşa bağımlılığı yok.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "%s mimarisinin bilgileri mevcut değil. Kurulum için apt.conf(5) rehber "
 "sayfasındaki APT::Architectures kısmına göz atın"
@@ -2500,6 +2683,8 @@ msgstr "İnşa bağımlılıklarının denetleneceği en az bir paket belirtilme
 msgid ""
 "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s"
 msgstr ""
+"%2$d. sıradaki '%1$c' karakteri geçerli bir işleç değildir, '%3$c%4$c' ya da "
+"'%5$c='? mı demek istediniz? - dizgi: %6$s"
 
 #: apt-private/private-source.cc
 #, c-format
@@ -2525,6 +2710,11 @@ msgstr "%s ayrıştırılamadı. Tekrar düzenlemek ister misiniz? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "'%s' dosyası değişti, lütfen 'apt-get update' komutunu çalıştırın.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2544,6 +2734,43 @@ msgstr ""
 "Oturum açma ayrıcalıklarını '%3$s' '%2$s' girdisinin içinde doğrudan "
 "belirtmek yerine '%1$s' kullanmayı tercih edin"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, fuzzy
+#| msgid ""
+#| "See apt-secure(8) manpage for repository creation and user configuration "
+#| "details."
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+"Depo oluşturma ve kullanıcı yapılandırması hakkında ayrıntılı bilgi için apt-"
+"secure(8) rehber sayfasında bulunabilir."
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2593,6 +2820,12 @@ msgstr "  Karışık sanal paketler: "
 msgid "  Missing: "
 msgstr "  Eksik: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Toplam farklı sürümler: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Toplam farklı sürümler: "
@@ -2841,10 +3074,9 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgstr "Yeni paket kur (paket libc6.deb değil libc6 şeklinde olmalıdır)"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Install new packages (pkg is libc6 not libc6.deb)"
 msgid "Reinstall packages (pkg is libc6 not libc6.deb)"
-msgstr "Yeni paket kur (paket libc6.deb değil libc6 şeklinde olmalıdır)"
+msgstr ""
+"Paketleri tekrar kur (paket adı libc6.deb değil libc6 şeklinde olmalıdır)"
 
 #: cmdline/apt-get.cc
 msgid "Remove packages"
@@ -2871,10 +3103,8 @@ msgid "Configure build-dependencies for source packages"
 msgstr "Kaynak paketlerin inşa bağımlılıklarını yapılandır"
 
 #: cmdline/apt-get.cc
-#, fuzzy
-#| msgid "Building dependency tree"
 msgid "Satisfy dependency strings"
-msgstr "Bağımlılık ağacı oluşturuluyor"
+msgstr "Bağımlılık dizgilerini karşıla"
 
 #: cmdline/apt-get.cc
 msgid "Erase downloaded archive files"
@@ -2936,7 +3166,7 @@ msgstr ""
 
 #: cmdline/apt-helper.cc
 msgid "download the given uri to the target-path"
-msgstr "verilen adresi (uri) hedef yola kaydet"
+msgstr "Verilen adresi (uri) hedef yola kaydet"
 
 #: cmdline/apt-helper.cc
 msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
@@ -2944,7 +3174,13 @@ msgstr "Bir SRV kaydına bak (örneğin _http._tcp.ftp.debian.org)"
 
 #: cmdline/apt-helper.cc
 msgid "concatenate files, with automatic decompression"
-msgstr "dosyaları birleştir, otomatik olarak aç"
+msgstr "Dosyaları birleştir, otomatik olarak aç"
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Dosya sağlaması yapılamadı"
 
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
@@ -2952,15 +3188,15 @@ msgstr "apt.conf kullanarak vekil sunucuyu algıla"
 
 #: cmdline/apt-helper.cc
 msgid "wait for system to be online"
-msgstr "sistemin çevrimiçi olmasını bekle"
+msgstr "Sistemin çevrimiçi olmasını bekle"
 
 #: cmdline/apt-helper.cc
 msgid "drop privileges before running given command"
-msgstr ""
+msgstr "Verilen komutu çalıştırmadan önce ayrıcalıkları düşür"
 
 #: cmdline/apt-helper.cc
 msgid "analyse a pattern"
-msgstr ""
+msgstr "Verilen örüntüyü çözümle"
 
 #: cmdline/apt-internal-planner.cc
 msgid ""
@@ -3005,13 +3241,11 @@ msgstr "%s zaten otomatik kurulmuş olarak ayarlı.\n"
 
 #: cmdline/apt-mark.cc
 msgid "No changes necessary"
-msgstr ""
+msgstr "DeÄŸiÅŸiklik gerekmiyor"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "The following NEW packages will be installed:"
 msgid "The following packages will be marked as automatically installed:"
-msgstr "Aşağıdaki YENİ paketler kurulacak:"
+msgstr "Aşağıdaki paketler otomatik olarak kurulmuş olarak işaretlenecek:"
 
 #: cmdline/apt-mark.cc
 #, c-format
@@ -3078,10 +3312,9 @@ msgid "Mark the given packages as manually installed"
 msgstr "Belirtilen paketleri elle kurulmuÅŸ olarak iÅŸaretle"
 
 #: cmdline/apt-mark.cc
-#, fuzzy
-#| msgid "Mark the given packages as automatically installed"
 msgid "Mark all dependencies of meta packages as automatically installed."
-msgstr "Belirtilen paketleri otomatik kurulmuÅŸ olarak iÅŸaretle"
+msgstr ""
+"Meta paketlerin tüm bağımlılıklarını otomatik kurulmuş olarak işaretle."
 
 #: cmdline/apt-mark.cc
 msgid "Mark a package as held back"
@@ -3154,21 +3387,17 @@ msgstr "Paket ayrıntılarını görüntüle"
 #. package stuff
 #: cmdline/apt.cc
 msgid "install packages"
-msgstr "paket kur"
+msgstr "Paket(ler)i kur"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "install packages"
 msgid "reinstall packages"
-msgstr "paket kur"
+msgstr "Paket(ler)i tekrar kur"
 
 #: cmdline/apt.cc
 msgid "remove packages"
-msgstr "paket kaldır"
+msgstr "Paket(ler)i kaldır"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
 msgstr "Kullanılmayan tüm paketleri otomatik olarak kaldır"
 
@@ -3179,22 +3408,24 @@ msgstr "Kullanılabilir paketlerin listesini güncelle"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by installing/upgrading packages"
-msgstr "sistemi yükselt (paket kurarak ve yükselterek)"
+msgstr "Sistemi yükselt (paket kurarak ve yükselterek)"
 
 #: cmdline/apt.cc
 msgid "upgrade the system by removing/installing/upgrading packages"
-msgstr "sistemi yükselt (paket kurarak, yükselterek ve kaldırarak)"
+msgstr "Sistemi yükselt (paket kurarak, yükselterek ve kaldırarak)"
 
 #. misc
 #: cmdline/apt.cc
 msgid "edit the source information file"
-msgstr "kaynak bilgi dosyasını düzenle"
+msgstr "Kaynak bilgi dosyasını düzenle"
+
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Failed to satisfy %s dependency for %s: %s"
 msgid "satisfy dependency strings"
-msgstr "%2$s için %1$s bağımlılığı karşılanamadı: %3$s"
+msgstr "Bağımlılık dizgilerini karşıla"
 
 #: dselect/install
 msgid "Bad default setting!"
@@ -3215,7 +3446,7 @@ msgstr ""
 
 #: dselect/install
 msgid "will be configured. This may result in duplicate errors"
-msgstr "Bu durum, çift hata iletilerine ya da eksik bağımlılıkların neden"
+msgstr "Bu durum, mükerrer hata iletilerine ya da eksik bağımlılıkların neden"
 
 #: dselect/install
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
@@ -3397,7 +3628,7 @@ msgstr "Bilinmeyen sıkıştırma algoritması '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Sıkıştırılmış %s çıktısı bir sıkıştırma kümesine ihtiyaç duymaktadır"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Altsürece IPC borusu oluşturulamadı"
 
@@ -3516,23 +3747,23 @@ msgstr "Arşivde paket alanı yok"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s için geçersiz kılma girdisi yok\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s için geçersiz kılma girdisi yok\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s geliÅŸtiricisi %s, %s deÄŸil\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s geliÅŸtiricisi %.*s, %s deÄŸil\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  '%s' paketinin yerine geçecek bir kaynak paket yok\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  '%.*s' paketinin yerine geçecek bir kaynak paket yok\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  '%s' paketinin yerine geçecek bir ikili paket de yok\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  '%.*s' paketinin yerine geçecek bir ikili paket de yok\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3570,12 +3801,12 @@ msgstr "Kötü başlık verisi"
 msgid "Connection failed"
 msgstr "Bağlantı başarısız"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
 "Dosya boyutu beklenenden farklı (%llu != %llu). Yansı güncelleme işlemi "
-"devam ediyor olabilir."
+"devam ediyor olabilir mi?"
 
 #: methods/basehttp.cc
 #, c-format
@@ -3616,7 +3847,7 @@ msgstr "%s konumundaki CD-ROM çıkarılamıyor, hâlâ kullanımda olabilir."
 msgid "Disk not found."
 msgstr "Disk bulunamadı."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Dosya bulunamadı"
 
@@ -3651,7 +3882,7 @@ msgstr "%s için bir soket oluşturulamadı (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "%s:%s bağlantısı başlatılamıyor (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Başarısız"
 
@@ -3665,9 +3896,7 @@ msgstr "Adrese bağlanılamadı: %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Adrese bağlanılamadı: %s:%s (%s), bağlantı zaman aşımına uğradı"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Bağlanılıyor: %s"
@@ -3705,144 +3934,15 @@ msgstr "Durum bilgisi okunamadı"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Geçersiz URI, yerel URI'ler // ile başlamamalıdır"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Giriş yapılıyor"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Eş adı belirlenemiyor"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Yerel ad belirlenemiyor"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Sunucu bağlantıyı reddetti, sunucunun iletisi: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER başarısız, sunucunun iletisi: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS başarısız, sunucunun iletisi: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Bir Vekil sunucu belirtildi ancak oturum açma betiği belirtilmedi, Acquire::"
-"ftp::ProxyLogin boÅŸ."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Oturum açma betiği komutu '%s' başarısız oldu, sunucunun iletisi: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE başarısız, sunucunun iletisi: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Bağlantı zaman aşımına uğradı"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Sunucu bağlantıyı kesti"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Bir yanıt arabelleği taşırdı."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "İletişim kuralları bozulması"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Bir soket oluşturulamadı"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Veri soketine bağlanılamadı, bağlantı zaman aşımına uğradı"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Edilgen sokete bağlanılamadı."
 
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo bir dinleme soketi alamıyor"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Bir sokete bağlanılamadı"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Soket dinlenemedi"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Soketin adı belirlenemedi"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "PORT komutu gönderilemedi"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Bilinmeyen adres ailesi %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT başarısız, sunucunun iletisi: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Veri soketi bağlantısı zaman aşımına uğradı"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Bağlantı kabul edilemiyor"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Dosya sağlaması yapılamadı"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Dosya alınamıyor, sunucunun iletisi: '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Veri soketi zaman aşımına uğradı"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Veri aktarımı başarısız, sunucunun iletisi: '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Sorgu"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Çağrılamıyor "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3863,24 +3963,23 @@ msgid ""
 msgstr "İç hata: İmza iyi, ancak anahtar parmak izi belirlenemedi?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "İmza doğrulama için 'apt-key' çalıştırılamadı (gnupg kurulu mu?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "apt-key çalıştırılırken bilinmeyen hata"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
-#, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+#, fuzzy, c-format
+#| msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr "%s anahtarının imzası zayıf bir özet algoritması kullanıyor (%s)"
 
 #: methods/gpgv.cc
@@ -3913,22 +4012,160 @@ msgstr "Seçme başarısız"
 msgid "Connection timed out"
 msgstr "Bağlantı zaman aşımına uğradı"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Dosya sağlaması yapılamadı"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Değişiklik zamanı ayarlanamadı"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Bağlantı vaktinden önce kapandı"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "Anahtar eski trusted.gpg anahtarlığında (%s) duruyor, ayrıntılar için apt-"
+#~ "key(8) rehber sayfasına bakılabilir."
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "'%s' indirme yöntemi desteklenmemektedir ve öntanımlı olarak devre dışı "
+#~ "bırakılmıştır. Bunun yerine 'http(s)' yöntemine geçmeyi düşünebilirsiniz. "
+#~ "Yine de bu yöntemi kullanmak istiyorsanız Dir::Bin::Methods::%s ayarını "
+#~ "\"%s\" yaparak etkin hale getirebilirsiniz."
+
+#~ msgid "Logging in"
+#~ msgstr "Giriş yapılıyor"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Eş adı belirlenemiyor"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Yerel ad belirlenemiyor"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Sunucu bağlantıyı reddetti, sunucunun iletisi: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER başarısız, sunucunun iletisi: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS başarısız, sunucunun iletisi: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Bir Vekil sunucu belirtildi ancak oturum açma betiği belirtilmedi, "
+#~ "Acquire::ftp::ProxyLogin boÅŸ."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr ""
+#~ "Oturum açma betiği komutu '%s' başarısız oldu, sunucunun iletisi: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE başarısız, sunucunun iletisi: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Bağlantı zaman aşımına uğradı"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Sunucu bağlantıyı kesti"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Bir yanıt arabelleği taşırdı."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "İletişim kuralları bozulması"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Bir soket oluşturulamadı"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Veri soketine bağlanılamadı, bağlantı zaman aşımına uğradı"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Edilgen sokete bağlanılamadı."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo bir dinleme soketi alamıyor"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Bir sokete bağlanılamadı"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Soket dinlenemedi"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Soketin adı belirlenemedi"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "PORT komutu gönderilemedi"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Bilinmeyen adres ailesi %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT başarısız, sunucunun iletisi: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Veri soketi bağlantısı zaman aşımına uğradı"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Bağlantı kabul edilemiyor"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Dosya alınamıyor, sunucunun iletisi: '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Veri soketi zaman aşımına uğradı"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Veri aktarımı başarısız, sunucunun iletisi: '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Sorgu"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Çağrılamıyor "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Bağlantı vaktinden önce kapandı"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Kurulu: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Aşağıdaki eski sürümlerinde tutulan paketler değiştirilecek:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Evet, söylediğim şekilde yap!"
 
-#, c-format
 #~ msgid ""
 #~ "You are about to do something potentially harmful.\n"
 #~ "To continue type in the phrase '%s'\n"
@@ -3938,7 +4175,6 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 #~ "Devam etmek için '%s' ifadesini yazınız\n"
 #~ " ?] "
 
-#, c-format
 #~ msgid "Line %u too long in source list %s."
 #~ msgstr "Kaynak listesinin (%2$s) %1$u numaralı satırı çok uzun."
 
@@ -4041,8 +4277,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 #~ "Unable to find expected entry '%s' in Release file (Wrong sources.list "
 #~ "entry or malformed file)"
 #~ msgstr ""
-#~ "'Release' dosyasında olması beklenilen '%s' girdisi bulunamadı (sources."
-#~ "list dosyasındaki girdi ya da satır hatalı)"
+#~ "'Release' dosyasında olması beklenilen '%s' girdisi bulunamadı "
+#~ "(sources.list dosyasındaki girdi ya da satır hatalı)"
 
 #~ msgid "Unmet dependencies. Try using --fix-broken."
 #~ msgstr "Karşılanmayan bağımlılıklar. --fix-broken kullanmayı deneyin."
@@ -4141,8 +4377,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 #~ "  -q   İlerleme göstergesini kapat.\n"
 #~ "  -i   unmet komutunda sadece önemli bağımlılıkları görüntüle.\n"
 #~ "  -c=? Belirtilen yapılandırma dosyasını kullan\n"
-#~ "  -o=? Herhangi bir yapılandırma seçeneğini ayarla, örneğin -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? Herhangi bir yapılandırma seçeneğini ayarla, örneğin -o "
+#~ "dir::cache=/tmp\n"
 #~ "Ayrıntılı bilgi için apt-cache(8) ve apt.conf(5) rehber sayfalarına göz "
 #~ "atın.\n"
 
@@ -4189,8 +4425,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 #~ "Seçenekler:\n"
 #~ "  -h Bu yardım dosyası.\n"
 #~ "  -c=? Belirtilen ayar dosyasını görüntüler\n"
-#~ "  -o=? İsteğe bağlı ayar seçeneği belirtmenizi sağlar, örneğin -o dir::"
-#~ "cache=/tmp\n"
+#~ "  -o=? İsteğe bağlı ayar seçeneği belirtmenizi sağlar, örneğin -o "
+#~ "dir::cache=/tmp\n"
 
 #~ msgid ""
 #~ "Options:\n"
@@ -4401,9 +4637,6 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Mevcut olmayan hedef '%s' sürüm '%s' paketini ihmal et"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "İndiriliyor %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Bu dosya geçerli bir DEB arşivi değil, '%s', '%s' ya da '%s' üyesi yok"
diff --git a/po/uk.po b/po/uk.po
index 1082a53..0abd56f 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -17,7 +17,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2012-09-25 20:19+0300\n"
 "Last-Translator: A. Bondarenko <artem.brz@gmail.com>\n"
 "Language-Team: Українська <uk@li.org>\n"
@@ -59,8 +59,8 @@ msgstr "Директорія %s є відхиленою (diverted)"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -198,8 +198,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Конфліктуючий дистрибутив: %s (очікувався %s, але є %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -210,7 +209,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -229,6 +228,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Не вдалося завантажити %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -249,13 +255,6 @@ msgstr "Неможливо знайти джерело для завантаже
 msgid "Changelog unavailable for %s=%s"
 msgstr "Журнал змін для %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -655,6 +654,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Синтаксична помилка %s:%u: Зайве сміття в кінці файла"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -769,11 +792,11 @@ msgstr "Підпроцес %s повернув код помилки (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Підпроцес %s раптово завершився"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Помилка зчитування"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Помилка запису"
 
@@ -875,8 +898,8 @@ msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
-"Динамічний MMap використав усе місце. Будь-ласка, збільшіть розмір APT::"
-"Cache-Start. Поточне значення: %lu. (man 5 apt.conf)"
+"Динамічний MMap використав усе місце. Будь-ласка, збільшіть розмір "
+"APT::Cache-Start. Поточне значення: %lu. (man 5 apt.conf)"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
@@ -1093,6 +1116,12 @@ msgstr "Неможливо заблокувати адміністративну
 msgid "Not locked"
 msgstr "Не заблоковано"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1291,6 +1320,16 @@ msgstr ""
 "Зовнішній розв'язувач завершився невдало без відповідного повідомлення про "
 "помилку"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Обчислення оновлень"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Всього залежностей: "
+
 #: apt-pkg/edsp.cc
 #, fuzzy
 msgid "Execute external solver"
@@ -1600,10 +1639,6 @@ msgstr ""
 "Деякі індексні файли не вдалося завантажити. Вони були зігноровані, або "
 "замість них були використані старіші версії."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Обчислення оновлень"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1874,6 +1909,18 @@ msgstr "Наступна інформація можливо допоможе В
 msgid "Broken packages"
 msgstr "Зламані пакунки"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1918,6 +1965,12 @@ msgstr "Внутрішня помилка, Ordering не завершилася"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "Дивно... Розбіжність розмірів, напишіть на apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Завантаження %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1925,6 +1978,12 @@ msgstr "Дивно... Розбіжність розмірів, напишіть
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Необхідно завантажити %sB/%sB архівів.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Завантаження %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1932,14 +1991,56 @@ msgstr "Необхідно завантажити %sB/%sB архівів.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Необхідно завантажити %sB архівів.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr ""
 "Після цієї операції об'єм зайнятого дискового простору зросте на %sB.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Записано мітку: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1959,6 +2060,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Бажаєте продовжити?"
@@ -2024,6 +2133,14 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Внутрішня Помилка, AutoRemover щось поламав"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Використовуйте '%s' щоб видалити його."
+msgstr[1] "Використовуйте '%s' щоб видалити їх."
+msgstr[2] "Використовуйте '%s' щоб видалити їх."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2046,19 +2163,6 @@ msgstr[1] ""
 msgstr[2] ""
 "%lu пакунків було встановлено автоматично і вони більше не потрібні.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Використовуйте '%s' щоб видалити його."
-msgstr[1] "Використовуйте '%s' щоб видалити їх."
-msgstr[2] "Використовуйте '%s' щоб видалити їх."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Будуть встановлені наступні додаткові пакунки:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Пропоновані пакунки:"
@@ -2067,6 +2171,11 @@ msgstr "Пропоновані пакунки:"
 msgid "Recommended packages:"
 msgstr "Рекомендовані пакунки:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Будуть встановлені наступні додаткові пакунки:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2203,14 +2312,52 @@ msgstr " чи"
 msgid "The following packages have unmet dependencies:"
 msgstr "Пакунки, що мають незадоволені залежності:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Неможливо задовольнити залежність типу %s для пакунка %s: %s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "НОВІ пакунки, які будуть встановлені:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Встановлюється %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Всього залежностей: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Пакунки, які будуть ВИДАЛЕНІ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Пакунки, які залишені в незмінному стані:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Пакунки, які залишені в незмінному стані:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Пакунки, які залишені в незмінному стані:"
@@ -2219,10 +2366,24 @@ msgstr "Пакунки, які залишені в незмінному стан
 msgid "The following packages will be upgraded:"
 msgstr "Пакунки, які будуть ОНОВЛЕНІ:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Пакунки, які будуть замінені на СТАРІШІ версії:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Зафіксовані пакунки:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Пакунки, які мали б залишитися без змін, але будуть замінені:"
@@ -2240,26 +2401,53 @@ msgstr ""
 "УВАГА: Наступні важливі пакунки будуть вилучені.\n"
 "НЕ РОБІТЬ цього, якщо ви НЕ уявляєте собі всі можливі наслідки!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "оновлено %lu, встановлено %lu нових, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Встановлюється %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu перевстановлено, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Встановлюється %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu замінено на старіші версії, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Завантаження %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu відмічено для видалення і %lu не оновлено.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2287,7 +2475,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2469,11 +2657,11 @@ msgstr "%s не має залежностей для побудови.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Відсутня інформація про архітектуру для %s. Дивись apt.conf(5) APT::"
-"Архітектури для налащтування"
+"Відсутня інформація про архітектуру для %s. Дивись apt.conf(5) "
+"APT::Архітектури для налащтування"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2511,6 +2699,11 @@ msgstr "Не вдалося перейменувати %s на %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2528,6 +2721,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2574,6 +2798,12 @@ msgstr "  Змішаних віртуальних пакунків: "
 msgid "  Missing: "
 msgstr "  Відсутні: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Всього унікальних версій: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Всього унікальних версій: "
@@ -2911,6 +3141,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Проблема хешування файла"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3165,6 +3401,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "Зчитування інформації про стан"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3381,7 +3621,7 @@ msgstr "Невідомий алгоритм стиснення '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "Для отримання стиснутого виводу %s необхідно ввімкнути стиснення"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Не вдалося створити IPC канал для підпроцесу"
 
@@ -3500,23 +3740,23 @@ msgstr "Архів не мав поля 'package'"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no override entry\n"
-msgstr "  Відсутній запис про перепризначення (override) для %s\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  Відсутній запис про перепризначення (override) для %.*s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  пакунок %s супроводжується %s, а не %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  пакунок %.*s супроводжується %.*s, а не %s\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  Відсутній запис про перепризначення вихідних текстів для %s\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  Відсутній запис про перепризначення вихідних текстів для %.*s\n"
 
 #: ftparchive/writer.cc
 #, fuzzy, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  Крім того, відсутній запис про бінарне перепризначення для %s\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  Крім того, відсутній запис про бінарне перепризначення для %.*s\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3554,7 +3794,7 @@ msgstr "Погана заголовкова інформація"
 msgid "Connection failed"
 msgstr "З'єднання не вдалося"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3597,7 +3837,7 @@ msgstr ""
 msgid "Disk not found."
 msgstr "Диск не знайдено."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Файл не знайдено"
 
@@ -3633,7 +3873,7 @@ msgstr "Неможливо створити сокет для %s (f=%u t=%u p=%u
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Неможливо почати з'єднання з %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Невдача"
 
@@ -3647,9 +3887,7 @@ msgstr "Неможливо під'єднатися до %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Неможливо з'єднатися з %s:%s (%s), час з'єднання вичерпався"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "З'єднання з %s"
@@ -3688,144 +3926,15 @@ msgstr "Не вдалося одержати атрибути (stat)"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Невірне посилання (URI), локальні посилання не повинні починатися з //"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Логінюсь в"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Неможливо визначити назву вузла"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Неможливо визначити локальну назву"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Сервер розірвав з'єднання, відповівши: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER невдало, сервер мовив: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS невдало, сервер мовив: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Вказано проксі-сервер, але відсутній скрипт логіну, Acquire::ftp::ProxyLogin "
-"пустий."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Команда '%s' у скрипті логіна не вдалася, сервер мовив: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE невдало, сервер мовив: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Час з'єднання вичерпався"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Сервер закрив з'єднання"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Відповідь переповнила буфер."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Спотворений протокол"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Неможливо створити сокет (socket)"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Неможливо під'єднати сокет (socket) з даними, час з'єднання вичерпався"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Неможливо під'єднати пасивний сокет (passive socket)."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "Виклик getaddrinfo не зміг отримати слухаючий сокет"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Неможливо приєднатися до сокета"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Неможливо прослухати на сокеті"
 
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Не вдалося визначити назву сокета"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Неможливо відіслати команду PORT"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Невідоме адресове сімейство %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT невдало, сервер мовив: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Час з'єднання з сокетом даних вичерпався"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Неможливо прийняти з'єднання"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Проблема хешування файла"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Неможливо завантажити файл, сервер мовив: '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Час з'єднання з сокетом (socket) з даними вичерпався"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Передача даних обірвалася, сервер мовив '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Черга"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Неможливо викликати "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3846,25 +3955,23 @@ msgstr ""
 "відбиток?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Неможливо виконати 'apt-key' для перевірки підпису (чи встановлено gnupg?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Невідома помилка виконання apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3899,18 +4006,135 @@ msgstr "Вибір провалився"
 msgid "Connection timed out"
 msgstr "Час очікування з'єднання вийшов"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Проблема хешування файла"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Не вдалося встановити час модифікації"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "З'єднання завершено передчасно"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Пусті файли не можуть бути правильними архівами"
 
+#~ msgid "Logging in"
+#~ msgstr "Логінюсь в"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Неможливо визначити назву вузла"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Неможливо визначити локальну назву"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Сервер розірвав з'єднання, відповівши: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER невдало, сервер мовив: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS невдало, сервер мовив: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Вказано проксі-сервер, але відсутній скрипт логіну, "
+#~ "Acquire::ftp::ProxyLogin пустий."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Команда '%s' у скрипті логіна не вдалася, сервер мовив: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE невдало, сервер мовив: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Час з'єднання вичерпався"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Сервер закрив з'єднання"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Відповідь переповнила буфер."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Спотворений протокол"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Неможливо створити сокет (socket)"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr ""
+#~ "Неможливо під'єднати сокет (socket) з даними, час з'єднання вичерпався"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Неможливо під'єднати пасивний сокет (passive socket)."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "Виклик getaddrinfo не зміг отримати слухаючий сокет"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Неможливо приєднатися до сокета"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Неможливо прослухати на сокеті"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Не вдалося визначити назву сокета"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Неможливо відіслати команду PORT"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Невідоме адресове сімейство %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT невдало, сервер мовив: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Час з'єднання з сокетом даних вичерпався"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Неможливо прийняти з'єднання"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Неможливо завантажити файл, сервер мовив: '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Час з'єднання з сокетом (socket) з даними вичерпався"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Передача даних обірвалася, сервер мовив '%s'"
+
+#~ msgid "Query"
+#~ msgstr "Черга"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Неможливо викликати "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "З'єднання завершено передчасно"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Встановлено: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Пакунки, які мали б залишитися без змін, але будуть замінені:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Так, робити, як я скажу!"
 
@@ -4160,8 +4384,8 @@ msgstr "Пусті файли не можуть бути правильними
 #~ "  -c=? Читати зазначений файл конфігурації.\n"
 #~ "  -o=? Встановити умовну опцію конфігурації, наприклад, -o dir::cache=/"
 #~ "tmp\n"
-#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і apt."
-#~ "conf(5)."
+#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і "
+#~ "apt.conf(5)."
 
 #~ msgid ""
 #~ "Options:\n"
@@ -4194,8 +4418,8 @@ msgstr "Пусті файли не можуть бути правильними
 #~ "  -c=? Читати зазначений файл конфігурації.\n"
 #~ "  -o=? Встановити умовну опцію конфігурації, наприклад, -o dir::cache=/"
 #~ "tmp\n"
-#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і apt."
-#~ "conf(5)."
+#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і "
+#~ "apt.conf(5)."
 
 #~ msgid ""
 #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
@@ -4344,9 +4568,6 @@ msgstr "Пусті файли не можуть бути правильними
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Ігнорувати недоступний випуск '%s' пакунку '%s'"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Завантаження %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr "Це невірний DEB архів, відсутній член '%s', '%s' чи '%s'"
 
diff --git a/po/vi.po b/po/vi.po
index d789c34..7fb350b 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.0.8\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2014-09-12 13:48+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -57,8 +57,8 @@ msgstr "Thư mục %s bị trệch hướng"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -198,8 +198,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "Bản phát hành xung đột: %s (cần %s nhưng lại nhận được %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -210,7 +209,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -229,6 +228,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "Gặp lỗi khi lấy về %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -249,13 +255,6 @@ msgstr "Không tìm thấy nguồn cho việc tải về phiên bản “%s” o
 msgid "Changelog unavailable for %s=%s"
 msgstr "Changelog cho %s (%s)"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -648,6 +647,30 @@ msgstr ""
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "Gặp lỗi cú pháp %s:%u: Gặp rác tại kết thúc tập tin"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -761,11 +784,11 @@ msgstr "Tiến trình con %s đã trả về một mã lỗi (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "Tiến trình con %s đã thoát bất thường"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "Lỗi đọc"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "Lá»—i ghi"
 
@@ -1088,6 +1111,12 @@ msgstr "Không thể khoá thư mục quản trị (%s), bạn có quyền root
 msgid "Not locked"
 msgstr "Chưa được khoá"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1277,6 +1306,16 @@ msgstr "Chuẩn bị để lấy cách giải quyết"
 msgid "External solver failed without a proper error message"
 msgstr "Bộ phân giải bên ngoài gặp lỗi mà không trả về thông tin lỗi thích hợp"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Đang tính toán nâng cấp"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Tổng gói phụ thuộc: "
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "Thi hành bộ phân giải từ bên ngoài"
@@ -1358,8 +1397,8 @@ msgid ""
 "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
-"Không thể thực hiện ngay lập tức tiến trình cấu hình “%s”. Xem “man 5 apt."
-"conf ” dưới “APT::Immediate-Configure” để tìm chi tiết. (%d)"
+"Không thể thực hiện ngay lập tức tiến trình cấu hình “%s”. Xem “man 5 "
+"apt.conf ” dưới “APT::Immediate-Configure” để tìm chi tiết. (%d)"
 
 #: apt-pkg/packagemanager.cc
 #, c-format
@@ -1375,8 +1414,8 @@ msgid ""
 msgstr ""
 "Việc chạy tiến trình cài đặt này sẽ cần thiết gỡ bỏ tạm gói chủ yếu %s, do "
 "vòng lặp Xung đột/Phụ thuộc trước. Trường hợp này thường xấu, nhưng mà nếu "
-"bạn thật sự muốn tiếp tục, có thể hoạt hóa tuy chọn “APT::Force-"
-"LoopBreak” (buộc ngắt vòng lặp)."
+"bạn thật sự muốn tiếp tục, có thể hoạt hóa tuy chọn “APT::Force-LoopBreak” "
+"(buộc ngắt vòng lặp)."
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
@@ -1587,10 +1626,6 @@ msgstr ""
 "Một số tập tin chỉ mục không tải về được. Chúng đã bị bỏ qua, hoặc cái cũ đã "
 "được dùng thay thế."
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Đang tính toán nâng cấp"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1857,6 +1892,18 @@ msgstr "Có lẽ thông tin theo đây sẽ giúp đỡ bạn giải quyết tì
 msgid "Broken packages"
 msgstr "Gói bị hỏng"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1902,6 +1949,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
 "Lạ nhỉ... Kích cỡ không khớp nhau. Hãy gửi thư cho <apt@packages.debian.org>"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB / %sB\n"
+msgstr "Đang tải về %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1909,6 +1962,12 @@ msgstr ""
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "Cần phải lấy %sB/%sB từ kho chứa.\n"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "  Download size: %sB\n"
+msgstr "Đang tải về %s %s"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1916,13 +1975,55 @@ msgstr "Cần phải lấy %sB/%sB từ kho chứa.\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "Cần phải lấy %sB từ kho chứa.\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "Sau thao tác này, %sB dung lượng đĩa sẽ bị chiếm dụng.\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "Nhãn đã lưu: %s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1942,6 +2043,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "Bạn có muốn tiếp tục không?"
@@ -2002,6 +2111,12 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Lỗi nội bộ: Bộ Gỡ bỏ Tự động đã làm hỏng một thứ gì đó"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Hãy dùng lệnh “%s” để gỡ bỏ chúng."
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -2018,17 +2133,6 @@ msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
 msgstr[0] "%lu gói đã được tự động cài đặt nên không còn cần yêu cầu lại.\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "Hãy dùng lệnh “%s” để gỡ bỏ chúng."
-
-#: apt-private/private-install.cc
-#, fuzzy
-msgid "The following additional packages will be installed:"
-msgstr "Những gói thêm theo đây sẽ được cài đặt:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "Các gói đề nghị:"
@@ -2037,6 +2141,11 @@ msgstr "Các gói đề nghị:"
 msgid "Recommended packages:"
 msgstr "Gói khuyến khích:"
 
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Những gói thêm theo đây sẽ được cài đặt:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2167,14 +2276,52 @@ msgstr " hay"
 msgid "The following packages have unmet dependencies:"
 msgstr "Những gói theo đây chưa thỏa mãn quan hệ phụ thuộc:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "Việc cố thỏa cách phụ thuộc %s cho %s bị lỗi: %s."
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "Những gói MỚI sau sẽ được CÀI ĐẶT:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "Đang cài đặt %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "Tổng gói phụ thuộc: "
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "Những gói sau sẽ bị GỠ BỎ:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "Những gói sau đây được giữ lại:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "Những gói sau đây được giữ lại:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "Những gói sau đây được giữ lại:"
@@ -2183,10 +2330,24 @@ msgstr "Những gói sau đây được giữ lại:"
 msgid "The following packages will be upgraded:"
 msgstr "Những gói sau đây sẽ được NÂNG CẤP:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "Những gói sau đây sẽ bị HẠ CẤP:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "Các gói đã ghim:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "Những gói giữ lại sau đây sẽ bị THAY ĐỔI:"
@@ -2204,26 +2365,53 @@ msgstr ""
 "CẢNH BÁO: Có những gói chủ yếu sau đây sẽ bị gỡ bỏ.\n"
 "ĐỪNG làm như thế trừ khi bạn biết chính xác mình đang làm gì!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "%lu nâng cấp, %lu được cài đặt mới, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "Đang cài đặt %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "%lu được cài đặt lại, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "Đang cài đặt %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "%lu bị hạ cấp, "
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Downloading %s %s"
+msgid "Downgrading: %lu, "
+msgstr "Đang tải về %s %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "%lu cần gỡ bỏ, và %lu chưa được nâng cấp.\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2251,7 +2439,7 @@ msgid "Y"
 msgstr "C"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "K"
 
@@ -2430,11 +2618,11 @@ msgstr "%s không phụ thuộc vào gì khi biên dịch.\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
-"Không có thông tin kiến trúc sẵn sàng cho %s. Xem apt.conf(5) APT::"
-"Architectures để cài đặt"
+"Không có thông tin kiến trúc sẵn sàng cho %s. Xem apt.conf(5) "
+"APT::Architectures để cài đặt"
 
 #: apt-private/private-source.cc
 msgid "Must specify at least one package to check builddeps for"
@@ -2471,6 +2659,11 @@ msgstr "Gặp lỗi khi phân tích %s. Sửa lại chứ? "
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "Tập tin “%s” của bạn đã thay đổi, hãy chạy lệnh “apt-get update”.\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2488,6 +2681,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2533,6 +2757,12 @@ msgstr "  Gói ảo hỗn hợp: "
 msgid "  Missing: "
 msgstr "  Thiếu: "
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "Tổng phiên bản riêng: "
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "Tổng phiên bản riêng: "
@@ -2884,6 +3114,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "Gặp vấn đề băm tập tin"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "dò tìm proxy dùng apt.conf"
@@ -3134,6 +3370,10 @@ msgstr "nâng cấp hệ thống bằng cách gỡ bỏ, cài đặt, nâng cấ
 msgid "edit the source information file"
 msgstr "sửa tập tin thông tin gói nguồn"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3352,7 +3592,7 @@ msgstr "Không biết thuật toán nén “%s”"
 msgid "Compressed output %s needs a compression set"
 msgstr "Dữ liệu xuất đã nén %s cần một bộ nén"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "Gặp lỗi khi tạo ống IPC đến tiến trình con"
 
@@ -3471,23 +3711,23 @@ msgstr "Kho không có trường gói"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s không có mục ghi đè (override)\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s không có mục ghi đè (override)\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  người bảo trì %s là %s không phải %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  người bảo trì %.*s là %.*s không phải %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s không có mục ghi đè (override) nguồn\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s không có mục ghi đè (override) nguồn\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s cũng không có mục ghi đè (override) nhị phân\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s cũng không có mục ghi đè (override) nhị phân\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3529,7 +3769,7 @@ msgstr "Dữ liệu phần đầu sai"
 msgid "Connection failed"
 msgstr "Kết nối bị lỗi"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3571,7 +3811,7 @@ msgstr "Không thể bỏ gắn đĩa CD-ROM trong %s. Có lẽ nó vẫn đang
 msgid "Disk not found."
 msgstr "Không tìm thấy đĩa."
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "Không tìm thấy tập tin"
 
@@ -3607,7 +3847,7 @@ msgstr "Không thể tạo ổ cắm cho %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "Không thể khởi tạo kết nối đến %s:%s (%s)."
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "Gặp lỗi"
 
@@ -3621,9 +3861,7 @@ msgstr "Không thể kết nối đến %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Không thể kết nối đến %s:%s (%s), kết nối bị quá giờ"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "Đang kết nối đến %s"
@@ -3661,144 +3899,15 @@ msgstr "Gặp lỗi khi lấy thống kê"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "Địa chỉ URI không hợp lệ, URI nội bộ không thể bắt đầu bằng “//”"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "Đang đăng nhập vào"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "Không thể quyết định tên ngang hàng"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "Không thể phân giải tên cục bộ"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "Máy phục vụ đã từ chối kết nối, và đã nói: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "Lệnh USER (người dùng) đã thất bại: máy chủ nói: %s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "Lệnh PASS (mật khẩu) đã thất bại: máy chủ nói: %s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"Đã ghi rõ máy phục vụ ủy nhiệm, nhưng mà chưa ghi rõ tập lệnh đăng nhập. "
-"“Acquire::ftp::ProxyLogin” là rỗng."
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "Văn lệnh đăng nhập “%s” đã thất bại: máy chủ nói: %s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "Lệnh TYPE (kiểu) đã thất bại: máy chủ nói: %s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "Thời hạn kết nối"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "Máy phục vụ đã đóng kết nối"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "Một trả lời đã tràn bộ đệm."
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "Giao thức bị hỏng"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "Không thể tạo ổ cắm"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "Không thể kết nối ổ cắm dữ liệu, kết nối đã quá giờ"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "Không thể kết nối ổ cắm bị động."
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo (lấy thông tin địa chỉ) không thể lấy ổ cắm lắng nghe"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "Không thể ràng buộc ổ cắm"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "Không thể lắng nghe trên ổ cắm đó"
 
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "Không thể quyết định tên ổ cắm đó"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "Không thể gửi lệnh PORT (cổng)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "Không biết họ địa chỉ %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "Lệnh EPRT (thông báo lỗi) đã thất bại: máy chủ nói: %s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Quá giờ kết nối ổ cắm dữ liệu"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "Không thể chấp nhận kết nối"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "Gặp vấn đề băm tập tin"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "Không thể lấy tập tin: máy phục vụ nói “%s”"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Ổ cắm dữ liệu đã quá giờ"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "Việc truyền dữ liệu bị lỗi: máy phục vụ nói “%s”"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "Truy vấn"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "Không thể gọi "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3819,26 +3928,24 @@ msgid ""
 msgstr "Lỗi nội bộ: Chữ ký đúng, nhưng không thể xác định vân tay của khóa?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+#, fuzzy
+#| msgid ""
+#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr ""
 "Không thể thực hiện “apt-key” để thẩm tra chữ ký (gnupg đã được cài đặt "
 "chưa?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "Gặp lỗi không rõ khi thực hiện apt-key"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3872,18 +3979,134 @@ msgstr "Việc chọn bị lỗi"
 msgid "Connection timed out"
 msgstr "Kết nối đã quá giờ"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "Gặp vấn đề băm tập tin"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "Gặp lỗi khi đặt giờ sửa đổi"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "Kết nối bị đóng bất ngờ"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "Các tập tin trống rỗng không phải là kho lưu hợp lệ"
 
+#~ msgid "Logging in"
+#~ msgstr "Đang đăng nhập vào"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "Không thể quyết định tên ngang hàng"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "Không thể phân giải tên cục bộ"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "Máy phục vụ đã từ chối kết nối, và đã nói: %s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "Lệnh USER (người dùng) đã thất bại: máy chủ nói: %s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "Lệnh PASS (mật khẩu) đã thất bại: máy chủ nói: %s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "Đã ghi rõ máy phục vụ ủy nhiệm, nhưng mà chưa ghi rõ tập lệnh đăng nhập. "
+#~ "“Acquire::ftp::ProxyLogin” là rỗng."
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "Văn lệnh đăng nhập “%s” đã thất bại: máy chủ nói: %s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "Lệnh TYPE (kiểu) đã thất bại: máy chủ nói: %s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "Thời hạn kết nối"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "Máy phục vụ đã đóng kết nối"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "Một trả lời đã tràn bộ đệm."
+
+#~ msgid "Protocol corruption"
+#~ msgstr "Giao thức bị hỏng"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "Không thể tạo ổ cắm"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "Không thể kết nối ổ cắm dữ liệu, kết nối đã quá giờ"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "Không thể kết nối ổ cắm bị động."
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo (lấy thông tin địa chỉ) không thể lấy ổ cắm lắng nghe"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "Không thể ràng buộc ổ cắm"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "Không thể lắng nghe trên ổ cắm đó"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "Không thể quyết định tên ổ cắm đó"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "Không thể gửi lệnh PORT (cổng)"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "Không biết họ địa chỉ %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "Lệnh EPRT (thông báo lỗi) đã thất bại: máy chủ nói: %s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Quá giờ kết nối ổ cắm dữ liệu"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "Không thể chấp nhận kết nối"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "Không thể lấy tập tin: máy phục vụ nói “%s”"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Ổ cắm dữ liệu đã quá giờ"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "Việc truyền dữ liệu bị lỗi: máy phục vụ nói “%s”"
+
+#~ msgid "Query"
+#~ msgstr "Truy vấn"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "Không thể gọi "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "Kết nối bị đóng bất ngờ"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  Đã cài đặt: "
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "Những gói giữ lại sau đây sẽ bị THAY ĐỔI:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Có, làm đi!"
 
@@ -4329,9 +4552,6 @@ msgstr "Các tập tin trống rỗng không phải là kho lưu hợp lệ"
 #~ msgid "Ignore unavailable target release '%s' of package '%s'"
 #~ msgstr "Bỏ qua bản phát hành đích không sẵn sàng “%s” của gói “%s”"
 
-#~ msgid "Downloading %s %s"
-#~ msgstr "Đang tải về %s %s"
-
 #~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
 #~ msgstr ""
 #~ "Đây không phải là một kho DEB hợp lệ vì không có thành viên “%s”, “%s” "
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 62aca1f..edcadd7 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -10,14 +10,14 @@
 # Carlos Z.F. Liu <carlosliu@users.sourceforge.net>, 2004, 2006.
 # Aron Xu <happyaron.xu@gmail.com>, 2009, 2010.
 # Mo Zhou <cdluminate@gmail.com>, 2014, 2015, 2016, 2017, 2019.
-# Boyuan Yang <073plan@gmail.com>, 2018, 2020, 2022.
+# Boyuan Yang <073plan@gmail.com>, 2018, 2020, 2022, 2024, 2025.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: apt 2.5.3\n"
+"Project-Id-Version: apt 2.9.26\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
-"PO-Revision-Date: 2022-10-05 17:20-0400\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
+"PO-Revision-Date: 2025-01-28 16:26-0500\n"
 "Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
 "Language-Team: Chinese (simplified) <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
@@ -25,7 +25,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.1.1\n"
+"X-Generator: Poedit 3.5\n"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
@@ -57,8 +57,8 @@ msgstr "仓库 “%s” 不再含有 Release 文件。"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 "一般不可以这样做,但选项 Acquire:: AllowDowngradeToInsecureRepositories 可以"
 "用于覆盖默认设置。"
@@ -142,8 +142,8 @@ msgid ""
 "Skipping acquire of configured file '%s' as repository '%s' doesn't have the "
 "component '%s' (component misspelt in sources.list?)"
 msgstr ""
-"鉴于仓库 '%2$s' 不含有 '%3$s' 组件,跳过配置文件 '%1$s' 的获取。(sources."
-"list 中的组件名称是否拼写错误?)"
+"鉴于仓库 '%2$s' 不含有 '%3$s' 组件,跳过配置文件 '%1$s' 的获取。"
+"(sources.list 中的组件名称是否拼写错误?)"
 
 #: apt-pkg/acquire-item.cc
 #, c-format
@@ -194,8 +194,7 @@ msgstr "%s 的 Release 文件已经过期(已经过期了 %s)。该仓库的更
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "冲突的发行版:%s (期望 %s 但得到 %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr "仓库'%s'将其'%s'值从'%s'修改到了'%s'"
@@ -206,7 +205,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr "仓库'%s'将其'%s'的默认优先级从'%hi'修改到了'%hi'。"
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -226,6 +225,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "无法下载 %s  %s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr "仓库应当提供明文签署的 InRelease 文件,但在 %s 中并未找到。"
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -246,15 +252,6 @@ msgstr "没有源可以用来下载 %s 版本的 %s"
 msgid "Changelog unavailable for %s=%s"
 msgstr "%s=%s 的 Changelog 不可用"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-"目前“%s”方法不受支持且默认禁用。请考虑切换至 http(s)。您可以将 Dir::Bin::"
-"Methods::%s 设置为“%s”来重新启用。"
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -642,6 +639,30 @@ msgstr "语法错误 %s:%u:clean 指令需要一个选项树作为参数"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "语法错误 %s:%u:文件尾部有多余的无意义的数据"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr "错误:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr "警告:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr "注意:"
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr "审计:"
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr "调试:"
+
 #: apt-pkg/contrib/extracttar.cc
 #, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -749,11 +770,11 @@ msgstr "子进程 %s 返回了一个错误号 (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "子进程 %s 异常退出"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "读错误"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "写出错"
 
@@ -772,7 +793,7 @@ msgstr "无法创建子进程的 IPC 管道"
 
 #: apt-pkg/contrib/fileutl.cc
 msgid "Failed to exec compressor "
-msgstr "无法执行压缩程序"
+msgstr "无法执行压缩程序 "
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -811,7 +832,7 @@ msgstr "同步文件出错"
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
 msgid "Unable to mkstemp %s"
-msgstr "无法建立临时文件(mkstemp) %s "
+msgstr "无法建立临时文件(mkstemp) %s"
 
 #: apt-pkg/contrib/fileutl.cc
 #, c-format
@@ -838,7 +859,7 @@ msgstr "无法关闭 mmap"
 
 #: apt-pkg/contrib/mmap.cc
 msgid "Unable to synchronize mmap"
-msgstr "无法同步 mmap "
+msgstr "无法同步 mmap"
 
 #: apt-pkg/contrib/mmap.cc
 #, c-format
@@ -991,7 +1012,7 @@ msgstr "软件包仓库 Release 文件 %s 内无哈希条目"
 msgid ""
 "No Hash entry in Release file %s which is considered strong enough for "
 "security purposes"
-msgstr "Release 文件 %s 中不含散列项,该文件用于保证足够的安全性。"
+msgstr "Release 文件 %s 中不含散列项,该文件用于保证足够的安全性"
 
 #: apt-pkg/deb/debmetaindex.cc
 #, c-format
@@ -1059,6 +1080,13 @@ msgstr "无法对状态列表目录加锁(%s),请查看您是否正以 root 
 msgid "Not locked"
 msgstr "未锁定"
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+"由 Dir::Bin::dpkg 所设置的 dpkg 可执行文件缺失,回退到使用默认的 dpkg。"
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1151,7 +1179,7 @@ msgstr "操作在完成之前被打断"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid "No apport report written because MaxReports is reached already"
-msgstr "由于已经达到 MaxReports 限制,没有写入 apport 报告。"
+msgstr "由于已经达到 MaxReports 限制,没有写入 apport 报告"
 
 #. check if its not a follow up error
 #: apt-pkg/deb/dpkgpm.cc
@@ -1168,13 +1196,13 @@ msgstr "因为错误消息指示这是由于上一个问题导致的错误,没
 msgid ""
 "No apport report written because the error message indicates a disk full "
 "error"
-msgstr "因为错误消息指示这是由于磁盘已满,没有写入 apport 报告。"
+msgstr "因为错误消息指示这是由于磁盘已满,没有写入 apport 报告"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a out of memory "
 "error"
-msgstr "因为错误消息指示这是由于内存不足,没有写入 apport 报告。"
+msgstr "因为错误消息指示这是由于内存不足,没有写入 apport 报告"
 
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
@@ -1185,7 +1213,7 @@ msgstr "错误信息显示本地系统有一些问题,因此没有写入 appor
 #: apt-pkg/deb/dpkgpm.cc
 msgid ""
 "No apport report written because the error message indicates a dpkg I/O error"
-msgstr "因为错误消息指示这是一个 dpkg I/O 错误,没有写入 apport 报告。"
+msgstr "因为错误消息指示这是一个 dpkg I/O 错误,没有写入 apport 报告"
 
 #: apt-pkg/depcache.cc
 msgid "Building dependency tree"
@@ -1239,6 +1267,14 @@ msgstr "准备接收依赖解决方案"
 msgid "External solver failed without a proper error message"
 msgstr "外部依赖解决器出错,错误信息不恰当"
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "正在计算更新"
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr "正在解析依赖"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr "执行外部依赖解决器"
@@ -1330,8 +1366,8 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 "由于这次安装存在着一个 Conflicts/Pre-Depends 循环,因而需要暂时删除一个必不可"
-"少的软件包 %s。通常并不建议这样做,但是如果您确实希望如此,可以打开 APT::"
-"Force-LoopBreak 选项。"
+"少的软件包 %s。通常并不建议这样做,但是如果您确实希望如此,可以打开 "
+"APT::Force-LoopBreak 选项。"
 
 #: apt-pkg/pkgcache.cc
 msgid "Empty package cache"
@@ -1534,10 +1570,6 @@ msgid ""
 "used instead."
 msgstr "部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "正在计算更新"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1649,7 +1681,7 @@ msgstr "虚拟软件包 %s 由下面的软件包提供:\n"
 
 #: apt-private/private-cacheset.cc
 msgid " [Installed]"
-msgstr "[已安装]"
+msgstr " [已安装]"
 
 #: apt-private/private-cacheset.cc
 msgid " [Not candidate version]"
@@ -1806,6 +1838,20 @@ msgstr "下列信息可能会对解决问题有所帮助:"
 msgid "Broken packages"
 msgstr "破损的软件包"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+"系统 usr 未合并的布局已不再受到支持。请使用 usrmerge 工具将系统转换为 merged-"
+"usr 布局。"
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr "更多细节请参阅 %s。"
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1849,6 +1895,11 @@ msgstr "内部错误,排序未完成"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "怪了……文件大小不符,请发邮件给 apt@packages.debian.org 吧"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB / %sB\n"
+msgstr "  下载大小:%sB / %sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1856,6 +1907,11 @@ msgstr "怪了……文件大小不符,请发邮件给 apt@packages.debian.org
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "需要下载 %sB/%sB 的归档。\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr "  下载大小:%sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1863,13 +1919,54 @@ msgstr "需要下载 %sB/%sB 的归档。\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "需要下载 %sB 的归档。\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "解压缩后会消耗 %sB 的额外空间。\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr "所需的空间:%sB / %sB 可用\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr "所需的空间超出了可用空间:%sB > %sB,安装可能失败"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr "在 %s 中:%sB / %sB 可用\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr "在 %s 中,所需的空间超出了可用空间:%sB > %sB,安装可能失败"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr "所需的空间:%sB\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Freed space: %sB\n"
+msgstr "  将释放的空间:%sB\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1887,6 +1984,14 @@ msgid ""
 "break the system."
 msgstr "不允许移除系统必需的关键软件包。这么做可能损坏系统。"
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr "仍然继续吗?"
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr "是否继续?"
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "您希望继续执行吗?"
@@ -1942,6 +2047,12 @@ msgstr "似乎自动卸载工具损坏了一些软件,这不应该发生。请
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "内部错误,自动卸载工具坏事了"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "使用'%s'来卸载它(它们)。"
+
 #: apt-private/private-install.cc
 msgid ""
 "The following package was automatically installed and is no longer required:"
@@ -1957,16 +2068,6 @@ msgid_plural ""
 "%lu packages were automatically installed and are no longer required.\n"
 msgstr[0] "%lu 个自动安装的的软件包现在已不再需要了。\n"
 
-#: apt-private/private-install.cc
-#, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "使用'%s'来卸载它(它们)。"
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "将会同时安装下列软件:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "建议安装:"
@@ -1975,6 +2076,10 @@ msgstr "建议安装:"
 msgid "Recommended packages:"
 msgstr "推荐安装:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "将会同时安装下列软件:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2020,7 +2125,7 @@ msgstr "正在列表"
 msgid "There is %i additional version. Please use the '-a' switch to see it"
 msgid_plural ""
 "There are %i additional versions. Please use the '-a' switch to see them."
-msgstr[0] "还有 %i 个版本。请使用 -a 选项来查看它(它们)。"
+msgstr[0] "还有 %i 个版本。请使用 -a 选项来查看它(它们)"
 
 #. TRANSLATORS: placeholder is a binary name like apt or apt-get
 #: apt-private/private-main.cc
@@ -2103,14 +2208,42 @@ msgstr " 或"
 msgid "The following packages have unmet dependencies:"
 msgstr "下列软件包有未满足的依赖关系:"
 
+#: apt-private/private-output.cc
+msgid "Unsatisfied dependencies:"
+msgstr "无法满足的依赖关系:"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "下列【新】软件包将被安装:"
 
+#: apt-private/private-output.cc
+msgid "Installing:"
+msgstr "将要安装:"
+
+#: apt-private/private-output.cc
+msgid "Installing dependencies:"
+msgstr "将要安装的依赖:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr "【将要卸载】:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "下列软件包将被【卸载】:"
 
+#: apt-private/private-output.cc
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "下列软件包新版本的升级因阶段更新而被推迟:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading yet due to phasing:"
+msgstr "因阶段更新暂不升级:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr "暂不升级:"
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "下列软件包的版本将保持不变:"
@@ -2119,10 +2252,22 @@ msgstr "下列软件包的版本将保持不变:"
 msgid "The following packages will be upgraded:"
 msgstr "下列软件包将被升级:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr "将被升级:"
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr "【将被降级】:"
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "下列软件包将被【降级】:"
 
+#: apt-private/private-output.cc
+msgid "Changing held packages:"
+msgstr "将改变原先被要求版本不变的软件包:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "下列被要求保持版本不变的软件包将被改变:"
@@ -2140,26 +2285,50 @@ msgstr ""
 "【警告】:下列基础软件包将被卸载。\n"
 "请勿尝试,除非您确实知道您在做什么!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr "摘要:"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "升级了 %lu 个软件包,新安装了 %lu 个软件包,"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "升级:%lu,安装:%lu,"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "重新安装了 %lu 个软件包,"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Reinstalling: %lu, "
+msgstr "重新安装:%lu,"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "降级了 %lu 个软件包,"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr "降级:%lu,"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "要卸载 %lu 个软件包,有 %lu 个软件包未被升级。\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr "卸载:%lu,不升级:%lu\n"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2187,7 +2356,7 @@ msgid "Y"
 msgstr "Y"
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr "N"
 
@@ -2359,13 +2528,13 @@ msgstr "无法获得 %s 的构建依赖关系信息"
 #: apt-private/private-source.cc
 #, c-format
 msgid "%s has no build depends.\n"
-msgstr " %s 没有构建依赖关系信息。\n"
+msgstr "%s 没有构建依赖关系信息。\n"
 
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 "找不到关于 %s 的有效体系结构信息。请参见 apt.conf(5) APT::Architectures for "
 "setup"
@@ -2399,13 +2568,18 @@ msgstr "无法处理构建依赖关系"
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Failed to parse %s. Edit again? "
-msgstr "解析 %s 失败。请重新编辑之后再试。"
+msgstr "解析 %s 失败。要重新编辑之后再试吗?"
 
 #: apt-private/private-sources.cc
 #, c-format
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr "您的 %s 文件有过改动,请执行 ‘apt-get update’。\n"
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr "重新写入 %zu 个软件源配置吗?"
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2413,7 +2587,7 @@ msgstr "版本为 %2$s 的软件包 %1$s 有未满足的依赖关系:\n"
 
 #: apt-private/private-update.cc
 msgid "The update command takes no arguments"
-msgstr " update 命令不需要参数"
+msgstr "update 命令不接受参数"
 
 #. TRANSLATOR: the first two are manpage references, the last the URI from a sources.list
 #: apt-private/private-update.cc
@@ -2423,6 +2597,39 @@ msgid ""
 "the %s entry for '%s'"
 msgstr "您应当优先考虑使用 %s 而非直接把账户信息直接写在 %s 的条目 '%s' 中"
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr "%s 用于“%s”的条目应当被升级为 deb822 .sources 格式"
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr "对‘%2$s’在 %1$s 一项中缺失了 Signed-By"
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr "请考虑将所有 sources.list(5) 的条目迁移到 deb822 .sources 格式"
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr "deb822 .sources 格式同时支持嵌入式和外部的 OpenPGP 密钥"
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr "参见 apt-secure(8) 手册以了解配置仓库签名的最佳实践。"
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+"一些软件源配置可被改进为现代化的配置方法。请运行“apt modernize-sources”来进行"
+"此操作。"
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2468,6 +2675,12 @@ msgstr "  混合虚拟软件包:"
 msgid "  Missing: "
 msgstr "  缺失:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "按不同的版本共计:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "按不同的版本共计:"
@@ -2804,6 +3017,10 @@ msgstr "查询一个 SRV 记录 (如: _http._tcp.ftp.debian.org)"
 msgid "concatenate files, with automatic decompression"
 msgstr "自动解压并连接文件"
 
+#: cmdline/apt-helper.cc
+msgid "hash file"
+msgstr "散列文件"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr "用 apt.conf 检测代理设置"
@@ -3015,10 +3232,8 @@ msgid "remove packages"
 msgstr "移除软件包"
 
 #: cmdline/apt.cc
-#, fuzzy
-#| msgid "Remove automatically all unused packages"
 msgid "automatically remove all unused packages"
-msgstr "卸载所有自动安装且不再使用的软件包"
+msgstr "自动卸载所有不再使用的软件包"
 
 #. system wide stuff
 #: cmdline/apt.cc
@@ -3038,6 +3253,10 @@ msgstr "通过 卸载/安装/升级 来更新系统"
 msgid "edit the source information file"
 msgstr "编辑软件源信息文件"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr "将 .list 文件现代化并改写为 .sources 文件"
+
 #: cmdline/apt.cc
 msgid "satisfy dependency strings"
 msgstr "使系统满足依赖关系字符串"
@@ -3234,7 +3453,7 @@ msgstr "未知的压缩算法“%s”"
 msgid "Compressed output %s needs a compression set"
 msgstr "压缩后的输出文件 %s 要求有一个压缩文件集合"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "无法为子进程创建 IPC 管道"
 
@@ -3353,23 +3572,23 @@ msgstr "归档文件没有包含 package 字段"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s 中没有 override 项\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s 中没有 override 项\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s 的维护者 %s 并非 %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s 的维护者 %.*s 并非 %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s 没有源代码的 override 项\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s 没有源代码的 override 项\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s 中没有二进制文件的 override 项\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s 中没有二进制文件的 override 项\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3407,7 +3626,7 @@ msgstr "错误的报头数据"
 msgid "Connection failed"
 msgstr "连接失败"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr "文件尺寸不符(%llu != %llu)。您使用的镜像正在同步中?"
@@ -3433,8 +3652,8 @@ msgid ""
 "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
 "cannot be used to add new CD-ROMs"
 msgstr ""
-"请使用 apt-cdrom,通过它可以让 APT 识别该盘片。apt-get upgdate 不能被用来加入"
-"新的盘片。"
+"请使用 apt-cdrom,通过它可以让 APT 识别该盘片。apt-get update 不能被用来加入"
+"新的盘片"
 
 #: methods/cdrom.cc
 msgid "Wrong CD-ROM"
@@ -3449,7 +3668,7 @@ msgstr "无法卸载挂载于 %s 的 CD-ROM,它可能正被使用。"
 msgid "Disk not found."
 msgstr "找不到盘片。"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "无法找到文件"
 
@@ -3482,9 +3701,9 @@ msgstr "无法为 %s 创建套接字(f=%u t=%u p=%u)"
 #: methods/connect.cc
 #, c-format
 msgid "Cannot initiate the connection to %s:%s (%s)."
-msgstr "无法发起与 %s:%s (%s) 的连接"
+msgstr "无法发起与 %s:%s (%s) 的连接。"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "失败"
 
@@ -3498,9 +3717,7 @@ msgstr "无法连接上 %s:%s (%s)。"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "无法连接上 %s:%s (%s),连接超时"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "正在连接 %s"
@@ -3538,143 +3755,15 @@ msgstr "无法读取状态"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "无效的 URI,本地 URI 不能以 // 开头"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "正在登录"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "无法获知对方主机名"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "无法获知本地主机名"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "服务器拒绝了我们的连接,响应信息为:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER 指令出错,服务器响应信息为:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS 指令出错,服务器响应信息为:%s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-"您指定了代理服务器,但是没有登陆脚本,Acquire::ftp::ProxyLogin 设置为空。"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "登录脚本命令“%s”出错,服务器响应信息为:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE 指令出错,服务器响应信息为:%s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "连接超时"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "服务器关闭了连接"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "回应超出了缓存区大小。"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "协议有误"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "无法创建套接字"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "无法连接数据套接字,连接超时"
-
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "无法连接被动模式的套接字。"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo 无法得到监听套接字"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "无法绑定套接字"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "无法在套接字上监听"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "无法确定套接字的名字"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "无法发出 PORT 指令"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "无法识别的地址族 %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT 指令失败,服务器响应为:%s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "数据套接字连接超时"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "无法接受连接"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "把文件加入哈希表时出错"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "无法获取文件,服务器响应为“%s”"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "数据套接字超时"
+msgid "untrusted public key algorithm: %s"
+msgstr "不受信任的公钥算法:%s"
 
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "数据传送出错,服务器响应为“%s”"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "查询"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "无法调用 "
+msgid "%s will be deprecated in a future release"
+msgstr "%s 将会在未来的版本中被弃用"
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3693,27 +3782,18 @@ msgid ""
 msgstr "内部错误:签名正确无误,但是无法确认密钥指纹?!"
 
 #: methods/gpgv.cc
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
-msgstr "无法运行 apt-key 以验证签名(您安装了 gnupg 吗?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
+msgstr "无法运行 'gpgv' 以验证签名(您安装了 gnupg 吗?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
-msgstr "运行 apt-key 时发生未知错误"
-
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-"密钥存储在过时的 trusted.gpg 密钥环中(%s),请参见 apt-key(8) 的 "
-"DEPRECATION 一节以了解详情。"
+msgid "Unknown error executing gpgv"
+msgstr "运行 gpgv 时发生未知错误"
 
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
-msgstr "密钥 %s 生成的数字签名使用了弱安全性摘要算法(%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
+msgstr "密钥 %s 生成的数字签名使用了弱安全性的算法(%s)"
 
 #: methods/gpgv.cc
 msgid "The following signatures were invalid:\n"
@@ -3739,24 +3819,159 @@ msgstr "写入文件出错"
 
 #: methods/http.cc
 msgid "Select failed"
-msgstr "select 调用出错"
+msgstr "Select 调用出错"
 
 #: methods/http.cc
 msgid "Connection timed out"
 msgstr "连接超时"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "把文件加入哈希表时出错"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "无法设置文件的修改日期"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "连接被永久关闭"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr "空文件不是有效归档"
 
+#, fuzzy, c-format
+#~| msgid ""
+#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
+#~| "section in apt-key(8) for details."
+#~ msgid ""
+#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. "
+#~ "See the USER CONFIGURATION section in apt-secure(8) for details."
+#~ msgstr ""
+#~ "密钥存储在过时的 trusted.gpg 密钥环中(%s),请参见 apt-key(8) 的 "
+#~ "DEPRECATION 一节以了解详情。"
+
+#, c-format
+#~ msgid ""
+#~ "The method '%s' is unsupported and disabled by default. Consider "
+#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it "
+#~ "again."
+#~ msgstr ""
+#~ "目前“%s”方法不受支持且默认禁用。请考虑切换至 http(s)。您可以将 "
+#~ "Dir::Bin::Methods::%s 设置为“%s”来重新启用。"
+
+#~ msgid "Logging in"
+#~ msgstr "正在登录"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "无法获知对方主机名"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "无法获知本地主机名"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "服务器拒绝了我们的连接,响应信息为:%s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER 指令出错,服务器响应信息为:%s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS 指令出错,服务器响应信息为:%s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "您指定了代理服务器,但是没有登陆脚本,Acquire::ftp::ProxyLogin 设置为空。"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "登录脚本命令“%s”出错,服务器响应信息为:%s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE 指令出错,服务器响应信息为:%s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "连接超时"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "服务器关闭了连接"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "回应超出了缓存区大小。"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "协议有误"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "无法创建套接字"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "无法连接数据套接字,连接超时"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "无法连接被动模式的套接字。"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo 无法得到监听套接字"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "无法绑定套接字"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "无法在套接字上监听"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "无法确定套接字的名字"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "无法发出 PORT 指令"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "无法识别的地址族 %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT 指令失败,服务器响应为:%s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "数据套接字连接超时"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "无法接受连接"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "无法获取文件,服务器响应为“%s”"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "数据套接字超时"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "数据传送出错,服务器响应为“%s”"
+
+#~ msgid "Query"
+#~ msgstr "查询"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "无法调用 "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "连接被永久关闭"
+
+#, fuzzy, c-format
+#~| msgid "  Installed: "
+#~ msgid "  Installed size: %sB\n"
+#~ msgstr "  已安装:"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "下列被要求保持版本不变的软件包将被改变:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "是,按我说的做!"
 
@@ -4280,8 +4495,8 @@ msgstr "空文件不是有效归档"
 #~ "Could not perform immediate configuration on already unpacked '%s'. "
 #~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
 #~ msgstr ""
-#~ "无法立即对已经解压的 %s 进行配置。请查看 man 5 apt.conf 中的 APT::"
-#~ "Immediate-Configure。"
+#~ "无法立即对已经解压的 %s 进行配置。请查看 man 5 apt.conf 中的 "
+#~ "APT::Immediate-Configure。"
 
 #~ msgid "Error occurred while processing %s (NewPackage)"
 #~ msgstr "处理 %s (NewPackage)时出错"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index be1dffb..e1ad2bf 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -12,11 +12,11 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 1.2.X\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2023-03-06 12:29+0000\n"
+"POT-Creation-Date: 2025-02-16 16:59+0000\n"
 "PO-Revision-Date: 2009-01-28 10:41+0800\n"
 "Last-Translator: Tetralet <tetralet@gmail.com>\n"
-"Language-Team: Debian-user in Chinese [Big5] <debian-chinese-big5@lists."
-"debian.org>\n"
+"Language-Team: Debian-user in Chinese [Big5] <debian-chinese-"
+"big5@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -53,8 +53,8 @@ msgstr "路徑 %s 已被抽換"
 
 #: apt-pkg/acquire-item.cc
 msgid ""
-"This is normally not allowed, but the option Acquire::"
-"AllowDowngradeToInsecureRepositories was given to override it."
+"This is normally not allowed, but the option "
+"Acquire::AllowDowngradeToInsecureRepositories was given to override it."
 msgstr ""
 
 #: apt-pkg/acquire-item.cc
@@ -183,8 +183,7 @@ msgstr ""
 msgid "Conflicting distribution: %s (expected %s but got %s)"
 msgstr "發行版本衝突:%s(應當是 %s 但卻得到 %s)"
 
-#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid "Repository '%s' changed its '%s' value from '%s' to '%s'"
 msgstr ""
@@ -195,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi."
 msgstr ""
 
 #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change
-#: apt-pkg/acquire-item.cc apt-private/private-update.cc
+#: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
 "More information about this can be found online in the Release notes at: %s"
@@ -214,6 +213,13 @@ msgstr ""
 msgid "Failed to fetch %s  %s"
 msgstr "無法取得 %s,%s"
 
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Repositories should provide a clear-signed InRelease file, but none found at "
+"%s."
+msgstr ""
+
 #: apt-pkg/acquire-item.cc
 #, c-format
 msgid ""
@@ -234,13 +240,6 @@ msgstr ""
 msgid "Changelog unavailable for %s=%s"
 msgstr "正和 %s (%s) 連線"
 
-#: apt-pkg/acquire-worker.cc
-#, c-format
-msgid ""
-"The method '%s' is unsupported and disabled by default. Consider switching "
-"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."
-msgstr ""
-
 #: apt-pkg/acquire-worker.cc
 #, c-format
 msgid "The method '%s' is explicitly disabled via configuration."
@@ -622,6 +621,30 @@ msgstr "語法錯誤 %s:%u:指令只能於最高層級執行"
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr "語法錯誤 %s:%u:在檔案結尾有多餘的垃圾"
 
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Error:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Warning:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Notice:"
+msgstr ""
+
+#: apt-pkg/contrib/error.cc
+msgid "Audit:"
+msgstr ""
+
+#. TRANSLATOR: This is a warning level displayed before the message
+#: apt-pkg/contrib/error.cc
+msgid "Debug:"
+msgstr ""
+
 #: apt-pkg/contrib/extracttar.cc
 #, fuzzy, c-format
 msgid "Cannot find a configured compressor for '%s'"
@@ -731,11 +754,11 @@ msgstr "子程序 %s 傳回錯誤碼 (%u)"
 msgid "Sub-process %s exited unexpectedly"
 msgstr "子程序 %s 不預期得結束"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Read error"
 msgstr "讀取錯誤"
 
-#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+#: apt-pkg/contrib/fileutl.cc
 msgid "Write error"
 msgstr "寫入錯誤"
 
@@ -1044,6 +1067,12 @@ msgstr "無法鎖定列表目錄"
 msgid "Not locked"
 msgstr ""
 
+#: apt-pkg/deb/debsystem.cc
+msgid ""
+"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using "
+"default dpkg."
+msgstr ""
+
 #. we don't care for the difference
 #: apt-pkg/deb/dpkgpm.cc
 #, c-format
@@ -1224,6 +1253,16 @@ msgstr ""
 msgid "External solver failed without a proper error message"
 msgstr ""
 
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "籌備升級中"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "相依關係合計:"
+
 #: apt-pkg/edsp.cc
 msgid "Execute external solver"
 msgstr ""
@@ -1519,10 +1558,6 @@ msgid ""
 "used instead."
 msgstr "有一些索引檔不能下載,它們可能被略過了,或是替而使用原有的索引檔。"
 
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "籌備升級中"
-
 #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
 #: apt-private/acqprogress.cc
 #, c-format
@@ -1785,6 +1820,18 @@ msgstr "以下的資訊或許有助於解決當前的情況:"
 msgid "Broken packages"
 msgstr "損毀的套件"
 
+#: apt-private/private-install.cc
+msgid ""
+"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr "
+"system."
+msgstr ""
+
+#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes)
+#: apt-private/private-install.cc
+#, c-format
+msgid "See %s for more details."
+msgstr ""
+
 #: apt-private/private-install.cc
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
@@ -1827,6 +1874,12 @@ msgstr "內部錯誤,排序未能完成"
 msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
 msgstr "怪哉... 檔案大小不符,請發信給 apt@packages.debian.org"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "  Installed: "
+msgid "  Download size: %sB / %sB\n"
+msgstr "  已安裝:"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1834,6 +1887,11 @@ msgstr "怪哉... 檔案大小不符,請發信給 apt@packages.debian.org"
 msgid "Need to get %sB/%sB of archives.\n"
 msgstr "需要下載 %sB/%sB 的套件檔。\n"
 
+#: apt-private/private-install.cc
+#, c-format
+msgid "  Download size: %sB\n"
+msgstr ""
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1841,13 +1899,55 @@ msgstr "需要下載 %sB/%sB 的套件檔。\n"
 msgid "Need to get %sB of archives.\n"
 msgstr "需要下載 %sB 的套件檔。\n"
 
-#. TRANSLATOR: The required space between number and unit is already included
-#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
 #, c-format
 msgid "After this operation, %sB of additional disk space will be used.\n"
 msgstr "此操作完成之後,會多佔用 %sB 的磁碟空間。\n"
 
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "More space needed than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -
+#. The first %s is the location of the boot directory (determined from Dir::Boot),
+#. and it tells the space being needed there.
+#. (We have two spaces to align with parent "space needed:"for /boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid "in %s:  %sB / %sB available\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#. The first %s is the location of the boot directory (determined from Dir::Boot)
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"More space needed in %s than available: %sB > %sB, installation may fail"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Space needed: %sB\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+#| msgid "Stored label: %s\n"
+msgid "  Freed space: %sB\n"
+msgstr "保存標籤:%s\n"
+
 #. TRANSLATOR: The required space between number and unit is already included
 #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
 #: apt-private/private-install.cc
@@ -1865,6 +1965,14 @@ msgid ""
 "break the system."
 msgstr ""
 
+#: apt-private/private-install.cc
+msgid "Continue anyway?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Continue?"
+msgstr ""
+
 #: apt-private/private-install.cc cmdline/apt-mark.cc
 msgid "Do you want to continue?"
 msgstr "是否繼續進行 [Y/n]?"
@@ -1923,6 +2031,13 @@ msgstr ""
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "內部錯誤,AutoRemover 處理失敗"
 
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "使用 '%s' 來將其移除。"
+msgstr[1] "使用 '%s' 來將其移除。"
+
 #: apt-private/private-install.cc
 #, fuzzy
 msgid ""
@@ -1941,17 +2056,6 @@ msgid_plural ""
 msgstr[0] "以下套件是被自動安裝進來的,且已不再會被用到了:"
 msgstr[1] "以下套件是被自動安裝進來的,且已不再會被用到了:"
 
-#: apt-private/private-install.cc
-#, fuzzy, c-format
-msgid "Use '%s' to remove it."
-msgid_plural "Use '%s' to remove them."
-msgstr[0] "使用 '%s' 來將其移除。"
-msgstr[1] "使用 '%s' 來將其移除。"
-
-#: apt-private/private-install.cc
-msgid "The following additional packages will be installed:"
-msgstr "下列的額外套件將被安裝:"
-
 #: apt-private/private-install.cc
 msgid "Suggested packages:"
 msgstr "建議套件:"
@@ -1960,6 +2064,10 @@ msgstr "建議套件:"
 msgid "Recommended packages:"
 msgstr "推薦套件:"
 
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "下列的額外套件將被安裝:"
+
 #: apt-private/private-install.cc
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
@@ -2089,14 +2197,52 @@ msgstr "或"
 msgid "The following packages have unmet dependencies:"
 msgstr "下列的套件有未滿足的相依關係:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Failed to satisfy %s dependency for %s: %s"
+msgid "Unsatisfied dependencies:"
+msgstr "無法滿足 %2$s 的相依關係 %1$s:%3$s"
+
 #: apt-private/private-output.cc
 msgid "The following NEW packages will be installed:"
 msgstr "下列【新】套件將會被安裝:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Installing %s"
+msgid "Installing:"
+msgstr "正在安裝 %s"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Installing dependencies:"
+msgstr "相依關係合計:"
+
+#: apt-private/private-output.cc
+msgid "REMOVING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be REMOVED:"
 msgstr "下列套件將會被【移除】:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "The following upgrades have been deferred due to phasing:"
+msgstr "下列套件將會維持其原有版本:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "The following packages have been kept back:"
+msgid "Not upgrading yet due to phasing:"
+msgstr "下列套件將會維持其原有版本:"
+
+#: apt-private/private-output.cc
+msgid "Not upgrading:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages have been kept back:"
 msgstr "下列套件將會維持其原有版本:"
@@ -2105,10 +2251,24 @@ msgstr "下列套件將會維持其原有版本:"
 msgid "The following packages will be upgraded:"
 msgstr "下列套件將會被升級:"
 
+#: apt-private/private-output.cc
+msgid "Upgrading:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "DOWNGRADING:"
+msgstr ""
+
 #: apt-private/private-output.cc
 msgid "The following packages will be DOWNGRADED:"
 msgstr "下列套件將會被【降級】:"
 
+#: apt-private/private-output.cc
+#, fuzzy
+#| msgid "Pinned packages:"
+msgid "Changing held packages:"
+msgstr "鎖定的套件:"
+
 #: apt-private/private-output.cc
 msgid "The following held packages will be changed:"
 msgstr "下列被保留 (hold) 的套件將會被更改:"
@@ -2126,26 +2286,52 @@ msgstr ""
 "【警告】:下列的基本套件都將被移除。\n"
 "除非您很清楚您在做什麼,否則請勿輕易嘗試!"
 
+#: apt-private/private-output.cc
+msgid "Summary:"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
 msgstr "升級 %lu 個,新安裝 %lu 個,"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Upgrading: %lu, Installing: %lu, "
+msgstr "正在安裝 %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu reinstalled, "
 msgstr "重新安裝 %lu 個,"
 
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+#| msgid "Installing %s"
+msgid "Reinstalling: %lu, "
+msgstr "正在安裝 %s"
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu downgraded, "
 msgstr "降級 %lu 個,"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Downgrading: %lu, "
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu to remove and %lu not upgraded.\n"
 msgstr "移除 %lu 個,有 %lu 個未被升級。\n"
 
+#: apt-private/private-output.cc
+#, c-format
+msgid "Removing: %lu, Not Upgrading: %lu\n"
+msgstr ""
+
 #: apt-private/private-output.cc
 #, c-format
 msgid "%lu not fully installed or removed.\n"
@@ -2173,7 +2359,7 @@ msgid "Y"
 msgstr ""
 
 #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
-#: apt-private/private-output.cc
+#: apt-private/private-output.cc apt-private/private-sources.cc
 msgid "N"
 msgstr ""
 
@@ -2347,8 +2533,8 @@ msgstr "%s 沒有編譯相依關係。\n"
 #: apt-private/private-source.cc
 #, c-format
 msgid ""
-"No architecture information available for %s. See apt.conf(5) APT::"
-"Architectures for setup"
+"No architecture information available for %s. See apt.conf(5) "
+"APT::Architectures for setup"
 msgstr ""
 
 #: apt-private/private-source.cc
@@ -2385,6 +2571,11 @@ msgstr "無法將 %s 更名為 %s"
 msgid "Your '%s' file changed, please run 'apt-get update'.\n"
 msgstr ""
 
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Rewrite %zu sources?"
+msgstr ""
+
 #: apt-private/private-unmet.cc
 #, c-format
 msgid "Package %s version %s has an unmet dep:\n"
@@ -2402,6 +2593,37 @@ msgid ""
 "the %s entry for '%s'"
 msgstr ""
 
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "The %s entry for '%s' should be upgraded to deb822 .sources"
+msgstr ""
+
+#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list
+#: apt-private/private-update.cc
+#, c-format
+msgid "Missing Signed-By in the %s entry for '%s'"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"Consider migrating all sources.list(5) entries to the deb822 .sources format"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid ""
+"The deb822 .sources format supports both embedded as well as external "
+"OpenPGP keys"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "See apt-secure(8) for best practices in configuring repository signing."
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so."
+msgstr ""
+
 #: apt-private/private-update.cc
 #, c-format
 msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
@@ -2448,6 +2670,12 @@ msgstr "  混合虛擬套件:"
 msgid "  Missing: "
 msgstr "  找不到:"
 
+#: cmdline/apt-cache.cc
+#, fuzzy
+#| msgid "Total distinct versions: "
+msgid "Total distinct source versions: "
+msgstr "個別版本合計:"
+
 #: cmdline/apt-cache.cc
 msgid "Total distinct versions: "
 msgstr "個別版本合計:"
@@ -2776,6 +3004,12 @@ msgstr ""
 msgid "concatenate files, with automatic decompression"
 msgstr ""
 
+#: cmdline/apt-helper.cc
+#, fuzzy
+#| msgid "Problem hashing file"
+msgid "hash file"
+msgstr "有問題的雜湊檔"
+
 #: cmdline/apt-helper.cc
 msgid "detect proxy using apt.conf"
 msgstr ""
@@ -3023,6 +3257,10 @@ msgstr ""
 msgid "edit the source information file"
 msgstr "正在讀取狀態資料"
 
+#: cmdline/apt.cc
+msgid "modernize .list files to .sources files"
+msgstr ""
+
 #: cmdline/apt.cc
 #, fuzzy
 #| msgid "Failed to satisfy %s dependency for %s: %s"
@@ -3224,7 +3462,7 @@ msgstr "未知的壓縮演算法 '%s'"
 msgid "Compressed output %s needs a compression set"
 msgstr "要壓縮輸出 %s 需搭配壓縮動作"
 
-#: ftparchive/multicompress.cc methods/rsh.cc
+#: ftparchive/multicompress.cc
 msgid "Failed to create IPC pipe to subprocess"
 msgstr "無法和子程序建立 IPC 管線"
 
@@ -3343,23 +3581,23 @@ msgstr "套件檔裡沒有套件資訊"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no override entry\n"
-msgstr "  %s 沒有重新定義項目\n"
+msgid "  %.*s has no override entry\n"
+msgstr "  %.*s 沒有重新定義項目\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s maintainer is %s not %s\n"
-msgstr "  %s 的維護者是 %s,而非 %s\n"
+msgid "  %.*s maintainer is %.*s not %s\n"
+msgstr "  %.*s 的維護者是 %.*s,而非 %s\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no source override entry\n"
-msgstr "  %s 沒有原始碼重新定義項目\n"
+msgid "  %.*s has no source override entry\n"
+msgstr "  %.*s 沒有原始碼重新定義項目\n"
 
 #: ftparchive/writer.cc
 #, c-format
-msgid "  %s has no binary override entry either\n"
-msgstr "  %s 也沒有二元碼重新定義項目\n"
+msgid "  %.*s has no binary override entry either\n"
+msgstr "  %.*s 也沒有二元碼重新定義項目\n"
 
 #: methods/basehttp.cc
 msgid "Waiting for headers"
@@ -3397,7 +3635,7 @@ msgstr "錯誤的標頭資料"
 msgid "Connection failed"
 msgstr "連線失敗"
 
-#: methods/basehttp.cc methods/ftp.cc methods/http.cc
+#: methods/basehttp.cc methods/http.cc
 #, c-format
 msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?"
 msgstr ""
@@ -3438,7 +3676,7 @@ msgstr "無法卸載 %s 裡的光碟片,或許它仍在使用中。"
 msgid "Disk not found."
 msgstr "找不到磁碟。"
 
-#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+#: methods/cdrom.cc methods/file.cc
 msgid "File not found"
 msgstr "找不到檔案"
 
@@ -3474,7 +3712,7 @@ msgstr "無法建立 socket 指向 %s (f=%u t=%u p=%u)"
 msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr "無法初始和 %s:%s (%s) 的連線。"
 
-#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+#: methods/connect.cc
 msgid "Failed"
 msgstr "失敗"
 
@@ -3488,9 +3726,7 @@ msgstr "無法和 %s:%s (%s) 連線。"
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "無法和 %s:%s (%s) 連線,連線逾時"
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc methods/rsh.cc
+#: methods/connect.cc
 #, c-format
 msgid "Connecting to %s"
 msgstr "正連線至 %s"
@@ -3528,143 +3764,15 @@ msgstr "無法取得狀態"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr "不正確的 URI,本機 URI 不應以 // 開頭"
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc
-msgid "Logging in"
-msgstr "登入中"
-
-#: methods/ftp.cc
-msgid "Unable to determine the peer name"
-msgstr "無法解析對方主機名稱"
-
-#: methods/ftp.cc
-msgid "Unable to determine the local name"
-msgstr "無法解析本機名稱"
-
-#: methods/ftp.cc
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr "伺服器不接受連線,並回應:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr "USER 指令失敗,伺服器回應:%s"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "PASS failed, server said: %s"
-msgstr "PASS 指令失敗,伺服器回應:%s"
-
-#: methods/ftp.cc
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+msgid "untrusted public key algorithm: %s"
 msgstr ""
-"指定了代理伺服器,但沒有指定登入 script,Acquire::ftp::ProxyLogin 是空的。"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr "登入 script 指令 '%s' 失敗,伺服器回應:%s"
-
-#: methods/ftp.cc
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr "TYPE 指令失敗,伺服器回應:%s"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Connection timeout"
-msgstr "連線逾時"
-
-#: methods/ftp.cc
-msgid "Server closed the connection"
-msgstr "伺服器已關閉連線"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "A response overflowed the buffer."
-msgstr "回應超過緩衝區長度。"
-
-#: methods/ftp.cc
-msgid "Protocol corruption"
-msgstr "協定失敗"
-
-#: methods/ftp.cc
-msgid "Could not create a socket"
-msgstr "無法建立 Socket"
-
-#: methods/ftp.cc
-msgid "Could not connect data socket, connection timed out"
-msgstr "無法和 data socket 連線,連線逾時"
 
-#: methods/ftp.cc
-msgid "Could not connect passive socket."
-msgstr "無法和 passive socket 連線。"
-
-#: methods/ftp.cc
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr "getaddrinfo 無法取得監聽 socket"
-
-#: methods/ftp.cc
-msgid "Could not bind a socket"
-msgstr "無法 bind 至 socket"
-
-#: methods/ftp.cc
-msgid "Could not listen on the socket"
-msgstr "無法監聽 socket"
-
-#: methods/ftp.cc
-msgid "Could not determine the socket's name"
-msgstr "無法解析 socket 名稱"
-
-#: methods/ftp.cc
-msgid "Unable to send PORT command"
-msgstr "無法送出 PORT 指令"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr "未知的地址家族 %u (AF_*)"
-
-#: methods/ftp.cc
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr "EPRT 指令失敗,伺服器回應:%s"
-
-#: methods/ftp.cc
-msgid "Data socket connect timed out"
-msgstr "Data socket 連線逾時"
-
-#: methods/ftp.cc
-msgid "Unable to accept connection"
-msgstr "無法接受連線"
-
-#: methods/ftp.cc methods/http.cc methods/rsh.cc
-msgid "Problem hashing file"
-msgstr "有問題的雜湊檔"
-
-#: methods/ftp.cc
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr "無法取得檔案,伺服器回應 '%s'"
-
-#: methods/ftp.cc methods/rsh.cc
-msgid "Data socket timed out"
-msgstr "Data socket 連線逾時"
-
-#: methods/ftp.cc
+#: methods/gpgv.cc
 #, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr "資料傳輸失敗,伺服器回應 '%s'"
-
-#. Get the files information
-#: methods/ftp.cc
-msgid "Query"
-msgstr "查詢"
-
-#: methods/ftp.cc
-msgid "Unable to invoke "
-msgstr "無法 invoke "
+msgid "%s will be deprecated in a future release"
+msgstr ""
 
 #. TRANSLATORS: %s is a single techy word like 'NODATA'
 #: methods/gpgv.cc
@@ -3684,24 +3792,19 @@ msgstr "內部錯誤:簽章無誤,但卻無法辨識密鑰的指紋碼?!
 
 #: methods/gpgv.cc
 #, fuzzy
-msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)"
 msgstr "無法執行 '%s' 來驗證簽章(gnupg 是否安裝了?)"
 
 #: methods/gpgv.cc
-msgid "Unknown error executing apt-key"
+#, fuzzy
+#| msgid "Unknown error executing apt-key"
+msgid "Unknown error executing gpgv"
 msgstr "在執行 apt-key 時發生未知的錯誤"
 
-#: methods/gpgv.cc
-#, c-format
-msgid ""
-"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION "
-"section in apt-key(8) for details."
-msgstr ""
-
 #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
 #: methods/gpgv.cc
 #, c-format
-msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgid "Signature by key %s uses weak algorithm (%s)"
 msgstr ""
 
 #: methods/gpgv.cc
@@ -3734,18 +3837,128 @@ msgstr "選擇失敗"
 msgid "Connection timed out"
 msgstr "連線逾時"
 
+#: methods/http.cc
+msgid "Problem hashing file"
+msgstr "有問題的雜湊檔"
+
 #: methods/rred.cc
 msgid "Failed to set modification time"
 msgstr "無法設定修改時間"
 
-#: methods/rsh.cc
-msgid "Connection closed prematurely"
-msgstr "連線突然終止"
-
 #: methods/store.cc
 msgid "Empty files can't be valid archives"
 msgstr ""
 
+#~ msgid "Logging in"
+#~ msgstr "登入中"
+
+#~ msgid "Unable to determine the peer name"
+#~ msgstr "無法解析對方主機名稱"
+
+#~ msgid "Unable to determine the local name"
+#~ msgstr "無法解析本機名稱"
+
+#, c-format
+#~ msgid "The server refused the connection and said: %s"
+#~ msgstr "伺服器不接受連線,並回應:%s"
+
+#, c-format
+#~ msgid "USER failed, server said: %s"
+#~ msgstr "USER 指令失敗,伺服器回應:%s"
+
+#, c-format
+#~ msgid "PASS failed, server said: %s"
+#~ msgstr "PASS 指令失敗,伺服器回應:%s"
+
+#~ msgid ""
+#~ "A proxy server was specified but no login script, "
+#~ "Acquire::ftp::ProxyLogin is empty."
+#~ msgstr ""
+#~ "指定了代理伺服器,但沒有指定登入 script,Acquire::ftp::ProxyLogin 是空的。"
+
+#, c-format
+#~ msgid "Login script command '%s' failed, server said: %s"
+#~ msgstr "登入 script 指令 '%s' 失敗,伺服器回應:%s"
+
+#, c-format
+#~ msgid "TYPE failed, server said: %s"
+#~ msgstr "TYPE 指令失敗,伺服器回應:%s"
+
+#~ msgid "Connection timeout"
+#~ msgstr "連線逾時"
+
+#~ msgid "Server closed the connection"
+#~ msgstr "伺服器已關閉連線"
+
+#~ msgid "A response overflowed the buffer."
+#~ msgstr "回應超過緩衝區長度。"
+
+#~ msgid "Protocol corruption"
+#~ msgstr "協定失敗"
+
+#~ msgid "Could not create a socket"
+#~ msgstr "無法建立 Socket"
+
+#~ msgid "Could not connect data socket, connection timed out"
+#~ msgstr "無法和 data socket 連線,連線逾時"
+
+#~ msgid "Could not connect passive socket."
+#~ msgstr "無法和 passive socket 連線。"
+
+#~ msgid "getaddrinfo was unable to get a listening socket"
+#~ msgstr "getaddrinfo 無法取得監聽 socket"
+
+#~ msgid "Could not bind a socket"
+#~ msgstr "無法 bind 至 socket"
+
+#~ msgid "Could not listen on the socket"
+#~ msgstr "無法監聽 socket"
+
+#~ msgid "Could not determine the socket's name"
+#~ msgstr "無法解析 socket 名稱"
+
+#~ msgid "Unable to send PORT command"
+#~ msgstr "無法送出 PORT 指令"
+
+#, c-format
+#~ msgid "Unknown address family %u (AF_*)"
+#~ msgstr "未知的地址家族 %u (AF_*)"
+
+#, c-format
+#~ msgid "EPRT failed, server said: %s"
+#~ msgstr "EPRT 指令失敗,伺服器回應:%s"
+
+#~ msgid "Data socket connect timed out"
+#~ msgstr "Data socket 連線逾時"
+
+#~ msgid "Unable to accept connection"
+#~ msgstr "無法接受連線"
+
+#, c-format
+#~ msgid "Unable to fetch file, server said '%s'"
+#~ msgstr "無法取得檔案,伺服器回應 '%s'"
+
+#~ msgid "Data socket timed out"
+#~ msgstr "Data socket 連線逾時"
+
+#, c-format
+#~ msgid "Data transfer failed, server said '%s'"
+#~ msgstr "資料傳輸失敗,伺服器回應 '%s'"
+
+#~ msgid "Query"
+#~ msgstr "查詢"
+
+#~ msgid "Unable to invoke "
+#~ msgstr "無法 invoke "
+
+#~ msgid "Connection closed prematurely"
+#~ msgstr "連線突然終止"
+
+#, fuzzy
+#~| msgid "The following held packages will be changed:"
+#~ msgid "Changing held packages:Changing held packages:"
+#~ msgstr "下列被保留 (hold) 的套件將會被更改:"
+
 #~ msgid "Yes, do as I say!"
 #~ msgstr "Yes, do as I say!"
 
diff --git a/prepare-release b/prepare-release
index 988ccab..e77dfe4 100755
--- a/prepare-release
+++ b/prepare-release
@@ -11,6 +11,7 @@ VERSION=$(dpkg-parsechangelog -S 'Version')
 DISTRIBUTION=$(dpkg-parsechangelog -S 'Distribution')
 
 LIBAPTPKGVERSION="$(awk -v ORS='.' '/^#define APT_PKG_M/ {print $3}' apt-pkg/contrib/macros.h | sed 's/\.$//')"
+LIBSUFFIX=""
 
 librarysymbolsfromfile() {
 	local MISSING="$(grep '^+#MISSING' "$1")"
@@ -29,12 +30,12 @@ if [ "$1" = 'pre-export' ]; then
 	libraryversioncheck() {
 		local LIBRARY="$1"
 		local VERSION="$2"
-		if [ ! -e "debian/${LIBRARY}${VERSION}.symbols" ]; then
+		if [ ! -e "debian/${LIBRARY}${VERSION}${LIBSUFFIX}.symbols" ]; then
 		   echo >&2 "Library ${LIBRARY} in version ${VERSION} has no symbols file! (maybe forgot to rename?)"
 		   exit 1
 		fi
-		if [ "$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")" != "${LIBRARY}.so.${VERSION} ${LIBRARY}${VERSION} #MINVER#" ]; then
-		   echo >&2 "Library ${LIBRARY}${VERSION} has incorrect version in symbol header! (»$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")«)"
+		if [ "$(head -n1 "debian/${LIBRARY}${VERSION}${LIBSUFFIX}.symbols")" != "${LIBRARY}.so.${VERSION} ${LIBRARY}${VERSION}${LIBSUFFIX} #MINVER#" ]; then
+		   echo >&2 "Library ${LIBRARY}${VERSION} has incorrect version in symbol header! (»$(head -n1 "debian/${LIBRARY}${VERSION}${LIBSUFFIX}.symbols")«)"
 		   exit 2
 		fi
 	}
@@ -166,7 +167,7 @@ elif [ "$1" = 'library' ]; then
 		fi
 		echo "Checking $1 in version $2 build at $(stat -L -c '%y' "$buildlib")"
 		local tmpfile=$(mktemp)
-		dpkg-gensymbols -p${1}${2} -e${buildlib} -Idebian/${1}${2}.symbols -O/dev/null 2> /dev/null > $tmpfile || true
+		dpkg-gensymbols -p${1}${2} -e${buildlib} -Idebian/${1}${2}${LIBSUFFIX}.symbols -O/dev/null 2> /dev/null > $tmpfile || true
 		librarysymbolsfromfile "$tmpfile" "$(echo "${1}" | cut -c 4- | tr -d '-' | tr 'a-z' 'A-Z')_${2}"
 		rm -f $tmpfile
 	}
@@ -178,7 +179,7 @@ elif [ "$1" = 'buildlog' ]; then
 		shift
 	done
 elif [ "$1" = 'travis-ci' ]; then
-	apt-get build-dep -qy .
+	apt-get build-dep -P pkg.apt.ci -qy .
 	apt-get install -qy --no-install-recommends dctrl-tools
 	for t in $(grep '^Tests: ' debian/tests/control | cut -d':' -f 2- | tr ',' '\n'); do
 		apt-get satisfy -qy --no-install-recommends "base-files,$(grep-dctrl -ns Depends -F Tests $t ./debian/tests/control | sed -e 's#@[^,<>()@]*@\s*,\s*##g' -e 's#@\s*,\s*##g')"
@@ -232,7 +233,6 @@ elif [ "$1" = 'spellcheckers' -o "$1" = 'lint' ]; then
 				-e '^.*apt-pkg/pkgcache\.h.*mmaped.*==>.*mapped.*$' \
 				-e '^.*apt-pkg/pkgcachegen\.cc.*mmaped.*==>.*mapped.*$' \
 				-e '^.*apt-pkg/contrib/mmap\.h.*mmaped.*==>.*mapped.*$' \
-				-e '^.*cmdline/apt-key\.in.*dashs.*==>.*dashes.*$' \
 				-e '^.*methods/aptmethod\.h.*creat.*==>.*create.*$' \
 				-e '^.*dselect/install.*ans.*==>.*and.*$' \
 				-e '^.*ftparchive/writer\.h.*Delink.*==>.*Unlink.*$' \
@@ -275,9 +275,6 @@ elif [ "$1" = 'spellcheckers' -o "$1" = 'lint' ]; then
 				-e '^./ftparchive/byhash.cc: ByHash ByHash (duplicate word) -> ByHash$' \
 				-e '^./ftparchive/writer.cc: this Packages -> these packages$' \
 				-e '^./ftparchive/byhash.h: ByHash ByHash (duplicate word) -> ByHash$' \
-				-e '^./cmdline/apt-key.in: done done (duplicate word) -> done$' \
-				-e '^./cmdline/apt-key.in: fi fi (duplicate word) -> fi$' \
-				-e '^./cmdline/apt-key.in: echo echo (duplicate word) -> echo$' \
 				-e '^./triehash/.travis.yml: perl perl (duplicate word) -> perl$' \
 				-e '^./triehash/README.md: Performance Performance (duplicate word) -> Performance$' \
 				-e '^./debian/apt.apt-compat.cron.daily: fi fi (duplicate word) -> fi$' \
diff --git a/test/integration/framework b/test/integration/framework
index 264c228..3784ece 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -19,6 +19,9 @@ while [ -n "$1" -a -z "$CHECK_ARGS" ]; do
 	elif [ "$1" = '--level' ]; then
 		export MSGLEVEL=$2
 		shift
+	elif [ "$1" = '--solver' ]; then
+		export APT_SOLVER=$2
+		shift
 	else
 		echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
 	fi
@@ -171,6 +174,13 @@ getaptconfig() {
 }
 runapt() {
 	msgdebug "Executing: ${CCMD}$*${CDEBUG} "
+	local unbuffer=
+	unset NO_COLOR
+	if [ "$1" = "--unbuffer" ]; then
+		unbuffer="unbuffer"
+		export NO_COLOR=1
+		shift
+	fi
 	local CMD="$1"
 	shift
 	case "$CMD" in
@@ -178,9 +188,9 @@ runapt() {
 	*) 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" "$@"
+		MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" command $unbuffer "$CMD" "$@"
 	else
-		MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" "$CMD" "$@"
+		MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" $unbuffer "$CMD" "$@"
 	fi
 }
 runpython3() { runapt command python3 "$@"; }
@@ -189,7 +199,6 @@ 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 "$@"; }
@@ -200,6 +209,7 @@ aptextracttemplates() { runapt apt-extracttemplates "$@"; }
 aptinternalsolver() { runapt "${APTINTERNALSOLVER}" "$@"; }
 aptdumpsolver() { runapt "${APTDUMPSOLVER}" "$@"; }
 aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; }
+sq() { command sq --key-store=none --cert-store=none "$@"; }
 
 dpkg() {
 	"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
@@ -247,10 +257,17 @@ valgrind() {
 	*) CMD="$1";;
 	esac
 	shift
+	if [ "$CMD" = "apt-ftparchive" ]; then
+		CMD="${APTFTPARCHIVEBINDIR}/${CMD}"
+	fi
 	if [ "${CMD##*/}" = "$CMD" ]; then
 		CMD="${APTCMDLINEBINDIR}/${CMD}"
 	fi
-	runapt command valgrind "$CMD" "$@"
+	if command valgrind --version >/dev/null 2>&1; then
+		runapt command valgrind -q --error-exitcode=7 "$CMD" "$@"
+	else
+		runapt command "$CMD" "$@"
+	fi
 }
 
 lastmodification() {
@@ -324,6 +341,7 @@ setupenvironment() {
 	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 SUDO_USER SUDO_UID SUDO_GID SUDO_COMMAND
 	unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy
 	export GCOV_ERROR_FILE=/dev/null
 
@@ -444,16 +462,10 @@ _setupprojectenvironment() {
 	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 "Binary::apt::APT::Output-Version \"0\";" >> 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
+		# run the solvers as root so we don't lose coverage data
 		echo 'APT::Solver::RunAsUser "root";' >> aptconfig.conf
 		echo 'APT::Planner::RunAsUser "root";' >> aptconfig.conf
 	fi
@@ -535,7 +547,10 @@ exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root=
 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
-
+	# Set the solver for the test case.
+	if [ "$APT_SOLVER" ]; then
+		echo "APT::Solver \"$APT_SOLVER\";" >> aptconfig.conf
+	fi
 	{
 		echo 'quiet "0";'
 		echo 'quiet::NoUpdate "true";'
@@ -565,6 +580,8 @@ EOF
 
 	echo 'APT::Machine-ID "912e43bd1c1d4ba481f9f8ccab25f9ee";' > rootdir/etc/apt/apt.conf.d/machine-id
 
+	echo "APT::Get::Update::SourceListWarnings::SignedBy \"false\";" >> rootdir/etc/apt/apt.conf.d/signed-by
+
 	configcompression '.' 'gz' #'bz2' 'lzma' 'xz'
 	confighashes 'SHA256' # these are tests, not security best-practices
 
@@ -572,17 +589,15 @@ EOF
 	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"
 }
+allowremovemanual() {
+    echo 'APT::Solver::RemoveManual "true";' >> ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/allow-remove-manual.conf
+}
 
 getarchitecture() {
 	if [ "$1" = "native" -o -z "$1" ]; then
@@ -763,7 +778,7 @@ _setupsimplenativepackage() {
 	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
- und used only by testcases and serve no other purpose…}"
+ and used only by testcases and serve no other purpose…}"
 
 	local SECTION="${7:-others}"
 	local PRIORITY="${8:-optional}"
@@ -863,9 +878,8 @@ buildsimplenativepackage() {
 		| 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"
+#			sq sign --signer-file ./keys/joesixpack.sec
+#				-o "${BUILDDIR}/../${SRC}.sign" --cleartext "${BUILDDIR}/../$SRC"
 #			mv "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
 #		fi
 	done
@@ -880,8 +894,12 @@ buildsimplenativepackage() {
                     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)
+		if [ ! -e "${BUILDDIR}/debian/tmp/DEBIAN/control" ]; then
+			(cd "${BUILDDIR}"; dpkg-gencontrol -DArchitecture=$arch)
+		fi
+		if [ ! -e "${BUILDDIR}/debian/tmp/DEBIAN/md5sums" ]; then
+			(cd "${BUILDDIR}/debian/tmp"; md5sum $(find usr/ -type f) > DEBIAN/md5sums)
+		fi
 		local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log"
 		# ensure the right permissions as dpkg-deb insists
 		chmod 755 "${BUILDDIR}/debian/tmp/DEBIAN"
@@ -994,7 +1012,7 @@ insertpackage() {
 	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
- und used only by testcases and serve no other purpose…}"
+ and used only by testcases and serve no other purpose…}"
 	local SECTION="${8:-other}"
 
 	if [ "$SECTION" = "${SECTION#*/}" ]; then
@@ -1022,9 +1040,13 @@ insertpackage() {
 Priority: $PRIORITY
 Section: $SECTION
 Installed-Size: 42
-Size: 42
-SHA256: 0000000000000000000000000000000000000000000000000000000000000000
-Maintainer: Joe Sixpack <joe@example.org>"
+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"
@@ -1084,7 +1106,7 @@ insertinstalledpackage() {
 	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
- und used only by testcases and serve no other purpose…}"
+ and used only by testcases and serve no other purpose…}"
 	local SECTION="${8:-other}"
 
 	local FILE='rootdir/var/lib/dpkg/status'
@@ -1092,9 +1114,11 @@ insertinstalledpackage() {
 	for arch in $(getarchitecturesfromcommalist "$ARCH"); do
 		echo "Package: $NAME
 Status: $STATUS
-Priority: $PRIORITY
-Section: $SECTION
-Installed-Size: 42
+Priority: $PRIORITY" >> "$FILE"
+		if [ "$SECTION" != '<none>' ]; then
+			echo "Section: $SECTION" >> "$FILE"
+		fi
+		echo "Installed-Size: 42
 Maintainer: Joe Sixpack <joe@example.org>
 Version: $VERSION" >> "$FILE"
 		test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE"
@@ -1275,22 +1299,7 @@ killgpgagent() {
 	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}"
@@ -1322,20 +1331,22 @@ signreleasefiles() {
 				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"
+				chronic sq key expire --expiration 1w --cert-file "${REXKEY}.sec" --output "$SECUNEXPIRED"
+				chronic sq key subkey expire --expiration 1w --policy-as-of 2020-01-01 --cert-file "$SECUNEXPIRED" --output "$SECUNEXPIRED" --overwrite --key  B3C9747B5FFD84E5585C3055DB4B332DD8DA0F4F
+				chronic sq key delete --cert-file "${SECUNEXPIRED}" --output "$PUBUNEXPIRED"
+				cp "${SECUNEXPIRED}" "${REXKEY}.sec"
+				cp "${PUBUNEXPIRED}" "${REXKEY}.pub"
 			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"
+			if [ ! -e "${KEY}.new.pub" ]; then
+				cp "${K}.pub" "${KEY}.new.pub"
+				cp "${K}.sec" "${KEY}.new.sec"
+			else
+				chronic sq keyring merge "${KEY}.new.pub" "${K}.pub" --output "${KEY}.new.pub" --overwrite
+				chronic sq keyring merge "${KEY}.new.sec" "${K}.sec" --output "${KEY}.new.sec" --overwrite
+			fi
 		fi
 	done
 	if [ ! -e "${KEY}.pub" ]; then
@@ -1348,14 +1359,18 @@ signreleasefiles() {
 		if [ "$APT_DONT_SIGN" = 'Release.gpg' ]; then
 			rm -f "${RELEASE}.gpg"
 		else
-			dosigning "$KEY" "$@" $SIGUSERS --armor --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
+			if command sq --cli-version 0.40 version 2>/dev/null; then
+				sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --output "${RELEASE}.gpg" --signature-file "${RELEASE}"
+			else
+				sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --signature-file "${RELEASE}.gpg" "${RELEASE}"
+			fi
 			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"
+			sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --output "${INRELEASE}" --cleartext "${RELEASE}"
 			touch -d "$DATE" "${INRELEASE}"
 		fi
 	done
@@ -1540,11 +1555,22 @@ downloadfile() {
 	fi
 }
 
+cleanup_solver3_pipe() {
+	if [ "$APT_SOLVER" != "3.0" ]; then
+		cat
+	else
+		# FIXME: We do not have support for listing autoremovals yet.
+		# FIXME: Progress output is different
+		sed -e '/Solving dependencies\.\.\./ d' \
+			-e "/no longer required[.:]$/,/^Use '.* autoremove'/ d"
+	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}' \
+		| cleanup_solver3_pipe \
 			>"$2"
 }
 
@@ -1987,24 +2013,14 @@ testfailure() {
 	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
+			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
-				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
+				msgpass
 			fi
 		else
 			msgpass
@@ -2090,11 +2106,12 @@ testfilestats() {
 	else
 		local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfilestats.output"
 		{
+			echo
 			ls -ld "$1" || true
 			echo -n "stat(1) reports for $2: "
 			stat --format "$2" "$1" || true
 		} >"$OUTPUT" 2>&1
-		msgfailoutput '' "$OUTPUT"
+		msgfailoutput '' "$OUTPUT" stat --format "$2" "$1"
 	fi
 	msggroup
 }
@@ -2141,14 +2158,6 @@ mapkeynametokeyid() {
 		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
@@ -2257,8 +2266,8 @@ aptautotest_aptget_update() {
 	# 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"
+	for file in $(cdfind "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -type f ! -name 'lock' | cut -c "$((${#TMPWORKINGDIRECTORY} + 1))-"); do
+		testfilestats "${TMPWORKINGDIRECTORY}$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
 	done
 	IFS="$backupIFS"
 	if [ "$TESTCALL" = 'testsuccess' ]; then
diff --git a/test/integration/run-tests b/test/integration/run-tests
index c1cc780..9399f28 100755
--- a/test/integration/run-tests
+++ b/test/integration/run-tests
@@ -22,7 +22,16 @@ while [ -n "$1" ]; do
 	elif [ "$1" = '-j' ]; then
 		APT_TEST_JOBS=$2
 		shift
-	elif [ -x "$1" ]; then
+	elif [ "$1" = '--solver' ]; then
+		export APT_SOLVER="$2"
+		shift
+	elif [ "$1" = '--skip' ]; then
+		export APT_SKIP_TEST_FILE="$2"
+		shift
+	elif [ "$1" = '--only' ]; then
+		TESTLIST="$2"
+		shift
+	elif [ -e "$1" ]; then
 		TESTTORUN="$1"
 	else
 		echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
@@ -52,14 +61,22 @@ if [ -n "$TESTTORUN" ]; then
 	CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP"
 	trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
 	{
-		if [ "$MSGLEVEL" -le 1 ]; then
+		if [ "$APT_SKIP_TEST_FILE" ] &&  sed 's/ *#.*//' "$APT_SKIP_TEST_FILE" | grep -qFx "${TESTTORUN##*/}"; then
+			if [ "$MSGLEVEL" -le 2 ]; then
+				printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}"
+			else
+				printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
+			fi
+			SKIP='yes'
+		elif [ "$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
+
+		if [ "$SKIP" != "yes" ] && ! "$TESTTORUN"; then
 			FAIL='yes'
 			if [ "$MSGLEVEL" -le 2 ]; then
 				printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n"
@@ -83,6 +100,9 @@ if [ -n "$TESTTORUN" ]; then
 	stty sane || true
 	cat >&2 "$OUTPUT"
 	stty sane || true
+	if [ "$STATS_FILE" ]; then
+		flock "$STATS_FILE" -c "echo $TESTTORUN skip=${SKIP:-no} fail=${FAIL:-no} >> \"$STATS_FILE\""
+	fi
 	if [ "$FAIL" = 'yes' ]; then
 		exit 1
 	else
@@ -96,8 +116,15 @@ ALL=0
 FAILED_TESTS=""
 DIR="$(readlink -f "$(dirname "$0")")"
 cd "$DIR"
-TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+if [ -e "$TESTLIST" ]; then
+	TESTLIST="$(sort < "$TESTLIST" | sed 's#^#./#;s/ *#.*//')"
+else
+	TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+fi
 if [ -n "$APT_TEST_JOBS" ]; then
+	export STATS_FILE="$(mktemp)"
+	CURRENTTRAP="rm -f \"$STATS_FILE\"; $CURRENTTRAP"
+	trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
 	if [ "$MSGCOLOR" != 'NO' ]; then
 		export MSGCOLOR='ALWAYS'
 	fi
@@ -107,24 +134,37 @@ if [ -n "$APT_TEST_JOBS" ]; then
 	elif command -v parallel.moreutils >/dev/null 2>&1; then
 		parallel=parallel.moreutils
 	fi
-	exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
+	$parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") || true
+	ALL=$(wc -l < "$STATS_FILE")
+	SKIP=$(grep -c "skip=yes" "$STATS_FILE" || true)
+	PASS=$(grep -c "skip=no fail=no" "$STATS_FILE" || true)
+	FAIL=$(grep -c "fail=yes" "$STATS_FILE" || true)
+	PASSED_TESTS=$(awk '! /fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+	SKIPPED_TESTS=$(awk '/fail=skip/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+	FAILED_TESTS=$(awk '/fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+	echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed, $SKIP skipped"
+	if [ -n "$FAILED_TESTS" ]; then
+		if [ $PASS -lt $FAIL ]; then
+			echo >&2 "Passed tests: $PASSED_TESTS"
+		else
+			echo >&2 "Failed tests: $FAILED_TESTS"
+		fi
+	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))
 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 [ "$APT_SKIP_TEST_FILE" ] && grep -qFx "${testcase##*/}" "$APT_SKIP_TEST_FILE"; then
+		printf "${CTEST}Skipping Testcase ${CHIGH}${testcase##*/}${CRESET}\n"
+		continue
+	fi
 	if [ "$MSGLEVEL" -le 1 ]; then
 		printf "${testcase##*/}"
 	elif [ "$MSGLEVEL" -le 2 ]; then
diff --git a/test/integration/solver3.broken b/test/integration/solver3.broken
new file mode 100644
index 0000000..2ad0055
--- /dev/null
+++ b/test/integration/solver3.broken
@@ -0,0 +1,9 @@
+test-allow-scores-for-all-dependency-types                  # TBD: We are lacking single-sided conflicts preferences
+test-apt-get-upgrade-by-source                              # TBD: Upgrading by source is not supported yet, mostly same issue as above
+test-apt-install-order-matters-a-bit                        # Wontfix: Cannot fix, the order is not recorded in the depcache
+test-apt-move-and-forget-manual-sections                    # TBD: Moving the auto bit is not implemented
+test-bug-470115-new-and-tighten-recommends                  # TBD: Calculation of what is already satisfied Recommends is broken
+test-prevent-markinstall-multiarch-same-versionscrew        # TBD: We consider the skewed ones obsolete and remove them...
+test-resolve-by-keep-new-recommends                         # TBD: Fixing this seems to break test-bug-591882-conkeror, why?
+test-resolve-by-keep-obsolete-removals                      # TBD: ResolveByKeep() usage is badly aligned here
+test-ubuntu-bug-1304403-obsolete-priority-standard          # TBD: Solver3 here happily removes 10 deps to upgrade a package
diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types
index 999efc0..0d9ec6e 100755
--- a/test/integration/test-allow-scores-for-all-dependency-types
+++ b/test/integration/test-allow-scores-for-all-dependency-types
@@ -41,9 +41,14 @@ 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...
+testsuccess aptmark auto ~i
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  libdb-dev libdb5.3-dev
+Use 'apt autoremove' to remove them.
 The following packages will be REMOVED:
   libdb5.1-dev
 The following NEW packages will be installed:
@@ -55,10 +60,14 @@ 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...
+Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])" aptget dist-upgrade -st unversioned
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  libdb-dev libdb5.3-dev
+Use 'apt autoremove' to remove them.
 The following packages will be REMOVED:
   libdb5.1-dev
 The following NEW packages will be installed:
@@ -70,32 +79,49 @@ 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
+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...
+testsuccess aptmark auto ~i
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  bar foo
+Use 'apt autoremove' to remove them.
 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...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st unversioned
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  bar foo
+Use 'apt autoremove' to remove them.
 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...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st versioned
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  bar foo
+Use 'apt autoremove' to remove them.
 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...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st multipleno
+testsuccessequal "Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
+The following package was automatically installed and is no longer required:
+  bar
+Use 'apt autoremove' to remove it.
 The following packages will be REMOVED:
   foo
 The following packages will be upgraded:
@@ -103,10 +129,11 @@ The following packages will be upgraded:
 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
+Conf bar (2.2 multipleyes [amd64])" aptget dist-upgrade -st multipleyes
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
+Reading state information...
 The following NEW packages will be installed:
   baz
 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
@@ -114,6 +141,7 @@ Inst baz (2 unversioned [amd64])
 Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned
 testsuccessequal 'Reading package lists...
 Building dependency tree...
+Reading state information...
 The following additional packages will be installed:
   bar
 The following packages will be REMOVED:
@@ -134,8 +162,10 @@ rm -f rootdir/var/lib/dpkg/status
 insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0'
 insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes'
 insertinstalledpackage 'libaudit0' 'amd64' '1'
+testsuccess aptmark auto ~i
 testsuccessequal 'Reading package lists...
 Building dependency tree...
+Reading state information...
 Calculating upgrade...
 The following packages will be REMOVED:
   gdm3 libaudit0
diff --git a/test/integration/test-apt-by-hash-update b/test/integration/test-apt-by-hash-update
index 65c3766..a33eb91 100755
--- a/test/integration/test-apt-by-hash-update
+++ b/test/integration/test-apt-by-hash-update
@@ -13,6 +13,7 @@ insertpackage 'unstable' 'foo' 'all' '1.0'
 insertpackage 'unstable' 'bar' 'i386' '1.0'
 
 setupaptarchive --no-update
+changetowebserver
 
 # make Packages *only* accessible by-hash for this test
 makebyhashonly() {
@@ -100,8 +101,7 @@ 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)
+testfailureequal "Err:1 http://localhost:${APTHTTPPORT} unstable InRelease
+  404  Not Found
 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
+E: Failed to fetch http://localhost:${APTHTTPPORT}/dists/unstable/InRelease  404  Not Found" aptget update
diff --git a/test/integration/test-apt-cache-showsrc b/test/integration/test-apt-cache-showsrc
index d3f61d9..0f0e21d 100755
--- a/test/integration/test-apt-cache-showsrc
+++ b/test/integration/test-apt-cache-showsrc
@@ -29,3 +29,9 @@ testsuccess grep "Package: unrelated" output.txt
 aptcache showsrc --only-source foo > output.txt
 testsuccess grep "Package: foo" output.txt
 testfailure grep "Package: unrelated" output.txt
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc src: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
index 01680c4..b323476 100755
--- a/test/integration/test-apt-cdrom
+++ b/test/integration/test-apt-cdrom
@@ -32,6 +32,7 @@ aptcdromlog() {
 	sed -e '/gpgv\?:\s*Signature made/ d' \
 		-e '/gpgv\?:\s*Good signature/ d' \
 		-e '/gpgv\?:\s*using RSA key/ d' \
+		-e '/gpgv\?:\s*asserted signer/d' \
 		-e '/gpgv\?:\s*issuer/ d' \
 		-e '/^Identifying/ d' \
 		-e '/Reading / d' rootdir/tmp/apt-cdrom.log
@@ -40,6 +41,7 @@ aptcdromlog() {
 }
 aptautotest_aptcdromlog_add() { aptautotest_aptget_update "$@"; }
 
+
 CDROM_PRE="Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/
 Unmounting CD-ROM...
 Waiting for disc...
diff --git a/test/integration/test-apt-cli-json-hooks b/test/integration/test-apt-cli-json-hooks
index 9a3208c..ee936e1 100755
--- a/test/integration/test-apt-cli-json-hooks
+++ b/test/integration/test-apt-cli-json-hooks
@@ -29,25 +29,29 @@ export TEST_HOOK_VERSION=0.2
 cat >> json-hook.sh << EOF
 #!/bin/bash
 trap '' SIGPIPE
+clean_json() {
+	jq 'del (.params.options[]? | select(.name != "APT::Architecture"))'
+}
 while true; do
 	read request <&\$APT_HOOK_SOCKET || exit 1
 
-	if echo "\$request" | grep -q ".hello"; then
+	if echo "\$request" 2>/dev/null | grep -q ".hello"; then
 		echo "HOOK: HELLO"
 	fi
 
-	if echo "\$request" | grep -q ".bye"; then
+	if echo "\$request" 2>/dev/null | grep -q ".bye"; then
 		echo "HOOK: BYE"
 		exit 0;
 	fi
 
-	echo HOOK: request \$request
+	request="\$(printf "%s" "\$request" | clean_json)"
+	echo "HOOK: request \$request"
 
 	read empty <&\$APT_HOOK_SOCKET || exit 1
 
 	echo HOOK: empty \$empty
 
-	if echo "\$request" | grep -q ".hello"; then
+	if echo "\$request" 2>/dev/null | 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
 
@@ -69,9 +73,36 @@ 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 HOOK: empty
-HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}}
+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...
@@ -80,25 +111,106 @@ 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 HOOK: empty
-HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.post","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}}
+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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 HOOK: empty
-HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}}
+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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 HOOK: empty
-HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.fail","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}}
+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
 
@@ -108,9 +220,38 @@ HOOK: BYE' apt search foox
 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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
@@ -120,32 +261,300 @@ E: Unable to locate package foxxx' apt install foxxx
 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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
 
@@ -154,9 +563,38 @@ HOOK: BYE' apt install foo -s
 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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
@@ -167,32 +605,320 @@ 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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
 
@@ -204,32 +930,320 @@ 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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: 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
 
@@ -241,10 +1255,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: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 HOOK: empty
 HOOK: HELLO
-HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: request {
+  "jsonrpc": "2.0",
+  "method": "org.debian.apt.hooks.hello",
+  "id": 0,
+  "params": {
+    "versions": [
+      "0.1",
+      "0.2"
+    ],
+    "options": [
+      {
+        "name": "APT::Architecture",
+        "value": "i386"
+      }
+    ]
+  }
+}
 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)
diff --git a/test/integration/test-apt-cli-pager b/test/integration/test-apt-cli-pager
new file mode 100755
index 0000000..d1f8c32
--- /dev/null
+++ b/test/integration/test-apt-cli-pager
@@ -0,0 +1,127 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+DESCR='Some description
+ That has multiple lines'
+insertsource 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
+insertpackage 'unstable' 'multi' 'all' '1.0' '' '' "$DESCR"
+insertpackage 'unstable' 'multi' 'all' '2.0' '' '' "$DESCR"
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+cat >> head3 << EOF
+#!/bin/sh
+exec head -3
+EOF
+
+chmod +x head3
+
+for show in info show; do
+msgmsg "$show supports pager"
+PAGER=cat 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" runapt --unbuffer apt $show multi -o TestPager=cat
+
+PAGER="head -3" testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional" runapt --unbuffer apt $show multi -o TestPager="head -3"
+
+PAGER="cat|./head3" testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional" runapt --unbuffer apt $show multi -o TestPager="head -3"
+
+# Test that we are not blocking
+PAGER=more 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" runapt --unbuffer apt $show multi -o TestThatWeAreNotBlocking=1
+
+PAGER=not-a-valid-pager 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
+
+W: Could not execute pager - PagerSetup (2: No such file or directory)
+N: There is 1 additional record. Please use the '-a' switch to see it" runapt --unbuffer apt $show multi -o TestPager="not-a-valid-pager"
+PAGER="dd status=none of=/dev/null" testsuccessequal "" runapt --unbuffer apt $show multi  -o Test="everything is paged"
+done
+
+msgmsg "list supports pager"
+PAGER="head -1" testsuccessequal "foo/unstable 1.0 all
+multi/unstable 2.0 all" apt list -qq
+PAGER="head -1" testsuccessequal "foo/unstable 1.0 all" runapt --unbuffer apt list -qq -o TestPager="head -1"
+
+PAGER="dd status=none of=/dev/null" testsuccessequal "Listing..." runapt --unbuffer apt list  -o Test="progress is not paged"
+
+msgmsg "search supports pager"
+PAGER="head -1" testsuccessequal "foo/unstable 1.0 all
+  Some description
+
+multi/unstable 2.0 all
+  Some description
+" apt search -qq .
+
+PAGER="head -1" testsuccessequal "foo/unstable 1.0 all" runapt --unbuffer apt search -qq . -o TestPager="head -1"
+
+PAGER="dd status=none of=/dev/null" testsuccessequal "Sorting...
+Full Text Search..." runapt --unbuffer apt search .  -o Test="progress is not paged"
+
+msgmsg "policy supports pager"
+PAGER="head -1" testsuccessequal "foo:
+  Installed: (none)
+  Candidate: 1.0
+  Version table:
+     1.0 500
+        500 file:${APTARCHIVE} unstable/main all Packages" apt policy foo
+
+PAGER="head -1" testsuccessequal "foo:" runapt --unbuffer apt policy foo -o TestPager="head -1"
+
+PAGER="dd status=none of=/dev/null" testsuccessequal "" runapt --unbuffer apt policy foo  -o Test="everything is paged"
+
+msgmsg "showsrc supports pager"
+PAGER="head -2" testsuccessequal "Package: foo
+Binary: foo
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ b998e085e36cf162e6a33c2801318fef 11 foo_1.0.dsc
+ d46b9a02af8487cbeb49165540c88184 14 foo_1.0.tar.gz
+Checksums-Sha256:
+ ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7 11 foo_1.0.dsc
+ f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239 14 foo_1.0.tar.gz
+"  runapt apt showsrc foo
+
+PAGER="head -2" testsuccessequal "Package: foo
+Binary: foo"  runapt --unbuffer apt showsrc foo -o TestPager="head- 2"
diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show
index 05a801f..8f9aa03 100755
--- a/test/integration/test-apt-cli-show
+++ b/test/integration/test-apt-cli-show
@@ -28,6 +28,10 @@ setupaptarchive
 
 APTARCHIVE=$(readlink -f ./aptarchive)
 
+testfailureequal "N: Unable to locate package :
+N: Unable to locate package :
+E: No packages found" apt show :
+
 # note that we do not display Description-md5 with the "apt" cmd
 # and also show some additional fields that are calculated
 testsuccessequal "Package: foo
@@ -53,6 +57,9 @@ SHA256: 0000000000000000000000000000000000000000000000000000000000000000
 Download-Size: 42 B
 APT-Manual-Installed: yes
 APT-Sources: file:$APTARCHIVE unstable/main all Packages
+APT-Pin: 500
+APT-Candidate: yes
+APT-Release: a=unstable,n=sid,c=main,b=all
 Description: Some description
  That has multiple lines
 " apt show foo --full
diff --git a/test/integration/test-apt-ftparchive-cachedb b/test/integration/test-apt-ftparchive-cachedb
index 73d762c..f6e71cc 100755
--- a/test/integration/test-apt-ftparchive-cachedb
+++ b/test/integration/test-apt-ftparchive-cachedb
@@ -1,6 +1,11 @@
 #!/bin/sh
 set -e
 
+db_dump=db_dump
+if command -v db_dump-5 >/dev/null 2>&1; then
+    db_dump=db_dump-5
+fi
+
 ensure_correct_packages_file() {
     testequal "Package: foo
 Architecture: i386
@@ -33,6 +38,8 @@ mkdir -p aptarchive/dists/test/main/binary-i386
 mkdir -p aptarchive/pool/main
 
 mkdir aptarchive-overrides
+touch aptarchive-overrides/bin-override
+touch aptarchive-overrides/extra-override
 mkdir aptarchive-cache
 cat > ftparchive.conf <<"EOF"
 Dir {
@@ -60,7 +67,9 @@ TreeDefault {
 Tree "dists/test" {
   Sections "main";
   Architectures "i386";
-
+  BinOverride "bin-override";
+  ExtraOverride "extra-override";
+  //FileList "file-list";
 };
 EOF
 
@@ -94,6 +103,67 @@ 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
 
+msgmsg "Test overrides"
+
+manyX=$(head -c2000 /dev/zero  | tr '\0' 'X')
+
+echo "foo priority${manyX} overrideSection" > aptarchive-overrides/bin-override
+echo "foo Extra ${manyX}trailer" > aptarchive-overrides/extra-override
+
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages
+
+
+msgmsg "Test long paths"
+x128=$(head -c 128 /dev/zero | tr '\0' 'X')
+longPath=${x128}/${x128}/${x128}/${x128}/${x128}/${x128}/${x128}/${x128}
+mkdir -p aptarchive/pool/main/$longPath
+mv aptarchive/pool/main/foo_1_i386.deb aptarchive/pool/main/$longPath/foo_1_i386.deb
+
+# before
+testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db
+testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:cl$" dump
+testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:cn$" dump
+testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:st$" dump
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+
+# file is still found
+testsuccessequal "Filename: pool/main/${longPath}/foo_1_i386.deb" grep ^Filename ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages
+
+# file is in the database
+testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cl$" dump
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cn$" dump
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:st"$ dump
+
+msgmsg "Test file lists"
+
+# Check that the empty file list produces no packages
+rm aptarchive-cache/packages-main-i386.db
+testsuccess sed -i s#//FileList#FileList# ftparchive.conf
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+testfileequal ./aptarchive/dists/test/main/binary-i386/Packages ""
+
+# Add the packages and run our checks again
+echo "pool/main/${longPath}/foo_1_i386.deb" > file-list
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+testsuccessequal "Filename: pool/main/${longPath}/foo_1_i386.deb" grep ^Filename ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages
+testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages
+
+# file is in the database
+testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cl$" dump
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cn$" dump
+testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:st"$ dump
+
+msgmsg "Test Clean"
 # and clean
 rm -rf aptarchive/pool/main/*
 testsuccessequal "packages-main-i386.db" aptftparchive clean ftparchive.conf
@@ -101,3 +171,4 @@ testsuccess aptftparchive clean ftparchive.conf -o Debug::APT::FTPArchive::Clean
 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-corner-cases b/test/integration/test-apt-ftparchive-corner-cases
new file mode 100755
index 0000000..9f56a52
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-corner-cases
@@ -0,0 +1,49 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+allowremovemanual
+configarchitecture 'amd64' 'i386'
+
+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
+}
+
+msgmsg 'Test a deep tree'
+msgtest 'Test for succesfull execution of' 'mkdir -p <1024 times x/>'
+testsuccess --nomsg mkdir -p incoming/pkg-deep-tree/$(seq 1024 | sed s#.*#x# | tr '\n' '/')
+msgtest 'Test for succesfull execution of' 'touch <1024 times x/>/y'
+testsuccess --nomsg touch incoming/pkg-deep-tree/$(seq 1024 | sed s#.*#x# | tr '\n' '/')/y
+createpkg deep-tree
+
+testsuccessequal "$(seq 1024 | sed s#.*#x# | tr '\n' '/')y pkg-deep-tree" valgrind aptftparchive contents ./incoming/pkg-deep-tree_0_all.deb
+
+
+msgmsg 'Test many files in one directory'
+
+testsuccess mkdir -p incoming/pkg-many-files/usr/lib/many-files
+testsuccess sh -c 'for i in $(seq -w 4096); do touch incoming/pkg-many-files/usr/lib/many-files/$i; done'
+createpkg many-files
+
+# OMG, this formatting is annoying to implement
+testsuccessequal "$(seq -w 4096 | xargs -IA printf "usr/lib/many-files/%s\t\t\t\t\t    %s\n" "A" "pkg-many-files")" valgrind aptftparchive contents ./incoming/pkg-many-files_0_all.deb
+
diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove
index 5546958..af47420 100755
--- a/test/integration/test-apt-get-autoremove
+++ b/test/integration/test-apt-get-autoremove
@@ -27,10 +27,6 @@ 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...
@@ -39,20 +35,28 @@ 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...
+for sudouser in '_apt' ''; do
+	if [ -n "$sudouser" ]; then
+		export SUDO_USER="$sudouser"
+		AUTOREMOVE='sudo apt autoremove'
+	else
+		unset SUDO_USER
+		AUTOREMOVE='apt autoremove'
+	fi
+	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...
+	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...
+	testequal "Reading package lists...
 Building dependency tree...
 Reading state information...
 Calculating upgrade...
@@ -60,6 +64,8 @@ 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
+done
+
 testsuccessequal 'Reading package lists...
 Building dependency tree...
 Reading state information...
@@ -75,6 +81,28 @@ 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...
@@ -89,7 +117,7 @@ Reading state information...
 Calculating upgrade...
 The following package was automatically installed and is no longer required:
   po-debconf
-Use '$AUTOREMOVE' to remove it.
+Use 'apt 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
 
@@ -141,13 +169,13 @@ 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.
+Use 'apt 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.
+Use 'apt 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
@@ -236,3 +264,45 @@ Purg foo-plus-2 [1]' apt autopurge -s
 
 testdpkgstatus 'pi' '1' 'unrelated'
 testsuccess apt purge unrelated -y
+
+insertinstalledpackage 'foo-has-update' 'all' '1'
+insertpackage 'stable' 'foo-has-update' 'all' '2'
+testsuccess aptmark auto 'foo-has-update'
+
+setupaptarchive
+
+# Test removed package version (with -V flag), when package has update
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+   foo-has-update (1)
+   foo-multi1-1 (1)
+   foo-multi1-2 (1)
+   foo-multi2-1 (1)
+   foo-multi2-2 (1)
+   foo-plus-1 (1)
+   foo-plus-2 (1)
+0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
+Remv foo-has-update [1]
+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 -sV
+
+# Test automatic removed package version (with -V flag), when package has update
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+   foo-has-update (1)
+   foo-multi1-1 (1)
+   foo-multi1-2 (1)
+   foo-multi2-1 (1)
+   foo-multi2-2 (1)
+   foo-plus-1 (1)
+   foo-plus-2 (1)
+Use 'apt autoremove' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt remove -sV
diff --git a/test/integration/test-apt-get-autoremove-real-virtual-provider b/test/integration/test-apt-get-autoremove-real-virtual-provider
index 4940ab5..7fda4d3 100755
--- a/test/integration/test-apt-get-autoremove-real-virtual-provider
+++ b/test/integration/test-apt-get-autoremove-real-virtual-provider
@@ -23,6 +23,16 @@ needs-provider4' aptmark showauto
 
 testsuccess aptget check -s
 
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Solving dependencies...
+The following packages will be REMOVED:
+  needs-provider1 needs-provider4
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv needs-provider1 [1]
+Remv needs-provider4 [1]' aptget autoremove -s --solver 3.1
+
 testsuccessequal 'Reading package lists...
 Building dependency tree...
 Reading state information...
diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep
index 403de8f..f6158a1 100755
--- a/test/integration/test-apt-get-build-dep
+++ b/test/integration/test-apt-get-build-dep
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386'
 
 insertpackage 'stable' 'build-essential' 'i386' '1'
diff --git a/test/integration/test-apt-get-build-dep-barbarian b/test/integration/test-apt-get-build-dep-barbarian
index 688f7a5..48873c5 100755
--- a/test/integration/test-apt-get-build-dep-barbarian
+++ b/test/integration/test-apt-get-build-dep-barbarian
@@ -83,6 +83,7 @@ testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep cool-foo -s
 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
+testfailuremsg 'E: Conflict: builddeps:bad-amd64-i386-foo:i386=1 -> builddeps:bad-amd64-i386-foo:i386 -> not foo:amd64=1 -> not builddeps:bad-amd64-i386-foo:i386 but builddeps:bad-amd64-i386-foo:i386=1 -> builddeps:bad-amd64-i386-foo:i386'  apt build-dep bad-amd64-i386-foo -s -a i386 --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -94,7 +95,8 @@ 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
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386 --solver internal
+testfailuremsg 'E: Conflict: builddeps:bad-amd64-i386-armel-foo:i386=1 -> builddeps:bad-amd64-i386-armel-foo:i386 -> not foo:amd64=1 -> not builddeps:bad-amd64-i386-armel-foo:i386 but builddeps:bad-amd64-i386-armel-foo:i386=1 -> builddeps:bad-amd64-i386-armel-foo:i386' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -106,13 +108,14 @@ 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
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver internal
 
 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
+FAILUREMSG="E: Conflict: builddeps:bad-amd64-i386-armel-foo:armel=1 -> builddeps:bad-amd64-i386-armel-foo:armel -> not foo:amd64=1 -> not builddeps:bad-amd64-i386-armel-foo:armel but builddeps:bad-amd64-i386-armel-foo:armel=1 -> builddeps:bad-amd64-i386-armel-foo:armel"
 FAILURE='Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -124,8 +127,9 @@ 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.'
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver 3.0
 testfailureequal "Reading package lists...
-$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver internal
 
 msgmsg 'BarbarianArchitectures' 'cmdline options'
 rm rootdir/etc/apt/apt.conf.d/99barbarianarchs
@@ -134,7 +138,10 @@ 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
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver 3.0
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver 3.0
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver 3.0
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver internal
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver internal
 testfailureequal "Reading package lists...
-$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver internal
diff --git a/test/integration/test-apt-get-build-dep-file b/test/integration/test-apt-get-build-dep-file
index 88bf10b..8147bb0 100755
--- a/test/integration/test-apt-get-build-dep-file
+++ b/test/integration/test-apt-get-build-dep-file
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386'
 
 insertpackage 'stable' 'debhelper' 'i386' '7'
@@ -158,6 +159,8 @@ testsuccess aptget build-dep --simulate '..'
 cd ../..
 
 testfailureequal 'E: Must specify at least one package to check builddeps for' aptget build-dep
+testfailuremsg 'W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup
+E: Unsatisfiable dependency group builddeps:./foo-1.0:armel -> debhelper:armel' aptget build-dep --simulate ./foo-1.0 -a armel --solver 3.0
 testfailureequal "Note, using directory './foo-1.0' to get the build dependencies
 Reading package lists...
 Building dependency tree...
@@ -170,7 +173,7 @@ 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
+E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel --solver internal
 testfailureequal 'Reading package lists...
 E: Unable to find a source package for foo' aptget build-dep --simulate foo
 
diff --git a/test/integration/test-apt-get-clean b/test/integration/test-apt-get-clean
index d050732..32dd3e8 100755
--- a/test/integration/test-apt-get-clean
+++ b/test/integration/test-apt-get-clean
@@ -13,13 +13,27 @@ 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
 
-mkdir -p rootdir/var/lib/apt/lists/lost+found
 testsuccess apt update
 
-# nothing to do always works
-testsuccess aptget clean
-testsuccess aptget clean -s
+# 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() {
@@ -63,6 +77,23 @@ if [ "$(id -u)" != '0' ]; then
 	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
@@ -86,3 +117,4 @@ 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-install-deb b/test/integration/test-apt-get-install-deb
index bcf8bae..1540db2 100755
--- a/test/integration/test-apt-get-install-deb
+++ b/test/integration/test-apt-get-install-deb
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 # regression test for #754904
@@ -31,6 +32,7 @@ done
 
 buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
 
+testfailuremsg "E: Conflict: foo:amd64=1.0 -> foo:amd64 but foo:i386=1.0 -> not foo:amd64" aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s --solver 3.0
 testfailureequal "Reading package lists...
 Building dependency tree...
 Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
@@ -44,7 +46,7 @@ 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
+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 --solver internal
 
 testsuccess apt show foo --with-source ./incoming/foo_1.0_amd64.deb
 testequal 'Package: foo
@@ -175,7 +177,8 @@ 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
+testfailuremsg 'E: Unsatisfiable dependency group pkg-last-line-parse:amd64 -> pkg-as-it-should-be:amd64' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver 3.0
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver internal
 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)"
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-mark-auto b/test/integration/test-apt-get-mark-auto
new file mode 100755
index 0000000..844412e
--- /dev/null
+++ b/test/integration/test-apt-get-mark-auto
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'package' 'all' '3'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  package
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst package (3 unstable [all])
+Conf package (3 unstable [all])" aptget install package --mark-auto -s
+
+# Specifically if we mark the package as automatically installed but also have auto-remove on,
+# the package should still be installed...
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  package
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst package (3 unstable [all])
+Conf package (3 unstable [all])" aptget install package --mark-auto --auto-remove -s
diff --git a/test/integration/test-apt-get-satisfy b/test/integration/test-apt-get-satisfy
index 267760f..02a444d 100755
--- a/test/integration/test-apt-get-satisfy
+++ b/test/integration/test-apt-get-satisfy
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386' 'amd64'
 
 insertpackage 'stable' 'depends' 'i386' '1'
@@ -79,6 +80,8 @@ testrun 'External' 'Reading package lists...
 Building dependency tree...
 Execute external solver...' --solver apt
 
+testfailuremsg "E: Unsatisfiable dependency group satisfy:command-line:i386 -> depends:i386" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver 3.0
+
 testfailureequal "Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -89,8 +92,10 @@ 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]"
+E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver internal
 
+if [ "$APT_SOLVER" != "3.0" ]; then
+# FIXME: solver3 doesn't produce nice errors in the external solver scenario
 testfailureequal "Reading package lists...
 Building dependency tree...
 Execute external solver...
@@ -109,3 +114,4 @@ 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
+fi
diff --git a/test/integration/test-apt-get-source-only b/test/integration/test-apt-get-source-only
new file mode 100755
index 0000000..882f82b
--- /dev/null
+++ b/test/integration/test-apt-get-source-only
@@ -0,0 +1,140 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+
+
+# not-foo builds foo, but foo builds not-foo
+insertpackage 'stable' 'foo' 'amd64' '1.0' 'Source: not-foo'
+insertsource 'stable' 'not-foo' 'amd64' '1.0' 'Build-Depends: not-foo-bd' 'foo'
+
+insertpackage 'stable' 'not-foo' 'amd64' '1.0' 'Source: foo'
+insertsource 'stable' 'foo' 'amd64' '1.0' 'Build-Depends: foo-bd' 'not-foo'
+
+insertinstalledpackage 'build-essential' 'amd64' '1.0'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+HEADER='Reading package lists...'
+DOWNLOADFOO="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"
+DOWNLOADNOTFOO="Need to get 0 B/33 B of source archives.
+'file:${APTARCHIVE}/not-foo_1.0.dsc' not-foo_1.0.dsc 15 SHA256:db578a571c87d2555e90245732042845be4f481755f5b2f5786ac7a26bde9f4f
+'file:${APTARCHIVE}/not-foo_1.0.tar.gz' not-foo_1.0.tar.gz 18 SHA256:8701846f1cba0ca81c552ac0ec93e2a89ae113cf2872b9cd51b29b4a9ff6b122"
+
+if [ "$APT_SOLVER" = "3.0" ]; then
+BUILDDEPFOO="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 : Depends: foo-bd but it is not installable
+E: Unsatisfiable dependency group builddeps:foo:amd64 -> foo-bd:amd64"
+
+BUILDDEPNOTFOO="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:not-foo : Depends: not-foo-bd but it is not installable
+E: Unsatisfiable dependency group builddeps:not-foo:amd64 -> not-foo-bd:amd64"
+else
+BUILDDEPFOO="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 : Depends: foo-bd but it is not installable
+E: Unable to correct problems, you have held broken packages."
+
+BUILDDEPNOTFOO="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:not-foo : Depends: not-foo-bd but it is not installable
+E: Unable to correct problems, you have held broken packages."
+fi
+
+testsuccessequal "$HEADER
+Picking 'not-foo' as source package instead of 'foo'
+$DOWNLOADNOTFOO" aptget source -q --print-uris foo
+
+testsuccessequal "$HEADER
+Picking 'not-foo' as source package instead of 'foo'
+$DOWNLOADNOTFOO" aptget source -q --print-uris foo:amd64
+
+testsuccessequal "$HEADER
+$DOWNLOADNOTFOO" aptget source -q --print-uris --only-source not-foo
+
+testsuccessequal "$HEADER
+$DOWNLOADNOTFOO" aptget source -q --print-uris src:not-foo
+
+testsuccessequal "$HEADER
+Picking 'foo' as source package instead of 'not-foo'
+$DOWNLOADFOO" aptget source -q --print-uris not-foo
+
+testsuccessequal "$HEADER
+Picking 'foo' as source package instead of 'not-foo'
+$DOWNLOADFOO" aptget source -q --print-uris not-foo:amd64
+
+testsuccessequal "$HEADER
+$DOWNLOADFOO" aptget source -q --print-uris --only-source foo
+
+testsuccessequal "$HEADER
+$DOWNLOADFOO" aptget source -q --print-uris src:foo
+
+# Same dance with build-dep
+testequal "$HEADER
+Picking 'not-foo' as source package instead of 'foo'
+$BUILDDEPNOTFOO" aptget build-dep -q -s foo
+
+testequal "$HEADER
+Picking 'not-foo' as source package instead of 'foo'
+$BUILDDEPNOTFOO" aptget build-dep -q -s foo:amd64
+
+testequal "$HEADER
+$BUILDDEPNOTFOO" aptget build-dep -q -s --only-source not-foo
+
+testequal "$HEADER
+$BUILDDEPNOTFOO" aptget build-dep -q -s src:not-foo
+
+testequal "$HEADER
+Picking 'foo' as source package instead of 'not-foo'
+$BUILDDEPFOO" aptget build-dep -q -s not-foo
+
+testequal "$HEADER
+Picking 'foo' as source package instead of 'not-foo'
+$BUILDDEPFOO" aptget build-dep -q -s not-foo:amd64
+
+testequal "$HEADER
+$BUILDDEPFOO" aptget build-dep -q -s --only-source foo
+
+testequal "$HEADER
+$BUILDDEPFOO" aptget build-dep -q -s src:foo
+
+
+
diff --git a/test/integration/test-apt-get-update-sourceslist-warning b/test/integration/test-apt-get-update-sourceslist-warning
index 02e1ccb..5a941da 100755
--- a/test/integration/test-apt-get-update-sourceslist-warning
+++ b/test/integration/test-apt-get-update-sourceslist-warning
@@ -8,6 +8,7 @@ setupenvironment
 configarchitecture 'amd64'
 setupaptarchive --no-update
 
+rm rootdir/etc/apt/apt.conf.d/signed-by
 testsuccess apt update
 testsuccess apt update --no-download
 
@@ -27,48 +28,36 @@ touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binar
 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 '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
+msgmsg 'Suggest Signed-By for deb822 sources.list(5) entries'
+echo 'Types: deb
+URIs: http://example.org/debian
+Suites: bookworm
+Components: main
+' > rootdir/etc/apt/sources.list.d/example.sources
 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
+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 '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
+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'
+A: The sources.list(5) entry for 'http://example.org/debian' should be upgraded to deb822 .sources
+A: Missing Signed-By in the sources.list(5) entry for 'http://example.org/debian'
+A: Consider migrating all sources.list(5) entries to the deb822 .sources format
+A: The deb822 .sources format supports both embedded as well as external OpenPGP keys
+A: See apt-secure(8) for best practices in configuring repository signing.
+N: Some sources can be modernized. Run 'apt modernize-sources' to do so." apt update --no-download --audit
 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
+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'
+A: The sources.list(5) entry for 'tor+https://example.org/debian' should be upgraded to deb822 .sources
+A: Missing Signed-By in the sources.list(5) entry for 'tor+https://example.org/debian'
+A: Consider migrating all sources.list(5) entries to the deb822 .sources format
+A: The deb822 .sources format supports both embedded as well as external OpenPGP keys
+A: See apt-secure(8) for best practices in configuring repository signing.
+N: Some sources can be modernized. Run 'apt modernize-sources' to do so." apt update --no-download --audit
diff --git a/test/integration/test-apt-get-update-unauth-warning b/test/integration/test-apt-get-update-unauth-warning
index 42c4e5a..9f252ad 100755
--- a/test/integration/test-apt-get-update-unauth-warning
+++ b/test/integration/test-apt-get-update-unauth-warning
@@ -28,9 +28,7 @@ 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
+testfailureequal "Ign:1 file:$APTARCHIVE unstable InRelease
 Err:2 file:$APTARCHIVE unstable Release
   File not found - ${APTARCHIVE}/dists/unstable/Release (2: No such file or directory)
 Reading package lists...
@@ -44,46 +42,13 @@ 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
+testwarningequal "Ign:1 file:$APTARCHIVE unstable InRelease
 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.
@@ -92,3 +57,38 @@ N: See apt-secure(8) manpage for repository creation and user configuration deta
 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
+
+rm -rf rootdir/var/lib/apt/lists
+changetowebserver
+
+filesize() {
+	local CREATEDBY="$1"
+	shift
+	stat -c%s "${APTARCHIVE}/$(aptget indextargets --no-release-info --format '$(URI)' "Created-By: $CREATEDBY" "$@" | cut -d'/' -f 4- ).gz"
+}
+testwarningequal "Ign:1 http://localhost:$APTHTTPPORT unstable InRelease
+Ign:2 http://localhost:$APTHTTPPORT unstable Release
+Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources
+Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages
+Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages
+Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en
+Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources
+Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages
+Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages
+Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en
+Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources
+Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages
+Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages
+Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en
+Get:3 http://localhost:$APTHTTPPORT unstable/main Sources [$(filesize 'Sources') B]
+Get:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages [$(filesize 'Packages' 'Architecture: i386') B]
+Get:5 http://localhost:$APTHTTPPORT unstable/main all Packages [$(filesize 'Packages' 'Architecture: all') B]
+Get:6 http://localhost:$APTHTTPPORT unstable/main Translation-en [$(filesize 'Translations') B]
+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." 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
index 50a90ce..c9e56d9 100755
--- a/test/integration/test-apt-get-upgrade
+++ b/test/integration/test-apt-get-upgrade
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture "i386"
 
 # simple case
@@ -60,6 +61,30 @@ 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])'
+if [ "$APT_SOLVER" = "3.0" ]; then
+# FIXME: It would be better if we would keep back the upgrade rather than switch to sysvinit,
+# but it's not clear that is reliably possible.
+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])"
+fi
 testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
 testsuccessequal "$UPGRADENEW" apt upgrade -s
 
@@ -142,3 +167,54 @@ 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
+
+# --no-strict-pinning pulls in systemd due to the dependency
+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 --no-strict-pinning --solver 3.0
+
+# --no-strict-pinning does not cause a package to be upgraded on its own, though.
+echo 'Package: upgrade-simple
+Pin: release unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/no-strict-pinning.pref
+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-with-conflict upgrade-with-new-dep
+3 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-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-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0
diff --git a/test/integration/test-apt-get-upgrade-by-source b/test/integration/test-apt-get-upgrade-by-source
index 0f87005..bac91f0 100755
--- a/test/integration/test-apt-get-upgrade-by-source
+++ b/test/integration/test-apt-get-upgrade-by-source
@@ -22,9 +22,9 @@ noprogress() {
 
 testsuccessequal "Reading package lists...
 Building dependency tree...
-  MarkInstall pkg:arm64 < 1 -> 2 @ii puU > FU=1
-  Upgrading pkg-bar:arm64 < 1 | 2 @ii uH > due to pkg:arm64
-  Upgrading pkg-foo:arm64 < 1 | 2 @ii uH > due to pkg:arm64
+  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
@@ -42,7 +42,7 @@ Conf pkg-foo (2 unstable [all])" aptget install pkg -o debug::pkgdepcache::marke
 
 testsuccessequal "Reading package lists...
 Building dependency tree...
-  MarkInstall pkg:arm64 < 1 -> 2 @ii puU > FU=1
+  MarkInstall pkg:arm64 < 1 -> 2 @ii pumU > FU=1
 Starting pkgProblemResolver with broken count: 0
 Starting 2 pkgProblemResolver with broken count: 0
 Done
diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper
index ae1ca74..4f883b4 100755
--- a/test/integration/test-apt-helper
+++ b/test/integration/test-apt-helper
@@ -74,10 +74,11 @@ E: Download Failed"
 setupproxydetect() {
 	local METH="$1"
 	shift
-	{
-		echo '#!/bin/sh -e'
-		echo "$@"
-	} > "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+	cat >"${TMPWORKINGDIRECTORY}/apt-proxy-detect" <<EOF
+#!/bin/sh
+set -e
+$*
+EOF
 	chmod 755 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
 	echo "Acquire::${METH}::${CONFNAME} \"${TMPWORKINGDIRECTORY}/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
 }
@@ -97,15 +98,38 @@ W: ProxyAutoDetect command returned an empty line" apthelper auto-detect-proxy h
     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
+    for meth in 'http' 'https'; do
+	msgmsg "apt-helper $CONFNAME" "${meth} proxy"
+	for type in 'http' 'https' 'socks5h'; do
+		setupproxydetect "$meth" "echo '${type}://some-proxy'"
+		testsuccessequal "Using proxy '${type}://some-proxy' for URL '${meth}://www.example.com/'" apthelper auto-detect-proxy "${meth}://www.example.com"
+		if [ "$meth" = 'http' ]; then
+			testsuccessequal "Using proxy '' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy 'https://ssl.example.com'
+		else
+			testsuccessequal "Using proxy '' for URL 'http://no-ssl.example.com/'" apthelper auto-detect-proxy 'http://no-ssl.example.com'
+		fi
+	done
+    done
+
+    msgmsg "apt-helper $CONFNAME" 'no strange proxy'
+    for meth in gpgv copy store file; do
+	setupproxydetect "$meth" "echo '${meth}://some-proxy'"
+	testsuccessequal "Using proxy '' for URL '${meth}:/foo/bar'" apthelper auto-detect-proxy "${meth}:/foo/bar"
+	testsuccessequal "Using proxy '' for URL '${meth}://./foo/bar'" apthelper auto-detect-proxy "${meth}://./foo/bar"
+    done
+    for url in 'cdrom://Moo Cow Rom/debian' 'cdrom://[The Debian 1.2 disk, 1/2 R16]/debian/'; do
+	setupproxydetect "${url%%:*}" "echo 'cdrom://some-proxy'"
+	testsuccessequal "Using proxy '' for URL '${url}'" apthelper auto-detect-proxy "$url"
+    done
+    for meth in tor tor+http tor+https; do
+	setupproxydetect "$meth" "echo 'socks5h://some-proxy'"
+	testsuccessequal "Using proxy 'socks5h://some-proxy' for URL '${meth}://example.org/'" apthelper auto-detect-proxy "${meth}://example.org"
+
+	setupproxydetect "$meth" "echo 'DIRECT'"
+	testwarningequal "Using proxy '' for URL '${meth}://example.org/'
+W: ProxyAutoDetect command returned incompatible proxy 'DIRECT' for access type ${meth}" apthelper auto-detect-proxy "${meth}://example.org"
+    done
 
-    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"
 }
 
diff --git a/test/integration/test-apt-install-file-reltag b/test/integration/test-apt-install-file-reltag
index afbf9be..0637c54 100755
--- a/test/integration/test-apt-install-file-reltag
+++ b/test/integration/test-apt-install-file-reltag
@@ -29,15 +29,20 @@ Standards-Version: 4.1.3
 EOF
 buildsimplenativepackage 'foobar2' 'all' '1' 'unstable' 'Depends: foo (= 5), baz'
 
+testunsat() {
+    testfailure "$@"
+    testsuccess grep -E "^E: (Unable to correct problems,|Conflict:)" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
+}
+
 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
+testunsat apt build-dep "$(readlink -f ./foobar.dsc)" -s
+testunsat apt install "$(readlink -f ./foobar.deb)" -s
+testunsat apt build-dep ./foobar.dsc -s
+testunsat 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
+testunsat apt build-dep ../foobar.dsc -s
+testunsat apt install ../foobar.deb -s
 cd ..
 
 SUCCESSDSC='The following NEW packages will be installed:
@@ -84,11 +89,11 @@ $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
+testunsat apt build-dep "$(readlink -f ./foobar.dsc)/stable" -s
+testunsat apt install "$(readlink -f ./foobar.deb)/stable" -s
+testunsat apt build-dep ./foobar.dsc/stable -s
+testunsat 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
+testunsat apt build-dep ../foobar.dsc/stable -s
+testunsat apt install ../foobar.deb/stable -s
 cd ..
diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key
deleted file mode 100755
index a1e633c..0000000
--- a/test/integration/test-apt-key
+++ /dev/null
@@ -1,428 +0,0 @@
-#!/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
deleted file mode 100755
index b9f716e..0000000
--- a/test/integration/test-apt-key-net-update
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/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
deleted file mode 100755
index b5ed327..0000000
--- a/test/integration/test-apt-key-used-in-maintainerscript
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/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-modernize-sources b/test/integration/test-apt-modernize-sources
new file mode 100755
index 0000000..6a23a73
--- /dev/null
+++ b/test/integration/test-apt-modernize-sources
@@ -0,0 +1,97 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/rocks.list
+echo 'deb http://deb.debian.org/debian stable main' >> rootdir/etc/apt/sources.list
+echo 'deb http://deb.debian.org/debian-ports unstable main' >> rootdir/etc/apt/sources.list
+echo 'deb-src http://deb.debian.org/debian stable main' >> rootdir/etc/apt/sources.list
+echo 'deb-src http://deb.debian.org/debian unstable main' >> rootdir/etc/apt/sources.list
+echo 'deb http://example.org/debian stable bananas' >> rootdir/etc/apt/sources.list
+echo 'deb [trusted=yes] http://example.org/debian trusted bananas' >> rootdir/etc/apt/sources.list
+
+
+mkdir -p  rootdir/usr/share/keyrings/
+mkdir -p rootdir/var/lib/apt/lists
+echo > rootdir/etc/apt/trusted.gpg.d/rocks.gpg
+echo > rootdir/usr/share/keyrings/debian-archive-keyring.gpg
+echo > rootdir/usr/share/keyrings/debian-ports-archive-keyring.gpg
+echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_unstable_InRelease
+echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_stable_InRelease
+echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian-ports_dists_unstable_InRelease
+echo "Origin: Debian" >> rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_unstable_InRelease
+echo "Origin: Debian" >> rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_stable_InRelease
+echo "Origin: Debian Ports" >> rootdir/var/lib/apt/lists/deb.debian.org_debian-ports_dists_unstable_InRelease
+
+# We test that appending produces valid output here, so we already configure a source in here.
+echo "Types: deb" >> rootdir/etc/apt/sources.list.d/debian.sources
+echo "URIs: https://deb.debian.org/debian/" >> rootdir/etc/apt/sources.list.d/debian.sources
+echo "Suites: experimental" >> rootdir/etc/apt/sources.list.d/debian.sources
+echo "Components: contrib" >> rootdir/etc/apt/sources.list.d/debian.sources
+echo "Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg" >> rootdir/etc/apt/sources.list.d/debian.sources
+
+testwarning apt modernize-sources -y
+
+testsuccessequal "rootdir/etc/apt/sources.list.bak
+
+rootdir/etc/apt/sources.list.d:
+debian-ports.sources
+debian.sources
+moved-from-main.sources
+rocks.list.bak
+rocks.sources" ls -1 rootdir/etc/apt/sources.list*
+
+testfileequal rootdir/etc/apt/sources.list.d/debian.sources "Types: deb
+URIs: https://deb.debian.org/debian/
+Suites: experimental
+Components: contrib
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+
+# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list
+Types: deb deb-src
+URIs: http://deb.debian.org/debian/
+Suites: stable
+Components: main
+Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-archive-keyring.gpg
+
+# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list
+Types: deb-src
+URIs: http://deb.debian.org/debian/
+Suites: unstable
+Components: main
+Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-archive-keyring.gpg"
+
+testfileequal rootdir/etc/apt/sources.list.d/debian-ports.sources "# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list
+Types: deb
+URIs: http://deb.debian.org/debian-ports/
+Suites: unstable
+Components: main
+Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-ports-archive-keyring.gpg"
+
+testfileequal rootdir/etc/apt/sources.list.d/rocks.sources "Types: deb
+URIs: http://example.org/debian/
+Suites: stable
+Components: rocks
+Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg.d/rocks.gpg"
+
+testfileequal rootdir/etc/apt/sources.list.d/moved-from-main.sources "# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list
+Types: deb
+URIs: http://example.org/debian/
+Suites: stable
+Components: bananas
+Signed-By: 
+
+# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list
+Types: deb
+URIs: http://example.org/debian/
+Suites: trusted
+Components: bananas
+Signed-By: 
+Trusted: yes"
+
+testsuccessequal "All sources are modern." apt modernize-sources
diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections
index b47966e..95ba475 100755
--- a/test/integration/test-apt-never-markauto-sections
+++ b/test/integration/test-apt-never-markauto-sections
@@ -20,16 +20,18 @@ 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
+insertinstalledpackage 'nosection' 'amd64' '1' '' '' '' '' '<none>'
 
+testsuccess aptmark auto nosection
+testempty aptmark showmanual
 testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
 
+testsuccess aptcache show nosection
+testfailure grep 'Section' rootdir/tmp/testsuccess.output
+
 testmarkedmanual 'mydesktop'
 testmarkedauto 'mydesktop-core' 'foreignpkg:i386' 'texteditor' 'browser' 'nosection'
 
@@ -47,7 +49,8 @@ Remv foreignpkg:i386 [1]
 Remv nosection [1]
 Remv texteditor [1]' aptget autoremove mydesktop -s
 
-testequal 'Reading package lists...
+testfailuremsg 'E: Conflict: not texteditor:amd64 -> not bad-texteditor:amd64 but mydesktop:amd64 -> mydesktop-core:amd64 -> bad-texteditor:amd64' aptget autoremove texteditor -s --solver 3.0 #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 Reading state information...
 The following packages will be REMOVED:
@@ -55,8 +58,8 @@ The following packages will be REMOVED:
 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
+Remv texteditor [1]' aptget autoremove texteditor -s --solver internal #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccess aptget autoremove texteditor -y --solver internal
 
 testdpkgnotinstalled mydesktop mydesktop-core texteditor
 testdpkginstalled browser
diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error
index 39c1053..ca2c232 100755
--- a/test/integration/test-apt-progress-fd-error
+++ b/test/integration/test-apt-progress-fd-error
@@ -19,7 +19,7 @@ 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 --nomsg grep "foo2_0.8.15_[^.]\+.deb:[0-9.]\+:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1" 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-update-ims b/test/integration/test-apt-update-ims
index 1894c3a..101c2f2 100755
--- a/test/integration/test-apt-update-ims
+++ b/test/integration/test-apt-update-ims
@@ -48,7 +48,7 @@ runtest() {
 
     # 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
+	    $TEST aptget update -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 $APTOPT
 	    cp rootdir/tmp/${TEST}.output goodsign.output
 	    testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
 	    testsuccess grep '^Got GOODSIG ' goodsign.output
diff --git a/test/integration/test-apt-update-incomplete-file-mirror b/test/integration/test-apt-update-incomplete-file-mirror
new file mode 100755
index 0000000..dec9383
--- /dev/null
+++ b/test/integration/test-apt-update-incomplete-file-mirror
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+configcompression 'gz'
+
+insertpackage 'unstable' 'foo' 'amd64' '1'
+
+setupaptarchive --no-update
+
+testfailure aptcache show foo
+
+# the Release file says gz available, but the mirror has only uncompressed files
+find aptarchive/dists -name '*.gz' -delete
+
+testsuccess apt update
+testsuccess aptcache show foo
+testfailure aptcache show bar
+
+testsuccess apt update
+
+rm -rf rootdir/var/lib/apt/lists
+
+
+msgmsg 'File mirror was hacked'
+mkdir aptarchive2
+cp -a aptarchive/dists aptarchive2/
+rm -rf rootdir/var/lib/apt/lists
+find aptarchive/dists -name 'Packages' | while read FILE; do
+	echo 'hacked' > $FILE
+done
+testfailure apt update -o Debug::pkgAcquire::Worker=1
+testsuccessequal '4' grep -c -- '- Filesize:' rootdir/tmp/testfailure.output
+testsuccessequal '2' grep -c '%0aAlt-Checksum-FileSize-Hash:%20' rootdir/tmp/testfailure.output
+
+echo 'Acquire::By-Hash "force";' > rootdir/etc/apt/apt.conf.d/99force-by-hash.conf
+
+msgmsg 'Fallback over hashsum errors'
+rm -f rootdir/etc/apt/sources.list rootdir/etc/apt/sources.list.d/*
+echo "deb mirror+file:${TMPWORKINGDIRECTORY}/mirror.list unstable main" > rootdir/etc/apt/sources.list
+rm -rf rootdir/var/lib/apt/lists
+cat > mirror.list <<EOF
+copy:${TMPWORKINGDIRECTORY}/aptarchive	priority:1
+file:${TMPWORKINGDIRECTORY}/aptarchive2	priority:2
+EOF
+testsuccess apt update
+cp -a rootdir/tmp/testsuccess.output aptupdate.log
+testsuccessequal '2' grep -c -- '^Ign:' aptupdate.log
+
+rm -rf rootdir/var/lib/apt/lists
+cat > mirror.list <<EOF
+file:${TMPWORKINGDIRECTORY}/aptarchive	priority:1
+copy:${TMPWORKINGDIRECTORY}/aptarchive2	priority:2
+EOF
+testsuccess apt update
+
+rm -rf rootdir/var/lib/apt/lists
+cat > mirror.list <<EOF
+file:${TMPWORKINGDIRECTORY}/aptarchive	priority:1
+file:${TMPWORKINGDIRECTORY}/aptarchive2	priority:2
+EOF
+testsuccess apt update
+cp -a rootdir/tmp/testsuccess.output aptupdate.log
+testsuccessequal '1' grep -c -- '^Ign:' aptupdate.log
diff --git a/test/integration/test-apt-update-nofallback b/test/integration/test-apt-update-nofallback
index 18f12b1..c7cad4a 100755
--- a/test/integration/test-apt-update-nofallback
+++ b/test/integration/test-apt-update-nofallback
@@ -198,12 +198,19 @@ test_inrelease_to_invalid_inrelease()
     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>
+    if test -e "${METHODSDIR}/sqv"; then
+        # FIXME: Do not assert sqv output
+        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: Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature:            Message has been manipulated
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease  Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature:            Message has been manipulated
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+    else
+        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
+    fi
 
     # ensure we keep the repo
-    testfailure grep 'evil' rootdir/var/lib/apt/lists/*InRelease
+    testfailure grep ': evil' rootdir/var/lib/apt/lists/*InRelease
     testfileequal lists.before "$(listcurrentlistsdirectory)"
     assert_repo_is_intact
 }
@@ -218,12 +225,18 @@ test_release_gpg_to_invalid_release_release_gpg()
     # 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>
+    if test -e "${METHODSDIR}/sqv"; then
+        # FIXME: Do not assert sqv output
+        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: Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature:            Message has been manipulated
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/Release.gpg  Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature:            Message has been manipulated
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+    else
+        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
+    fi
 
-    testfailure grep 'evil' rootdir/var/lib/apt/lists/*Release
+    testfailure grep 'evil data' rootdir/var/lib/apt/lists/*Release
     testfileequal lists.before "$(listcurrentlistsdirectory)"
     assert_repo_is_intact
 }
diff --git a/test/integration/test-apt-update-repeated-ims-hit b/test/integration/test-apt-update-repeated-ims-hit
index 74d46b3..57526c4 100755
--- a/test/integration/test-apt-update-repeated-ims-hit
+++ b/test/integration/test-apt-update-repeated-ims-hit
@@ -40,7 +40,11 @@ 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)"
+if test -e "${METHODSDIR}/sqv"; then
+GPGERROR="W: GPG error: file:$APTARCHIVE  Release: The signatures couldn't be verified because no keyring is specified"
+else
 GPGERROR="W: GPG error: file:$APTARCHIVE  Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE"
+fi
 
 msgmsg 'Running update again does not change result' '0'
 testwarningmsg "$GPGERROR" apt update
diff --git a/test/integration/test-apt-update-rollback b/test/integration/test-apt-update-rollback
index 8235968..7a8f57a 100755
--- a/test/integration/test-apt-update-rollback
+++ b/test/integration/test-apt-update-rollback
@@ -156,9 +156,16 @@ test_inrelease_to_unauth_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
+    if test -e "${METHODSDIR}/sqv"; then
+        # FIXME: Do not assert sqv output
+        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: Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key DE66AECA9151AFA1877EC31DE8525D47528144E2, which is needed to verify signature.
+W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease  Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key DE66AECA9151AFA1877EC31DE8525D47528144E2, which is needed to verify signature.
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+    else
+        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
+    fi
 
     testfileequal lists.before "$(listcurrentlistsdirectory)"
     testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
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-1069874-working-with-not-normalized-packages b/test/integration/test-bug-1069874-working-with-not-normalized-packages
new file mode 100755
index 0000000..d45acee
--- /dev/null
+++ b/test/integration/test-bug-1069874-working-with-not-normalized-packages
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+WORKDIR="${TMPWORKINGDIRECTORY}/badcontrol"
+mkdir -p "${WORKDIR}/DEBIAN"
+cat > "${WORKDIR}/DEBIAN/control" << EOF
+Package: perccli
+Version: 007.2616.0000.0000
+Section: perccli
+Priority: optional
+Architecture: all
+Depends: 
+Pre-Depends: 
+Recommends: 
+Suggests: 
+Installed-Size: 7000
+Maintainer: Jane Doe <foo@example.org>
+Conflicts: 
+Replaces: 
+Provides: 
+Description: Not a real package
+EOF
+buildsimplenativepackage 'perccli' 'all' '007.2616.0000.0000' 'stable' '' '' '' '' "${WORKDIR}/DEBIAN"
+cp -a "${WORKDIR}/DEBIAN/control" aptarchive/Packages
+rm -rf "$WORKDIR"
+
+setupaptarchive --no-update
+echo "deb [trusted=yes] file:${TMPWORKINGDIRECTORY}/aptarchive ./" > rootdir/etc/apt/sources.list.d/00badcontrol.list
+testsuccess apt update
+
+# uses the flat Packages file which includes the line ending spaces
+testsuccess aptcache show perccli
+cp -a rootdir/tmp/testsuccess.output perccli.show
+testsuccessequal '4' grep -c '^\(\(Pre-\|\)Depends\|Provides\|Replaces\): \+$' perccli.show
+
+testdpkgnotinstalled perccli
+testsuccess apt install perccli
+testdpkginstalled perccli
+
+testsuccess apt policy perccli
+cp -a rootdir/tmp/testsuccess.output perccli.policy
+testsuccessequal '3' grep -c '7\.2616\.' perccli.policy
+
+# apt-ftparchive outputs empty fields, but not the space ending
+testsuccess rm rootdir/var/lib/apt/lists/*_._Packages
+testsuccess aptcache show perccli/now
+cp -a rootdir/tmp/testsuccess.output perccli.show
+testsuccessequal '4' grep -c '^\(\(Pre-\|\)Depends\|Provides\|Replaces\):$' perccli.show
+
+testsuccess apt policy perccli
+cp -a rootdir/tmp/testsuccess.output perccli.policy
+testsuccessequal '3' grep -c '7\.2616\.' perccli.policy
diff --git a/test/integration/test-bug-470115-new-and-tighten-recommends b/test/integration/test-bug-470115-new-and-tighten-recommends
index f27990e..e1c272b 100755
--- a/test/integration/test-bug-470115-new-and-tighten-recommends
+++ b/test/integration/test-bug-470115-new-and-tighten-recommends
@@ -165,8 +165,6 @@ Conf upgrade-over-new (2 unstable [all])' aptget install upgrade-over-new -s
 # 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.
diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed
index 90ce58a..8abc7c8 100755
--- a/test/integration/test-bug-549968-install-depends-of-not-installed
+++ b/test/integration/test-bug-549968-install-depends-of-not-installed
@@ -25,4 +25,24 @@ 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
+Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s --solver internal
+
+# 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...
+Package 'extracoolstuff' is not installed, so not removed
+Solving dependencies...Install coolstuff:i386 ()
+[0] Install:coolstuff:i386=1.0 ()
+Delete extracoolstuff:i386
+[0] Reject:extracoolstuff:i386 ()
+[0] Install:coolstuff:i386 (coolstuff:i386=1.0)
+Optional Item (0@0) coolstuff:i386 ->  | extracoolstuff:i386
+
+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::APT::Solver=1 -s --solver 3.0
diff --git a/test/integration/test-bug-591882-conkeror b/test/integration/test-bug-591882-conkeror
index 6b90343..21c5697 100755
--- a/test/integration/test-bug-591882-conkeror
+++ b/test/integration/test-bug-591882-conkeror
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture "i386"
 setupaptarchive
 
@@ -73,5 +74,5 @@ 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 "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0 --solver internal
 testfailureequal "$UPGRADESUCCESS" aptget dist-upgrade --trivial-only #-o pkgProblemResolver::FixByInstall=0
diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo
index 4d0e3dc..2cfdc53 100755
--- a/test/integration/test-bug-596498-trusted-unsigned-repo
+++ b/test/integration/test-bug-596498-trusted-unsigned-repo
@@ -15,10 +15,15 @@ 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)"
+PKGSIZE=$(aptcache show cool | awk '/^Size:/ {print $2}')
+PKGTEXT="Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  cool
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/$PKGSIZE B of archives.
+After this operation, 11.3 kB of additional disk space will be used."
+DOWNLOG="Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main i386 cool i386 1.0 [$PKGSIZE B]"
 DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-*.list'
 
 testsuccessequal "$PKGTEXT
diff --git a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
index e7e4093..6c9fb60 100755
--- a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
+++ b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
@@ -7,6 +7,8 @@ setupenvironment
 configarchitecture "i386"
 setupaptarchive
 
+testfailuremsg "E: Conflict: exim4-daemon-light:i386 -> not postfix:i386=2.7.1-1 but postfix:i386=2.7.1-1" aptget install postfix --solver 3.0
+allowremovemanual
 testfailureequal "Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info
index 3e13560..6d68372 100755
--- a/test/integration/test-bug-601961-install-info
+++ b/test/integration/test-bug-601961-install-info
@@ -47,4 +47,17 @@ 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
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only --solver internal
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Conflict: findutils:i386 -> essentialpkg:i386 but not essentialpkg:i386' aptget remove essentialpkg --trivial-only --solver 3.0
diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove
index 47da810..70dc4ca 100755
--- a/test/integration/test-bug-604222-new-and-autoremove
+++ b/test/integration/test-bug-604222-new-and-autoremove
@@ -17,26 +17,38 @@ 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'
 
+insertpackage 'stable' 'libgphoto2-l10n' 'all' '2'
+insertinstalledpackage 'libfoto1' 'i386' '1'
+insertpackage 'installed,stable' 'photoapp1' 'all' '1' 'Depends: libfoto1
+Recommends: libgphoto2-l10n (= 1)'
+insertinstalledpackage 'photoapp2' 'all' '1'
+insertpackage 'stable' 'libfoto1t64' 'i386' '1' 'Provides: libfoto1'
+insertpackage 'stable' 'photoapp2' 'all' '2' 'Conflicts: photoapp1
+Depends: libfoto1t64
+Recommends: libgphoto2-l10n (= 2)'
+
 setupaptarchive
 
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+  photoapp2
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' apt upgrade -s
+
 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.
+Use 'apt autoremove' to remove it.
 The following NEW packages will be installed:
   libavcodec52
-0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
 Inst libavcodec52 (4:0.5.2-6 stable [i386])
 Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s
 
@@ -44,10 +56,10 @@ 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.
+Use 'apt autoremove' to remove it.
 The following NEW packages will be installed:
   libavcodec52
-0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+0 upgraded, 1 newly installed, 0 to remove and 2 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
 
@@ -56,12 +68,12 @@ Building dependency tree...
 Reading state information...
 The following package was automatically installed and is no longer required:
   libvtk5.4
-Use '$AUTOREMOVE' to remove it.
+Use 'apt 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.
+0 upgraded, 3 newly installed, 0 to remove and 2 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
@@ -69,18 +81,40 @@ 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.
+Use 'apt 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.
+0 upgraded, 3 newly installed, 0 to remove and 2 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
 
+if [ "$APT_SOLVER" = "3.0" ]; then
+CONFLICTING='Reading package lists...
+Building dependency tree...
+Solving dependencies...Install dummy-archive:i386 ()
+[0] Install:dummy-archive:i386=0.invalid.0 ()
+[0] Install:dummy-archive:i386 (dummy-archive:i386=0.invalid.0)
+[0] Install:libavcodec52:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386)
+[0] Install:libavcodec52:i386=4:0.5.2-6 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386)
+[0] Reject:libvtk5-dev:i386=5.4.2-8 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386)
+[0] Reject:libvtk5-dev:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386 -> not libvtk5-dev:i386=5.4.2-8)
+[0] Install:libopenal-dev:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386)
+[0] Install:libopenal-dev:i386=1:1.12.854-2 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libopenal-dev:i386)
+
+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.'
+else
 CONFLICTING='Reading package lists...
 Building dependency tree...
   MarkInstall dummy-archive:i386 < none -> 0.invalid.0 @un puN Ib > FU=1
@@ -96,10 +130,11 @@ The following NEW packages will be installed:
 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.'
+fi
 
-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
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0 -o Debug::APT::Solver=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1 -o Debug::APT::Solver=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small -o Debug::APT::Solver=1
 
 insertinstalledpackage 'my-metapackage' 'i386' '1' 'Depends: gwenview'
 insertinstalledpackage 'gwenview' 'i386' '4:15.08.0-1' 'Depends: libkipi-data
diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual
index 63f8245..026ede3 100755
--- a/test/integration/test-bug-611729-mark-as-manual
+++ b/test/integration/test-bug-611729-mark-as-manual
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 configarchitecture "i386"
+allowremovemanual
 
 buildsimplenativepackage "peace-dpkg" "all" "1.0" "stable"
 
@@ -56,14 +57,8 @@ 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' '
+testfileequal 'rootdir/var/log/apt/history.log' '
 Reinstall: b:i386 (1.0)'
-fi
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts
index bc57395..a005127 100755
--- a/test/integration/test-bug-612099-multiarch-conflicts
+++ b/test/integration/test-bug-612099-multiarch-conflicts
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'i386' 'amd64'
 
 buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable'
diff --git a/test/integration/test-bug-612557-garbage-upgrade b/test/integration/test-bug-612557-garbage-upgrade
index e0ede78..4ef241c 100755
--- a/test/integration/test-bug-612557-garbage-upgrade
+++ b/test/integration/test-bug-612557-garbage-upgrade
@@ -17,6 +17,8 @@ testsuccess aptmark markauto python-uno openoffice.org-common
 #aptmark unmarkauto openoffice.org-emailmerge
 testmarkedauto python-uno openoffice.org-common
 
+# The 3.0 solver does not remove openoffice.org-emailmerge because it is manually installed.
+testfailuremsg "E: Conflict: openoffice.org-emailmerge:i386 -> openoffice.org-common:i386 -> openoffice.org-common:i386=1:3.2.1-11+squeeze2 but python-uno:i386=1:3.3.0-2 -> libreoffice-common:i386 -> not openoffice.org-common:i386=1:3.2.1-11+squeeze2" aptget --trivial-only install python-uno --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Reading state information...
@@ -31,7 +33,7 @@ The following packages will be upgraded:
 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
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno --solver internal
 
 testsuccess aptmark markauto openoffice.org-emailmerge
 testmarkedauto python-uno openoffice.org-common openoffice.org-emailmerge
diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency
index 46c3d94..0d83097 100755
--- a/test/integration/test-bug-613420-new-garbage-dependency
+++ b/test/integration/test-bug-613420-new-garbage-dependency
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture "i386"
 
 insertpackage 'unstable' 'libreoffice' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
@@ -16,17 +17,13 @@ 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.
+Use 'apt autoremove' to remove them.
 The following additional packages will be installed:
   libreoffice-core libreoffice-officebean openoffice.org-officebean
 The following packages will be REMOVED:
@@ -43,7 +40,7 @@ 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.
+Use 'apt autoremove' to remove them.
 The following additional packages will be installed:
   libreoffice-core libreoffice-officebean openoffice.org-officebean
 The following packages will be REMOVED:
diff --git a/test/integration/test-bug-618848-always-respect-user-requests b/test/integration/test-bug-618848-always-respect-user-requests
index f77c384..d59491a 100755
--- a/test/integration/test-bug-618848-always-respect-user-requests
+++ b/test/integration/test-bug-618848-always-respect-user-requests
@@ -13,13 +13,24 @@ insertpackage 'unstable' 'exim4-daemon-heavy' 'all' '1.0' 'Depends: libdb4.8'
 
 setupaptarchive
 
+# This does not work in 3.0 solver: We do not remove manually installed packages.
+testfailuremsg "E: Conflict: not libdb4.8:i386 -> not exim4-daemon-light:i386 but exim4-daemon-light:i386" aptget remove libdb4.8 --solver 3.0 -s
+allowremovemanual
 testsuccessequal "Reading package lists...
 Building dependency tree...
-  MarkDelete libdb4.8:i386 < 1.0 @ii pK > FU=1
-  MarkDelete exim4-daemon-light:i386 < 1.0 @ii K Ib > FU=0
-    MarkInstall exim4-daemon-heavy:i386 < none -> 1.0 @un uN Ib > FU=0
-      exim4-daemon-heavy:i386 Depends on libdb4.8:i386 < 1.0 @ii pR > can't be satisfied! (dep)
-  MarkDelete exim4:i386 < 1.0 @ii K Ib > FU=0
+The following packages will be REMOVED:
+  exim4 exim4-daemon-light libdb4.8
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv exim4 [1.0]
+Remv exim4-daemon-light [1.0]
+Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s
+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
@@ -28,4 +39,4 @@ 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
+Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1 --solver internal
diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction
index 0cf8d35..d101bd1 100755
--- a/test/integration/test-bug-632221-cross-dependency-satisfaction
+++ b/test/integration/test-bug-632221-cross-dependency-satisfaction
@@ -35,6 +35,7 @@ insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: spec
 
 setupaptarchive
 
+testfailuremsg "E: Unsatisfiable dependency group builddeps:forbidden-no:armel -> amdboot:any:any" aptget build-dep forbidden-no -s -a armel --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -46,7 +47,9 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel --solver internal
+
+testfailuremsg "E: Unsatisfiable dependency group builddeps:forbidden-same:armel -> libc6:any:any" aptget build-dep forbidden-same -s -a armel --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -58,7 +61,9 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel --solver internal
+
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:forbidden-foreign:armel -> doxygen:any:any' aptget build-dep forbidden-foreign -s -a armel --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -70,7 +75,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel --solver internal
 
 testsuccessequal 'Reading package lists...
 Reading package lists...
diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold
index fe3bde6..ddfad92 100755
--- a/test/integration/test-bug-64141-install-dependencies-for-on-hold
+++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 configarchitecture 'native' 'strange-arch'
+native=$(getarchitecture 'native')
 
 insertpackage 'unstable' 'unrelated' 'strange-arch' '1'
 
@@ -19,6 +20,38 @@ insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3'
 
 setupaptarchive
 
+# Solver 3.0 does not remove manual packages
+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 --solver 3.0
+
+testfailure aptget dist-upgrade --trivial-only --solver 3.0 -o debug::apt::solver=2
+testsuccess grep -Fx "[0] Reject:apt:$native=0.8.10 (oldcrap:$native -> oldcrap:$native=1-1)" rootdir/tmp/testfailure.output
+
+allowremovemanual
+
+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
+
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Calculating upgrade...
diff --git a/test/integration/test-bug-657695-resolver-breaks-on-virtuals b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
index 42b8521..e3ff6d1 100755
--- a/test/integration/test-bug-657695-resolver-breaks-on-virtuals
+++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
@@ -16,6 +16,15 @@ insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks
 
 setupaptarchive
 
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+  xserver-xorg-core
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --trivial-only --solver 3.0
+
+allowremovemanual
+
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Calculating upgrade...
diff --git a/test/integration/test-bug-675449-essential-are-protected b/test/integration/test-bug-675449-essential-are-protected
index e7460ae..36e7b64 100755
--- a/test/integration/test-bug-675449-essential-are-protected
+++ b/test/integration/test-bug-675449-essential-are-protected
@@ -112,4 +112,17 @@ 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
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget purge libfoo -s --solver internal
+
+testequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Conflict: foo:amd64 -> libfoo:amd64 but not libfoo:amd64' aptget purge libfoo -s --solver 3.0
diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages
index 831e1f8..75f0a96 100755
--- a/test/integration/test-bug-683786-build-dep-on-virtual-packages
+++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages
@@ -41,6 +41,7 @@ The following NEW packages will be installed:
 Inst po-debconf (1 unstable [all])
 Conf po-debconf (1 unstable [all])' aptget build-dep dash -s
 
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:dash:armel -> po-debconf:armel' aptget build-dep -aarmel dash -s --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -52,7 +53,9 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s --solver internal
+
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:diffutils:armel -> texi2html:armel' aptget build-dep -aarmel diffutils -s --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -64,7 +67,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s --solver internal
 
 testsuccessequal "Reading package lists...
 Reading package lists...
@@ -75,6 +78,7 @@ The following NEW packages will be installed:
 Inst libselinux1-dev (1 unstable [amd64])
 Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s
 
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:sed:armel -> libselinux-dev:armel' aptget build-dep -aarmel sed -s --solver 3.0
 testfailureequal 'Reading package lists...
 Reading package lists...
 Building dependency tree...
@@ -86,7 +90,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s --solver internal
 
 testsuccessequal "Reading package lists...
 Reading package lists...
diff --git a/test/integration/test-bug-686346-package-missing-architecture b/test/integration/test-bug-686346-package-missing-architecture
index d28600a..a064e5d 100755
--- a/test/integration/test-bug-686346-package-missing-architecture
+++ b/test/integration/test-bug-686346-package-missing-architecture
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64'
 
 insertinstalledpackage 'pkgb' 'none' '1'
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
index 9c96bbe..b9cda18 100755
--- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
+++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign'
diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge
index 4b36989..9ff0d23 100755
--- a/test/integration/test-bug-720597-build-dep-purge
+++ b/test/integration/test-bug-720597-build-dep-purge
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 
 # we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
 NATIVE="$(command dpkg --print-architecture)"
diff --git a/test/integration/test-bug-723586-any-stripped-in-single-arch b/test/integration/test-bug-723586-any-stripped-in-single-arch
index 38eb026..17c3839 100755
--- a/test/integration/test-bug-723586-any-stripped-in-single-arch
+++ b/test/integration/test-bug-723586-any-stripped-in-single-arch
@@ -29,6 +29,20 @@ 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])'
 
+if [ "$APT_SOLVER" = "3.0" ]; then
+FAILLOG='Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Unsatisfiable dependency group python-mips:amd64 -> python3:mips:any'
+else
 FAILLOG='Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -40,6 +54,7 @@ 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.'
+fi
 
 testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
 aptcache showpkg python3 > showpkg.log
diff --git a/test/integration/test-bug-733028-gpg-resource-limit b/test/integration/test-bug-733028-gpg-resource-limit
index b44facd..2fc5ed3 100755
--- a/test/integration/test-bug-733028-gpg-resource-limit
+++ b/test/integration/test-bug-733028-gpg-resource-limit
@@ -13,7 +13,6 @@ 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'
diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable
index b836451..2eedf22 100755
--- a/test/integration/test-bug-735967-lib32-to-i386-unavailable
+++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386' 'amd64'
 
 insertpackage 'unstable' 'lib32nss-mdns' 'amd64' '0.10-6' 'Depends: libnss-mdns-i386 (= 0.10-6)'
@@ -31,6 +32,12 @@ setupaptarchive --no-update
 configarchitecture 'amd64'
 testsuccess aptget update
 
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+  lib32nss-mdns libnss-mdns
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -s --solver 3.0
 testsuccessequal 'Reading package lists...
 Building dependency tree...
 Calculating upgrade...
@@ -41,8 +48,9 @@ The following packages will be upgraded:
 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
+Conf libnss-mdns (0.10-6 unstable [amd64])' aptget dist-upgrade -s --solver internal
 
+testfailuremsg 'E: Unsatisfiable dependency group libfoo:amd64 -> libfoo-bin:amd64' aptget install foo -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -53,7 +61,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo -s --solver internal
 
 # activate multiarch
 configarchitecture 'amd64' 'i386'
diff --git a/test/integration/test-bug-745046-candidate-propagation-fails b/test/integration/test-bug-745046-candidate-propagation-fails
index 64aaa6a..a8ee501 100755
--- a/test/integration/test-bug-745046-candidate-propagation-fails
+++ b/test/integration/test-bug-745046-candidate-propagation-fails
@@ -25,7 +25,21 @@ 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
+E: Unable to correct problems, you have held broken packages." aptget install gedit/experimental -sq=0 --solver internal
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [amd64]) for 'gedit'
+Solving dependencies...
+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: Unsatisfiable dependency group gedit:amd64=2 -> common:amd64" aptget install gedit/experimental -sq=0 --solver 3.0
 
 insertinstalledpackage 'common' 'amd64' '2'
 
diff --git a/test/integration/test-bug-747261-arch-specific-conflicts b/test/integration/test-bug-747261-arch-specific-conflicts
index e137043..093542d 100755
--- a/test/integration/test-bug-747261-arch-specific-conflicts
+++ b/test/integration/test-bug-747261-arch-specific-conflicts
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'sparc' 'armel'
 
 insertinstalledpackage 'foobar' 'armel' '1'
diff --git a/test/integration/test-bug-758153-versioned-provides-support b/test/integration/test-bug-758153-versioned-provides-support
index 7bf9d76..a057d33 100755
--- a/test/integration/test-bug-758153-versioned-provides-support
+++ b/test/integration/test-bug-758153-versioned-provides-support
@@ -7,6 +7,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
@@ -393,11 +394,18 @@ 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
+if [ "$APT_SOLVER" = "3.0" ]; then
+TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 1)
+                    Depends: selfprov (= 2)
+                    Depends: selfprov (= 3)"
+else
+TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 3)"
+fi
 		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)
+$TOPDEPENDS
 
 $SOMEPACKAGESCOULDNOT
  needsselfprov123 : Depends: selfprov (= 1)
diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
index ce2c193..0a2dd25 100755
--- a/test/integration/test-bug-769609-triggers-still-pending-after-run
+++ b/test/integration/test-bug-769609-triggers-still-pending-after-run
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64'
 
 msgtest 'Check if installed dpkg supports' 'noawait trigger'
diff --git a/test/integration/test-bug-796070-downgrade-simulate b/test/integration/test-bug-796070-downgrade-simulate
index 61ecc87..d1b6b7f 100755
--- a/test/integration/test-bug-796070-downgrade-simulate
+++ b/test/integration/test-bug-796070-downgrade-simulate
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386'
 
 insertpackage 'unstable' 'apt' 'all' '1.0.10.1' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
diff --git a/test/integration/test-bug-869859-retry-downloads b/test/integration/test-bug-869859-retry-downloads
index 4e169b3..821d7bc 100755
--- a/test/integration/test-bug-869859-retry-downloads
+++ b/test/integration/test-bug-869859-retry-downloads
@@ -48,15 +48,53 @@ 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
+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 -o Acquire::Progress::Ignore::ShowErrorText=true
+testfailure test -f testpkg_1_all.deb
+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
+Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 2 seconds
+Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 4 seconds
+Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+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 -o Acquire::Progress::Ignore::ShowErrorText=false
 testfailure test -f testpkg_1_all.deb
 
+msgmsg 'Retry 429 TooManyRequests after Retry-After time'
+webserverconfig 'aptwebserver::failrequest' '429'
+webserverconfig 'aptwebserver::failrequest::retryafter' '5'
+webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '1'
+testsecondsgreaterequal 5 testsuccess apt download testpkg -o acquire::retries=1 -o acquire::retries::handleretryafter=true -o debug::acquire::retries=true -q
+webserverconfig 'aptwebserver::failrequest::retryafter' '0'
+testsuccess test -f testpkg_1_all.deb
+rm -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 'Hard failure after retry request'
+webserverconfig 'aptwebserver::failrequest::pool/unavailable_1_all.deb' '1'
+testfailureequal "Ign:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb
+  429  Unknown HTTP code
+Err:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb
+  404  Not Found
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb  404  Not Found
+E: Download Failed" apthelper download-file "http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb" 'unavailable_1_all.deb' -o acquire::retries=2 -o acquire::retries::delay=false -o Acquire::Progress::Ignore::ShowErrorText=true
+testfailure test -f unavailable_1_all.deb
+webserverconfig 'aptwebserver::failrequest::pool/unavailable_1_all.deb' '1'
+testfailureequal "Ign:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb
+Err:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb
+  429  Unknown HTTP code
+  404  Not Found
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb  404  Not Found
+E: Download Failed" apthelper download-file "http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb" 'unavailable_1_all.deb' -o acquire::retries=2 -o acquire::retries::delay=false -o Acquire::Progress::Ignore::ShowErrorText=false
+testfailure test -f unavailable_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'
diff --git a/test/integration/test-bug-921685-binary-detached-signature b/test/integration/test-bug-921685-binary-detached-signature
index df86319..e9bbb80 100755
--- a/test/integration/test-bug-921685-binary-detached-signature
+++ b/test/integration/test-bug-921685-binary-detached-signature
@@ -13,10 +13,13 @@ setupdistsaptarchive
 
 for RELEASE in $(find aptarchive -name 'Release'); do
 	# note the missing --armor
-	dosigning "keys/joesixpack" --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
+	if command sq --cli-version 0.40 version 2>/dev/null; then
+		sq sign --binary --signer-file "keys/joesixpack.sec" --output "${RELEASE}.gpg" --signature-file "${RELEASE}"
+	else
+		sq sign --binary --signer-file "keys/joesixpack.sec" --signature-file "${RELEASE}.gpg" "${RELEASE}"
+	fi
 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
index c16a275..270536f 100755
--- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
@@ -15,27 +15,28 @@ Important: yes'
 
 setupaptarchive
 
+# This only works on internal, we do not have magic essential autoswitch ability for 3.0
 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 K > FU=0
+    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 K Ib >
-Broken init:amd64 PreDepends on systemd-sysv:amd64 < 1 @ii pR >
+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 pH >
+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 pR > as its mode (Delete) is protected
-Investigating (1) init:amd64 < 1 @ii K Ib >
-Broken init:amd64 PreDepends on systemd-sysv:amd64 < 1 @ii pR >
+  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 pH >
+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 K Ib > FU=0
+  MarkDelete init:amd64 < 1 @ii mK Ib > FU=0
 Done
 The following packages will be REMOVED:
   init systemd-sysv
@@ -50,4 +51,4 @@ 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
+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 --solver internal
diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
index ca6bf8d..492958c 100755
--- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
@@ -18,6 +18,38 @@ insertpackage 'unstable' 'fine-foo' 'all' '1'
 
 setupaptarchive
 
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Solving dependencies...Install foobar:amd64 ()
+[0] Install:foobar:amd64=1 ()
+[0] Install:foobar:amd64 (foobar:amd64=1)
+[0] Install:requires-foo:amd64 (foobar:amd64=1 -> foobar:amd64)
+[0] Install:requires-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64)
+[0] Install:foo:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64)
+[0] Install:foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64)
+[0] Install:foo-depends:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64)
+[0] Reject:conflicts-foo:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo:amd64=1)
+[0] Install:foo-depends:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo-depends:amd64)
+[0] Install:fine-foo:amd64 (foobar:amd64=1 -> foobar:amd64)
+[0] Reject:conflicts-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo:amd64=1 -> not conflicts-foo:amd64)
+[0] Install:fine-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> fine-foo:amd64)
+
+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::APT::Solver=1 --solver 3.0
+
 testsuccessequal "Reading package lists...
 Building dependency tree...
   Installing foo:amd64 as Depends of foobar:amd64
@@ -42,4 +74,4 @@ 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
+Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
diff --git a/test/integration/test-bug-961266-hold-means-hold b/test/integration/test-bug-961266-hold-means-hold
index 89c18ba..8c18cd7 100755
--- a/test/integration/test-bug-961266-hold-means-hold
+++ b/test/integration/test-bug-961266-hold-means-hold
@@ -75,7 +75,21 @@ 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
+E: Unable to correct problems, you have held broken packages.' apt install git-ng -s --solver internal
+
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Conflict: git:amd64=1:2.25.1-1 -> not git:amd64=1:2.26.2-1 -> not git-ng:amd64 but git-ng:amd64=1:2.26.2-1 -> git-ng:amd64' apt install git-ng -s --solver 3.0
 
 
 msgmsg 'Now mix it up by' 'holding git-cvs'
@@ -98,7 +112,21 @@ 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
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' apt install git-ng -s --solver internal
+
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Conflict: git-cvs:amd64=1:2.25.1-1 -> git:amd64=1:2.25.1-1 -> not git:amd64=1:2.26.2-1 but git-ng:amd64=1:2.26.2-1 -> git-ng:amd64 -> git:amd64=1:2.26.2-1' apt install git-ng -s --solver 3.0
 
 
 msgmsg 'Now mix it up by' 'holding both'
@@ -121,4 +149,17 @@ 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
+E: Unable to correct problems, you have held broken packages.' apt install git-ng -s --solver internal
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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: Conflict: git:amd64=1:2.25.1-1 -> not git:amd64=1:2.26.2-1 -> not git-ng:amd64 but git-ng:amd64=1:2.26.2-1 -> git-ng:amd64' apt install git-ng -s --solver 3.0
diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
index 6e8225a..41a9591 100755
--- a/test/integration/test-bug-lp1562402-nomark-removals-as-keep
+++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
@@ -18,6 +18,15 @@ insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubu
 
 setupaptarchive
 
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+  maas-common maas-region-controller maas-region-controller-min
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.' aptget dist-upgrade -s --solver 3.0
+
+allowremovemanual
+
 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...
diff --git a/test/integration/test-crossgrades b/test/integration/test-crossgrades
index 6398e7e..b428215 100755
--- a/test/integration/test-crossgrades
+++ b/test/integration/test-crossgrades
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'i386' 'amd64' 'armel'
 configdpkgnoopchroot
 
diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages
index f3fed04..f93e10e 100755
--- a/test/integration/test-disappearing-packages
+++ b/test/integration/test-disappearing-packages
@@ -60,23 +60,12 @@ all files have been overwritten by other packages:
 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' '
+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
 
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..f8b41c6
--- /dev/null
+++ b/test/integration/test-dont-forget-conflicts-via-unknown-architectures
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'arm64'
+configdpkgnoopchroot
+allowremovemanual
+
+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 install pkga -y
+testdpkginstalled 'pkga'
+testdpkgnotinstalled 'pkgb'
diff --git a/test/integration/test-dpkg-i-apt-install-fix-broken b/test/integration/test-dpkg-i-apt-install-fix-broken
index 0b75b5f..2529331 100755
--- a/test/integration/test-dpkg-i-apt-install-fix-broken
+++ b/test/integration/test-dpkg-i-apt-install-fix-broken
@@ -14,6 +14,30 @@ setupaptarchive
 testfailure dpkg -i incoming/autopkgtest-*.deb
 testsuccessequal 'Reading package lists...
 Building dependency tree...
+Correcting dependencies...Install autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64 (autopkgtest-satdep:amd64 -> debhelper:amd64=1)
+ Done
+Solving dependencies...Install debhelper:amd64 (M)
+Install autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64 (autopkgtest-satdep:amd64 -> debhelper:amd64=1)
+
+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::APT::Solver=1 --solver 3.0
+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
@@ -31,4 +55,4 @@ The following NEW packages will be installed:
 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
+Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1 --solver internal
diff --git a/test/integration/test-explore-or-groups-in-markinstall b/test/integration/test-explore-or-groups-in-markinstall
index fe7e998..4c67296 100755
--- a/test/integration/test-explore-or-groups-in-markinstall
+++ b/test/integration/test-explore-or-groups-in-markinstall
@@ -55,7 +55,11 @@ _testsuccessheadtailequal() {
 	msggroup
 }
 testsuccessheadequal() {
-	_testsuccessheadtailequal 'head' "$@"
+    msg="$1"
+    shift
+	testsuccess "$@"
+    cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess-no-sim-equal.output"
+    testsuccessequal "$msg" awk '{print} /not upgraded.$/ {exit}' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess-no-sim-equal.output"
 }
 testsuccesstailequal() {
 	_testsuccessheadtailequal 'tail' "$@"
@@ -63,14 +67,14 @@ testsuccesstailequal() {
 checkfoos() {
 	msgmsg 'Install checks with foos dependency type' "$2"
 	for level in 0 1 2; do
-		testsuccessheadequal 7 "Reading package lists...
+		testsuccessheadequal "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...
+		testsuccessheadequal "Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   upgrade
@@ -81,7 +85,7 @@ The following packages will be upgraded:
 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...
+	testsuccessheadequal "Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   okay
@@ -90,7 +94,8 @@ The following NEW packages will be installed:
 0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-conflict -s
 }
 checkfoos 'd' 'Depends'
-checkfoos 'r' 'Recommends'
+# FIXME? The 3.0 solver solves Recommends after Depends, so they do not influence our decisions here.
+[ "$APT_SOLVER" = "3.0" ] || checkfoos 'r' 'Recommends'
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -124,9 +129,9 @@ if $TEST_WITH_APTITUDE; then
 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
+	[ "$APT_SOLVER" = "3.0" ] || testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-level2 -sy   # FIXME: See above for 3.0
 	testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-d-conflict -sy
-	testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-conflict -sy
+	[ "$APT_SOLVER" = "3.0" ] || testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-conflict -sy # FIXME: See above for 3.0
 fi
 
 BADSOLVETEXT='Reading package lists...
@@ -137,17 +142,36 @@ 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:
 '
+BADSOLVETEXT3='Reading package lists...
+Building dependency tree...
+Solving dependencies...
+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
+E: Unable to correct problems, you have held broken packages." apt install bad-upgrade-level1 -s --solver internal
+testfailureequal "$BADSOLVETEXT3
+The following packages have unmet dependencies:
+ bad-upgrade-level1 : Depends: bad-upgrade-level0 (>= 2) but 1 is to be installed
+                      Depends: unneeded2 but it is not going to be installed
+E: Unsatisfiable dependency group bad-upgrade-level0:amd64=2 -> unknown:amd64" apt install bad-upgrade-level1 -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." apt install bad-conflict-level2 -s --solver internal
+testfailureequal "$BADSOLVETEXT3
+The following packages have unmet dependencies:
+ bad-conflict-level2 : Depends: bad-conflict-level1 but it is not going to be installed
+                       Depends: unneeded2 but it is not going to be installed
+E: Conflict: bad-conflict-level2:amd64=1 -> not bad-conflict-level0:amd64 -> not bad-conflict-level1:amd64 but bad-conflict-level2:amd64=1 -> bad-conflict-level2:amd64 -> bad-conflict-level1:amd64" apt install bad-conflict-level2 -s --solver 3.0
 
 if $TEST_WITH_APTITUDE; then
 	testsuccesstailequal 6 'The following packages have been kept back:
diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol
index 485a770..81204fc 100755
--- a/test/integration/test-external-dependency-solver-protocol
+++ b/test/integration/test-external-dependency-solver-protocol
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 configarchitecture 'amd64' 'i386'
+allowremovemanual
 
 insertinstalledpackage 'cool' 'all' '1'
 insertinstalledpackage 'stuff' 'all' '1'
@@ -113,17 +114,13 @@ 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.
+Use 'apt autoremove' to remove it.
 The following packages will be REMOVED:
   cool* somestuff*
 0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
@@ -293,18 +290,32 @@ 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)'
 
+cat > Packages <<EOF
+Package: depparse
+Version: 42-1
+Architecture: all
+Pre-Depends: aaa, bbb (>= 2), ccc
+Depends: ddd, eee (>= 42), fff
+Recommends: ggg, hhh (>> 42), iii
+Suggests: jjj, kkk (= 42), lll
+Enhances: mmm, nnn (>> 42), ooo
+Replaces: ppp, qqq (<< 42), rrr
+Conflicts: sss, ttt (= 42), uuu
+Breaks: vvv, www (<= 42), xxx
+EOF
+
 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
+testfailure apt install -s dummy-webserver --with-source Packages
+testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --with-source Packages
+testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --solver apt --with-source Packages
+testfailure apt install -s ./incoming/dummy-webserver_1_all.deb --solver dump --with-source Packages
 
-testsuccess aptcache showpkg dummy-webserver --with-source ./incoming/dummy-webserver_1_all.deb
+testsuccess aptcache showpkg dummy-webserver --with-source ./incoming/dummy-webserver_1_all.deb --with-source Packages
 cp -a rootdir/tmp/testsuccess.output showpkg.output
 testequal 'Reverse Depends: 
 Dependencies: 
@@ -317,3 +328,8 @@ Provides: httpd
 Provides: httpd
 Provides: httpd
 Provides: httpd' grep 'Provides:' "$APT_EDSP_DUMP_FILENAME"
+
+if dpkg-checkbuilddeps -d 'dctrl-tools' /dev/null >/dev/null 2>&1; then
+	testsuccessequal "$(cat Packages)
+" grep-dctrl -P depparse -s 'Package,Version,Architecture,Pre-Depends,Depends,Recommends,Suggests,Enhances,Replaces,Conflicts,Breaks' "$APT_EDSP_DUMP_FILENAME"
+fi
diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol
index 192f21b..1a04d24 100755
--- a/test/integration/test-external-installation-planner-protocol
+++ b/test/integration/test-external-installation-planner-protocol
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64'
 
 buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
diff --git a/test/integration/test-handle-redirect-as-used-mirror-change b/test/integration/test-handle-redirect-as-used-mirror-change
index a6f8b78..1ce1232 100755
--- a/test/integration/test-handle-redirect-as-used-mirror-change
+++ b/test/integration/test-handle-redirect-as-used-mirror-change
@@ -67,7 +67,18 @@ Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s apt
 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
+All packages are up to date." apt update -o Acquire::Progress::Ignore::ShowErrorText=true
+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
+Ign:3 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main all Packages
+Ign:4 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Translation-en
+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 -o Acquire::Progress::Ignore::ShowErrorText=false
 
 find aptarchive -name 'InRelease' -delete
 rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups
index 564ea88..f9c436f 100755
--- a/test/integration/test-handling-broken-orgroups
+++ b/test/integration/test-handling-broken-orgroups
@@ -47,6 +47,7 @@ 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
 
+testfailuremsg 'E: Unsatisfiable dependency group coolstuff-broken:i386 -> cool2:i386' aptget install coolstuff-broken --solver 3.0 -s
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -58,7 +59,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken --solver internal -s
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -94,6 +95,7 @@ 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
 
+testfailuremsg 'E: Conflict: coolstuff-provided-broken:i386=1.0-1 -> coolstuff-provided-broken:i386 -> extrastuff:i386=1.0-1 but not extrastuff:i386=1.0-1' aptget install coolstuff-provided-broken --solver 3.0 -s
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -105,4 +107,4 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken --solver internal -s
diff --git a/test/integration/test-history b/test/integration/test-history
new file mode 100755
index 0000000..47829e1
--- /dev/null
+++ b/test/integration/test-history
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'pkg1' 'amd64' '1' 'stable'
+buildsimplenativepackage 'pkg2' 'amd64' '1' 'stable'
+
+
+setupaptarchive
+
+cathistory() {
+    sed rootdir/var/log/apt/history.log -re 's/^(Commandline|Start-Date|End-Date):.*/\1: dummy/'
+}
+
+
+testsuccess aptget install pkg1
+
+testequal "
+Start-Date: dummy
+Commandline: dummy
+Install: pkg1:amd64 (1)
+End-Date: dummy" cathistory
+
+testsuccess aptget install pkg2 --comment="A test comment"
+
+testequal "
+Start-Date: dummy
+Commandline: dummy
+Install: pkg1:amd64 (1)
+End-Date: dummy
+
+Start-Date: dummy
+Commandline: dummy
+Comment: A test comment
+Install: pkg2:amd64 (1)
+End-Date: dummy" cathistory
diff --git a/test/integration/test-ignore-provides-if-versioned-breaks b/test/integration/test-ignore-provides-if-versioned-breaks
index ebcbecf..27197e1 100755
--- a/test/integration/test-ignore-provides-if-versioned-breaks
+++ b/test/integration/test-ignore-provides-if-versioned-breaks
@@ -32,7 +32,7 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Breaks: foo-same'
 
 
 setupaptarchive
-
+testfailuremsg 'E: Conflict: foo-provider:i386=1.0 -> not foo-breaker-none:i386 but foo-breaker-none:i386=1.0 -> foo-breaker-none:i386' aptget install foo-provider foo-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -43,7 +43,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -71,6 +71,7 @@ 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
 
+testfailuremsg 'E: Conflict: foo-foreign-breaker-none:i386=1.0 -> foo-foreign-breaker-none:i386 -> not foo-foreign-provider:i386=1.0 but foo-foreign-provider:i386=1.0' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -81,7 +82,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -109,6 +110,7 @@ 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
 
+testfailuremsg 'E: Conflict: foo-same-provider:i386=1.0 -> not foo-same-breaker-none:i386 but foo-same-breaker-none:i386=1.0 -> foo-same-breaker-none:i386' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -119,7 +121,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
diff --git a/test/integration/test-ignore-provides-if-versioned-conflicts b/test/integration/test-ignore-provides-if-versioned-conflicts
index 3243cfb..caff5e3 100755
--- a/test/integration/test-ignore-provides-if-versioned-conflicts
+++ b/test/integration/test-ignore-provides-if-versioned-conflicts
@@ -33,6 +33,7 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Conflicts: foo-sa
 
 setupaptarchive
 
+testfailuremsg 'E: Conflict: foo-provider:i386=1.0 -> not foo-breaker-none:i386 but foo-breaker-none:i386=1.0 -> foo-breaker-none:i386' aptget install foo-provider foo-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -43,7 +44,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -71,6 +72,7 @@ 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
 
+testfailuremsg 'E: Conflict: foo-foreign-breaker-none:i386=1.0 -> foo-foreign-breaker-none:i386 -> not foo-foreign-provider:i386=1.0 but foo-foreign-provider:i386=1.0' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -81,7 +83,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -109,6 +111,7 @@ 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
 
+testfailuremsg 'E: Conflict: foo-same-provider:i386=1.0 -> not foo-same-breaker-none:i386 but foo-same-breaker-none:i386=1.0 -> foo-same-breaker-none:i386' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -119,7 +122,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
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-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove
index 208bd14..20a0968 100755
--- a/test/integration/test-kernel-helper-autoremove
+++ b/test/integration/test-kernel-helper-autoremove
@@ -45,10 +45,6 @@ testprotected() {
 	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...
@@ -60,7 +56,7 @@ The following packages were automatically installed and are no longer required:
    ${CURRENTKERNEL}+variant (5-1)
    ${CURRENTKERNEL}-686-pae:i386 (5-1)
    ${CURRENTKERNEL}-dbg (5-1)
-Use '$AUTOREMOVE' to remove them.
+Use 'apt 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...
@@ -74,13 +70,13 @@ The following packages were automatically installed and are no longer required:
    ${CURRENTKERNEL}-686-pae:i386 (5-1)
    ${CURRENTKERNEL}-dbg (5-1)
    ${CURRENTKERNEL}-rt (5-1)
-Use '$AUTOREMOVE' to remove them.
+Use 'apt 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.
+Use 'apt 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...
diff --git a/test/integration/test-method-gpgv b/test/integration/test-method-gpgv
index bfa5af4..7d0d867 100755
--- a/test/integration/test-method-gpgv
+++ b/test/integration/test-method-gpgv
@@ -7,7 +7,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 setupenvironment
 configarchitecture 'i386'
 
-cat > faked-apt-key <<EOF
+cat > faked-gpgv <<EOF
 #!/bin/sh
 set -e
 find_gpgv_status_fd() {
@@ -24,7 +24,7 @@ GPGSTATUSFD="\$(find_gpgv_status_fd "\$@")"
 cat >&\${GPGSTATUSFD} gpgv.output
 cat gpgv.output
 EOF
-chmod +x faked-apt-key
+chmod +x faked-gpgv
 
 testgpgv() {
 	echo "$4" > gpgv.output
@@ -38,37 +38,113 @@ testgpgv() {
 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'
+	testsuccess grep '^201 URI Done$' method.output
 	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'
+	testsuccess grep '^201 URI Done$' method.output
+
+	testgpgv 'Good signed with long keyid and asserted' '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
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 rsa1024'
+	testsuccess grep '^201 URI Done$' method.output
+	testgpgv 'Good signed with fingerprint and asserted' '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
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 rsa1024'
+	testsuccess grep '^201 URI Done$' method.output
+
+	testgpgv 'Not asserted in the next level' 'SoonWorthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '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
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 brainpoolP256r1'
+	testsuccess grep '^201 URI Done$' method.output
+
+	testgpgv 'Not asserted in the future level' 'LaterWorthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '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
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 nistp256'
+	testsuccess grep '^201 URI Done$' method.output
 
 	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'
+	testsuccess grep '^201 URI Done$' method.output
 	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'
+	testsuccess grep '^201 URI Done$' method.output
 
-	testgpgv 'Untrusted signed with long keyid' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+	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 '^400 URI Failure$' method.output
 	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>
+	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
+	testsuccess grep '^400 URI Failure$' method.output
+
+	testgpgv 'Unasserted 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 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 rsa1024'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testgpgv 'Unaserted 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 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 rsa1024'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' 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
+	testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak algorithm (SHA1)$' method.output
+	testsuccess grep '^201 URI Done$' 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
+	testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak algorithm (SHA1)$' method.output
+	testsuccess grep '^201 URI Done$' method.output
 
 	testgpgv 'No Pubkey with long keyid' 'NoPubKey: NO_PUBKEY E8525D47528144E2' '' '[GNUPG:] ERRSIG E8525D47528144E2 1 11 00 1472744666 9
 [GNUPG:] NO_PUBKEY E8525D47528144E2'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: .*public key is not available' method.output
 	testgpgv 'No Pubkey with fingerprint' 'NoPubKey: NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2' '' '[GNUPG:] ERRSIG DE66AECA9151AFA1877EC31DE8525D47528144E2 1 11 00 1472744666 9
 [GNUPG:] NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: .*public key is not available' method.output
 
-	testgpgv 'Expired key with long keyid' 'Worthless: EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>' '' '[GNUPG:] EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>
+	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>
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: The following signatures were invalid: EXPKEYSIG' method.output
+	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'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: The following signatures were invalid: EXPKEYSIG' method.output
+
+	testgpgv 'Expired signature (gpgv-g10code)' 'Worthless: EXPSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>, ' '' '[GNUPG:] NEWSIG joe@example.org
+[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0
+[GNUPG:] SIG_ID pwbegSQxpqXn4lSZ1N4DLwyM4rc 2016-09-24 1474732092
+[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0
+[GNUPG:] EXPSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-24 1474732092 1491040800 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: The following signatures were invalid: EXPSIG' method.output
+
+	testgpgv 'Expired signature (gpgv-sq)' 'Bad: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>' '' '[GNUPG:] NEWSIG joe@example.org
+[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0
+[GNUPG:] KEYEXPIRED 1491040800
+[GNUPG:] BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: The following signatures were invalid: BADSIG' method.output
+
+	testgpgv 'GPG-untrusted digest (MD5)' 'Worthless: ERRSIG 5A90D141DBAC8DAE, ' '' '[GNUPG:] NEWSIG joe@example.org
+[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0
+[GNUPG:] ERRSIG 5A90D141DBAC8DAE 1 1 00 1734647007 5 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+	testsuccess grep '^\s\+Good:\s\+$' method.output
+	testsuccess grep '^400 URI Failure$' method.output
+	testsuccess grep 'Message: The following signatures were invalid: ERRSIG' method.output
 }
 
 echo 'Test' > message.data
@@ -90,8 +166,11 @@ EOF
 gpgvmethod() {
 	echo "601 Configuration
 Config-Item: Debug::Acquire::gpgv=1
-Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv
 Config-Item: APT::Hashes::SHA1::Weak=true
+Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1
+Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256
+Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048
 
 600 URI Acquire
 URI: file://${TMPWORKINGDIRECTORY}/message.sig
@@ -103,8 +182,11 @@ testrun
 gpgvmethod() {
 	echo "601 Configuration
 Config-Item: Debug::Acquire::gpgv=1
-Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv
 Config-Item: APT::Hashes::SHA1::Weak=true
+Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1
+Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256
+Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048
 
 600 URI Acquire
 URI: file://${TMPWORKINGDIRECTORY}/message.sig
@@ -117,8 +199,11 @@ testrun
 gpgvmethod() {
 	echo "601 Configuration
 Config-Item: Debug::Acquire::gpgv=1
-Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv
 Config-Item: APT::Hashes::SHA1::Weak=true
+Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1
+Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256
+Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048
 
 600 URI Acquire
 URI: file://${TMPWORKINGDIRECTORY}/message.sig
@@ -140,8 +225,11 @@ testsuccess grep 'verified because the public key is not available: GOODSIG' met
 gpgvmethod() {
 	echo "601 Configuration
 Config-Item: Debug::Acquire::gpgv=1
-Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv
 Config-Item: APT::Hashes::SHA1::Weak=true
+Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1
+Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256
+Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048
 
 600 URI Acquire
 URI: file://${TMPWORKINGDIRECTORY}/message.sig
@@ -168,18 +256,41 @@ 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
+testsuccess apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -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
+testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -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
+testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -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
+testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
 rm -rf rootdir/var/lib/apt/lists
+
+gpgvmethod() {
+	echo "601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv
+Config-Item: APT::Hashes::SHA1::Weak=true
+Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=invalid
+
+600 URI Acquire
+URI: file://${TMPWORKINGDIRECTORY}/message.sig
+Filename: ${TMPWORKINGDIRECTORY}/message.data
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!
+" | runapt "${METHODSDIR}/gpgv"
+}
+
+
+echo '[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
+[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 brainpoolP256r1' > gpgv.output
+
+msgtest "Warns about invalid specification" ">=invalid"
+gpgvmethod >method.output 2>&1 || true
+testsuccess --nomsg grep "Message: Unrecognized public key specification '>=invalid' in option APT::Key::Assert-Pubkey-Algo::Next" method.output
diff --git a/test/integration/test-method-gpgv-legacy-keyring b/test/integration/test-method-gpgv-legacy-keyring
index 5af955c..55ad246 100755
--- a/test/integration/test-method-gpgv-legacy-keyring
+++ b/test/integration/test-method-gpgv-legacy-keyring
@@ -7,29 +7,42 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 setupenvironment
 configarchitecture "amd64"
 
-insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'testing' 'foo' 'all' '1'
 
 buildaptarchive
 setupaptarchive --no-update
+changetowebserver
 
-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 [247 B]
-Get:3 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main Translation-en [224 B]
+alias inrelease_size="stat -c %s aptarchive/dists/testing/InRelease"
+
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} testing InRelease [$(inrelease_size) B]
+Get:2 http://localhost:${APTHTTPPORT} testing/main all Packages [248 B]
+Get:3 http://localhost:${APTHTTPPORT} testing/main Translation-en [225 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
+mv rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg rootdir/etc/apt/trusted.gpg
+
+if test -e "${METHODSDIR}/sqv"; then
+    missing_key="The signatures couldn't be verified because no keyring is specified"
+else
+    missing_key="The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE"
+fi
+
+testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease
+Reading package lists...
+W: http://localhost:${APTHTTPPORT}/dists/testing/InRelease: Loading ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg from deprecated option Dir::Etc::Trusted" aptget update -q -o Dir::Etc::trusted=trusted.gpg
 
-testwarningequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
-Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
+testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease
+Err:1 http://localhost:${APTHTTPPORT} testing InRelease
+  $missing_key
 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
+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} testing InRelease: $missing_key
+W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/testing/InRelease  $missing_key
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -q
+
+rmdir rootdir/etc/apt/trusted.gpg.d
 
-# 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]
+testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease
 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
+W: http://localhost:${APTHTTPPORT}/dists/testing/InRelease: Loading ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg from deprecated option Dir::Etc::Trusted" aptget update -q -o Dir::Etc::trusted=trusted.gpg
+
diff --git a/test/integration/test-method-mirror b/test/integration/test-method-mirror
index ce44b86..79c6754 100755
--- a/test/integration/test-method-mirror
+++ b/test/integration/test-method-mirror
@@ -124,9 +124,22 @@ 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_*'
+sed -i -e 's#/mirror\.txt\.gz stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/*
+
+mv rootdir/etc/apt/sources.list.d rootdir/etc/apt/sources.list.d.bak
+mkdir rootdir/etc/apt/sources.list.d
+msgmsg 'fail gracefully if mirror uri has no filename'
+echo "deb mirror://localhost:${APTHTTPPORT}/ stable main" > rootdir/etc/apt/sources.list.d/mirrordir.list
+testfailure apt update
+
+msgmsg 'but succeed if it is indeed a mirror list'
+ln -s mirror.txt aptarchive/index.html
+testsuccess apt update
+rm aptarchive/index.html rootdir/etc/apt/sources.list.d/mirrordir.list
+rmdir rootdir/etc/apt/sources.list.d
+mv rootdir/etc/apt/sources.list.d.bak rootdir/etc/apt/sources.list.d
 
 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
@@ -242,7 +255,6 @@ 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
diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed
index fc63d0e..9d8920e 100755
--- a/test/integration/test-multiarch-allowed
+++ b/test/integration/test-multiarch-allowed
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed'
@@ -63,20 +64,23 @@ 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
+testfailuremsg "E: Conflict: foo:amd64=1 -> not foo:i386 -> not needsfoo:i386 but needsfoo:i386=1 -> needsfoo:i386" aptget install needsfoo:i386 foo:amd64 -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s --solver internal
+testfailuremsg "E: Conflict: foo:amd64=1 -> not foo:i386 -> not needsfoo:i386 but needsfoo:i386=1 -> needsfoo:i386" aptget install foo:amd64 needsfoo:i386 -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s --solver internal
+testfailuremsg "E: Conflict: foo:i386=1 -> not foo:amd64 -> not needsfoo:amd64 but needsfoo:amd64=1 -> needsfoo:amd64" aptget install needsfoo foo:i386 -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s --solver internal
 
 solveableinsinglearch1() {
 	testsuccessequal "Reading package lists...
@@ -127,6 +131,16 @@ Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s
 testneedsfooallgood 'needsfooany'
 testneedsfooallgood 'needsfoover1'
 
+if [ "$APT_SOLVER" = "3.0" ]; then
+NEEDSFOO2NATIVE="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2 : Depends: foo:any (>= 2)
+E: Unsatisfiable dependency group needsfoover2:amd64 -> foo:any:any"
+NEEDSFOO2FOREIGN="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2:i386 : Depends: foo:any (>= 2)
+E: Unsatisfiable dependency group needsfoover2:i386 -> foo:any:any"
+else
 NEEDSFOO2NATIVE="$BADPREFIX
 The following packages have unmet dependencies:
  needsfoover2 : Depends: foo:any (>= 2)
@@ -135,32 +149,38 @@ NEEDSFOO2FOREIGN="$BADPREFIX
 The following packages have unmet dependencies:
  needsfoover2:i386 : Depends: foo:any (>= 2)
 E: Unable to correct problems, you have held broken packages."
+fi
 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() {
+	testfailuremsg 'E: Conflict: hatesfoo:amd64=1 -> hatesfoo:amd64 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfoo -s --solver 3.0
+	testfailuremsg 'E: Conflict: hatesfooany:amd64=1 -> hatesfooany:amd64 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfooany -s --solver 3.0
+	testfailuremsg 'E: Conflict: hatesfoonative:amd64=1 -> hatesfoonative:amd64 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfoonative -s --solver 3.0
 	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
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s --solver internal
 	# the message differs slightly between single and multiarch
-	testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s
+	testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s --solver internal
 	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
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s --solver internal
 }
 solveableinsinglearch2
+testfailuremsg "E: Conflict: hatesfoo:amd64=1 -> hatesfoo:amd64 -> not foo:i386=1 but foo:i386=1" aptget install foo:i386 hatesfoo -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s --solver internal
+testfailuremsg "E: Conflict: hatesfooany:amd64=1 -> hatesfooany:amd64 -> not foo:i386=1 but foo:i386=1" aptget install foo:i386 hatesfooany -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s --solver internal
 testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
@@ -171,11 +191,12 @@ Inst hatesfoonative (1 unstable [amd64])
 Conf foo:i386 (1 unstable [i386])
 Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s
 
+testfailuremsg "E: Unsatisfiable dependency group needscoolfoo:i386 -> coolfoo:i386" aptget install needscoolfoo:i386 -s --solver 3.0
 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
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s --solver internal
 solveneedscoolfooanyin() {
 	local NEEDSCOOL='needscoolfooany'
 	if [ "$1" != 'amd64' ]; then NEEDSCOOL="${NEEDSCOOL}:$1"; fi
@@ -243,15 +264,17 @@ Inst needscoolfoover1 (1 unstable [amd64])
 Conf coolfoo (1 unstable [amd64])
 Conf coolfoover (1 unstable [amd64])
 Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s
+	testfailuremsg "E: Unsatisfiable dependency group needscoolfoover2:amd64 -> coolfoo:any:any" aptget install needscoolfoover2 -s --solver 3.0
 	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
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s --solver internal
+	testfailuremsg "E: Unsatisfiable dependency group needscoolfoover3:amd64 -> coolfoo:any:any" aptget install needscoolfoover3 -s --solver 3.0
 	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
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s --solver internal
 }
 solveableinsinglearch3
 
diff --git a/test/integration/test-multiarch-barbarian b/test/integration/test-multiarch-barbarian
index 293f227..b897834 100755
--- a/test/integration/test-multiarch-barbarian
+++ b/test/integration/test-multiarch-barbarian
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 buildsimplenativepackage 'foreign-foo' 'amd64,i386' '1' 'stable' 'Multi-Arch: foreign
diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign
index 713b27b..5a7b1a3 100755
--- a/test/integration/test-multiarch-foreign
+++ b/test/integration/test-multiarch-foreign
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386' 'armel'
 
 insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
@@ -178,16 +179,18 @@ 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:
 '
+	testfailuremsg "E: Conflict: ${1%:*}:$4=1.0 -> not hates-foo:amd64 but hates-foo:amd64=1.0 -> hates-foo:amd64"  aptget install $1 hates-foo -s --solver 3.0
 	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
+E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s --solver internal
+	testfailuremsg "E: Conflict: $2:amd64=1.0 -> $2:amd64 -> not foo:$4=1.0 but foo:$4=1.0" aptget install $1 $2 -s --solver 3.0
 	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
+E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s --solver internal
 	testsuccessequal "Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
diff --git a/test/integration/test-not-upgrading-removed-depends b/test/integration/test-not-upgrading-removed-depends
new file mode 100755
index 0000000..c7d67af
--- /dev/null
+++ b/test/integration/test-not-upgrading-removed-depends
@@ -0,0 +1,51 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+allowremovemanual
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'untouchable-for-solving' 'all' '1' 'Conflicts: main'
+insertpackage 'installed' 'bad' 'all' '1' 'Depends: main (= 1)'
+insertpackage 'unstable' 'bad' 'all' '2' 'Depends: main (= 2), untouchable-for-solving'
+
+insertpackage 'installed' 'main' 'all' '1'
+insertpackage 'unstable' 'main' 'all' '2' 'Breaks: bad'
+
+insertpackage 'unstable' 'else' 'all' '1'
+insertpackage 'unstable' 'meta' 'all' '1' 'Depends: main (= 2) | else'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+  bad
+The following packages will be upgraded:
+  main
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv bad [1]
+Inst main [1] (2 unstable [all])
+Conf main (2 unstable [all])' apt install -s main
+testsuccess apt install -s main -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+testfailure grep 'untouchable-for-solving' rootdir/tmp/testsuccess.output
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+  main
+The following packages will be REMOVED:
+  bad
+The following NEW packages will be installed:
+  meta
+The following packages will be upgraded:
+  main
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv bad [1]
+Inst main [1] (2 unstable [all])
+Inst meta (1 unstable [all])
+Conf main (2 unstable [all])
+Conf meta (1 unstable [all])' apt install -s meta
+testsuccess apt install -s meta -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+testfailure grep 'untouchable-for-solving' rootdir/tmp/testsuccess.output
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-parse-all-archs-into-cache b/test/integration/test-parse-all-archs-into-cache
index 7485431..b1992e7 100755
--- a/test/integration/test-parse-all-archs-into-cache
+++ b/test/integration/test-parse-all-archs-into-cache
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 configarchitecture 'i386'
+allowremovemanual
 
 insertpackage 'unstable' 'bar' 'i386' '1' 'Depends: foo'
 insertpackage 'unstable' 'foo' 'i386' '1' 'Multi-Arch: foreign
diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage
index 38e455b..0261df6 100755
--- a/test/integration/test-pdiff-usage
+++ b/test/integration/test-pdiff-usage
@@ -38,14 +38,7 @@ wasmergeused() {
 	#apt update "$@" 2>&1 | tee rootdir/tmp/testsuccess.output
 
 	msgtest 'No intermediate patch files' 'still exist'
-	local EDS="$(find rootdir/var/lib/apt/lists -name '*.ed' -o -name '*.ed.*')"
-	if [ -z "$EDS" ]; then
-		msgpass
-	else
-		echo
-		echo "$EDS"
-		msgfail
-	fi
+	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'
@@ -252,7 +245,7 @@ SHA256-Download:
 	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-*
+	rm -f rootdir/var/lib/apt/lists/*_Contents-* rootdir/var/lib/apt/lists/*.diff_Index*
 	webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/hacked-i386.gz'
 	testfailure apt update "$@"
 	cp rootdir/tmp/testfailure.output patchdownload.output
@@ -389,21 +382,28 @@ testcase() {
 	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}_${f}"
-		printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${f}"
+		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}"
+		chmod 777 "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"
+	chmod 777 "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"
+	chmod 777 "rootdir/var/lib/apt/lists-bak/localhost:${APTHTTPPORT}_${PREFIX}Packages.diff_Index.xz"
 }
 
-partialleftovers() { generatepartialleftovers 'Packages' 'Packages-patched'; }
+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}"; }
+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}" "redirectme_Packages-patched.${LOWCOSTEXT}"; }
+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"
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
index fec8bec..15464bd 100755
--- a/test/integration/test-phased-updates-upgrade
+++ b/test/integration/test-phased-updates-upgrade
@@ -19,6 +19,11 @@ 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'
@@ -48,17 +53,47 @@ 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 phased phased-dep phased-depends-ready-dep ready-dep
+  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 5 not 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])" aptget dist-upgrade -s -q
+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...
@@ -68,8 +103,8 @@ 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 ready-dep
-7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+  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])
@@ -78,6 +113,7 @@ 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])
@@ -85,7 +121,8 @@ 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])" aptget dist-upgrade -s -q -o $always=1
+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...
@@ -95,8 +132,8 @@ 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 ready-dep
-7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+  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])
@@ -105,6 +142,7 @@ 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])
@@ -112,7 +150,8 @@ 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])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+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...
@@ -120,17 +159,21 @@ 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 phased phased-dep phased-depends-ready-dep ready-dep
+  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 5 not 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])" aptget dist-upgrade -s -q -o $never=1
+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...
@@ -138,29 +181,36 @@ 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 phased phased-dep phased-depends-ready-dep ready-dep
+  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 5 not 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])" aptget upgrade -s -q --with-new-pkgs
+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 phased phased-dep
-  phased-depends-ready-dep ready-dep
+  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 6 not 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])
-Conf phased-security (3 unstable-updates [all])" aptget upgrade -s -q
+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...
@@ -168,37 +218,46 @@ 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:
-  phased phased-depends-ready-dep ready-dep
+  ready-dep
 The following packages will be upgraded:
   depends-phased-dep depends-phased-new phased-dep phased-security
-4 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
+  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])" aptget $upgrade -s -q depends-phased-dep
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget $upgrade -s -q depends-phased-dep --solver internal # FIXME? 3.0 does not support overrides of the policy
 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 phased phased-depends-ready-dep ready-dep
+  depends-phased-new ready-dep
 The following packages will be upgraded:
-  depends-phased-dep phased-dep phased-security
-3 upgraded, 0 newly installed, 0 to remove and 4 not 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])" aptget upgrade -s -q depends-phased-dep
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q depends-phased-dep --solver internal # FIXME? 3.0 does not support overrides of the policy
 
 # install does not respect phasing
 testsuccessequal "Reading package lists...
@@ -206,17 +265,18 @@ 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
-4 upgraded, 0 newly installed, 0 to remove and 3 not 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])" aptget install -s -q phased depends-phased-dep phased-security
-
+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
@@ -246,8 +306,8 @@ 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 ready-dep
-7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+  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])
@@ -256,6 +316,7 @@ 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])
@@ -263,7 +324,8 @@ 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])" aptget dist-upgrade -s -q -o $always=1
+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
@@ -293,8 +355,8 @@ 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 ready-dep
-7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+  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])
@@ -303,6 +365,7 @@ 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])
@@ -310,7 +373,8 @@ 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])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+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...
diff --git a/test/integration/test-policy-pinning b/test/integration/test-policy-pinning
index dc3192f..99f1939 100755
--- a/test/integration/test-policy-pinning
+++ b/test/integration/test-policy-pinning
@@ -80,8 +80,9 @@ testglobalpolicy
 
 msgmsg 'Test with specific packages'
 
+# Yeesh, the XB-Source stuff is hacky, hopefully this won't break.
 buildsimplenativepackage "coolstuff" "all" "1.0" "stable"
-buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports"
+buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports" "XB-Source: coolstuff (2.0~bpo1-source-version)"
 
 setupaptarchive
 
@@ -434,6 +435,20 @@ testsuccessequal "coolstuff:
      1.0 500
         500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
 
+echo "Package: coolstuff
+Pin: source-version 2.0~bpo1-source-version
+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
diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers
index 7c3f323..e16e98e 100755
--- a/test/integration/test-prefer-higher-priority-providers
+++ b/test/integration/test-prefer-higher-priority-providers
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 configarchitecture 'native'
+native=$(getarchitecture 'native')
 
 insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important'
 insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional'
@@ -90,6 +91,7 @@ Inst awesome (1 unstable [all])
 Conf baz (1 unstable [all])
 Conf awesome (1 unstable [all])" aptget install awesome foo- bar- -s
 
+testfailuremsg "E: Conflict: awesome:$native=1 -> awesome:$native -> baz:$native=1 -> baz:$native but not baz:$native" aptget install awesome foo- bar- baz- -s --solver 3.0
 testfailureequal "Reading package lists...
 Building dependency tree...
 Package 'foo' is not installed, so not removed
@@ -103,4 +105,4 @@ 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
+E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s --solver internal
diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching
index 5233dec..db7e294 100755
--- a/test/integration/test-release-candidate-switching
+++ b/test/integration/test-release-candidate-switching
@@ -117,6 +117,8 @@ 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
 
+phonon_backend_default="phonon-backend-null (4:4.20.0+sid)"
+[ "$APT_SOLVER" != "3.0" ] || phonon_backend_default="phonon-backend-xine (4:4.6.0really4.4.2-1+sid)"
 testfailureequal "Reading package lists...
 Building dependency tree...
 Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
@@ -127,14 +129,14 @@ The following additional packages will be installed:
    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)
+   $phonon_backend_default
 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)
+   $phonon_backend_default
 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.
@@ -431,7 +433,23 @@ 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
+E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V --solver internal
+
+# if one depends doesn't work, we don't need to look deeper… (solver3 version)
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '1.0' (experimental [all]) for 'uninstallablepkg'
+Solving dependencies...
+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 it is not going to be installed
+E: Unsatisfiable dependency group uninstallablepkg:i386 -> libmtp8:i386" aptget install uninstallablepkg/experimental --trivial-only -V --solver 3.0
 
 insertinstalledpackage 'libmtp8' 'i386'  '1'
 insertinstalledpackage 'amarok' 'i386' '3' 'Depends: amarok-common (= 3), libmtp8 (>= 1)'
diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification
index 5f873b8..00c72d7 100755
--- a/test/integration/test-releasefile-verification
+++ b/test/integration/test-releasefile-verification
@@ -97,10 +97,27 @@ 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
+	testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
 	testsuccess grep -E "$1" rootdir/tmp/testwarning.output
 }
 
+foreachgpg() {
+    rm -f rootdir/etc/apt/apt.conf.d/00gpgvcmd
+	local sqv="true"
+	if [ "$1" = "--no-sqv" ]; then
+		local sqv=
+		shift
+	fi
+	if [ "$sqv" ]; then
+		"$@"
+	fi
+	for GPGV in "gpgv-sq" "gpgv-g10code"; do
+		msgmsg "Forcing $GPGV to be used"
+		echo "APT::Key::GPGVCommand \"$GPGV\";" > "rootdir/etc/apt/apt.conf.d/00gpgvcmd"
+		"$@"
+	done
+}
+
 runtest() {
 	msgmsg 'Cold archive signed by' 'Joe Sixpack'
 	prepare "${PKGFILE}"
@@ -137,39 +154,17 @@ runtest() {
 	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'
+	updatewithwarnings '^W: .* (EXPKEYSIG|Expired)'
 	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'
+	successfulaptgetupdate 'NO_PUBKEY\|GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
 	installaptold
@@ -179,7 +174,7 @@ runtest() {
 	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'
+	successfulaptgetupdate 'EXPKEYSIG\|GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
 	rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
@@ -189,7 +184,7 @@ runtest() {
 	prepare "${PKGFILE}"
 	rm -rf rootdir/var/lib/apt/lists
 	signreleasefiles 'Marvin Paranoid'
-	updatewithwarnings '^W: .* NO_PUBKEY'
+	updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)'
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
 	failaptold
@@ -214,20 +209,21 @@ runtest() {
 	msgmsg 'Good warm archive signed by' 'Marvin Paranoid'
 	prepare "${PKGFILE}-new"
 	signreleasefiles 'Marvin Paranoid'
-	updatewithwarnings '^W: .* NO_PUBKEY'
+	updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)'
 	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
+    # Use a colon here to test weird filenames too
+	cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rex:expired.gpg
 	signreleasefiles 'Rex Expired'
-	updatewithwarnings '^W: .* EXPKEYSIG'
+	updatewithwarnings '^W: .* (EXPKEYSIG|Expired)'
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
 	installaptold
-	rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+	rm rootdir/etc/apt/trusted.gpg.d/rex:expired.gpg
 
 	msgmsg 'Good warm archive signed by' 'Joe Sixpack'
 	prepare "${PKGFILE}-new"
@@ -241,7 +237,7 @@ runtest() {
 	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'
+	updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)'
 
 	msgmsg 'Cold archive signed by good keyring' 'Marvin Paranoid'
 	prepare "${PKGFILE}"
@@ -271,12 +267,12 @@ runtest() {
 	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)"
+	local MARVIN="DE66AECA9151AFA1877EC31DE8525D47528144E2"
 	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: .*'
+	updatewithwarnings '^W: .* (be verified because the public key is not available: .*|No good signature from required signer)'
 
 	msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid'
 	rm -rf rootdir/var/lib/apt/lists
@@ -290,12 +286,12 @@ runtest() {
 	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'
+	successfulaptgetupdate 'NoPubKey: GOODSIG\|DE66AECA9151AFA1877EC31DE8525D47528144E2'
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
 	installaptold
 
-	local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
+	local SIXPACK="34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE"
 	msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
 	rm -rf rootdir/var/lib/apt/lists
 	signreleasefiles 'Joe Sixpack'
@@ -335,7 +331,7 @@ Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
 	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'
+	updatewithwarnings 'W: .* (public key is not available: GOODSIG|No good signature from required signer:)'
 	testsuccessequal "$(cat "${PKGFILE}")
 " aptcache show apt
 	installaptold
@@ -365,7 +361,7 @@ Signed-By: ${MARVIN} ${MARVIN}, \\
 	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)"
+	local SEBASTIAN="648E6A33FDE5CB5BA2D896A3CA3E1DFF1E6BE149"
 	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
@@ -384,22 +380,26 @@ Signed-By: ${SEBASTIAN}" rootdir/var/lib/apt/lists/*Release
 	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'
+	updatewithwarnings 'W: .* (public key is not available: GOODSIG|No good signature from required signer:)'
 	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)"
+	local SUBKEY="4281DEDBD466EAE8C1F4157E5B6896415D44C43E"
+	# This is only supported for gpgv, so require an explicit gpgv command,
+	# otherwise the default verification backend may be sqv.
+	if [ "$GPGV" ]; then
 	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\
+		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")
+		touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+		successfulaptgetupdate
+		testsuccessequal "$(cat "${PKGFILE}-new")
 " aptcache show apt
-	installaptnew
+		installaptnew
+	fi
 	rm -f rootdir/etc/apt/trusted.gpg.d/sebastiansubkey.gpg
 }
 
@@ -420,6 +420,18 @@ runtest2() {
 " aptcache show apt
 	failaptnew
 
+	msgmsg 'Cold archive signed by' 'Empty signature'
+	rm -rf rootdir/var/lib/apt/lists
+	find aptarchive -name Release -exec touch {}.gpg \;
+	testfailuremsg "E: GPG error: http://localhost:${APTHTTPPORT}  Release: Signed file isn't valid, got 'NODATA' (does the network require authentication?)" aptget update -o Debug::gpgv=1
+
+	msgmsg 'Cold archive signed by' 'Unknown format signature'
+	rm -rf rootdir/var/lib/apt/lists
+	find aptarchive -name Release -exec sh -c "echo Hello > {}.gpg" \;
+	testfailuremsg "E: GPG error: http://localhost:${APTHTTPPORT}  Release: Signed file isn't valid, got 'NODATA' (does the network require authentication?)" aptget update
+
+	find aptarchive/ \( -name InRelease -o -name Release.gpg \) -delete
+
 	# Unsigned archive from the beginning must also be detected.
 	msgmsg 'Cold archive signed by' 'nobody'
 	rm -rf rootdir/var/lib/apt/lists
@@ -449,25 +461,25 @@ Acquire::AllowInsecureRepositories "1";
 Acquire::AllowDowngradeToInsecureRepositories "1";
 EOF
 # the hash marked as configurable in our gpgv method
-export APT_TESTS_DIGEST_ALGO='SHA224'
+export APT_TESTS_DIGEST_ALGO='SHA512'
 
 successfulaptgetupdate() {
-	testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+	testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
 	if [ -n "$1" ]; then
 		cp rootdir/tmp/testsuccess.output aptupdate.output
 		testsuccess grep "$1" aptupdate.output
 	fi
 }
-runtest3 'Trusted'
+foreachgpg runtest3 'Trusted'
 
 successfulaptgetupdate() {
-	testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+	testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
 	if [ -n "$1" ]; then
 		testsuccess grep "$1" rootdir/tmp/testwarning.output
 	fi
-	testsuccess grep 'uses weak digest algorithm' rootdir/tmp/testwarning.output
+	testsuccess grep 'uses weak algorithm' rootdir/tmp/testwarning.output
 }
-runtest3 'Weak'
+foreachgpg --no-sqv 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
@@ -478,14 +490,14 @@ runfailure() {
 		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
+		testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
+		testsuccess grep 'The following signatures were invalid\|MD5 is not considered secure' rootdir/tmp/testfailure.output
 		testnopackage 'apt'
-		testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+		testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=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
+		testwarning aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
 		failaptold
 		sed -i 's#^deb\(-src\)\? \[allow-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
 
@@ -493,17 +505,13 @@ runfailure() {
 		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
+		testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1
 		testnopackage 'apt'
-		updatewithwarnings '^W: .* NO_PUBKEY'
+		updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)'
 		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
+foreachgpg --no-sqv runfailure
diff --git a/test/integration/test-releasefile-verification-noflat b/test/integration/test-releasefile-verification-noflat
index 3953c64..d1b1d84 100755
--- a/test/integration/test-releasefile-verification-noflat
+++ b/test/integration/test-releasefile-verification-noflat
@@ -12,7 +12,7 @@ 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 ' ')"
+SIXPACK="34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE"
 
 testsuccess aptget update
 
diff --git a/test/integration/test-resolve-by-keep-obsolete-removals b/test/integration/test-resolve-by-keep-obsolete-removals
new file mode 100755
index 0000000..3fe824f
--- /dev/null
+++ b/test/integration/test-resolve-by-keep-obsolete-removals
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+configarchitecture "amd64"
+
+insertpackage 'installed' 'obsolete-dependency' 'amd64' '1.0'
+insertpackage 'installed,unstable' 'foo' 'amd64' '2.0' 'Depends: obsolete-dependency'
+
+setupaptarchive
+
+echo 'Debug::pkgProblemResolver "1";' > rootdir/etc/apt/apt.conf.d/debug-problemresolver
+
+# We mark obsolete dependency for removal in B, then in C it is restored.
+testsuccessequal "A: foo:amd64 < 2.0 @ii mK >
+A: obsolete-dependency:amd64 < 1.0 @ii mK >
+B: foo:amd64 < 2.0 @ii mK Ib >
+B: obsolete-dependency:amd64 < 1.0 @ii mR >
+Entering ResolveByKeep
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+Keeping package foo:amd64
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+Package foo:amd64 foo:amd64 Depends on obsolete-dependency:amd64 < 1.0 @ii mR >
+  Keeping Package obsolete-dependency:amd64 due to Depends
+C: foo:amd64 < 2.0 @ii mK >
+C: obsolete-dependency:amd64 < 1.0 @ii mK >" runapt ${APTTESTHELPERSBINDIR}/testkeep obsolete-dependency
+
+# We have protected our decision to remove the obsolete dependency, so we fail to resolve it.
+testfailureequal "A: foo:amd64 < 2.0 @ii mK >
+A: obsolete-dependency:amd64 < 1.0 @ii mK >
+B: foo:amd64 < 2.0 @ii mK Ib >
+B: obsolete-dependency:amd64 < 1.0 @ii pmR >
+Entering ResolveByKeep
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+Keeping package foo:amd64
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+Package foo:amd64 foo:amd64 Depends on obsolete-dependency:amd64 < 1.0 @ii pmR >
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+  Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib >
+C: foo:amd64 < 2.0 @ii mK Ib >
+C: obsolete-dependency:amd64 < 1.0 @ii pmR >
+E: Unable to correct problems, you have held broken packages." runapt ${APTTESTHELPERSBINDIR}/testkeep obsolete-dependency  --hold
diff --git a/test/integration/test-resolver-delays-remove-decisions b/test/integration/test-resolver-delays-remove-decisions
index 8f0c7da..062a2e7 100755
--- a/test/integration/test-resolver-delays-remove-decisions
+++ b/test/integration/test-resolver-delays-remove-decisions
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 insertinstalledpackage 'stuff' 'all' '1'
@@ -19,6 +20,18 @@ 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...
+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
+
 testsuccessequal "Reading package lists...
 Building dependency tree...
   MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
@@ -41,10 +54,27 @@ The following NEW packages will be installed:
 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
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
 
 insertinstalledpackage 'uninstallable' 'all' '1'
 
+testsuccessequal "Reading package lists...
+Building dependency tree...
+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
+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
+
 testsuccessequal "Reading package lists...
 Building dependency tree...
   MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
@@ -53,7 +83,7 @@ Building dependency tree...
     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 K > FU=0
+    MarkDelete stuff:amd64 < 1 @ii mK > FU=0
 Starting pkgProblemResolver with broken count: 0
 Starting 2 pkgProblemResolver with broken count: 0
 Done
@@ -71,19 +101,37 @@ 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
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
 
 # Same solution but the installs are considered protected now as there is no other solution
+testsuccessequal "Reading package lists...
+Building dependency tree...
+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
+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
+
 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 K > FU=0
+      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 pK > FU=0
+        MarkInstall uninstallable:amd64 < 1 @ii pmK > FU=0
 Starting pkgProblemResolver with broken count: 0
 Starting 2 pkgProblemResolver with broken count: 0
 Done
@@ -103,4 +151,4 @@ 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
+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 --solver internal
diff --git a/test/integration/test-resolver-provider-exchange b/test/integration/test-resolver-provider-exchange
index 0a85db3..2874b88 100755
--- a/test/integration/test-resolver-provider-exchange
+++ b/test/integration/test-resolver-provider-exchange
@@ -4,9 +4,11 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64'
 
 insertinstalledpackage 'fuse' 'all' '2'
+insertpackage 'unstable' 'fuse' 'all' '2'
 insertpackage 'unstable' 'fuse3' 'all' '3' 'Conflicts: fuse
 Provides: fuse'
 
diff --git a/test/integration/test-same-version-but-different b/test/integration/test-same-version-but-different
index df6753a..595a66f 100755
--- a/test/integration/test-same-version-but-different
+++ b/test/integration/test-same-version-but-different
@@ -30,6 +30,9 @@ 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)"
@@ -96,3 +99,11 @@ testsuccessequal "diff-instsize:
         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-signed-by-option b/test/integration/test-signed-by-option
index 58e4c4b..e6a3fbb 100755
--- a/test/integration/test-signed-by-option
+++ b/test/integration/test-signed-by-option
@@ -66,8 +66,56 @@ xSigned-By:
     -----END PGP PUBLIC KEY BLOCK-----
 EOF
 testfailure apt update  -o Debug::Acquire::gpgv=1
-testsuccess grep "NO_PUBKEY 5A90D141DBAC8DAE" rootdir/tmp/testfailure.output
+testsuccess grep -E "(NO_PUBKEY 5A90D141DBAC8DAE|no keyring is specified)" 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}"
+
+rm -f rootdir/etc/apt/sources.list.d/*
+
+msgtest 'Check that a repository with' 'only the fisrt entry has no Signed-By value works'
+cat > rootdir/etc/apt/sources.list.d/example.sources << EOF
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component
+
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component2
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+EOF
+testsuccess --nomsg aptcache policy
+
+msgtest 'Check that a repository with' 'only the second entry has no Signed-By value works'
+cat > rootdir/etc/apt/sources.list.d/example.sources << EOF
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component2
+EOF
+testsuccess --nomsg aptcache policy
+
+cat > rootdir/etc/apt/sources.list.d/example.sources << EOF
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+
+Types: deb
+URIs: http://example.org/
+Suites: suite
+Components: component2
+Signed-By: DE66AECA9151AFA1877EC31DE8525D47528144E2
+EOF
+testfailuremsg 'E: Conflicting values set for option Signed-By regarding source http://example.org/ suite: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE != DE66AECA9151AFA1877EC31DE8525D47528144E2
+E: The list of sources could not be read.' aptget update --print-uris
diff --git a/test/integration/test-snapshot b/test/integration/test-snapshot
new file mode 100755
index 0000000..31a02ca
--- /dev/null
+++ b/test/integration/test-snapshot
@@ -0,0 +1,340 @@
+#!/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' '-S ' '--snapshot ' '--snapshot=' '-o APT::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
+
+for option in '-S' '-S ' '--snapshot ' '--snapshot=' '-o APT::Snapshot='; do
+	testsuccessequal 'Listing...' apt list --upgradable -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" ${option}BANANA
+	testsuccessequal 'Listing...
+awesome/stable 42 amd64' apt list awesome -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" ${option}BANANA
+done
+
+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 -S 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 -S 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 -S 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-snapshot-upgrades b/test/integration/test-snapshot-upgrades
new file mode 100755
index 0000000..d5e8006
--- /dev/null
+++ b/test/integration/test-snapshot-upgrades
@@ -0,0 +1,156 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+for T in T1 T2; do
+	mkdir "aptarchive/${T}"
+	ln -s ../../incoming "aptarchive/${T}/pool"
+done
+
+buildsimplenativepackage 'awesome' 'amd64' '2' 'stable' 'Depends: libfoo (>= 2)'
+buildsimplenativepackage 'libfoo' 'amd64' '2' 'stable'
+setupaptarchive --no-update
+mv aptarchive/dists aptarchive/T1
+rm incoming/stable.main.pkglist incoming/stable.main.srclist
+
+buildsimplenativepackage 'awesome' 'amd64' '3' 'stable' 'Depends: libfoo (>= 2)'
+setupaptarchive --no-update
+mv aptarchive/dists aptarchive/T2
+rm incoming/stable.main.pkglist incoming/stable.main.srclist
+
+buildsimplenativepackage 'libfoo' 'amd64' '42' 'stable'
+buildsimplenativepackage 'awesome' 'amd64' '42' 'stable'
+setupaptarchive --no-update
+
+changetowebserver
+sed -i 's/http:/[snapshot=enable] http:/' rootdir/etc/apt/sources.list.d/*
+echo "Acquire::Snapshots::URI::Host::localhost \"http://localhost:${APTHTTPPORT}/@SNAPSHOTID@/\";" > rootdir/etc/apt/apt.conf.d/snapshot.conf
+testsuccess aptget update --snapshot T1
+testsuccess aptget update --snapshot T2 --no-list-cleanup
+
+insertinstalledpackage 'awesome' 'amd64' '1' 'Depends: libfoo (>= 1)'
+insertinstalledpackage 'libfoo' 'amd64' '1'
+
+msgmsg 'Snapshotting policy'
+testsuccessequal "libfoo:
+  Installed: 1
+  Candidate: 42
+  Version table:
+     42 500
+        500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+awesome:
+  Installed: 1
+  Candidate: 42
+  Version table:
+     42 500
+        500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome
+testsuccessequal "libfoo:
+  Installed: 1
+  Candidate: 2
+  Version table:
+     2 500
+        500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+awesome:
+  Installed: 1
+  Candidate: 2
+  Version table:
+     2 500
+        500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T1
+testsuccessequal "libfoo:
+  Installed: 1
+  Candidate: 1
+  Version table:
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+awesome:
+  Installed: 1
+  Candidate: 3
+  Version table:
+     3 500
+        500 http://localhost:${APTHTTPPORT}/T2 stable/main amd64 Packages
+ *** 1 100
+        100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T2
+
+
+msgmsg 'Snapshotting show'
+testsuccessequalgrep() {
+	local CMP="$1"
+	local GREP="$2"
+	shift 2
+	testsuccess "$@"
+	mv rootdir/tmp/testsuccess.output base.output
+	testsuccessequal "$CMP" grep "$GREP" base.output
+}
+testsuccessequalgrep 'Version: 42
+Version: 1
+Version: 42
+Version: 1' '^Version: ' aptcache show libfoo awesome
+testsuccessequalgrep 'Version: 2
+Version: 1
+Version: 2
+Version: 1' '^Version: ' aptcache show libfoo awesome -S T1
+testsuccessequalgrep 'Version: 1
+Version: 3
+Version: 1' '^Version: ' aptcache show libfoo awesome -S T2
+
+
+msgmsg 'Snapshotting list'
+testsuccessequal 'Listing...
+awesome/stable 42 amd64 [upgradable from: 1]
+libfoo/stable 42 amd64 [upgradable from: 1]' apt list --upgradeable
+testsuccessequal 'Listing...
+awesome/stable 2 amd64 [upgradable from: 1]
+libfoo/stable 2 amd64 [upgradable from: 1]' apt list --upgradeable -S T1
+testsuccessequal "Listing...
+awesome/stable 3 amd64 [upgradable from: 1]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradeable -S T2
+
+
+msgmsg 'Snapshotting upgrade'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+  awesome libfoo
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst awesome [1] (42 stable [amd64])
+Inst libfoo [1] (42 stable [amd64])
+Conf awesome (42 stable [amd64])
+Conf libfoo (42 stable [amd64])' apt upgrade -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+  awesome libfoo
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libfoo [1] (2 stable [amd64])
+Inst awesome [1] (2 stable [amd64])
+Conf libfoo (2 stable [amd64])
+Conf awesome (2 stable [amd64])' apt upgrade -s -S T1
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+  awesome
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' apt upgrade -s -S T2
+
+msgmsg 'Snapshotting real installs'
+testsuccessequalgrep 'Version: 1' '^Version: ' apt show libfoo/now
+testsuccess apt install libfoo -S T1 -y
+testsuccessequalgrep 'Version: 2' '^Version: ' apt show libfoo/now
+testsuccessequalgrep 'Version: 1' '^Version: ' apt show awesome/now
+testsuccess apt upgrade -S T2 -y
+testsuccessequalgrep 'Version: 3' '^Version: ' apt show awesome/now
diff --git a/test/integration/test-solver-recommends-depends b/test/integration/test-solver-recommends-depends
new file mode 100755
index 0000000..90c5050
--- /dev/null
+++ b/test/integration/test-solver-recommends-depends
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+allowremovemanual
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'a' 'all' '2'
+insertpackage 'unstable' 'b' 'all' '2'
+insertpackage 'unstable' 'x' 'all' '3' 'Depends: xx
+Recommends: b'
+insertpackage 'unstable' 'xx' 'all' '3' 'Depends: a | b
+Recommends: b'
+
+setupaptarchive
+
+msgmsg "Test that the Recommends does not influence the Depends"
+testsuccessequal "The following additional packages will be installed:
+  a b
+The following NEW packages will be installed:
+  a b xx
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst a (2 unstable [all])
+Inst b (2 unstable [all])
+Inst xx (3 unstable [all])
+Conf a (2 unstable [all])
+Conf b (2 unstable [all])
+Conf xx (3 unstable [all])" apt install -s xx -qq
+
+
+msgmsg "Test that the Recommends in x does not influence the Depends in xx (one level lower)"
+testsuccessequal "The following additional packages will be installed:
+  a b xx
+The following NEW packages will be installed:
+  a b x xx
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst a (2 unstable [all])
+Inst b (2 unstable [all])
+Inst xx (3 unstable [all])
+Inst x (3 unstable [all])
+Conf a (2 unstable [all])
+Conf b (2 unstable [all])
+Conf xx (3 unstable [all])
+Conf x (3 unstable [all])" apt install -s x -qq
diff --git a/test/integration/test-solver3-dependencies b/test/integration/test-solver3-dependencies
new file mode 100755
index 0000000..2aa4c4d
--- /dev/null
+++ b/test/integration/test-solver3-dependencies
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'replaces' 'all' '2' 'Replaces: replaced (<< 3)'
+insertinstalledpackage 'replaced' 'all' '2'
+
+insertinstalledpackage 'enhances' 'all' '2' 'Enhances: enhanced (<< 3)'
+insertinstalledpackage 'enhanced' 'all' '2'
+
+insertpackage 'unstable' 'replaces' 'all' '3' 'Replaces: replaced (<< 3)'
+insertpackage 'unstable' 'enhances' 'all' '3' 'Enhances: enhanced (<< 3)'
+insertpackage 'unstable' 'replaced' 'all' '3'
+insertpackage 'unstable' 'enhanced' 'all' '3'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+  enhanced enhances replaced replaces
+4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst enhanced [2] (3 unstable [all])
+Inst enhances [2] (3 unstable [all])
+Inst replaced [2] (3 unstable [all])
+Inst replaces [2] (3 unstable [all])
+Conf enhanced (3 unstable [all])
+Conf enhances (3 unstable [all])
+Conf replaced (3 unstable [all])
+Conf replaces (3 unstable [all])" aptget upgrade -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+  enhanced enhances replaced replaces
+4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst enhanced [2] (3 unstable [all])
+Inst enhances [2] (3 unstable [all])
+Inst replaced [2] (3 unstable [all])
+Inst replaces [2] (3 unstable [all])
+Conf enhanced (3 unstable [all])
+Conf enhances (3 unstable [all])
+Conf replaced (3 unstable [all])
+Conf replaces (3 unstable [all])" apt upgrade -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+  enhanced enhances replaced replaces
+4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst enhanced [2] (3 unstable [all])
+Inst enhances [2] (3 unstable [all])
+Inst replaced [2] (3 unstable [all])
+Inst replaces [2] (3 unstable [all])
+Conf enhanced (3 unstable [all])
+Conf enhances (3 unstable [all])
+Conf replaced (3 unstable [all])
+Conf replaces (3 unstable [all])" apt dist-upgrade -s
+
+insertpackage 'testing,now' 'test' 'all' '1'
+insertpackage 'unstable' 'test' 'all' '2'
+insertpackage 'experimental' 'test' 'all' '3'
+insertpackage 'unstable' 'depends-test' 'all' '2' 'Depends: test'
+setupaptarchive
+
+testsuccess apt upgrade depends-test -o Debug::APT::Solver=3 --solver 3.0 --no-strict-pinning -s
+cp rootdir/tmp/testsuccess.output solver.log
+testsuccess grep 'test:amd64=2 | test:amd64=1 | test:amd64=3' solver.log
diff --git a/test/integration/test-solver3-obsoleted-by b/test/integration/test-solver3-obsoleted-by
new file mode 100755
index 0000000..486c55c
--- /dev/null
+++ b/test/integration/test-solver3-obsoleted-by
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+allowremovemanual
+
+# We need a canary to make it trigger obsolete detection
+insertpackage 'installed' 'canary' 'amd64' '1' 'Depends: good | not-yet-built | obsolete | obsolete-in-experimental | obsolete-reason | obsolete-in-experimental-reason | local-only | current-version | obsolete-in-downgrade | obsolete-in-downgrade-reason'
+
+# This package is good, it still exists in the candidate
+insertpackage 'installed' 'good' 'amd64' '1' 'Source: good (= 1)'
+insertpackage 'unstable' 'good' 'amd64' '2' 'Source: good (= 2)'
+
+# not-yet-built is not yet obsolete, because it has only been built on i386
+insertpackage 'installed,unstable' 'not-yet-built' 'amd64' '1' 'Source: not-yet-built (= 1)'
+insertpackage 'unstable' 'not-yet-built' 'i386' '2' 'Source: not-yet-built (= 2)'
+
+# obsolete is obsolete because obsolete-reason has been built on the same arch and is the source candidate
+insertpackage 'installed,unstable' 'obsolete' 'amd64' '1' 'Source: obsolete (= 1)'
+insertpackage 'unstable' 'obsolete-reason' 'amd64' '2' 'Source: obsolete (= 2)'
+
+# obsolete-in-experimental is only obsoleted in experimental, so it is not yet considered obsolete
+insertpackage 'installed,unstable' 'obsolete-in-experimental' 'amd64' '1' 'Source: obsolete-in-experimental (= 1)'
+insertpackage 'experimental' 'obsolete-in-experimental-reason' 'amd64' '2' 'Source: obsolete-in-experimental (= 2)'
+
+# local-only only exists in the local install
+insertpackage 'installed' 'local-only' 'amd64' '1' 'Source: local-only (= 1)'
+
+# current-version
+insertpackage 'installed,unstable' 'current-version' 'amd64' '1' 'Source: current-version (= 1)'
+
+# obsolete-in-downgrade is only obsoleted in experimental, so it is not yet considered obsolete
+insertpackage 'installed,experimental' 'obsolete-in-downgrade' 'amd64' '2' 'Source: obsolete-in-downgrade (= 2)'
+insertpackage 'unstable' 'obsolete-in-downgrade-reason' 'amd64' '1' 'Source: obsolete-in-downgrade (= 1)'
+
+setupaptarchive
+
+testobsolete() {
+    out="$1"
+    shift
+    testsuccess $@ -o Debug::APT::Solver=4 -o APT::Solver=3.0 -s
+    cp rootdir/tmp/testsuccess.output upgrade.output
+    testsuccessequal "$out" grep "Obsolete:" upgrade.output
+}
+
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning
+
+msgmsg "Pinning the installed version down to experimental level means experimental wins"
+printf 'Package: obsolete-in-experimental\nPin: release *\nPin-Priority: 1\n' > rootdir/etc/apt/preferences
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning
+
+msgmsg "Testing no-strict-pinning with negative pins on all packages"
+printf 'Package: *\nPin: release *\nPin-Priority: -1\n' > rootdir/etc/apt/preferences
+testobsolete "Obsolete: not-yet-built:amd64 - not installable
+Obsolete: good:amd64 - not installable
+Obsolete: obsolete:amd64 - not installable
+Obsolete: obsolete-in-experimental:amd64 - not installable
+Obsolete: obsolete-reason:amd64 - not installable
+Obsolete: local-only:amd64 - not installable
+Obsolete: obsolete-in-experimental-reason:amd64 - not installable
+Obsolete: current-version:amd64 - not installable
+Obsolete: obsolete-in-downgrade:amd64 - not installable
+Obsolete: obsolete-in-downgrade-reason:amd64 - not installable" aptget dist-upgrade
+
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable
+Obsolete: obsolete-in-downgrade-reason:amd64=1 due to obsolete-in-downgrade:amd64=2" aptget dist-upgrade --no-strict-pinning
+
+
+msgmsg "Testing that pinning a downgrade does not trigger obsoletes handling"
+printf 'Package: downgrade-reason\nPin: release *\nPin-Priority: 1000\n' > rootdir/etc/apt/preferences
+
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade
+testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2
+Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning
+
+
diff --git a/test/integration/test-specific-architecture-dependencies b/test/integration/test-specific-architecture-dependencies
index 447e407..be8ea42 100755
--- a/test/integration/test-specific-architecture-dependencies
+++ b/test/integration/test-specific-architecture-dependencies
@@ -4,6 +4,7 @@ set -e
 TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
+allowremovemanual
 configarchitecture 'amd64' 'i386'
 
 insertpackage 'unstable' 'libc6' 'amd64,i386' '1' 'Multi-Arch: same'
@@ -193,6 +194,7 @@ The following NEW packages will be installed:
 Inst foo-depender (1 unstable [amd64])
 Conf foo-depender (1 unstable [amd64])' aptget install foo-depender -s
 
+testfailuremsg 'E: Unsatisfiable dependency group foo-depender:i386 -> foo:i386' aptget install foo-depender:i386 -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -203,7 +205,7 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s --solver internal
 
 testsuccessequal 'Reading package lists...
 Building dependency tree...
@@ -311,6 +313,7 @@ Remv libold [1]
 Inst breaker-x64 (1 unstable [amd64])
 Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
 
+testfailuremsg 'E: Unsatisfiable dependency group depender-x32:amd64 -> libc6:i386:any' aptget install depender-x32 -s --solver 3.0
 testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
@@ -321,4 +324,4 @@ 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
+E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s --solver internal
diff --git a/test/integration/test-suggests-promoted-to-recommends b/test/integration/test-suggests-promoted-to-recommends
new file mode 100755
index 0000000..57497f7
--- /dev/null
+++ b/test/integration/test-suggests-promoted-to-recommends
@@ -0,0 +1,65 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'oldrec' 'all' '1'
+insertinstalledpackage 'oldsug' 'all' '1'
+insertinstalledpackage 'instreg' 'all' '1'
+insertinstalledpackage 'instsug' 'all' '1'
+
+insertpackage 'unstable' 'unsatrec' 'all' '2'
+insertpackage 'unstable' 'unsatsug' 'all' '2'
+insertpackage 'unstable' 'newrec' 'all' '2'
+insertpackage 'unstable' 'newsug' 'all' '2'
+insertpackage 'unstable' 'promote' 'all' '2'
+
+insertinstalledpackage 'foo' 'all' '1' 'Recommends: oldrec, instrec, unsatrec
+Suggests: oldsug, instsug, unsatsug, promote'
+insertpackage 'unstable' 'foo' 'all' '2' 'Recommends: instrec, unsatrec, promote, newrec
+Suggests: instsug, unsatsug, newsug'
+
+setupaptarchive
+
+testsuccess aptmark auto oldrec instrec oldsug instsug
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  oldrec oldsug
+Use 'apt autoremove' to remove them.
+The following NEW packages will be installed:
+  newrec promote
+The following packages will be upgraded:
+  foo
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo [1] (2 unstable [all])
+Inst newrec (2 unstable [all])
+Inst promote (2 unstable [all])
+Conf foo (2 unstable [all])
+Conf newrec (2 unstable [all])
+Conf promote (2 unstable [all])" apt full-upgrade -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+  oldrec oldsug
+Use 'apt autoremove' to remove them.
+The following NEW packages will be installed:
+  newrec newsug
+The following packages will be upgraded:
+  foo
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo [1] (2 unstable [all])
+Inst newrec (2 unstable [all])
+Inst newsug (2 unstable [all])
+Conf foo (2 unstable [all])
+Conf newrec (2 unstable [all])
+Conf newsug (2 unstable [all])" apt full-upgrade -s --install-suggests
diff --git a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
index 82e1d61..20d4d0c 100755
--- a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
+++ b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
@@ -6,6 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 
 setupenvironment
 configarchitecture 'i386'
+allowremovemanual
 
 # Regression test for LP: #1304403
 #
diff --git a/test/integration/test-ubuntu-bug-1974196 b/test/integration/test-ubuntu-bug-1974196
index 040f0b3..08dccff 100755
--- a/test/integration/test-ubuntu-bug-1974196
+++ b/test/integration/test-ubuntu-bug-1974196
@@ -22,11 +22,24 @@ noprogress() {
 
 testsuccessequal "Reading package lists...
 Building dependency tree...
-   Upgrading: depends:arm64 < 1 | 2 @ii uH Ib > due to depends:arm64 Depends on pkg0:arm64 < 1 -> 2 @ii puU > (= 1)
-  MarkInstall pkg0:arm64 < 1 -> 2 @ii puU > FU=1
-    MarkInstall depends:arm64 < 1 -> 2 @ii uU Ib > FU=0
+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 -s
+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 uU > FU=0
+      MarkInstall pkg1:arm64 < 1 -> 2 @ii umU > FU=0
 Starting pkgProblemResolver with broken count: 0
 Starting 2 pkgProblemResolver with broken count: 0
 Done
@@ -40,7 +53,7 @@ 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
+Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s --solver internal
 
 testsuccessequal "Percentage: 0
 Message: Start up solver…
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-614993 b/test/integration/test-ubuntu-bug-614993
index 542e551..564c5a8 100755
--- a/test/integration/test-ubuntu-bug-614993
+++ b/test/integration/test-ubuntu-bug-614993
@@ -6,14 +6,14 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 setupenvironment
 configarchitecture "amd64"
 setupaptarchive
+allowremovemanual
 
 # 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
+  libdrm-intel1 libdrm-nouveau1 libmtdev1 libutouch-grail1 libx11-xcb1
+  libxcb-aux0 libxcb-dri2-0 libxfont1 xserver-common xserver-xorg-core
   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
@@ -28,18 +28,13 @@ The following additional packages will be installed:
   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
+  libdrm-intel1 libdrm-nouveau1 libxfont1 xserver-common xserver-xorg
+  xserver-xorg-core 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
@@ -53,9 +48,9 @@ The following packages will be upgraded:
   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.
+41 upgraded, 5 newly installed, 1 to remove and 3 not upgraded.
+Need to get 0 B/5505 kB of archives.
+After this operation, 2294 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
+testfailureequal "$UPGRADE" aptget install xserver-xorg --trivial-only -o APT::Get::Upgrade-By-Source-Package=0
 
diff --git a/test/integration/test-unpack-different-version-unpacked b/test/integration/test-unpack-different-version-unpacked
index e7da64c..c1063d9 100755
--- a/test/integration/test-unpack-different-version-unpacked
+++ b/test/integration/test-unpack-different-version-unpacked
@@ -14,8 +14,8 @@ cleanstatus() {
 	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'
+#FIXME(internal): the reported version is wrong, it should be 1, not 2
 testsuccessequal 'Reading package lists...
 Building dependency tree...
 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
diff --git a/test/interactive-helper/CMakeLists.txt b/test/interactive-helper/CMakeLists.txt
index 8e87643..bfca6c8 100644
--- a/test/interactive-helper/CMakeLists.txt
+++ b/test/interactive-helper/CMakeLists.txt
@@ -14,6 +14,8 @@ add_executable(mthdcat mthdcat.cc)
 target_link_libraries(mthdcat ${APTPKG_LIB})
 add_executable(testdeb testdeb.cc)
 target_link_libraries(testdeb ${APTPKG_LIB})
+add_executable(testkeep testkeep.cc)
+target_link_libraries(testkeep ${APTPKG_LIB})
 add_executable(extract-control extract-control.cc)
 target_link_libraries(extract-control ${APTPKG_LIB})
 add_executable(aptwebserver aptwebserver.cc)
diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
index f4f8d95..e9882ab 100644
--- a/test/interactive-helper/aptwebserver.cc
+++ b/test/interactive-helper/aptwebserver.cc
@@ -8,17 +8,17 @@
 
 #include "teestream.h"
 
+#include <cerrno>
+#include <csignal>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
 #include <dirent.h>
-#include <errno.h>
 #include <netinet/in.h>
 #include <regex.h>
-#include <signal.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
-#include <time.h>
 #include <unistd.h>
 
 #include <array>
@@ -147,7 +147,7 @@ static void addFileHeaders(std::list<std::string> &headers, FileFd &data)/*{{{*/
        contentTypeSet(headers) == false)
    {
       std::string const name = data.Name();
-      std::string ext = flExtension(name);
+      std::string ext{flExtension(name)};
       if (name.empty() == false && ext.empty() == false && name != ext)
       {
 	 std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower);
@@ -744,6 +744,7 @@ static void * handleClient(int const client, size_t const id)		/*{{{*/
 	    for (::Configuration::Item *I = Overwrite->Child; I != NULL; I = I->Next)
 	    {
 	       regex_t *pattern = new regex_t;
+	       DEFER([&] { regfree(pattern); });
 	       int const res = regcomp(pattern, I->Tag.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
 	       if (res != 0)
 	       {
@@ -754,7 +755,7 @@ static void * handleClient(int const client, size_t const id)		/*{{{*/
 	       }
 	       if (regexec(pattern, filename.c_str(), 0, 0, 0) == 0)
 	       {
-		  filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", flNotDir(filename));
+		  filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", std::string{flNotDir(filename)});
 		  if (filename.find("/") == std::string::npos)
 		  {
 		     auto directory = _config->Find("aptwebserver::overwrite::" + I->Tag + "::directory", flNotFile(filename));
@@ -764,20 +765,24 @@ static void * handleClient(int const client, size_t const id)		/*{{{*/
 		     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);
+	    int retryafter = _config->FindI("aptwebserver::failrequest::retryafter", 0);
 	    if (failrequests != 0)
 	    {
 	       --failrequests;
 	       _config->Set(("aptwebserver::failrequest::" + filename).c_str(), failrequests);
+	       if (retryafter != 0)
+	       {
+		  std::string retryafter_hdr = "Retry-After: " + std::to_string(retryafter);
+		  headers.push_back(retryafter_hdr);
+	       }
 	       sendError(log, client, _config->FindI("aptwebserver::failrequest", 400), *m, sendContent, "Server is configured to fail this file.", headers);
 	       continue;
 	    }
diff --git a/test/interactive-helper/createdeb-cve-2020-27350.cc b/test/interactive-helper/createdeb-cve-2020-27350.cc
index 57c53ae..84d1cfa 100644
--- a/test/interactive-helper/createdeb-cve-2020-27350.cc
+++ b/test/interactive-helper/createdeb-cve-2020-27350.cc
@@ -1,11 +1,11 @@
 #include <config.h>
 
-#include <errno.h>
+#include <cerrno>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <fcntl.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
diff --git a/test/interactive-helper/mthdcat.cc b/test/interactive-helper/mthdcat.cc
index 2961b20..8826faa 100644
--- a/test/interactive-helper/mthdcat.cc
+++ b/test/interactive-helper/mthdcat.cc
@@ -3,13 +3,14 @@
    the file ends */
 
 #include <config.h>
+#include <apt-pkg/macros.h>
 
 #include <unistd.h>
 
 int main()
 {
-   char Buffer[4096];
-   
+   char Buffer[APT_BUFFER_SIZE];
+
    while (1)
    {
       int Res = read(STDIN_FILENO,Buffer,sizeof(Buffer));
diff --git a/test/interactive-helper/rpmver.cc b/test/interactive-helper/rpmver.cc
index b23ba28..c1a0d79 100644
--- a/test/interactive-helper/rpmver.cc
+++ b/test/interactive-helper/rpmver.cc
@@ -1,11 +1,11 @@
 #include <config.h>
 
 #include <apt-pkg/debversion.h>
-#include <ctype.h>
+#include <cctype>
+#include <cstdio>
+#include <cstdlib>
 #include <rpm/misc.h>
 #include <rpm/rpmio.h>
-#include <stdio.h>
-#include <stdlib.h>
 
 #define xisdigit(x) isdigit(x)
 #define xisalpha(x) isalpha(x)
diff --git a/test/interactive-helper/teestream.h b/test/interactive-helper/teestream.h
index 058717a..511c6da 100644
--- a/test/interactive-helper/teestream.h
+++ b/test/interactive-helper/teestream.h
@@ -19,13 +19,13 @@ public:
 	 std::basic_streambuf<CharT, Traits> * const sb2)
       : s1(sb1), s2(sb2) {}
 protected:
-   virtual std::streamsize xsputn(const CharT* s, std::streamsize c) APT_OVERRIDE
+   virtual std::streamsize xsputn(const CharT* s, std::streamsize c) 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
+   int_type overflow(int_type ch = Traits::eof()) override
    {
       auto const eof = Traits::eof();
       if (Traits::eq_int_type(ch, Traits::eof()) == true)
@@ -35,12 +35,12 @@ protected:
       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
+   void imbue(const std::locale& loc) override
    {
       s1->pubimbue(loc);
       s2->pubimbue(loc);
    }
-   virtual int sync() APT_OVERRIDE
+   int sync() override
    {
       auto const r1 = s1->pubsync();
       auto const r2 = s2->pubsync();
diff --git a/test/interactive-helper/test_fileutl.cc b/test/interactive-helper/test_fileutl.cc
index 5569af1..edc699e 100644
--- a/test/interactive-helper/test_fileutl.cc
+++ b/test/interactive-helper/test_fileutl.cc
@@ -4,8 +4,8 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstdlib>
 #include <fcntl.h>
-#include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
diff --git a/test/interactive-helper/test_udevcdrom.cc b/test/interactive-helper/test_udevcdrom.cc
index 2355186..9ccdfdb 100644
--- a/test/interactive-helper/test_udevcdrom.cc
+++ b/test/interactive-helper/test_udevcdrom.cc
@@ -2,11 +2,11 @@
 
 #include <apt-pkg/cdrom.h>
 
+#include <cassert>
+#include <cstddef>
 #include <iostream>
 #include <string>
 #include <vector>
-#include <assert.h>
-#include <stddef.h>
 
 int main()
 {
diff --git a/test/interactive-helper/testdeb.cc b/test/interactive-helper/testdeb.cc
index 0bb24a5..2037618 100644
--- a/test/interactive-helper/testdeb.cc
+++ b/test/interactive-helper/testdeb.cc
@@ -13,7 +13,7 @@
 class NullStream : public pkgDirStream
 {
    public:
-   virtual bool DoItem(Item &/*Itm*/, int &/*Fd*/) APT_OVERRIDE {return true;};
+   bool DoItem(Item &/*Itm*/, int &/*Fd*/) override {return true;};
 };
 
 static bool Test(const char *File)
diff --git a/test/interactive-helper/testkeep.cc b/test/interactive-helper/testkeep.cc
new file mode 100644
index 0000000..f65f432
--- /dev/null
+++ b/test/interactive-helper/testkeep.cc
@@ -0,0 +1,57 @@
+#include <config.h>
+
+#include <apt-pkg/init.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/prettyprinters.h>
+
+#include <iostream>
+#include <string>
+
+static bool test(const char *name, bool hold)
+{
+   pkgCacheFile cache;
+   if (not cache.Open())
+      return false;
+
+   for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+      std::cout << "A: " << APT::PrettyPkg(cache, Pkg) << std::endl;
+
+   cache->MarkDelete(cache->FindPkg(name));
+   if (hold)
+      cache->MarkProtected(cache->FindPkg(name));
+
+   for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+      std::cout << "B: " << APT::PrettyPkg(cache, Pkg) << std::endl;
+
+   pkgProblemResolver resolve(cache);
+   bool res = resolve.ResolveByKeep();
+
+   for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+      std::cout << "C: " << APT::PrettyPkg(cache, Pkg) << std::endl;
+
+   return res;
+}
+
+int main(int argc, const char *argv[])
+{
+   if (argc != 2 && argc != 3)
+   {
+      return _error->Error("Expected one argument");
+      goto err;
+   }
+   if (not pkgInitConfig(*_config))
+      goto err;
+   if (not pkgInitSystem(*_config, _system))
+      goto err;
+   if (not test(argv[1], argc > 2 && strcmp(argv[2], "--hold") == 0))
+      goto err;
+
+   return 0;
+err:
+   _error->DumpErrors();
+   return 1;
+}
+
diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
index 11d4d22..6bbe409 100644
--- a/test/libapt/CMakeLists.txt
+++ b/test/libapt/CMakeLists.txt
@@ -1,6 +1,6 @@
 if (WITH_TESTS)
    set(PROJECT_TEST_LIBRARIES apt-private)
-   find_path(GTEST_ROOT src/gtest.cc
+   find_path(GTEST_SRCPATH src/gtest.cc
       /usr/src/googletest/googletest
       /usr/src/googletest
       /usr/src/gtest
@@ -8,10 +8,10 @@ if (WITH_TESTS)
    find_package(GTest)
    set(GTEST_DEPENDENCIES)
 
-   if(NOT GTEST_FOUND AND EXISTS ${GTEST_ROOT})
+   if(NOT GTEST_FOUND AND EXISTS ${GTEST_SRCPATH})
       include(ExternalProject)
       ExternalProject_Add(gtest PREFIX ./gtest
-                                SOURCE_DIR ${GTEST_ROOT}
+                                SOURCE_DIR ${GTEST_SRCPATH}
                                 INSTALL_COMMAND true)
 
       link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
@@ -20,9 +20,9 @@ if (WITH_TESTS)
       set(GTEST_LIBRARIES "-lgtest")
       set(GTEST_DEPENDENCIES "gtest")
       set(GTEST_FOUND TRUE)
-      find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_ROOT}/include)
+      find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_SRCPATH}/include)
 
-      message(STATUS "Found GTest at ${GTEST_ROOT}, headers at ${GTEST_INCLUDE_DIRS}")
+      message(STATUS "Found GTest at ${GTEST_SRCPATH}, headers at ${GTEST_INCLUDE_DIRS}")
    endif()
 
    if (NOT GTEST_FOUND)
diff --git a/test/libapt/acqprogress_test.cc b/test/libapt/acqprogress_test.cc
index d4596c8..16b17c3 100644
--- a/test/libapt/acqprogress_test.cc
+++ b/test/libapt/acqprogress_test.cc
@@ -4,7 +4,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/hashes.h>
 #include <apt-private/acqprogress.h>
-#include <gtest/gtest.h>
+#include "common.h"
 #include <sstream>
 #include <string>
 
@@ -13,8 +13,8 @@ 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(); }
+   [[nodiscard]] std::string DescURI() const override { return ""; }
+   [[nodiscard]] HashStringList GetExpectedHashes() const override { return {}; }
 
 };
 
diff --git a/test/libapt/assert_pubkeyalgo_test.cc b/test/libapt/assert_pubkeyalgo_test.cc
new file mode 100644
index 0000000..88a070b
--- /dev/null
+++ b/test/libapt/assert_pubkeyalgo_test.cc
@@ -0,0 +1,56 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/gpgv.h>
+
+#include "common.h"
+
+TEST(AssertPubKeyAlgo_Test, test)
+{
+   EXPECT_TRUE(IsAssertedPubKeyAlgo("rsa2048", ">=rsa2048"));
+   _error->DumpErrors();
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_TRUE(IsAssertedPubKeyAlgo("rsa2048", "another,>=rsa2048"));
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("rsa2048", ">=rsa2049"));
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_TRUE(IsAssertedPubKeyAlgo("ed25519", ">=rsa2048,ed25519"));
+   EXPECT_TRUE(_error->empty());
+}
+
+TEST(AssertPubKeyAlgo_Test, CanOnlyCompareRSA)
+{
+   std::string msg;
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ">=ed25519"));
+   EXPECT_TRUE(_error->PopMessage(msg));
+   EXPECT_EQ("Unrecognized public key specification '>=ed25519' in option >=ed25519", msg);
+   EXPECT_TRUE(_error->empty());
+}
+
+TEST(AssertPubKeyAlgo_Test, EmptyOption)
+{
+   std::string msg;
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ""));
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ","));
+   EXPECT_TRUE(_error->PopMessage(msg));
+   EXPECT_EQ("Empty item in public key assertion string option ,", msg);
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", "moo,"));
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", "moo,,"));
+   EXPECT_TRUE(_error->PopMessage(msg));
+   EXPECT_EQ("Empty item in public key assertion string option moo,,", msg);
+   EXPECT_TRUE(_error->empty());
+
+   EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ",moo"));
+   EXPECT_TRUE(_error->PopMessage(msg));
+   EXPECT_EQ("Empty item in public key assertion string option ,moo", msg);
+   EXPECT_TRUE(_error->empty());
+}
diff --git a/test/libapt/authconf_test.cc b/test/libapt/authconf_test.cc
index 3a7b149..b301b8b 100644
--- a/test/libapt/authconf_test.cc
+++ b/test/libapt/authconf_test.cc
@@ -7,7 +7,7 @@
 
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/cachefilter_test.cc b/test/libapt/cachefilter_test.cc
index 08812e0..3e24010 100644
--- a/test/libapt/cachefilter_test.cc
+++ b/test/libapt/cachefilter_test.cc
@@ -5,7 +5,7 @@
 
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(CacheFilterTest, ArchitectureSpecification)
 {
diff --git a/test/libapt/cdrom_test.cc b/test/libapt/cdrom_test.cc
index e2ec05a..4c43f19 100644
--- a/test/libapt/cdrom_test.cc
+++ b/test/libapt/cdrom_test.cc
@@ -5,11 +5,11 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/fileutl.h>
 
+#include <cstring>
 #include <string>
 #include <vector>
-#include <string.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/cdromfindpackages_test.cc b/test/libapt/cdromfindpackages_test.cc
index cffa7aa..6d65867 100644
--- a/test/libapt/cdromfindpackages_test.cc
+++ b/test/libapt/cdromfindpackages_test.cc
@@ -5,12 +5,12 @@
 #include <apt-pkg/fileutl.h>
 
 #include <algorithm>
+#include <cstddef>
 #include <iostream>
 #include <string>
 #include <vector>
-#include <stddef.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/commandline_test.cc b/test/libapt/commandline_test.cc
index cde80b4..035d698 100644
--- a/test/libapt/commandline_test.cc
+++ b/test/libapt/commandline_test.cc
@@ -4,7 +4,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-private/private-cmndline.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 class CLT: public CommandLine {
    public:
diff --git a/test/libapt/common.h b/test/libapt/common.h
new file mode 100644
index 0000000..d69711d
--- /dev/null
+++ b/test/libapt/common.h
@@ -0,0 +1,11 @@
+/*
+ * GTest is a horribly broken library needing lots of diagnostic overrides,
+ * do them here.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdouble-promotion"
+#pragma GCC diagnostic ignored "-Wsign-promo"
+#pragma GCC diagnostic ignored "-Wsign-compare"
+#include <gtest/gtest.h>
+#pragma GCC diagnostic pop
+
diff --git a/test/libapt/compareversion_test.cc b/test/libapt/compareversion_test.cc
index 0129322..c8b9e41 100644
--- a/test/libapt/compareversion_test.cc
+++ b/test/libapt/compareversion_test.cc
@@ -22,13 +22,13 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 
+#include <cstdlib>
 #include <fstream>
 #include <string>
-#include <stdlib.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 using namespace std;
 
diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc
index 4d297a9..37bc5ff 100644
--- a/test/libapt/configuration_test.cc
+++ b/test/libapt/configuration_test.cc
@@ -6,7 +6,7 @@
 #include <string>
 #include <vector>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
@@ -230,3 +230,35 @@ List::Option2 { "Multi";
    EXPECT_TRUE(Cnf.FindB("Trailing"));
    EXPECT_FALSE(Cnf.Exists("Commented::Out"));
 }
+
+TEST(ConfigurationTest, Color)
+{
+   _config->Clear();
+   _config->Set("APT::Color::Neutral", "\x1B[N");
+   _config->Set("APT::Color::Green", "\x1B[G");
+   // This is escaped for extra fun
+   _config->Set("APT::Color::Bold", "\\x1B[B");
+   _config->Set("APT::Color::BoldGreen", "bold green");
+   _config->Set("APT::Color::BoldGreenRef", "boldgreen");
+   _config->Set("APT::Color::BoldGreenNeutral", "boldgreen neutral");
+   _config->Set("APT::Color::BoldGreenRefNeutral", "boldgreenref neutral");
+
+   EXPECT_EQ("", APT::Configuration::color("bold"));
+   EXPECT_EQ("", APT::Configuration::color("green"));
+   EXPECT_EQ("content", APT::Configuration::color("green", "content"));
+   EXPECT_EQ("", APT::Configuration::color("boldgreen"));
+   EXPECT_EQ("", APT::Configuration::color("boldgreenref"));
+   EXPECT_EQ("", APT::Configuration::color("boldgreenneutral"));
+   EXPECT_EQ("", APT::Configuration::color("boldgreenrefneutral"));
+
+   _config->Set("APT::Color", "true");
+   EXPECT_EQ("\x1B[B", APT::Configuration::color("bold"));
+   EXPECT_EQ("\x1B[G", APT::Configuration::color("green"));
+   EXPECT_EQ("\x1B[Gcontent\x1B[N", APT::Configuration::color("green", "content"));
+   EXPECT_EQ("\x1B[B\x1B[G", APT::Configuration::color("boldgreen"));
+   EXPECT_EQ("\x1B[B\x1B[G", APT::Configuration::color("boldgreenref"));
+   EXPECT_EQ("\x1B[B\x1B[G\x1B[N", APT::Configuration::color("boldgreenneutral"));
+   EXPECT_EQ("\x1B[B\x1B[G\x1B[N", APT::Configuration::color("boldgreenrefneutral"));
+   // Reset for other tests
+   _config->Clear();
+}
diff --git a/test/libapt/extracttar_test.cc b/test/libapt/extracttar_test.cc
index c945a0c..bf3a3e3 100644
--- a/test/libapt/extracttar_test.cc
+++ b/test/libapt/extracttar_test.cc
@@ -1,22 +1,22 @@
 #include <config.h>
 
-#include <apt-pkg/error.h>
 #include <apt-pkg/dirstream.h>
+#include <apt-pkg/error.h>
 #include <apt-pkg/extracttar.h>
+#include <cstdlib>
 #include <iostream>
-#include <stdlib.h>
 
 #include "assert.h"
-#include <gtest/gtest.h>
+#include "common.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; }
+    bool DoItem(Item &Itm,int &Fd) override { (void)Itm; (void)Fd; count++; return true; }
+    bool Fail(Item &Itm,int Fd) override { (void)Itm; (void)Fd; return true; }
+    bool FinishedFile(Item &Itm,int Fd) override { (void)Itm; (void)Fd; return true; }
     ~Stream() {}
 };
 
diff --git a/test/libapt/file-helpers.cc b/test/libapt/file-helpers.cc
index bb7052b..541dea1 100644
--- a/test/libapt/file-helpers.cc
+++ b/test/libapt/file-helpers.cc
@@ -9,7 +9,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/fileutl_test.cc b/test/libapt/fileutl_test.cc
index ecab2eb..2badf54 100644
--- a/test/libapt/fileutl_test.cc
+++ b/test/libapt/fileutl_test.cc
@@ -7,12 +7,12 @@
 #include <apt-pkg/strutl.h>
 
 #include <algorithm>
+#include <cstdlib>
+#include <cstring>
 #include <string>
 #include <vector>
-#include <stdlib.h>
-#include <string.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
@@ -288,7 +288,7 @@ TEST(FileUtlTest, Popen)
       OpenFds = Glob("/proc/self/fd/*");
 
    // output something
-   const char* Args[10] = {"/bin/echo", "meepmeep", NULL};
+   const char* Args[10] = {"echo", "meepmeep", NULL};
    EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::ReadOnly));
    EXPECT_TRUE(Fd.Read(buf, sizeof(buf)-1, &n));
    buf[n] = 0;
diff --git a/test/libapt/getarchitectures_test.cc b/test/libapt/getarchitectures_test.cc
index 4f76722..a4ccf67 100644
--- a/test/libapt/getarchitectures_test.cc
+++ b/test/libapt/getarchitectures_test.cc
@@ -6,7 +6,7 @@
 #include <string>
 #include <vector>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(ArchitecturesTest,SimpleLists)
 {
diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc
index 7146c5a..941a152 100644
--- a/test/libapt/getlanguages_test.cc
+++ b/test/libapt/getlanguages_test.cc
@@ -14,7 +14,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc
index f002355..d48f366 100644
--- a/test/libapt/getlistoffilesindir_test.cc
+++ b/test/libapt/getlistoffilesindir_test.cc
@@ -7,7 +7,7 @@
 #include <string>
 #include <vector>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc
index ff14d46..d6ef074 100644
--- a/test/libapt/globalerror_test.cc
+++ b/test/libapt/globalerror_test.cc
@@ -2,12 +2,12 @@
 
 #include <apt-pkg/error.h>
 
+#include <cerrno>
+#include <cstddef>
+#include <cstring>
 #include <string>
-#include <errno.h>
-#include <stddef.h>
-#include <string.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(GlobalErrorTest,BasicDiscard)
 {
diff --git a/test/libapt/gtest_runner.cc b/test/libapt/gtest_runner.cc
index 09fc55d..d0f81e2 100644
--- a/test/libapt/gtest_runner.cc
+++ b/test/libapt/gtest_runner.cc
@@ -5,7 +5,7 @@
 #include <apt-pkg/init.h>
 #include <apt-pkg/pkgsystem.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc
index 2d8079e..48d52ac 100644
--- a/test/libapt/hashsums_test.cc
+++ b/test/libapt/hashsums_test.cc
@@ -5,11 +5,11 @@
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/strutl.h>
 
+#include <cstdlib>
 #include <iostream>
 #include <string>
-#include <stdlib.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/indexcopytosourcelist_test.cc b/test/libapt/indexcopytosourcelist_test.cc
index b0bfeb4..f112ae9 100644
--- a/test/libapt/indexcopytosourcelist_test.cc
+++ b/test/libapt/indexcopytosourcelist_test.cc
@@ -4,10 +4,10 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/indexcopy.h>
 
+#include <cstdio>
 #include <string>
-#include <stdio.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 class NoCopy : private IndexCopy {
    public:
@@ -15,10 +15,10 @@ class NoCopy : private IndexCopy {
 	 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; }
+      bool GetFile(std::string &/*Filename*/, unsigned long long &/*Size*/) override { return false; }
+      bool RewriteEntry(FileFd & /*Target*/, std::string const &/*File*/) override { return false; }
+      const char *GetFileName() override { return nullptr; }
+      const char *Type() override { return nullptr; }
 
 };
 
diff --git a/test/libapt/install_progress_test.cc b/test/libapt/install_progress_test.cc
index 68101af..43c461e 100644
--- a/test/libapt/install_progress_test.cc
+++ b/test/libapt/install_progress_test.cc
@@ -2,14 +2,16 @@
 
 #include <apt-pkg/install-progress.h>
 
+#include <locale>
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(InstallProgressTest, FancyGetTextProgressStr)
 {
    APT::Progress::PackageManagerFancy p;
 
+   char *originalLocale = setlocale(LC_ALL, "C");
    EXPECT_EQ(60u, p.GetTextProgressStr(0.5, 60).size());
    EXPECT_EQ("[#.]", p.GetTextProgressStr(0.5, 4));
    EXPECT_EQ("[..........]", p.GetTextProgressStr(0.0, 12));
@@ -22,4 +24,22 @@ TEST(InstallProgressTest, FancyGetTextProgressStr)
    // deal with incorrect inputs gracefully (or should we die instead?)
    EXPECT_EQ("[..........]", p.GetTextProgressStr(-1.0, 12));
    EXPECT_EQ("[##########]", p.GetTextProgressStr(2.0, 12));
+
+   setlocale(LC_ALL, "C.UTF-8");
+
+   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.4, 12));
+   EXPECT_EQ("[████▉     ]", p.GetTextProgressStr(0.4999, 12));
+   EXPECT_EQ("[█████     ]", p.GetTextProgressStr(0.5000, 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));
+
+   setlocale(LC_ALL, originalLocale);
 }
diff --git a/test/libapt/json_test.cc b/test/libapt/json_test.cc
index ee8f3ce..6ab13a3 100644
--- a/test/libapt/json_test.cc
+++ b/test/libapt/json_test.cc
@@ -1,7 +1,7 @@
 #include <config.h>
 #include "../../apt-private/private-cachefile.cc"
 #include "../../apt-private/private-json-hooks.cc"
-#include <gtest/gtest.h>
+#include "common.h"
 #include <string>
 
 TEST(JsonTest, JsonString)
diff --git a/test/libapt/openmaybeclearsignedfile_test.cc b/test/libapt/openmaybeclearsignedfile_test.cc
index 4db8967..3979d85 100644
--- a/test/libapt/openmaybeclearsignedfile_test.cc
+++ b/test/libapt/openmaybeclearsignedfile_test.cc
@@ -6,7 +6,7 @@
 
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc
index ed849f7..296750b 100644
--- a/test/libapt/parsedepends_test.cc
+++ b/test/libapt/parsedepends_test.cc
@@ -4,10 +4,10 @@
 #include <apt-pkg/deblistparser.h>
 #include <apt-pkg/pkgcache.h>
 
+#include <cstring>
 #include <string>
-#include <string.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 static void parseDependency(bool const StripMultiArch,  bool const ParseArchFlags, bool const ParseRestrictionsList, std::string Arch)
 {
@@ -278,3 +278,88 @@ test:
    if (runner < 8)
       goto test; // this is the prove: tests are really evil ;)
 }
+
+TEST(ParseDependsTest, SpaceHate)
+{
+   auto const *const Depends = "no(=1), some(<<1),some (<<1),some( <<1),some(<< 1),some(<<1 ),some(<<1) ,last (=1)";
+   const char* const End = Depends + strlen(Depends);
+
+   const char* Start = Depends;
+   std::string Package;
+   std::string Version;
+   unsigned int Op = 29;
+
+   Start = debListParser::ParseDepends(Start, End, Package, Version, Op);
+   EXPECT_NE(nullptr, Start);
+   EXPECT_EQ("no", Package);
+   EXPECT_EQ("1", Version);
+   EXPECT_EQ(pkgCache::Dep::Equals, Op);
+
+   for (int i = 0; i < 6; ++i)
+   {
+      SCOPED_TRACE(i);
+      Start = debListParser::ParseDepends(Start, End, Package, Version, Op);
+      EXPECT_NE(nullptr, Start);
+      EXPECT_EQ("some", Package);
+      EXPECT_EQ("1", Version);
+      EXPECT_EQ(pkgCache::Dep::Less, Op);
+   }
+
+   Start = debListParser::ParseDepends(Start, End, Package, Version, Op);
+   EXPECT_EQ(End, Start);
+   EXPECT_EQ("last", Package);
+   EXPECT_EQ("1", Version);
+   EXPECT_EQ(pkgCache::Dep::Equals, Op);
+}
+
+static void ArchLimitSpaceTesting(char const * const Depends)
+{
+   SCOPED_TRACE(Depends);
+   _config->Set("APT::Architecture", "amd64");
+   const char* const End = Depends + strlen(Depends);
+   const char* Start = Depends;
+   std::string Package;
+   std::string Version;
+   unsigned int Op = 29;
+
+   Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+   EXPECT_NE(nullptr, Start);
+   EXPECT_EQ("foobar", Package);
+   EXPECT_EQ("", Version);
+   EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+
+   Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+   EXPECT_NE(nullptr, Start);
+   EXPECT_EQ("", Package);
+   EXPECT_EQ("", Version);
+   EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+
+   Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+   EXPECT_EQ(End, Start);
+   EXPECT_EQ("baz", Package);
+   EXPECT_EQ("", Version);
+   EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+}
+TEST(ParseDependsTest, ArchLimitSpaceNormal)
+{
+   ArchLimitSpaceTesting("foobar [i386 armhf armel amd64], blah [!arm64 !x32 !amd64], baz");
+}
+TEST(ParseDependsTest, ArchLimitSpaceLove)
+{
+   ArchLimitSpaceTesting("foobar  [  i386 armhf  armel  amd64  ]  ,  blah  [  !arm64 !x32  !amd64  ]  ,  baz");
+}
+TEST(ParseDependsTest, ArchLimitSpaceNoLove)
+{
+   ArchLimitSpaceTesting("foobar[i386 armhf armel amd64],blah[!arm64 !x32 !amd64],baz");
+}
+TEST(ParseDependsTest, ArchLimitBadSyntax)
+{
+   std::string Package;
+   std::string Version;
+   unsigned int Op = 29;
+   for (auto const * const Depends : { "foobar [! amd64]", "foobar []", "foobar [ ]" })
+   {
+      SCOPED_TRACE(Depends);
+      EXPECT_EQ(nullptr, debListParser::ParseDepends(Depends, Depends + strlen(Depends), Package, Version, Op, true, false, true, "amd64"));
+   }
+}
diff --git a/test/libapt/pattern_test.cc b/test/libapt/pattern_test.cc
index 55bc4bd..75afead 100644
--- a/test/libapt/pattern_test.cc
+++ b/test/libapt/pattern_test.cc
@@ -10,7 +10,7 @@
 #include <apt-pkg/cachefilter-patterns.h>
 #include <apt-pkg/cachefilter.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 using namespace APT::Internal;
 
diff --git a/test/libapt/priority_test.cc b/test/libapt/priority_test.cc
index af7932a..5570340 100644
--- a/test/libapt/priority_test.cc
+++ b/test/libapt/priority_test.cc
@@ -1,6 +1,6 @@
 #include <config.h>
 #include <apt-pkg/pkgcache.h>
-#include <gtest/gtest.h>
+#include "common.h"
 #include <string>
 
 using std::string;
diff --git a/test/libapt/sourcelist_test.cc b/test/libapt/sourcelist_test.cc
index 42fab65..9046b91 100644
--- a/test/libapt/sourcelist_test.cc
+++ b/test/libapt/sourcelist_test.cc
@@ -3,12 +3,12 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/sourcelist.h>
 
+#include <cstdlib>
+#include <cstring>
 #include <string>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc
index f042579..c20f945 100644
--- a/test/libapt/srvrecs_test.cc
+++ b/test/libapt/srvrecs_test.cc
@@ -7,7 +7,7 @@
 #include <iostream>
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(SrvRecTest, PopFromSrvRecs)
 {
diff --git a/test/libapt/stringview_test.cc b/test/libapt/stringview_test.cc
deleted file mode 100644
index 9cfaa3b..0000000
--- a/test/libapt/stringview_test.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-
-#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
index 469de44..9320f8f 100644
--- a/test/libapt/strutil_test.cc
+++ b/test/libapt/strutil_test.cc
@@ -1,12 +1,11 @@
 #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 "common.h"
 
 #include "file-helpers.h"
 
@@ -180,6 +179,24 @@ TEST(StrUtilTest,Base64Encode)
    EXPECT_EQ("/A==", Base64Encode("\xfc"));
    EXPECT_EQ("//8=", Base64Encode("\xff\xff"));
 }
+TEST(StrUtilTest,Base64Decode)
+{
+   EXPECT_EQ(Base64Decode("QWxhZGRpbjpvcGVuIHNlc2FtZQ=="), "Aladdin:open sesame");
+   EXPECT_EQ(Base64Decode("cGxlYXN1cmUu"), "pleasure.");
+   EXPECT_EQ(Base64Decode("bGVhc3VyZS4="), "leasure.");
+   EXPECT_EQ(Base64Decode("ZWFzdXJlLg=="), "easure.");
+   EXPECT_EQ(Base64Decode("YXN1cmUu"), "asure.");
+   EXPECT_EQ(Base64Decode("c3VyZS4="), "sure.");
+   EXPECT_EQ(Base64Decode("dXJlLg=="), "ure.");
+   EXPECT_EQ(Base64Decode("cmUu"), "re.");
+   EXPECT_EQ(Base64Decode("ZS4="), "e.");
+   EXPECT_EQ(Base64Decode("Lg=="), ".");
+   EXPECT_EQ(Base64Decode(""), "");
+   EXPECT_EQ(Base64Decode("IA=="), "\x20");
+   EXPECT_EQ(Base64Decode("/w=="), "\xff");
+   EXPECT_EQ(Base64Decode("/A=="), "\xfc");
+   EXPECT_EQ(Base64Decode("//8="), "\xff\xff");
+}
 static void ReadMessagesTestWithNewLine(char const * const nl, char const * const ab)
 {
    SCOPED_TRACE(SubstVar(SubstVar(nl, "\n", "n"), "\r", "r") + " # " + ab);
@@ -259,7 +276,7 @@ TEST(StrUtilTest,QuoteString)
    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)
+static void EXPECT_STRTONUM(std::string_view const str, bool const success, unsigned long const expected, unsigned const base)
 {
    SCOPED_TRACE(std::string(str.data(), str.length()));
    SCOPED_TRACE(base);
@@ -319,7 +336,8 @@ 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);
diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc
index 06ea01c..1dad5fe 100644
--- a/test/libapt/tagfile_test.cc
+++ b/test/libapt/tagfile_test.cc
@@ -3,13 +3,13 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/tagfile.h>
 
+#include <cstdlib>
+#include <cstring>
 #include <sstream>
 #include <string>
-#include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/tagsection_test.cc b/test/libapt/tagsection_test.cc
index 80cecca..28156f7 100644
--- a/test/libapt/tagsection_test.cc
+++ b/test/libapt/tagsection_test.cc
@@ -6,7 +6,7 @@
 #include <sstream>
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 #include "file-helpers.h"
 
diff --git a/test/libapt/teestream_test.cc b/test/libapt/teestream_test.cc
index a897e08..da85b70 100644
--- a/test/libapt/teestream_test.cc
+++ b/test/libapt/teestream_test.cc
@@ -5,7 +5,7 @@
 #include <sstream>
 #include <string>
 
-#include <gtest/gtest.h>
+#include "common.h"
 
 TEST(TeeStreamTest,TwoStringSinks)
 {
diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc
index 519de49..dfdff1b 100644
--- a/test/libapt/uri_test.cc
+++ b/test/libapt/uri_test.cc
@@ -2,7 +2,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/proxy.h>
 #include <apt-pkg/strutl.h>
-#include <gtest/gtest.h>
+#include "common.h"
 #include <string>
 
 TEST(URITest, BasicHTTP)
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
index f6d8869..987f7ba 100644
--- a/vendor/CMakeLists.txt
+++ b/vendor/CMakeLists.txt
@@ -1,7 +1,8 @@
 # Determine the current vendor, export to CURRENT_VENDOR
 if (NOT DEFINED CURRENT_VENDOR)
     execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/getinfo current
-                    OUTPUT_VARIABLE CURRENT_VENDOR_OUT OUTPUT_STRIP_TRAILING_WHITESPACE)
+                    OUTPUT_VARIABLE CURRENT_VENDOR_OUT OUTPUT_STRIP_TRAILING_WHITESPACE
+                    COMMAND_ERROR_IS_FATAL ANY)
 
     set(CURRENT_VENDOR "${CURRENT_VENDOR_OUT}" CACHE STRING "Select the system vendor")
     message(STATUS "Detected vendor: ${CURRENT_VENDOR_OUT}")
@@ -11,8 +12,15 @@ endif()
 
 # Handle sources.list example
 if (WITH_DOC OR WITH_DOC_EXAMPLES)
-add_vendor_file(OUTPUT sources.list
-                INPUT "${CURRENT_VENDOR}/sources.list.in"
+if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_VENDOR}/${CURRENT_VENDOR}.sources.in")
+    set(sources_in "${CURRENT_VENDOR}/${CURRENT_VENDOR}.sources.in")
+    set(sources_out "${CURRENT_VENDOR}.sources")
+else()
+    set(sources_in "${CURRENT_VENDOR}/sources.list.in")
+    set(sources_out "sources.list")
+endif()
+add_vendor_file(OUTPUT ${sources_out}
+                INPUT "${sources_in}"
                 MODE 644
                 VARIABLES sourceslist-list-format
                           debian-stable-codename
@@ -20,7 +28,7 @@ add_vendor_file(OUTPUT sources.list
                           debian-testing-codename
                           ubuntu-codename
                           current-codename)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sources.list
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${sources_out}
         DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
 endif()
 
diff --git a/vendor/README b/vendor/README
index 6846c84..3b344d5 100644
--- a/vendor/README
+++ b/vendor/README
@@ -2,10 +2,10 @@ The vendor system in APT is an experiment to help distributions ship a stock
 apt release instead of applying documentation patches to it, increasing
 maintenance burden for everyone and hiding 'interesting' patches in the mix.
 
-The provided information is used in the apt-key script and in documentation
-like manpages and example configuration files. If you have patches modifying
-additional bits and pieces currently not covered by this system please
-contact us so we can change this!
+The provided information is used in documentation like man pages and
+example configuration files. If you have patches modifying additional
+bits and pieces currently not covered by this system please contact us
+so we can change this!
 
 
 == Adding a new vendor
@@ -39,8 +39,7 @@ by opening a bug in the Debian BTS against apt with a patch attached.
 The format used is the one DocBook XML uses. The file is included as an
 entity file in the manpages xml source, so the syntax has to be valid!
 
-The keyring-* settings are additionally used also in the creation of the
-apt-key script and the keyring-package in particular as a dependency for apt.
+The keyring-package setting is used as a dependency for apt.
 
 The field current-codename is optional and can be used in sources.list.in.
 
diff --git a/vendor/blankon/apt-vendor.ent b/vendor/blankon/apt-vendor.ent
index ea7625f..a2d0d64 100644
--- a/vendor/blankon/apt-vendor.ent
+++ b/vendor/blankon/apt-vendor.ent
@@ -1,10 +1,6 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "BlankOn">
 <!ENTITY keyring-package "<package>blankon-keyring</package>">
-<!ENTITY keyring-filename "<filename>/usr/share/keyrings/blankon-archive-keyring.gpg</filename>">
-<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/blankon-archive-removed-keys.gpg</filename>">
-<!ENTITY keyring-master-filename "/usr/share/keyrings/blankon-master-keyring.gpg">
-<!ENTITY keyring-uri "http://arsip.blankonlinux.or.id/blankon/project/blankon-archive-keyring.gpg">
 <!ENTITY current-codename "tambora">
 
 <!ENTITY sourceslist-list-format "deb http://arsip.blankonlinux.or.id/blankon &current-codename; main restricted
diff --git a/vendor/debian/apt-vendor.ent b/vendor/debian/apt-vendor.ent
index 4d02343..8d31a39 100644
--- a/vendor/debian/apt-vendor.ent
+++ b/vendor/debian/apt-vendor.ent
@@ -1,20 +1,18 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "Debian">
 <!ENTITY keyring-package "<package>debian-archive-keyring</package>">
-<!ENTITY keyring-filename "">
-<!ENTITY keyring-removed-filename "">
-<!ENTITY keyring-master-filename "">
-<!ENTITY keyring-uri "">
 
-<!ENTITY sourceslist-list-format "deb http://deb.debian.org/debian &debian-stable-codename; main contrib non-free non-free-firmware
-deb http://deb.debian.org/debian &debian-stable-codename;-updates main contrib non-free non-free-firmware
-deb http://deb.debian.org/debian-security &debian-stable-codename;-security main contrib non-free non-free-firmware">
+<!ENTITY sourceslist-list-format "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian &debian-stable-codename; main contrib non-free non-free-firmware
+deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian &debian-stable-codename;-updates main contrib non-free non-free-firmware
+deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian-security &debian-stable-codename;-security main contrib non-free non-free-firmware">
 <!ENTITY sourceslist-sources-format "Types: deb
 URIs: http://deb.debian.org/debian
 Suites: &debian-stable-codename; &debian-stable-codename;-updates
 Components: main contrib non-free non-free-firmware
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 
 Types: deb
 URIs: http://deb.debian.org/debian-security
 Suites: &debian-stable-codename;-security
-Components: main contrib non-free non-free-firmware">
+Components: main contrib non-free non-free-firmware
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg">
diff --git a/vendor/debian/debian.sources.in b/vendor/debian/debian.sources.in
new file mode 100644
index 0000000..c7b8232
--- /dev/null
+++ b/vendor/debian/debian.sources.in
@@ -0,0 +1,36 @@
+## Debian distribution repository
+##
+## The following settings can be adjusted to configure which packages to use from Debian.
+## Mirror your choices (except for URIs and Suites) in the security section below to
+## ensure timely security updates.
+##
+## Types: Append deb-src to enable the fetching of source package.
+## URIs: A URL to the repository (you may add multiple URLs)
+## Suites: The following additional suites can be configured
+##   <name>-updates   - Urgent bug fix updates produced after the final release of the
+##                      distribution.
+##   <name>-backports - software from this repository may not have been tested as
+##                      extensively as that contained in the main release, although it includes
+##                      newer versions of some applications which may provide useful features.
+##                      Also, please note that software in backports WILL NOT receive any review
+##                      or updates from the Debian security team.
+## Components: Aside from main, the following components can be added to the list
+##   contrib           - Free software that may require non-free software to run.
+##   non-free-firmware - Firmware that is non-free
+##   non-free          - Software that is not under a free license. There may be restrictions
+##                       on use or modification.
+##
+## See the sources.list(5) manual page for further settings.
+Types: deb
+URIs: http://deb.debian.org/debian
+Suites: &debian-stable-codename; &debian-stable-codename;-updates
+Components: main contrib non-free non-free-firmware
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+
+## Debian security updates. Aside from URIs and Suites,
+## this should mirror your choices in the previous section.
+Types: deb
+URIs: http://deb.debian.org/debian-security
+Suites: &debian-stable-codename;-security
+Components: main contrib non-free non-free-firmware
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
diff --git a/vendor/debian/sources.list.in b/vendor/debian/sources.list.in
deleted file mode 100644
index 8f83dfd..0000000
--- a/vendor/debian/sources.list.in
+++ /dev/null
@@ -1,8 +0,0 @@
-# See sources.list(5) manpage for more information
-# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
-&sourceslist-list-format;
-
-# Uncomment if you want the apt-get source function to work
-#deb-src http://deb.debian.org/debian &debian-stable-codename; main contrib non-free
-#deb-src http://deb.debian.org/debian &debian-stable-codename;-updates main contrib non-free
-#deb-src http://deb.debian.org/debian-security &debian-stable-codename;-security main contrib non-free
diff --git a/vendor/getinfo b/vendor/getinfo
index 2ef257c..0a2dcf3 100755
--- a/vendor/getinfo
+++ b/vendor/getinfo
@@ -64,7 +64,7 @@ case "$1" in
 debian-stable-codename|debian-oldstable-codename|debian-testing-codename|ubuntu-codename)
 	getrawfield "$1" "$VERBATIM"
 	;;
-sourceslist-list-format|keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename)
+sourceslist-list-format|keyring-package|current-codename)
 	exec $0 --vendor $CURRENT_VENDOR 'vendor' "$@"
 	;;
 vendor)
diff --git a/vendor/procursus/apt-vendor.ent b/vendor/procursus/apt-vendor.ent
index 0dd1d7a..32d9fef 100644
--- a/vendor/procursus/apt-vendor.ent
+++ b/vendor/procursus/apt-vendor.ent
@@ -1,10 +1,6 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "Procursus">
 <!ENTITY keyring-package "<package>procursus-keyring</package>">
-<!ENTITY keyring-filename "">
-<!ENTITY keyring-removed-filename "">
-<!ENTITY keyring-master-filename "">
-<!ENTITY keyring-uri "">
 <!ENTITY current-codename "big_sur">
 
 <!ENTITY sourceslist-list-format "deb https://apt.procurs.us/ &current-codename; main">
diff --git a/vendor/raspbian/apt-vendor.ent b/vendor/raspbian/apt-vendor.ent
index 96d9fb7..e3b9603 100644
--- a/vendor/raspbian/apt-vendor.ent
+++ b/vendor/raspbian/apt-vendor.ent
@@ -1,10 +1,6 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "Raspbian">
 <!ENTITY keyring-package "<package>raspbian-archive-keyring</package>">
-<!ENTITY keyring-filename "<filename>/usr/share/keyrings/raspbian-archive-keyring.gpg</filename>">
-<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/raspbian-archive-removed-keys.gpg</filename>">
-<!ENTITY keyring-master-filename "">
-<!ENTITY keyring-uri "">
 
 <!ENTITY sourceslist-list-format "deb http://mirrordirector.raspbian.org/raspbian &debian-stable-codename; main contrib non-free">
 <!ENTITY sourceslist-sources-format "Types: deb
diff --git a/vendor/steamos/apt-vendor.ent b/vendor/steamos/apt-vendor.ent
index 7cf100f..2752999 100644
--- a/vendor/steamos/apt-vendor.ent
+++ b/vendor/steamos/apt-vendor.ent
@@ -1,10 +1,6 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "SteamOS">
 <!ENTITY keyring-package "<package>valve-archive-keyring</package>">
-<!ENTITY keyring-filename "<filename>/usr/share/keyrings/valve-archive-keyring.gpg</filename>">
-<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/valve-archive-removed-keys.gpg</filename>">
-<!ENTITY keyring-master-filename "">
-<!ENTITY keyring-uri "">
 <!ENTITY current-codename "alchemist">
 
 <!ENTITY sourceslist-list-format "deb http://repo.steampowered.com/steamos &current-codename; main contrib non-free
diff --git a/vendor/ubuntu/apt-vendor.ent b/vendor/ubuntu/apt-vendor.ent
index dcebc92..8c52fd4 100644
--- a/vendor/ubuntu/apt-vendor.ent
+++ b/vendor/ubuntu/apt-vendor.ent
@@ -1,20 +1,18 @@
 <!-- details about the keys used by the distribution -->
 <!ENTITY keyring-distro "Ubuntu">
 <!ENTITY keyring-package "<package>ubuntu-keyring</package>">
-<!ENTITY keyring-filename "<filename>/usr/share/keyrings/ubuntu-archive-keyring.gpg</filename>">
-<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/ubuntu-archive-removed-keys.gpg</filename>">
-<!ENTITY keyring-master-filename "/usr/share/keyrings/ubuntu-master-keyring.gpg">
-<!ENTITY keyring-uri "http://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg">
 
-<!ENTITY sourceslist-list-format "deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
-deb http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
-deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted">
+<!ENTITY sourceslist-list-format "deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] http://archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
+deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
+deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted">
 <!ENTITY sourceslist-sources-format "Types: deb
 URIs: http://us.archive.ubuntu.com/ubuntu
 Suites: &ubuntu-codename; &ubuntu-codename;-updates
 Components: main restricted
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
 
 Types: deb
 URIs: http://security.ubuntu.com/ubuntu
 Suites: &ubuntu-codename;-security
-Components: main restricted">
+Components: main restricted
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg">
diff --git a/vendor/ubuntu/sources.list.in b/vendor/ubuntu/sources.list.in
deleted file mode 100644
index 00db2f8..0000000
--- a/vendor/ubuntu/sources.list.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# See sources.list(5) manpage for more information
-# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
-deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
-deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
-
-deb http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
-deb-src http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
-
-deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted
-deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted
diff --git a/vendor/ubuntu/ubuntu.sources.in b/vendor/ubuntu/ubuntu.sources.in
new file mode 100644
index 0000000..0bf527e
--- /dev/null
+++ b/vendor/ubuntu/ubuntu.sources.in
@@ -0,0 +1,44 @@
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+
+## Ubuntu distribution repository
+##
+## The following settings can be adjusted to configure which packages to use from Ubuntu.
+## Mirror your choices (except for URIs and Suites) in the security section below to
+## ensure timely security updates.
+##
+## Types: Append deb-src to enable the fetching of source package.
+## URIs: A URL to the repository (you may add multiple URLs)
+## Suites: The following additional suites can be configured
+##   <name>-updates   - Major bug fix updates produced after the final release of the
+##                      distribution.
+##   <name>-backports - software from this repository may not have been tested as
+##                      extensively as that contained in the main release, although it includes
+##                      newer versions of some applications which may provide useful features.
+##                      Also, please note that software in backports WILL NOT receive any review
+##                      or updates from the Ubuntu security team.
+## Components: Aside from main, the following components can be added to the list
+##   restricted  - Software that may not be under a free license, or protected by patents.
+##   universe    - Community maintained packages. Software in this repository receives maintenance
+##                 from volunteers in the Ubuntu community, or a 10 year security maintenance
+##                 commitment from Canonical when an Ubuntu Pro subscription is attached.
+##   multiverse  - Community maintained of restricted. Software from this repository is
+##                 ENTIRELY UNSUPPORTED by the Ubuntu team, and may not be under a free
+##                 licence. Please satisfy yourself as to your rights to use the software.
+##                 Also, please note that software in multiverse WILL NOT receive any
+##                 review or updates from the Ubuntu security team.
+##
+## See the sources.list(5) manual page for further settings.
+Types: deb
+URIs: http://archive.ubuntu.com/ubuntu/
+Suites: &ubuntu-codename; &ubuntu-codename;-updates &ubuntu-codename;-backports
+Components: main universe restricted multiverse
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
+
+## Ubuntu security updates. Aside from URIs and Suites,
+## this should mirror your choices in the previous section.
+Types: deb
+URIs: http://security.ubuntu.com/ubuntu/
+Suites: &ubuntu-codename;-security
+Components: main universe restricted multiverse
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
-- 
GitLab