diff options
61 files changed, 680 insertions, 138 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1998ca889..12a4ab227 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,7 +206,7 @@ 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.9.6") +set(PACKAGE_VERSION "2.9.7") string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION}) if (NOT DEFINED DPKG_DATADIR) diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 4f247cf84..696a3e0b8 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -200,6 +200,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 +389,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) diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc index 2fa5b0c30..225acae88 100644 --- a/apt-pkg/contrib/gpgv.cc +++ b/apt-pkg/contrib/gpgv.cc @@ -566,3 +566,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 1cabed4e6..1f3ef26f9 100644 --- a/apt-pkg/contrib/gpgv.h +++ b/apt-pkg/contrib/gpgv.h @@ -86,4 +86,5 @@ APT_PUBLIC bool SplitClearSignedFile(std::string const &InFile, FileFd * const C */ APT_PUBLIC bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile); +APT_PUBLIC bool IsAssertedPubKeyAlgo(std::string const &pkstr, std::string const &option); #endif diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 487f94f20..d71d9541f 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -131,7 +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"); + 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 diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index 67aa68dca..2ba6f6065 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -202,10 +202,10 @@ void APT::Solver::Work::Dump(pkgCache &cache) if (optional) std::cerr << "Optional "; std::cerr << "Item (" << ssize_t(size <= solutions.size() ? size : -1) << "@" << depth << (upgrade ? "u" : "") << ") "; - if (auto Pkg = reason.Pkg(); Pkg != 0) - std::cerr << pkgCache::PkgIterator(cache, cache.PkgP + Pkg).FullName(); - if (auto Ver = reason.Ver(); Ver != 0) - std::cerr << pkgCache::VerIterator(cache, cache.VerP + Ver).ParentPkg().FullName() << "=" << pkgCache::VerIterator(cache, cache.VerP + Ver).VerStr(); + if (auto Pkg = reason.Pkg(cache); not Pkg.end()) + std::cerr << Pkg.FullName(); + if (auto Ver = reason.Ver(cache); not Ver.end()) + std::cerr << Ver.ParentPkg().FullName() << "=" << Ver.VerStr(); std::cerr << " -> "; for (auto sol : solutions) { @@ -221,7 +221,7 @@ std::string APT::Solver::WhyStr(Reason reason) while (not reason.empty()) { - if (auto Pkg = pkgCache::PkgIterator(cache, cache.PkgP + reason.Pkg()); not Pkg.end()) + if (auto Pkg = reason.Pkg(cache); not Pkg.end()) { if ((*this)[Pkg].decision == Decision::MUSTNOT) out.push_back(std::string("not ") + Pkg.FullName()); @@ -229,7 +229,7 @@ std::string APT::Solver::WhyStr(Reason reason) out.push_back(Pkg.FullName()); reason = (*this)[Pkg].reason; } - if (auto Ver = pkgCache::VerIterator(cache, cache.VerP + reason.Ver()); not Ver.end()) + if (auto Ver = reason.Ver(cache); not Ver.end()) { if ((*this)[Ver].decision == Decision::MUSTNOT) out.push_back(std::string("not ") + Ver.ParentPkg().FullName() + "=" + Ver.VerStr()); @@ -247,8 +247,39 @@ std::string APT::Solver::WhyStr(Reason reason) return outstr; } -bool APT::Solver::Obsolete(pkgCache::PkgIterator pkg) +// 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 = policy.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 = policy.GetPriority(ver, true); + if (priority == 0 || priority < candPriority) + continue; + + pkgObsolete[pkg->ID] = 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->ID] != 0) + return pkgObsolete[pkg->ID] == 2; + auto ver = policy.GetCandidateVer(pkg); if (ver.end() && not StrictPinning) @@ -256,18 +287,13 @@ bool APT::Solver::Obsolete(pkgCache::PkgIterator pkg) if (ver.end()) { std::cerr << "Obsolete: " << pkg.FullName() << " - not installable\n"; + pkgObsolete[pkg->ID] = 2; return true; } - if (pkgObsolete[pkg->ID] != 0) - return pkgObsolete[pkg->ID] == 2; - for (auto bin = ver.Cache()->FindGrp(ver.SourcePkgName()).VersionsInSource(); not bin.end(); bin = bin.NextInSource()) - if (bin != ver && bin.ParentPkg()->Arch == ver.ParentPkg()->Arch && bin->ParentPkg != ver->ParentPkg && (not StrictPinning || policy.GetCandidateVer(bin.ParentPkg()) == bin) && _system->VS->CmpVersion(bin.SourceVerStr(), ver.SourceVerStr()) > 0) - { - pkgObsolete[pkg->ID] = 2; - if (debug >= 3) - std::cerr << "Obsolete: " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << " due to " << bin.ParentPkg().FullName() << "=" << bin.VerStr() << "\n"; - return true; - } + + if (ObsoletedByNewerSourceVersion(ver)) + return true; + for (auto file = ver.FileList(); !file.end(); file++) if ((file.File()->Flags & pkgCache::Flag::NotSource) == 0) { diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h index d460c95d9..33067a0ad 100644 --- a/apt-pkg/solver3.h +++ b/apt-pkg/solver3.h @@ -104,8 +104,9 @@ class Solver return verStates[V->ID]; } - std::vector<char> pkgObsolete; - bool Obsolete(pkgCache::PkgIterator pkg); + mutable std::vector<char> pkgObsolete; + bool Obsolete(pkgCache::PkgIterator pkg) const; + bool ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const; // \brief Heap of the remaining work. // @@ -219,6 +220,16 @@ struct APT::Solver::Reason { 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 Check if there is no reason. bool empty() const { diff --git a/apt-private/private-main.cc b/apt-private/private-main.cc index f28f5cb80..39ad07b36 100644 --- a/apt-private/private-main.cc +++ b/apt-private/private-main.cc @@ -81,6 +81,8 @@ void CheckIfCalledByScript(int argc, const char *argv[]) /*{{{*/ if(!isatty(STDOUT_FILENO) && _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/debian/changelog b/debian/changelog index ab7133ac4..bc576da0f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,29 @@ +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 diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent index b2b38f9dc..f415a0eba 100644 --- a/doc/apt-verbatim.ent +++ b/doc/apt-verbatim.ent @@ -274,7 +274,7 @@ "> <!-- this will be updated by 'prepare-release' --> -<!ENTITY apt-product-version "2.9.6"> +<!ENTITY apt-product-version "2.9.7"> <!-- (Code)names for various things used all over the place --> <!ENTITY debian-oldstable-codename "bullseye"> diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 6bcf8e354..72ce1fe3a 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -776,6 +776,8 @@ 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>"; diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 84ac0e802..4779a0d98 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.9.6\n" +"Project-Id-Version: apt-doc 2.9.7\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-07-02 20:27+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" diff --git a/methods/aptmethod.h b/methods/aptmethod.h index 26b8c0b55..1c24f3a98 100644 --- a/methods/aptmethod.h +++ b/methods/aptmethod.h @@ -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) diff --git a/methods/gpgv.cc b/methods/gpgv.cc index 20ef2861d..4a0866555 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -112,6 +112,7 @@ struct APT_HIDDEN SignersStorage { 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; @@ -261,6 +262,17 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, { 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); @@ -420,6 +432,8 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, 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: "; @@ -565,6 +579,13 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm) 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()) diff --git a/po/apt-all.pot b/po/apt-all.pot index 1f74e756e..7259cd41e 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt 2.9.6\n" +"Project-Id-Version: apt 2.9.7\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-07-02 20:27+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3681,6 +3681,11 @@ msgstr "" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3769,6 +3769,11 @@ msgstr "" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3946,6 +3946,11 @@ msgstr "Nun se pudo invocar " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4002,6 +4002,11 @@ msgstr "Неуспех при извикването на " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3753,6 +3753,11 @@ msgstr "" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" -"PO-Revision-Date: 2020-08-09 22:43+0200\n" -"Last-Translator: Aleix Vidal i Gaya <aleix@softcatala.org>\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 @@ -249,6 +250,8 @@ 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 @@ -691,26 +694,26 @@ 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 "" +msgstr "Error:" #. TRANSLATOR: This is a warning level displayed before the message #: apt-pkg/contrib/error.cc msgid "Warning:" -msgstr "" +msgstr "Avís:" #. TRANSLATOR: This is a warning level displayed before the message #: apt-pkg/contrib/error.cc msgid "Notice:" -msgstr "" +msgstr "Notificació:" #: apt-pkg/contrib/error.cc msgid "Audit:" -msgstr "" +msgstr "Auditoria:" #. TRANSLATOR: This is a warning level displayed before the message #: apt-pkg/contrib/error.cc msgid "Debug:" -msgstr "" +msgstr "Depuració:" #: apt-pkg/contrib/extracttar.cc #, c-format @@ -1352,10 +1355,8 @@ msgid "Calculating upgrade" msgstr "S'està calculant l'actualització" #: apt-pkg/edsp.cc -#, fuzzy -#| msgid "Total dependencies: " msgid "Solving dependencies" -msgstr "Nombre total de dependències: " +msgstr "S'està resolent les dependències" #: apt-pkg/edsp.cc msgid "Execute external solver" @@ -1958,21 +1959,22 @@ 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 -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "Seleccionat %s per eliminar.\n" +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!" @@ -2016,10 +2018,10 @@ msgstr "" "Que estrany… Les mides no coincideixen, informeu-ho a apt@packages.debian.org" #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format #| msgid "Download Failed" msgid " Download size: %sB / %sB\n" -msgstr "Ha fallat la baixada" +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 @@ -2029,10 +2031,10 @@ msgid "Need to get %sB/%sB of archives.\n" msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n" #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format #| msgid "Download Failed" msgid " Download size: %sB\n" -msgstr "Ha fallat la baixada" +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 @@ -2052,7 +2054,7 @@ msgstr "" #: apt-private/private-install.cc #, c-format msgid "Space needed: %sB / %sB available\n" -msgstr "" +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 @@ -2060,6 +2062,7 @@ msgstr "" #, 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 - @@ -2069,7 +2072,7 @@ msgstr "" #: apt-private/private-install.cc #, c-format msgid "in %s: %sB / %sB available\n" -msgstr "" +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 @@ -2079,17 +2082,18 @@ msgstr "" 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 "" +msgstr "Espai necessari: %sB\n" #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Stored label: %s\n" +#, c-format msgid " Freed space: %sB\n" -msgstr "Etiqueta desada: %s\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 @@ -2107,14 +2111,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 "" +msgstr "Voleu continuar igualment?" #: apt-private/private-install.cc msgid "Continue?" -msgstr "" +msgstr "Voleu continuar?" #: apt-private/private-install.cc cmdline/apt-mark.cc msgid "Do you want to continue?" @@ -2355,50 +2361,53 @@ msgid "The following packages have unmet dependencies:" msgstr "Els següents paquets tenen dependències sense satisfer:" #: apt-private/private-output.cc -#, fuzzy #| msgid "satisfy dependency strings" msgid "Unsatisfied dependencies:" -msgstr "satisfà cadenes de dependència" +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 -#, fuzzy -#| msgid "Installing %s" msgid "Installing:" -msgstr "S'està instal·lant %s" - +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 -#, fuzzy -#| msgid "Total dependencies: " msgid "Installing dependencies:" -msgstr "Nombre total de dependències: " +msgstr "Instal·lant les dependències:" #: apt-private/private-output.cc msgid "REMOVING:" -msgstr "" +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 -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "S'han mantingut els paquets següents:" +msgstr "S'han ajornat les actualitzacions següents degut a escalonament:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "Not upgrading yet due to phasing:" -msgstr "S'han mantingut els paquets següents:" +msgstr "No s'està actualitzant encara degut a escalonament:" #: apt-private/private-output.cc msgid "Not upgrading:" -msgstr "" +msgstr "No s'està actualitzant:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2410,21 +2419,19 @@ msgstr "S'actualitzaran els paquets següents:" #: apt-private/private-output.cc msgid "Upgrading:" -msgstr "" +msgstr "S'està actualitzant:" #: apt-private/private-output.cc msgid "DOWNGRADING:" -msgstr "" +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 -#, fuzzy -#| msgid "Pinned packages:" msgid "Changing held packages:" -msgstr "Paquets fixats:" +msgstr "S'està canviant els paquets retinguts:" #: apt-private/private-output.cc msgid "The following held packages will be changed:" @@ -2445,7 +2452,7 @@ msgstr "" #: apt-private/private-output.cc msgid "Summary:" -msgstr "" +msgstr "Resum:" #: apt-private/private-output.cc #, c-format @@ -2453,10 +2460,10 @@ msgid "%lu upgraded, %lu newly installed, " msgstr "%lu actualitzats, %lu nous a instal·lar, " #: apt-private/private-output.cc -#, fuzzy, c-format +#, c-format #| msgid "Installing %s" msgid "Upgrading: %lu, Installing: %lu, " -msgstr "S'està instal·lant %s" +msgstr "S'està actualitzant: %lu, s'està instal·lant: %lu, " #: apt-private/private-output.cc #, c-format @@ -2464,10 +2471,9 @@ msgid "%lu reinstalled, " msgstr "%lu reinstal·lats, " #: apt-private/private-output.cc -#, fuzzy, c-format -#| msgid "Installing %s" +#, c-format msgid "Reinstalling: %lu, " -msgstr "S'està instal·lant %s" +msgstr "S'està reinstal·lant: %lu, " #: apt-private/private-output.cc #, c-format @@ -2477,7 +2483,7 @@ msgstr "%lu desactualitzats, " #: apt-private/private-output.cc #, c-format msgid "Downgrading: %lu, " -msgstr "" +msgstr "S'està desactualitzant: %lu, " #: apt-private/private-output.cc #, c-format @@ -2487,7 +2493,7 @@ msgstr "%lu a suprimir i %lu no actualitzats.\n" #: apt-private/private-output.cc #, c-format msgid "Removing: %lu, Not Upgrading: %lu\n" -msgstr "" +msgstr "S'està suprimint: %lu, no s'està actualitzant: %lu\n" #: apt-private/private-output.cc #, c-format @@ -2580,7 +2586,7 @@ msgstr " Taula de versions:" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "escalonada" #: apt-private/private-source.cc #, c-format @@ -2770,7 +2776,7 @@ msgstr "" #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" -msgstr "" +msgstr "No hi ha «Signed-By» a l'entrada %s de «%s»" #: apt-private/private-update.cc #, c-format @@ -3397,10 +3403,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 @@ -4078,7 +4082,7 @@ msgstr "No es pot invocar " #: methods/gpgv.cc #, c-format msgid "untrusted public key algorithm: %s" -msgstr "" +msgstr "no es confia en l'algoritme de clau pública: %s" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -4110,20 +4114,21 @@ msgstr "" msgid "Unknown error executing apt-key" msgstr "S'ha produït un error desconegut en executar apt-key" +# Si mai es tradueix el «apt-key»(8) canviar de DEPRECATION a la paraula feta servir al manual. #: 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 "" +"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)." #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" -"La signatura per la clau %s usa un algoritme de resum «hash» dèbil (%s)" +msgstr "La signatura amb la clau %s usa un algoritme dèbil (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.9.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2024-04-13 22:12+0200\n" "Last-Translator: Miroslav Kure <kurem@debian.cz>\n" "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n" @@ -3958,6 +3958,11 @@ msgstr "Nelze vyvolat " msgid "untrusted public key algorithm: %s" msgstr "nedůvěryhodný algoritmus veřejného klíče: %s" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3960,6 +3960,11 @@ msgstr "Methwyd gweithredu " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4028,6 +4028,11 @@ msgstr "Kunne ikke udføre " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.7.2\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2023-07-17 19:13+0200\n" "Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" @@ -4160,6 +4160,11 @@ msgstr "Aufruf nicht möglich: " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3908,6 +3908,11 @@ msgstr "ལས་བཀོལ་འབད་མ་ཚུགས།" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3899,6 +3899,11 @@ msgstr "Αδύνατη η επίκληση " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -37,7 +37,7 @@ 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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2016-01-26 01:51+0100\n" "Last-Translator: Manuel \"Venturi\" Porras Peralta <venturi@openmailbox." "org>\n" @@ -4151,6 +4151,11 @@ msgstr "No se pudo invocar " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, fuzzy, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3909,6 +3909,11 @@ msgstr "Ezin da deitu " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3901,6 +3901,11 @@ msgstr "Käynnistys ei onnistu" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4170,6 +4170,11 @@ msgstr "Impossible d'invoquer " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3983,6 +3983,11 @@ msgstr "Non é posíbel chamar a " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4052,6 +4052,11 @@ msgstr "Nem lehet meghívni " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, fuzzy, c-format @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04: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" @@ -4117,6 +4117,11 @@ msgstr "Impossibile invocare " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4038,6 +4038,11 @@ msgstr "呼び出せません" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3884,6 +3884,11 @@ msgstr "មិនអាចហៅ " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3905,6 +3905,11 @@ msgstr "다음을 실행할 수 없습니다: " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3766,6 +3766,11 @@ msgstr "%s venebû" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3873,6 +3873,11 @@ msgstr "" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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 " @@ -3886,6 +3886,11 @@ msgstr "जारी करण्यास करण्यास असमर् msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3976,6 +3976,11 @@ msgstr "Klarte ikke å starte" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3882,6 +3882,11 @@ msgstr "आह्वान गर्न असक्षम भयो" msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.9.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-06-11 12:57+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2024-06-22 20:05+0200\n" "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n" "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n" @@ -4083,6 +4083,11 @@ msgstr "Mislukking bij aanroepen van " msgid "untrusted public key algorithm: %s" msgstr "niet-vertrouwd openbaar sleutelalgoritme: %s" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3897,6 +3897,11 @@ msgstr "Klarte ikkje starta " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -14,7 +14,7 @@ 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: 2024-07-08 20:03+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4090,6 +4090,11 @@ msgstr "Nie można wywołać " msgid "untrusted public key algorithm: %s" msgstr "niezaufany algorytm klucza publicznego: %s" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4005,6 +4005,11 @@ msgstr "Não foi possível invocar " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format diff --git a/po/pt_BR.po b/po/pt_BR.po index 2ce315b35..359767b5c 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04: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." @@ -3924,6 +3924,11 @@ msgstr "Impossível invocar " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.7.2\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2023-07-13 19:58+0200\n" "Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n" @@ -4187,6 +4187,11 @@ msgstr "Nu s-a putut invoca " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.2.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04: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" @@ -4088,6 +4088,11 @@ msgstr "Невозможно вызвать " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3967,6 +3967,11 @@ msgstr "Nedá sa vyvolať " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3973,6 +3973,11 @@ msgstr "Ni mogoče klicati " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04: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" @@ -4005,6 +4005,11 @@ msgstr "Kunde inte starta " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, fuzzy, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3892,6 +3892,11 @@ msgstr "ไม่สามารถเรียก " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, fuzzy, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -3913,6 +3913,11 @@ msgstr "Hindi ma-invoke " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.6.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4034,6 +4034,11 @@ msgstr "Çağrılamıyor " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4028,6 +4028,11 @@ msgstr "Неможливо викликати " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format @@ -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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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" @@ -4001,6 +4001,11 @@ msgstr "Không thể gọi " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, fuzzy, c-format diff --git a/po/zh_CN.po b/po/zh_CN.po index d3fedb455..f7cd0aadf 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.9.1\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+0000\n" "PO-Revision-Date: 2024-04-16 13:15-0400\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) <debian-l10n-chinese@lists.debian.org>\n" @@ -3859,6 +3859,11 @@ msgstr "无法调用 " msgid "untrusted public key algorithm: %s" msgstr "不受信任的公钥算法:%s" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format diff --git a/po/zh_TW.po b/po/zh_TW.po index 943f86fec..42c659cde 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -12,7 +12,7 @@ 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: 2024-05-25 09:01+0000\n" +"POT-Creation-Date: 2024-07-30 04:29+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." @@ -3865,6 +3865,11 @@ msgstr "無法 invoke " msgid "untrusted public key algorithm: %s" msgstr "" +#: methods/gpgv.cc +#, c-format +msgid "%s will be deprecated in a future release" +msgstr "" + #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc #, c-format diff --git a/test/integration/test-method-gpgv b/test/integration/test-method-gpgv index 0f014e3d1..ffaa72c8f 100755 --- a/test/integration/test-method-gpgv +++ b/test/integration/test-method-gpgv @@ -48,6 +48,14 @@ testrun() { [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE [GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 rsa1024' + 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' + + 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' + testgpgv 'Good subkey signed with long keyid' 'Good: GOODSIG 5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 5B6896415D44C43E Sebastian Subkey <subkey@example.org> [GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' testgpgv 'Good subkey signed with fingerprint' 'Good: GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E Sebastian Subkey <subkey@example.org> @@ -108,6 +116,9 @@ gpgvmethod() { Config-Item: Debug::Acquire::gpgv=1 Config-Item: Dir::Bin::apt-key=./faked-apt-key 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 @@ -121,6 +132,9 @@ gpgvmethod() { Config-Item: Debug::Acquire::gpgv=1 Config-Item: Dir::Bin::apt-key=./faked-apt-key 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 @@ -135,6 +149,9 @@ gpgvmethod() { Config-Item: Debug::Acquire::gpgv=1 Config-Item: Dir::Bin::apt-key=./faked-apt-key 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 @@ -158,6 +175,9 @@ gpgvmethod() { Config-Item: Debug::Acquire::gpgv=1 Config-Item: Dir::Bin::apt-key=./faked-apt-key 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 @@ -199,3 +219,26 @@ echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey <subkey@example.org> [GNUPG:] VALIDSIG 0000000000000000000000000000000000000000 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 rm -rf rootdir/var/lib/apt/lists + +gpgvmethod() { + echo "601 Configuration +Config-Item: Debug::Acquire::gpgv=1 +Config-Item: Dir::Bin::apt-key=./faked-apt-key +Config-Item: APT::Hashes::SHA1::Weak=true +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-solver3-obsoleted-by b/test/integration/test-solver3-obsoleted-by new file mode 100755 index 000000000..031589bb4 --- /dev/null +++ b/test/integration/test-solver3-obsoleted-by @@ -0,0 +1,87 @@ +#!/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: current-version:amd64 - not installable +Obsolete: local-only:amd64 - not installable +Obsolete: obsolete-in-downgrade: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/libapt/assert_pubkeyalgo_test.cc b/test/libapt/assert_pubkeyalgo_test.cc new file mode 100644 index 000000000..88a070bbe --- /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()); +} |
