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_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 && 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::<host></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| |==========================>| 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 && 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::<host></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 (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" -"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>" -"> 1.0) | bar (= 2.0), moo\"</literal>" +"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz " +"(>> 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 && 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::<host></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::<Rechner></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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::<host></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::<Rechner></" +#~ "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 && 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 %N by a tab. A % can be printed by using %%." msgstr "" "Define la salida de cada opción de configuración. %t se sustituye con " -"el nombre individual, %f con el nombre jerárquico completo, y %" -"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, %n se sustituye con una " -"lÃnea nueva, y %N con una tabulación. Se puede mostrar un % " -"utilizando %%." +"el nombre individual, %f con el nombre jerárquico completo, y " +"%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, %n se " +"sustituye con una lÃnea nueva, y %N con una tabulación. Se puede " +"mostrar un % utilizando %%." #. 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::<host></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::<máquina></" -"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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 <a.b.c -> d.e.f | x.y.z> (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::<host></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::<máquina></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::<host></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::<host></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><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::Verify-Peer</literal> es la opción " +#~ "que guarda la información sobre certificados de confianza. " +#~ "<literal><host>::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><host>::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><host>::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><host>::" -#~ "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><host>::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><host>::SslForceVersion</literal> es la opción " +#~ "utilizar para la autenticación del cliente. " +#~ "<literal><host>::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><host>::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><host>::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 ®ex;, &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 (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" +"Exemple : <literal>apt-get satisfy \"toto\" \"Conflicts: truc\" \"machin " +"(>> 1.0) | bruc (= 2.0), moo\"</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml msgid "" "The legacy operator '</>' is not supported, use '<=/>=' instead." msgstr "" +"L'ancien opérateur « </> » n'est plus pris en charge, utilisez à la " +"place « <=/>= »." #. 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 && 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 && 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 ®ex;. " "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 %n will be replaced by a newline, " "and %N by a tab. A % can be printed by using %%." msgstr "" -"Définit ce que retourne chaque option de configuration. %t sera " +"Définir ce que retourne chaque option de configuration. %t sera " "remplacé par son nom individuel, %f par le nom hiérarchique complet " "et %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::<host></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::<hôte></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 <a.b.c -> " "d.e.f | x.y.z> (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::<host></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::<hôte></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::<host></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::<host></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><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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 && 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 %n verrà sostituito da un ritorno a capo e %N da una " -"tabulazione. Un carattere % può essere prodotto usando %" -"%. " +"tabulazione. Un carattere % può essere prodotto usando " +"%%. " #. 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::<host></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::<host></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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::<host></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::<host></" +#~ "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::<host></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::<host></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::<host>" #~ "</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><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::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><" -#~ "host>::Verify-Host</literal> è la corrispondente opzione specifica per " -#~ "ciascun host. <literal>SslCert</literal> determina quale certificato " -#~ "usare per l'autenticazione client; <literal><host>::SslCert</" -#~ "literal> è la corrispondente opzione specifica per ciascun host. " -#~ "<literal>SslKey</literal> determina quale chiave privata usare per " -#~ "l'autenticazione client; <literal><host>::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><host>::SslForceVersion</" -#~ "literal> è la corrispondente opzione specifica per ciascun host." +#~ "file che contiene le informazioni sui certificati fidati; " +#~ "<literal><host>::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><host>::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><host>::Verify-Host</literal> è la " +#~ "corrispondente opzione specifica per ciascun host. <literal>SslCert</" +#~ "literal> determina quale certificato usare per l'autenticazione client; " +#~ "<literal><host>::SslCert</literal> è la corrispondente opzione " +#~ "specifica per ciascun host. <literal>SslKey</literal> determina quale " +#~ "chiave privata usare per l'autenticazione client; " +#~ "<literal><host>::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><host>::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 && 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 "" "å„è¨å®šã‚ªãƒ—ションã®å‡ºåŠ›ã‚’å®šç¾©ã—ã¾ã™ã€‚%t ã¯ã‚ªãƒ—ションåã«ã€%f ã¯" "完全オプションåã«ã€%v ã¯ã‚ªãƒ—ションã®å€¤ã«ç½®æ›ã•れã¾ã™ã€‚大文å—や特殊文" "å—を使用ã™ã‚‹å€¤ã¯ã€å®‰å…¨ã‚’ä¿è¨¼ã™ã‚‹ãŸã‚ã«ã€RFC822 ã§å®šç¾©ã•れã¦ã„ã‚‹ quoted-" -"string ã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•れるã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã•らã«ã€%n ã¯æ”¹è¡Œã«ã€%" -"N ã¯ã‚¿ãƒ–æ–‡å—ã«ãªã‚Šã¾ã™ã€‚% を出力ã™ã‚‹ã«ã¯ã€%% ã¨ã—ã¦ãã " -"ã•ã„。" +"string ã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•れるã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã•らã«ã€%n ã¯æ”¹è¡Œã«ã€" +"%N ã¯ã‚¿ãƒ–æ–‡å—ã«ãªã‚Šã¾ã™ã€‚% を出力ã™ã‚‹ã«ã¯ã€%% ã¨" +"ã—ã¦ãã ã•ã„。" #. 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::<host></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::<host></" -"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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 <a." -"b.c -> d.e.f | x.y.z> (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 " +"<a.b.c -> d.e.f | x.y.z> (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::<host></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::<host></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::<host></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::<host></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::<" -#~ "host></literal> ã¨ã„ã†å½¢ã§æŒ‡å®šã§ãã¾ã™ã€‚ã“ã®æ™‚ã€ãƒ—ãƒã‚シを使用ã—ãªã„ã¨" -#~ "ã„ã†æ„味ã®ç‰¹æ®Šã‚ーワード <literal>DIRECT</literal> も使用ã§ãã¾ã™ã€‚上記ã®" -#~ "è¨å®šã‚’ãªã«ã‚‚指定ã—ãªã„ã¨ã€ç’°å¢ƒå¤‰æ•° <envar>http_proxy</envar> を使用ã—ã¾" -#~ "ã™ã€‚" +#~ "ã†æ¨™æº–å½¢ã§è¡¨ã—ã¾ã™ã€‚ホストã”ã¨ã®ãƒ—ãƒã‚ã‚·ã‚’ã€" +#~ "<literal>http::Proxy::<host></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><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::SslForceVersion</" #~ "literal> is the corresponding per-host option." #~ msgstr "" #~ "<literal>CaInfo</literal> サブオプションã¯ã€ä¿¡é ¼æ¸ˆã¿è¨¼æ˜Žæ›¸æƒ…å ±ã®ä¿æŒå ´æ‰€ã‚’" @@ -13083,14 +13451,15 @@ msgstr "ã“れã§ã€ãƒ‡ã‚£ã‚¹ã‚¯ã«ã‚ã‚‹å–得済ã¿ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–を使用 #~ "ションã§ã™ã€‚<literal>Verify-Host</literal> 真å½å€¤ã‚µãƒ–オプションã¯ã€ã‚µãƒ¼ãƒ" #~ "ã®ãƒ›ã‚¹ãƒˆåを検証ã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚<literal><host>::Verify-" #~ "Host</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚<literal>SslCert</" -#~ "literal> ã¯ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆèªè¨¼ã«ä½¿ç”¨ã™ã‚‹è¨¼æ˜Žæ›¸ã‚’決定ã—ã¾ã™ã€‚<literal><" -#~ "host>::SslCert</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚" -#~ "<literal>SslKey</literal> ã¯ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆèªè¨¼ã«ä½¿ç”¨ã™ã‚‹ç§˜å¯†éµã‚’決定ã—ã¾" -#~ "ã™ã€‚<literal><host>::SslKey</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ショ" -#~ "ンã§ã™ã€‚<literal>SslForceVersion</literal> ã¯ã€ãƒ‡ãƒ•ォルトã§ä½¿ç”¨ã™ã‚‹ SSL ã®" -#~ "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’上書ãã—ã¾ã™ã€‚'<literal>TLSv1</literal>' ã‹ '<literal>SSLv3</" -#~ "literal>' ã¨ã„ã†æ–‡å—列を指定ã§ãã¾ã™ã€‚<literal><host>::" -#~ "SslForceVersion</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚" +#~ "literal> ã¯ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆèªè¨¼ã«ä½¿ç”¨ã™ã‚‹è¨¼æ˜Žæ›¸ã‚’決定ã—ã¾ã™ã€‚" +#~ "<literal><host>::SslCert</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ション" +#~ "ã§ã™ã€‚<literal>SslKey</literal> ã¯ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆèªè¨¼ã«ä½¿ç”¨ã™ã‚‹ç§˜å¯†éµã‚’決定" +#~ "ã—ã¾ã™ã€‚<literal><host>::SslKey</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—" +#~ "ションã§ã™ã€‚<literal>SslForceVersion</literal> ã¯ã€ãƒ‡ãƒ•ォルトã§ä½¿ç”¨ã™ã‚‹ " +#~ "SSL ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’上書ãã—ã¾ã™ã€‚'<literal>TLSv1</literal>' ã‹ " +#~ "'<literal>SSLv3</literal>' ã¨ã„ã†æ–‡å—列を指定ã§ãã¾ã™ã€‚" +#~ "<literal><host>::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 (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" -"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>" -"> 1.0) | bar (= 2.0), moo\"</literal>" +"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz " +"(>> 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 && 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 && 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::<host></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::<host></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 (< voor opwaarderingen, > 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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 && 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::<host></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 && 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 " +"&& 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::<host></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::<host></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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::<host></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::<host></" +#~ "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::<host></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::<host></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::<host></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::<host></" +#~ "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><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::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><host>::Verify-Host</literal> é a opção 'por " -#~ "máquina' correspondente. <literal>SslCert</literal> determina qual " -#~ "certificado a usar para autenticação de clientes. <literal><host>::" -#~ "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><host>::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><host>::SslForceVersion</" -#~ "literal> é a opção 'por máquina' correspondente." +#~ "contém informação acerca de certificados de confiança. " +#~ "<literal><host>::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><host>::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><host>::Verify-Host</literal> " +#~ "é a opção 'por máquina' correspondente. <literal>SslCert</literal> " +#~ "determina qual certificado a usar para autenticação de clientes. " +#~ "<literal><host>::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><host>::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><host>::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 && 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::<host></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 <a.b.c -" -"> d.e.f | x.y.z> (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 <a.b.c " +"-> d.e.f | x.y.z> (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 ¤t-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/ ¤t-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 ¤t-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