From a5fa1ea086e6fdccece6af6e7c0b32a8a661e4d4 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Wed, 15 Mar 2023 18:00:17 +0300 Subject: [PATCH] import libdnf-0.67.0-3.el9 --- .gitignore | 1 + .libdnf.metadata | 1 + ...-filter-out-advPkgs-with-different-a.patch | 100 + ...to-filtering-for-advisory-candidates.patch | 71 + .../0003-Update-translations-RHEL-9.1.patch | 3454 +++++++++++++++++ SPECS/libdnf.spec | 954 +++++ 6 files changed, 4581 insertions(+) create mode 100644 .gitignore create mode 100644 .libdnf.metadata create mode 100644 SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch create mode 100644 SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch create mode 100644 SOURCES/0003-Update-translations-RHEL-9.1.patch create mode 100644 SPECS/libdnf.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e85107 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libdnf-0.67.0.tar.gz diff --git a/.libdnf.metadata b/.libdnf.metadata new file mode 100644 index 0000000..af0f755 --- /dev/null +++ b/.libdnf.metadata @@ -0,0 +1 @@ +2abb8e24d867da4433345678764163e703b7729f SOURCES/libdnf-0.67.0.tar.gz diff --git a/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch b/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch new file mode 100644 index 0000000..46ea2ca --- /dev/null +++ b/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch @@ -0,0 +1,100 @@ +From c17e59faf6075e7ddb803f6393e86653afd6b16d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= +Date: Mon, 30 May 2022 08:59:41 +0200 +Subject: [PATCH] advisory upgrade: filter out advPkgs with different arch + +This prevents a situation in security upgrades where libsolv cannot +upgrade dependent pkgs because we ask for an upgrade of different arch: + +We can get the following testcase if libdnf has filtered out +json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms +(because there is an advisory for already installed json-c-1-1.el8.x86_64) but +json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms is not filtered out because +it has different architecture. The resulting transaction doesn't work. + +``` +repo @System -99.-1000 testtags +#>=Pkg: bind-libs-lite 1 1.el8 x86_64 +#>=Pkg: json-c 1 1.el8 x86_64 + +repo rhel-8-for-x86_64-baseos-rpms -99.-1000 testtags +#>=Pkg: json-c 2 2.el8 x86_64 +#>=Prv: libjson-c.so.4()(64bit) +#> +#>=Pkg: json-c 2 2.el8 i686 +#>=Prv: libjson-c.so.4() +#> +#>=Pkg: bind-libs-lite 2 2.el8 x86_64 +#>=Req: libjson-c.so.4()(64bit) +system x86_64 rpm @System +job update oneof json-c-1-1.el8.x86_64@@System json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms [forcebest,targeted,setevr,setarch] +result transaction,problems +#>problem f06d81a4 info package bind-libs-lite-2-2.el8.x86_64 requires libjson-c.so.4()(64bit), but none of the providers can be installed +#>problem f06d81a4 solution 96f9031b allow bind-libs-lite-1-1.el8.x86_64@@System +#>problem f06d81a4 solution c8daf94f allow json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms +#>upgrade bind-libs-lite-1-1.el8.x86_64@@System bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms +#>upgrade json-c-1-1.el8.x86_64@@System json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms``` +``` + += changelog = +msg: Filter out advisory pkgs with different arch during advisory upgrade, fixes possible problems in dependency resulution. +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2088149 +--- + libdnf/sack/query.cpp | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp +index ac2736b5..03d39659 100644 +--- a/libdnf/sack/query.cpp ++++ b/libdnf/sack/query.cpp +@@ -1877,12 +1877,6 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + std::vector candidates; + std::vector installed_solvables; + +- Id id = -1; +- while ((id = resultPset->next(id)) != -1) { +- candidates.push_back(pool_id2solvable(pool, id)); +- } +- NameArchEVRComparator cmp_key(pool); +- + if (cmp_type & HY_UPGRADE) { + Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES); + installed.installed(); +@@ -1893,6 +1887,18 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + installed_solvables.push_back(pool_id2solvable(pool, installed_id)); + } + std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator); ++ Id id = -1; ++ while ((id = resultPset->next(id)) != -1) { ++ Solvable * s = pool_id2solvable(pool, id); ++ // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch ++ // with some already installed pkg (in other words: some other version of the pkg is already installed). ++ // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong. ++ // It can result in dependency issues, reported as: RhBug:2088149. ++ auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator); ++ if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) { ++ candidates.push_back(s); ++ } ++ } + + // Apply security filters only to packages with lower priority - to unify behaviour upgrade + // and upgrade-minimal +@@ -1915,7 +1921,14 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + } + } + std::swap(candidates, priority_candidates); ++ } else { ++ Id id = -1; ++ while ((id = resultPset->next(id)) != -1) { ++ candidates.push_back(pool_id2solvable(pool, id)); ++ } + } ++ ++ NameArchEVRComparator cmp_key(pool); + std::sort(candidates.begin(), candidates.end(), cmp_key); + for (auto & advisoryPkg : pkgs) { + if (cmp_type & HY_UPGRADE) { +-- +2.36.1 + diff --git a/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch b/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch new file mode 100644 index 0000000..1bf2e2d --- /dev/null +++ b/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch @@ -0,0 +1,71 @@ +From 549d248c9b331d19a0fd355fc605ab8912ed50f6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= +Date: Tue, 5 Jul 2022 09:02:22 +0200 +Subject: [PATCH] Add obsoletes to filtering for advisory candidates + +Patch https://github.com/rpm-software-management/libdnf/pull/1526 +introduced a regression where we no longer do a security upgrade if a +package A is installed and package B obsoletes A and B is available in two +versions while there is an advisory for the second version. + +Test: https://github.com/rpm-software-management/ci-dnf-stack/pull/1130 +--- + libdnf/sack/query.cpp | 32 ++++++++++++++++++++++++++++---- + 1 file changed, 28 insertions(+), 4 deletions(-) + +diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp +index 03d39659..5355f9f7 100644 +--- a/libdnf/sack/query.cpp ++++ b/libdnf/sack/query.cpp +@@ -1878,6 +1878,13 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + std::vector installed_solvables; + + if (cmp_type & HY_UPGRADE) { ++ // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch with: ++ // * some already installed pkg (in other words: some other version of the pkg is already installed) ++ // or ++ // * with pkg that obsoletes some already installed (or to be installed in this transaction) pkg ++ // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong. ++ // It can result in dependency issues, reported as: RhBug:2088149. ++ + Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES); + installed.installed(); + installed.addFilter(HY_PKG_LATEST_PER_ARCH, HY_EQ, 1); +@@ -1887,13 +1894,30 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + installed_solvables.push_back(pool_id2solvable(pool, installed_id)); + } + std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator); ++ ++ Query obsoletes(sack, ExcludeFlags::IGNORE_EXCLUDES); ++ obsoletes.addFilter(HY_PKG, HY_EQ, resultPset); ++ obsoletes.available(); ++ ++ Query possibly_obsoleted(sack, ExcludeFlags::IGNORE_EXCLUDES); ++ possibly_obsoleted.addFilter(HY_PKG, HY_EQ, resultPset); ++ possibly_obsoleted.addFilter(HY_PKG_UPGRADES, HY_EQ, 1); ++ possibly_obsoleted.queryUnion(installed); ++ possibly_obsoleted.apply(); ++ ++ obsoletes.addFilter(HY_PKG_OBSOLETES, HY_EQ, possibly_obsoleted.runSet()); ++ obsoletes.apply(); ++ Id obsoleted_id = -1; ++ // Add to candidates resultPset pkgs that obsolete some installed (or to be installed in this transaction) pkg ++ while ((obsoleted_id = obsoletes.pImpl->result->next(obsoleted_id)) != -1) { ++ Solvable * s = pool_id2solvable(pool, obsoleted_id); ++ candidates.push_back(s); ++ } ++ + Id id = -1; ++ // Add to candidates resultPset pkgs that match name and arch with some already installed pkg + while ((id = resultPset->next(id)) != -1) { + Solvable * s = pool_id2solvable(pool, id); +- // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch +- // with some already installed pkg (in other words: some other version of the pkg is already installed). +- // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong. +- // It can result in dependency issues, reported as: RhBug:2088149. + auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator); + if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) { + candidates.push_back(s); +-- +2.36.1 + diff --git a/SOURCES/0003-Update-translations-RHEL-9.1.patch b/SOURCES/0003-Update-translations-RHEL-9.1.patch new file mode 100644 index 0000000..041b56b --- /dev/null +++ b/SOURCES/0003-Update-translations-RHEL-9.1.patch @@ -0,0 +1,3454 @@ +From 56f44d26b12e08910e8d101932c152ab743826da Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Thu, 15 Sep 2022 13:27:23 +0200 +Subject: [PATCH] Update translations RHEL 9.1 + +--- + po/fr.po | 337 ++++++++++++++++++++++++----------------- + po/ja.po | 404 ++++++++++++++++++++++++++++++++------------------ + po/ko.po | 329 +++++++++++++++++++++++++--------------- + po/libdnf.pot | 215 +++++++++++++++++---------- + po/zh_CN.po | 368 ++++++++++++++++++++++++++------------------- + 5 files changed, 1020 insertions(+), 633 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index 20e8417a..65fa6395 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -1,27 +1,27 @@ +-# Jean-Baptiste Holcroft , 2016. #zanata, 2021. ++# Jean-Baptiste Holcroft , 2016. #zanata + # José Fournier , 2016. #zanata + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata + # Ludek Janda , 2018. #zanata, 2021. +-# Jean-Baptiste Holcroft , 2019. #zanata, 2021. +-# Julien Humbert , 2020, 2021. +-# Arnaud T. , 2020. +-# Sundeep Anand , 2021. ++# Jean-Baptiste Holcroft , 2019. #zanata ++# Julien Humbert , 2020. ++# Sundeep Anand , 2021, 2022. + # Titouan Bénard , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-10-10 00:45+0000\n" +-"Last-Translator: Titouan Bénard \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2022-08-30 14:53+0200\n" ++"PO-Revision-Date: 2022-03-02 10:16+0000\n" ++"Last-Translator: Sundeep Anand \n" ++"Language-Team: French \n" + "Language: fr\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: Weblate 4.8\n" ++"X-Generator: Weblate 4.11\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -110,73 +110,72 @@ msgstr "n’a pu convertir « %s » en secondes" + msgid "GetValue(): Value not set" + msgstr "GetValue() : valeur non définie" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "Ne peut pas activer plus de flux du module '%s' en même temps" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" +-"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module" +-" déjà modifié" ++"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module " ++"déjà modifié" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3264 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "Problème de dépendance modulaire avec les valeurs par défaut : %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3267 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "Problème de dépendance modulaire avec les derniers modules : %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3271 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "Problème de dépendance modulaire : %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318 ++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416 ++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "Impossible de résoudre le paramètre ’%s’" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3301 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + "Seul le nom du module est nécessaire. Les paramètres inutiles ont été " + "ignorés : ’%s’" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3315 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" + "Impossible de réinitialiser le module '%s' : État du module déjà modifié" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3326 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "Impossible de désactiver le module '%s' : État du module déjà modifié" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453 ++#: libdnf/dnf-context.cpp:3634 + msgid "No modular data available" + msgstr "Aucune donnée modulaire disponible" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3374 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3412 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " +@@ -185,72 +184,71 @@ msgstr "" + "Problème lors de l'activation de l'arbre des dépendances pour le module " + "'%1$s' flux '%2$s' : %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3424 + msgid "Problems appeared for module enable request:" +-msgstr "Des problèmes sont apparus durant la requête d’activation du module :" ++msgstr "Des problèmes sont apparus pour la demande d'activation du module :" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3519 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" +-"Aucun package de module actif trouvé pour la spécification de module '%s'" ++"Aucun paquetage de module actif n'a été trouvé pour le module spec '%s'" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3524 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "" +-"Impossible d'installer le module '%s' à partir du référentiel de sécurité " +-"intégrée" ++msgstr "Impossible d'installer le module '%s' à partir du dépôt de sécurité" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3531 + #, c-format + msgid "No profile found matching '%s'" + msgstr "Aucun profil trouvé correspondant à '%s'" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3585 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "" +-"Aucune correspondance pour le package '%s' pour la spécification de module " +-"%s" ++msgstr "Aucune correspondance pour le paquet '%s' pour le module spec %s" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3596 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" +-"Problème lors de l'installation du module « %1$s » du flux « %2$s » : %3$s" ++msgstr "Problème lors de l'installation du module '%1$s' stream '%2$s' : %3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3605 + msgid "Problems appeared for module install request:" +-msgstr "" +-"Des problèmes sont apparus durant la requête d’installation du module :" ++msgstr "Des problèmes sont apparus pour la demande d'installation du module :" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3664 + msgid "Problems appeared for module reset request:" + msgstr "" +-"Des problèmes sont apparus durant la requête de réinitialisation du module :" ++"Des problèmes sont apparus pour la demande de réinitialisation des modules :" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724 + msgid "Problems appeared for module disable request:" + msgstr "" +-"Des problèmes sont apparus durant la requête de désactivation du module :" ++"Des problèmes sont apparus pour la demande de désactivation du module :" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3756 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "" +-"Le résultat de l’opération sera le basculement du flux « %s » du module « %s" +-" » vers le flux « %s »" ++"Le résultat de l’opération sera le basculement du flux « %s » du module « %s " ++"» vers le flux « %s »" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3760 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "Il n’est pas possible de basculer les flux actifs d’un module. \n" +-"Il est recommandé de retirer tout contenu installé par le module, et de réinitialiser le mode en utilisant la commande 'microdnf module reset ’. Après la réinitialisation du module, vous pouvez installer les autres flux." ++"Il est recommandé de retirer tout contenu installé par le module, et de " ++"réinitialiser le mode en utilisant la commande 'microdnf module reset " ++"’. Après la réinitialisation du module, vous pouvez installer " ++"les autres flux." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -335,84 +333,126 @@ msgstr "n’a pas pu trouver le package %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "n’a pas pu ajouter d’élément pour effacer %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "n’a pu ajouter solv" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() a échoué." ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "aucune chaine %1$s pour %2$s" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "n’a pas pu ouvrir : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "n’a pas pu créer le fichier temporaire : %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "n’a pas pu ouvrir le fichier tmp : %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:560 ++#, fuzzy, c-format ++#| msgid "failed opening tmp file: %s" ++msgid "Failed closing tmp file %s: %s" ++msgstr "n’a pas pu ouvrir le fichier tmp : %s" ++ ++#: libdnf/dnf-sack.cpp:570 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() n’a pu écrire les données : %i" ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() n’a pas pu charger à nouveau le fichier solv" ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "n’a pas pu créer le fichier temporaire %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) a échoué : %2$d" ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "fichier md de dépôt nul" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "n’a pu lire le fichier %1$s : %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() a échoué." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "échec du chargement du MD_TYPE_PRIMARY." + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() a échoué." ++#: libdnf/dnf-sack.cpp:787 ++#, fuzzy, c-format ++#| msgid "Loading plugin file=\"%s\"" ++msgid "Loading repomd has failed: %s" ++msgstr "Chargement du fichier d’extension fichier=« %s »" ++ ++#: libdnf/dnf-sack.cpp:798 ++#, fuzzy, c-format ++#| msgid "Loading plugin file=\"%s\"" ++msgid "Loading primary has failed: %s" ++msgstr "Chargement du fichier d’extension fichier=« %s »" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:864 + msgid "failed to auto-detect architecture" + msgstr "n’a pu auto-détecter l’architecture" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1029 + #, c-format + msgid "failed creating cachedir %s" + msgstr "n’a pu créer le cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1806 + msgid "failed loading RPMDB" + msgstr "n’a pu télécharger RPMDB" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2590 + #, c-format + msgid "No module defaults found: %s" + msgstr "Aucun module par défaut n’a été trouvé : %s" +@@ -441,75 +481,85 @@ msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "déjà en état à 100%% [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "Sources non définies quand vous essayez d’assurer paquet %s" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "N’a pu assurer %1$s comme dépôt %2$s non trouvé (%3$i dépôts chargés)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "Échec de la vérification d’untrusted : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "Fichier téléchargé pour %s non trouvé" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + "le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "N’a pas pu obtenir la valeur de CacheDir" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + "Échec de l’obtention de l’espace libre du système de fichiers pour %s : " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" +-"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible " +-"%3$s" ++"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "n’a pu réussi à définir root" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erreur %i lors du test transactionnel" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "Erreur %i lors de l’ouverture de la base de données rpm" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données " ++"rpm." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "Erreur %i pendant la transaction" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" + "La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no " + "error(%i) »" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "impossible d’ouvrir le dossier %1$s : %2$s" +@@ -528,8 +578,7 @@ msgstr "" + #: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" +-"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison " +-"incorrecte" ++"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte" + + #: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" +@@ -717,63 +766,68 @@ msgstr "le module %s est en conflit avec %s fourni par lui-même" + msgid "both module %s and %s obsolete %s" + msgstr "à la fois le module %s et %s rendent obsolète %s" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "aucun solveur défini" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "n’a pas pu rendre %s absolu" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "échec de l’écriture des debugdata dans %1$s : %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "pas de solv dans l’objectif" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "aucune solution, n’a pas pu supprimer le package protégé" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "aucune solution n’est possible" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "Problème : " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "Probléme %d : " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + "L’opération résulterait en la suppression des packages protégés suivants : " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "N’a pas pu renommer %1$s en %2$s : %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "N’a pas pu définir les permissions sur %1$s : %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "impossible de créer le dossier %1$s : %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "impossible de stat le chemin %1$s : %2$s" +@@ -870,8 +924,7 @@ msgstr "" + #: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" +-"Impossible de supprimer les données de sécurité modulaires dans « %s »" ++msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »" + + #: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format +@@ -958,8 +1011,8 @@ msgid "" + "operator instead." + msgstr "" + "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un " +-"comportement indéfini. Il est déprécié et le support sera abandonné dans les" +-" prochaines versions. Utilisez plutôt l’opérateur « = »." ++"comportement indéfini. Il est déprécié et le support sera abandonné dans les " ++"prochaines versions. Utilisez plutôt l’opérateur « = »." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -980,8 +1033,8 @@ msgstr "repo '%s' : 'basecachedir' n'est pas fixé" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "" + "La vitesse de téléchargement maximale est plus basse que le minimum. " + "Veuillez modifier les paramètres minrate ou throttle" +@@ -1012,8 +1065,8 @@ msgstr "%s : gpgme_data_new_from_fd() : %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s : gpgme_op_import() : %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236 ++#: libdnf/repo/Repo.cpp:1279 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Impossible de créer le répertoire temporaire du dépôt « %s » : %s" +@@ -1159,12 +1212,12 @@ msgstr "Pas en cours" + msgid "No transaction in progress" + msgstr "Aucune transaction n’est en cours" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "" + "Tentative d’insérer un élément de transaction dans une transaction achevée" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "" + "Tentative de mettre à jour un élément de transaction dans une transaction " +@@ -1199,11 +1252,23 @@ msgid "Can't add console output to unsaved transaction" + msgstr "" + "Ne peut pas ajouter une sortie de console à une transaction non enregistrée" + ++#~ msgid "failed to add solv" ++#~ msgstr "n’a pu ajouter solv" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() n’a pu écrire les données : %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main() n’a pas pu charger à nouveau le fichier solv" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) a échoué : %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() a échoué." ++ + #~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "Échec de l’analyse du module d’artéfact NEVRA : %s" ++#~ msgstr "Échec de l'analyse de l'artefact de module '%s'" + + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "n’a pu calculer la somme de contrôle RPMDB" +diff --git a/po/ja.po b/po/ja.po +index 4005b6a0..ded77846 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,21 +1,23 @@ + # Casey Jones , 2018. #zanata + # Ludek Janda , 2018. #zanata, 2021. + # Casey Jones , 2020. +-# Sundeep Anand , 2021. ++# Sundeep Anand , 2021, 2022. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-09-11 10:04+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2022-08-30 14:53+0200\n" ++"PO-Revision-Date: 2022-09-06 07:19+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Japanese \n" + "Language: ja\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.8\n" ++"X-Generator: Weblate 4.14\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -24,7 +26,7 @@ msgstr "値が指定されていません" + #: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48 + #, c-format + msgid "seconds value '%s' must not be negative" +-msgstr "2個目の値 '%s' は負の数にしないでください" ++msgstr "2 個目の値 '%s' は負の数にしないでください" + + #: libdnf/conf/ConfigMain.cpp:71 + #, c-format +@@ -104,130 +106,143 @@ msgstr "'%s' を 秒に変換できません" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 値は設定されていません" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" +-msgstr "モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はす" ++"でに変更されています" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3264 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "デフォルトのモジュラー依存問題: %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3267 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "最新のモジュールでモジュールの依存関係の問題: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3271 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "モジュラーの依存に関する問題: %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318 ++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416 ++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "引数 '%s' を解決できません" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3301 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3315 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" +-msgstr "モジュール '%s' をリセットできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%s' をリセットできません。モジュールの状態はすでに変更されていま" ++"す" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3326 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" +-msgstr "モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453 ++#: libdnf/dnf-context.cpp:3634 + msgid "No modular data available" + msgstr "モジュールデータは利用できません" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3374 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "引数の不要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3412 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s" ++msgstr "" ++"モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3424 + msgid "Problems appeared for module enable request:" +-msgstr "" ++msgstr "モジュール有効化リクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3519 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" ++"モジュール仕様 '%s' について、アクティブなモジュールパッケージが見つかりませ" ++"ん" + +-#: libdnf/dnf-context.cpp:3523 +-#, fuzzy, c-format +-#| msgid "cannot install both modules %s and %s" ++#: libdnf/dnf-context.cpp:3524 ++#, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "モジュール %s と %s どちらもインストールできません" ++msgstr "フェイルセーフリポジトリーからモジュール '%s' をインストールできません" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3531 + #, c-format + msgid "No profile found matching '%s'" +-msgstr "" ++msgstr "'%s' にマッチするプロファイルが見つかりません" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3585 + #, c-format + msgid "No match for package '%s' for module spec %s" + msgstr "" ++"モジュール仕様 %s について、パッケージ '%s' にマッチする項目はありません" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3596 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" ++msgstr "モジュール '%1$s' ストリーム '%2$s' のインストール中に問題: %3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3605 + msgid "Problems appeared for module install request:" +-msgstr "" ++msgstr "モジュールインストールリクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3664 + msgid "Problems appeared for module reset request:" +-msgstr "" ++msgstr "モジュールリセットリクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724 + msgid "Problems appeared for module disable request:" +-msgstr "" ++msgstr "モジュール無効化リクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3756 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" +-msgstr "オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り替える結果となります" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" ++msgstr "" ++"オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り" ++"替える結果となります" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3760 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "有効化されたモジュールのストリームの切り替えはできません。\n" +-"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module reset ' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。" ++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module " ++"reset ' コマンドを使用してモジュールをリセットすることを推奨しま" ++"す。モジュールのリセット後に、別のストリームをインストールできます。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -254,7 +269,9 @@ msgstr " 問題: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません" ++msgstr "" ++"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ" ++"ンストールはできません" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -293,7 +310,8 @@ msgstr "トランザクションの実行中にエラーが発生しました: % + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" ++msgstr "" ++"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -309,84 +327,125 @@ msgstr "パッケージ %s を見つけることができませんでした" + msgid "could not add erase element %1$s(%2$i)" + msgstr "erase 要素 %1$s(%2$i) を追加することができません" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "solv の追加に失敗しました" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() は失敗しました。" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "拡張キャッシュの %s (%d) の読み込みに失敗しました: " ++ ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s の %1$s 文字列はありません" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "一時ファイルを作成できません: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "tmp ファイルを開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() はデータの書き込みに失敗しました: %i" ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "プライマリーキャッシュの %s repowriter 書き込み中に %i " ++"エラーが発生しました。エラー: %s" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "tmp ファイル %s の終了に失敗しました: %s" ++ ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s: " ++ ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "一時ファイル %s を作成できません" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) は失敗しました: %2$d" ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "拡張キャッシュ %s (%d) の書き込み中: repowriter の書き込みに失敗: %i、エラー:" ++" %s" ++ ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "拡張キャッシュの書き込み中 (%d): 一時ファイルを終了できません: %s" ++ ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d)" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "null repo md ファイル" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "ファイル %1$s を読み込みできません: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() は失敗しました。" ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "リポジトリーのロード中に %s が使用できませんでした: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY のロードに失敗しました。" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" ++#: libdnf/dnf-sack.cpp:787 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "repomd の読み込みに失敗しました: %s" ++ ++#: libdnf/dnf-sack.cpp:798 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "プライマリーの読み込みに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:864 + msgid "failed to auto-detect architecture" + msgstr "アーキテクチャーの自動検出に失敗しました" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1029 + #, c-format + msgid "failed creating cachedir %s" + msgstr "cachedir %s の作成に失敗しました" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1806 + msgid "failed loading RPMDB" + msgstr "RPMDB のロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2590 + #, c-format + msgid "No module defaults found: %s" + msgstr "モジュールのデフォルトは見つかりませんでした: %s" +@@ -415,69 +474,84 @@ msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "すでに 100%% の状態 [%s] にあります" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)" ++msgstr "" ++"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo " ++"はロード済み)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "untrusted の確認に失敗しました: " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "%s にダウンロードしたファイルが見つかりませんでした" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" ++msgstr "" ++"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir の値の取得に失敗しました" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" +-msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" ++msgstr "" ++"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "root の設定に失敗しました" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "トランザクションテストの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm データベースを開く際にエラー %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 関数は rpm データベースのクッキーを返しませんでした。" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "トランザクションの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" +-msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした" ++msgstr "" ++"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま" ++"せんでした" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を開くことができません: %2$s" +@@ -583,7 +657,9 @@ msgstr "パッケージ %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +@@ -593,7 +669,9 @@ msgstr "パッケージ %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +@@ -656,7 +734,9 @@ msgstr "モジュール %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +@@ -666,7 +746,9 @@ msgstr "モジュール %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +@@ -678,62 +760,67 @@ msgstr "モジュール %s は自己提供される %s と競合しています" + msgid "both module %s and %s obsolete %s" + msgstr "モジュール %s と %s 両方は %s を廃止しました" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "設定されたソルバーはありません" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s を絶対的にすることに失敗しました" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "目標に solv がありません" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "ソリューションがなく、保護されたパッケージを削除できません" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "可能なソリューションがありません" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "問題: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "問題 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv の solv_toolversion の長さ: %zu ですが、最大の想定値: %zu です" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "%1$s に権限を設定できませんでした: %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を作成できません : %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "パス %1$s のstatを調べられません : %2$s" +@@ -812,7 +899,9 @@ msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータ + #: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s" ++msgstr "" ++"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: " ++"%s" + + #: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format +@@ -829,7 +918,9 @@ msgstr "'%s' のモジュラーフェイルセーフデータを削除できま + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用できません" ++msgstr "" ++"ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用" ++"できません" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -859,7 +950,8 @@ msgstr "ストリームのアップグレードに失敗しました: %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" ++msgstr "" ++"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -902,9 +994,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"reldeps で '==' " +-"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' " +-"演算子を使用してください。" ++"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。" ++"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演" ++"算子を使用してください。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -914,7 +1006,9 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" ++msgstr "" ++"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ" ++"ピング。" + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 + #: libdnf/repo/Repo.cpp:1400 +@@ -924,18 +1018,23 @@ msgstr "repo '%s': 'basecachedir' が設定されていません" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの" ++"設定を変更してください" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++msgstr "" ++"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい" ++"ません" + + #: libdnf/repo/Repo.cpp:548 + msgid "'proxy_username' is set but not 'proxy_password'" +-msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++msgstr "" ++"'proxy_username' は設定済みですが、'proxy_password' は設定されていません" + + #: libdnf/repo/Repo.cpp:629 + #, c-format +@@ -952,8 +1051,8 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236 ++#: libdnf/repo/Repo.cpp:1279 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s" +@@ -996,7 +1095,8 @@ msgstr "復元中: repo '%s' はスキップされました、metalink はあり + #: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." +-msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" ++msgstr "" ++"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + + #: libdnf/repo/Repo.cpp:1218 + #, c-format +@@ -1041,7 +1141,8 @@ msgstr "repo: キャッシュを使用: %s" + #: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" ++msgstr "" ++"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + + #: libdnf/repo/Repo.cpp:1355 + #, c-format +@@ -1095,17 +1196,18 @@ msgstr "進行中ではありません" + msgid "No transaction in progress" + msgstr "進行中のトランザクションはありません" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "完了したトランザクションにトランザクションアイテムの挿入を試みます" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "完了したトランザクションにトランザクションアイテムの更新を試みます" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません" ++msgstr "" ++"データベースが破損しています。テーブル 'config' の行 'version' がありません" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1128,12 +1230,24 @@ msgstr "TransactionItem の状態は設定されていません: %s" + msgid "Can't add console output to unsaved transaction" + msgstr "未保存のトランザクションにコンソールの出力を追加できません" + +-#, fuzzy ++#~ msgid "failed to add solv" ++#~ msgstr "solv の追加に失敗しました" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() はデータの書き込みに失敗しました: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "" ++#~ "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) は失敗しました: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" ++ + #~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "デフォルトのアップグレードに失敗しました: %s" ++#~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました" + + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo に対する不正な id: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB チェックサムの計算に失敗しました" +diff --git a/po/ko.po b/po/ko.po +index 94d0994e..6c1d6f74 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -3,20 +3,23 @@ + # This file is distributed under the same license as the PACKAGE package. + # Ludek Janda , 2018. #zanata + # simmon , 2021. ++# Kim InSoo , 2022. ++# 김인수 , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-11-04 08:05+0000\n" +-"Last-Translator: simmon \n" +-"Language-Team: Korean \n" ++"POT-Creation-Date: 2022-08-30 14:53+0200\n" ++"PO-Revision-Date: 2022-09-02 02:19+0000\n" ++"Last-Translator: 김인수 \n" ++"Language-Team: Korean \n" + "Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.8\n" ++"X-Generator: Weblate 4.14\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -105,129 +108,136 @@ msgstr "변환 할 수 없습니다 '%s'초까지" + msgid "GetValue(): Value not set" + msgstr "GetValue () : 값이 설정되지 않았습니다" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "동시에 모듈 '%s’에서 다른 스트림을 활성화 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" +-msgstr "모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었" ++"습니다" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3264 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "기본설정에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3267 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "최신 모듈에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3271 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "모듈러 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318 ++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416 ++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "인수 %s를 해결 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3301 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3315 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3326 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "모듈 '%s'사용 할 수 없습니다: 모듈 상태는 이미 적재되었습니다" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453 ++#: libdnf/dnf-context.cpp:3634 + msgid "No modular data available" + msgstr "모듈러 자료를 이용 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3374 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "인수: '%s'에 불필요한 정보를 무시하기" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3412 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 문제" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 " ++"문제" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3424 + msgid "Problems appeared for module enable request:" + msgstr "모듈 활성화 요청에 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3519 + #, c-format + msgid "No active module packages found for module spec '%s'" +-msgstr "모듈 상세 '%s'에 동적 모듈 꾸러미를 찾을 수 없습니다" ++msgstr "모듈 상세 '%s'를 위한 활성 모듈 꾸러미가 없습니다" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3524 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "실패-방지 저장소에서 모듈 '%s'을 설치 할 수 없습니다" ++msgstr "실패-방지 저장소에서 모듈 '%s'를 설치 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3531 + #, c-format + msgid "No profile found matching '%s'" + msgstr "'%s'와 일치하는 프로파일을 찾을 수 없습니다" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3585 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "모듈 상세 %s와 꾸러미 '%s'가 일치하지 않습니다" ++msgstr "꾸러미 '%s'가(모듈 상세 %s에 대한) 일치하지 않습니다" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3596 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치하는 동안에 발생하는 문제" ++msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치 중에 발생하는 문제" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3605 + msgid "Problems appeared for module install request:" + msgstr "모듈 설치 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3664 + msgid "Problems appeared for module reset request:" +-msgstr "모듈 재설정 요청을 위해 나타난 문제:" ++msgstr "모듈 초기화 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724 + msgid "Problems appeared for module disable request:" + msgstr "모듈 비활성화 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3756 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3760 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "활성화된 모듈 스트림을 전환 할 수 없습니다.\n" +-"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니다." ++"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 " ++"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니" ++"다." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -254,7 +264,9 @@ msgstr " 문제: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 할 수 없습니다" ++msgstr "" ++"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 " ++"할 수 없습니다" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -293,7 +305,8 @@ msgstr "연결 실행 오류 : %s" + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" ++msgstr "" ++"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -309,84 +322,123 @@ msgstr "꾸러미를 찾지 못했습니다. %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "solv를 추가하지 못했습니다" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() 실패하였습니다." + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "확장 캐쉬 %s (%d) 적재 중 실패함: " ++ ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s에 %1$s 문자열이 없습니다" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "열지 못했습니다 : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "여는 tmp 파일을 열지 못했습니다. %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "기본 캐쉬 %s를 쓰는 동안에 repowriter 쓰기가 실패함: %i, 오류: %s" ++ ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "tmp 파일을 닫는데 실패함 %s: %s" ++ ++#: libdnf/dnf-sack.cpp:570 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() 실패한 쓰기 자료: %i" ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s: " + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "확장 캐쉬 %s (%d)를 쓰는 동안: repowriter 쓰기가 실패함: %i, 오류: %s" ++ ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "확장 캐쉬 (%d)를 쓰는 동안: 임시 파일을 닫을 수 없습니다: %s" ++ ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) 실패하였습니다: %2$d" ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d)" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "null repo md 파일" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "파일을 읽을 수 없습니다. %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() 실패하였습니다." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "저장소를 적재하는 동안에 %s를 사용하는데 실패함: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다." + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." ++#: libdnf/dnf-sack.cpp:787 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "repomd 적재하는데 실패함: %s" ++ ++#: libdnf/dnf-sack.cpp:798 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "기본 적재하는데 실패함: %s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:864 + msgid "failed to auto-detect architecture" + msgstr "구조 자동 검색에 실패했습니다" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1029 + #, c-format + msgid "failed creating cachedir %s" +-msgstr "캐시 된 생성 실패 %s" ++msgstr "캐쉬 된 생성 실패 %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1806 + msgid "failed loading RPMDB" + msgstr "RPMDB로드 실패" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2590 + #, c-format + msgid "No module defaults found: %s" + msgstr "모듈 기본 설정을 찾을 수 없습니다: %s" +@@ -415,69 +467,78 @@ msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$ + msgid "already at 100%% state [%s]" + msgstr "이미 100 %% 상태 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "보장하지 못함 %1$s 레포로서 %2$s 찾을 수 없음 (%3$i repos loaded)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "신뢰할 수 없는지 확인하지 못했습니다. " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "에 대한 내려받기 파일 %s 찾을 수 없음" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "루트를 설정하지 못했습니다" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "%i 연결 실행 중 오류" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm 데이타베이스를 여는 동안 오류 %i가 발생했습니다" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환하지 않습니다." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "오류 %i 실행중인 연결" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "연결이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s" +@@ -678,62 +739,67 @@ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" + msgid "both module %s and %s obsolete %s" + msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "solver 설정 없음" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s 절대값을 생성을 실패하였습니다" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "목표에 solv가 없다" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "해결책 없음" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "문제: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "문제 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv의 solv_toolversion은 %zu 길이지만 최대값은 %zu로 예상됩니다" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "%1$s 을 %2$s: %3$s에 이름 바꾸기 실패" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "%1$s: %2$s에 perms 설정 실패하였습니다" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "경로 %1$s: %2$s stat 할 수 없습니다" +@@ -829,7 +895,9 @@ msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다" + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 되어 있기 때문에)" ++msgstr "" ++"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 " ++"되어 있기 때문에)" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -902,8 +970,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 " +-"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요." ++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 " ++"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 " ++"'=' 연산자를 사용하세요." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -923,14 +992,17 @@ msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주" ++"세요" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" ++msgstr "" ++"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" + + #: libdnf/repo/Repo.cpp:548 + msgid "'proxy_username' is set but not 'proxy_password'" +@@ -951,8 +1023,8 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236 ++#: libdnf/repo/Repo.cpp:1279 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s" +@@ -1030,7 +1102,7 @@ msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s" + #: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" +-msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s" ++msgstr "디렉토리 \"%s\"를 \"%s\": %s로 변경 할 수 없음" + + #: libdnf/repo/Repo.cpp:1339 + #, c-format +@@ -1094,17 +1166,18 @@ msgstr "진행 중이 아님" + msgid "No transaction in progress" + msgstr "진행 중인 연결 없음" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "연결 항목을 완료된 연결에 삽입하려고 시도했습니다" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" ++msgstr "" ++"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1127,8 +1200,20 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s" + msgid "Can't add console output to unsaved transaction" + msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다" + +-#~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "모듈 artifact NERVRA '%s'를 구문 분석하는데 실패하였습니다" ++#~ msgid "failed to add solv" ++#~ msgstr "solv를 추가하지 못했습니다" + +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB 체크섬 계산 실패" ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() 실패한 쓰기 자료: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) 실패하였습니다: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." ++ ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함" +diff --git a/po/libdnf.pot b/po/libdnf.pot +index 4ae537cd..dafae9c7 100644 +--- a/po/libdnf.pot ++++ b/po/libdnf.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-12 01:51+0000\n" ++"POT-Creation-Date: 2022-08-30 14:53+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -105,122 +105,122 @@ msgstr "" + msgid "GetValue(): Value not set" + msgstr "" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3264 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3267 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3271 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318 ++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416 ++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3301 + #, c-format + msgid "" + "Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3315 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3326 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453 ++#: libdnf/dnf-context.cpp:3634 + msgid "No modular data available" + msgstr "" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3374 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3412 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3424 + msgid "Problems appeared for module enable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3519 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3524 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" + msgstr "" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3531 + #, c-format + msgid "No profile found matching '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3585 + #, c-format + msgid "No match for package '%s' for module spec %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3596 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3605 + msgid "Problems appeared for module install request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3664 + msgid "Problems appeared for module reset request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724 + msgid "Problems appeared for module disable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3756 + #, c-format + msgid "" + "The operation would result in switching of module '%s' stream '%s' to stream " + "'%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3760 + msgid "" + "It is not possible to switch enabled streams of a module.\n" + "It is recommended to remove all installed content from the module, and reset " +@@ -309,84 +309,123 @@ msgstr "" + msgid "could not add erase element %1$s(%2$i)" + msgstr "" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:570 + #, c-format +-msgid "write_main() failed writing data: %i" ++msgid "Failed to use newly written primary cache: %s: " + msgstr "" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:692 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" ++msgid "Failed to use newly written extension cache: %s (%d): " + msgstr "" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " + msgstr "" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." ++#: libdnf/dnf-sack.cpp:787 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:798 ++#, c-format ++msgid "Loading primary has failed: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:864 + msgid "failed to auto-detect architecture" + msgstr "" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1029 + #, c-format + msgid "failed creating cachedir %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1806 + msgid "failed loading RPMDB" + msgstr "" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2590 + #, c-format + msgid "No module defaults found: %s" + msgstr "" +@@ -415,69 +454,78 @@ msgstr "" + msgid "already at 100%% state [%s]" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "" +@@ -678,62 +726,67 @@ msgstr "" + msgid "both module %s and %s obsolete %s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "" +@@ -1092,11 +1145,11 @@ msgstr "" + msgid "No transaction in progress" + msgstr "" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "" + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 787086b5..d931ab2e 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,21 +1,22 @@ + # Charles Lee , 2017. #zanata, 2020, 2021. + # Ludek Janda , 2018. #zanata, 2021. +-# Qiyu Yan , 2021. +-# Sundeep Anand , 2021. ++# Sundeep Anand , 2021, 2022. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-09-11 10:04+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2022-08-30 14:53+0200\n" ++"PO-Revision-Date: 2022-09-06 07:19+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Chinese (Simplified) \n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.8\n" ++"X-Generator: Weblate 4.14\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -104,130 +105,131 @@ msgstr "无法把 '%s' 转换为秒" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 值没有设置" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "无法同时从模块 '%s' 中启用更多流" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "无法启用模块 '%1$s' 流 '%2$s':已经修改的模块状态" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3264 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "默认设置的模块依赖性问题:%s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3267 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "最新模块的模块化依赖关系问题: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3271 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "模块依赖问题:%s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318 ++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416 ++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "无法解析参数 '%s'" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3301 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "只需要模块名。忽略参数 '%s' 中的无用信息" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3315 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "无法重置模块 '%s':已修改的模块状态" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3326 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "无法禁用模块 '%s':已经修改的模块状态" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453 ++#: libdnf/dnf-context.cpp:3634 + msgid "No modular data available" + msgstr "没有可用的模块数据" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3374 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" +-msgstr "忽略参数:\"%s\" 中不需要的信息" ++msgstr "忽略参数中不需要的信息:'%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3412 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3424 + msgid "Problems appeared for module enable request:" +-msgstr "" ++msgstr "模块启用请求出现问题:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3519 + #, c-format + msgid "No active module packages found for module spec '%s'" +-msgstr "" ++msgstr "未找到模块规范 '%s' 的活动模块包" + +-#: libdnf/dnf-context.cpp:3523 +-#, fuzzy, c-format +-#| msgid "cannot install both modules %s and %s" ++#: libdnf/dnf-context.cpp:3524 ++#, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "无法同时安装模块 %s 和 %s" ++msgstr "无法从故障保护存储库安装模块 '%s'" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3531 + #, c-format + msgid "No profile found matching '%s'" +-msgstr "" ++msgstr "未找到匹配 '%s' 的配置文件" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3585 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "" ++msgstr "没有匹配模块规范 %s 的包 '%s'" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3596 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" ++msgstr "在安装模块 '%1$s' 流 '%2$s'时的问题:%3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3605 + msgid "Problems appeared for module install request:" +-msgstr "" ++msgstr "模块安装请求出现问题:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3664 + msgid "Problems appeared for module reset request:" +-msgstr "" ++msgstr "模块重置请求出现问题:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724 + msgid "Problems appeared for module disable request:" +-msgstr "" ++msgstr "模块禁用请求出现问题:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3756 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3760 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "无法切换一个模块已启用的流。 \n" +-"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' 命令重置模块。在重置模块后就可以安装其他流。" ++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' " ++"命令重置模块。在重置模块后就可以安装其他流。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -309,84 +311,123 @@ msgstr "无法找到软件包 %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "无法添加删除元素 %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "添加 solv 失败" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() 已失败。" ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "加载扩展缓存 %s (%d) 失败: " + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" +-msgstr "没有为 %2$s 的 %1$s 字符串" ++msgstr "没有 %2$s 的 %1$s 字符串" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "打开失败:%s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "不能创建临时文件: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打开 tmp 文件失败: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() 写数据失败: %i" ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "写主缓存 %s 时 repowriter 写失败:%i 错误:%s" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() 重新加载写的 solv 文件失败" ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "关闭临时文件 %s 失败:%s" ++ ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "使用新写的主缓存失败:%s: " + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "使用新写的主缓存失败:%s" ++ ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "不能创建临时文件 %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "编写扩展缓存 %s (%d) 时: repowriter 写失败: %i,错误: %s" ++ ++#: libdnf/dnf-sack.cpp:676 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) 已失败: %2$d" ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "编写扩展缓存 (%d) 时:无法关闭临时文件:%s" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "使用新写的扩展缓存失败:%s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "使用新写的扩展缓存失败:%s (%d)" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" +-msgstr "null repo md 文件" ++msgstr "null 存储库 md 文件" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "不能读文件 %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() 已失败。" ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "加载软件仓库时使用 %s 失败: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "加载 MD_TYPE_PRIMARY 失败。" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() 已失败。" ++#: libdnf/dnf-sack.cpp:787 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "加载 repomd 失败:%s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:798 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "加载主设备失败:%s" ++ ++#: libdnf/dnf-sack.cpp:864 + msgid "failed to auto-detect architecture" + msgstr "自动检测架构失败" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1029 + #, c-format + msgid "failed creating cachedir %s" + msgstr "无法创建 cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1806 + msgid "failed loading RPMDB" + msgstr "无法加载 RPMDB" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2590 + #, c-format + msgid "No module defaults found: %s" + msgstr "没有找到模块默认设置:%s" +@@ -415,69 +456,78 @@ msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "已是 100%% 状态 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "在尝试确保软件包 %s 时源没有设置" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载)" ++msgstr "无法确保 %1$s,因为存储库 %2$s 没有找到 (%3$i 存储库已加载)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "检查不被信任失败 : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "没有找到下载的文件 %s" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "软件包 %1$s 不能被验证,repo %2$s 启用了 GPG: %3$s" ++msgstr "软件包 %1$s 不能被验证,存储库 %2$s 启用了 GPG: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "无法为 CacheDir 获得值" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "无法为 %s 获得文件系统可用空间的大小: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "无法为 %s 获得文件系统可用空间的大小" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "设置 root 失败" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" +-msgstr "错误 %i 运行事务测试" ++msgstr "运行事务测试时错误 %i" ++ ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "打开 rpm 数据库时错误 %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie()函数没有返回 rpm 数据库的 cookie。" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" +-msgstr "错误 %i 运行事务" ++msgstr "运行事务时错误 %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "事务没有进入写阶段,但没有返回错误(%i)" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "无法打开目录 %1$s: %2$s" +@@ -563,7 +613,7 @@ msgstr "软件包 %s 被排除过滤过滤掉" + #: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "没有东西可提供 %s(%s 需要)" ++msgstr "没有提供 %s 所需要的 %s" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +@@ -578,17 +628,17 @@ msgstr "软件包 %s 与 %s(由 %s 提供)冲突" + #: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "软件包 %s 取代了 %s(由 %s 提供)" ++msgstr "软件包 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "已安装的软件包 %s 取代了 %s(由 %s 提供)" ++msgstr "已安装的软件包 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)" ++msgstr "软件包 %s 隐式地淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +@@ -636,37 +686,37 @@ msgstr "模块 %s 不可安装" + #: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "没有东西提供 %s(模块 %s 需要它)" ++msgstr "没有提供模块 %s 所需要的 %s" + + #: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "无法同时安装模块 %s 和 %s" ++msgstr "不能同时安装模块 %s 和 %s" + + #: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "模块 %s 与 %s (由 %s 提供)冲突" ++msgstr "模块 %s 与 %s 提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "模块 %s 取代了 %s(由 %s 提供)" ++msgstr "模块 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "已安装的模块 %s 取代了 %s(由 %s 提供)" ++msgstr "已安装的模块 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)" ++msgstr "模块 %s 隐式地淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "模块 %s 需要 %s,但没有提供者可以被安装" ++msgstr "模块 %s 需要 %s,但无法安装任何提供程序" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +@@ -678,62 +728,67 @@ msgstr "模块 %s 与自己提供的 %s 冲突" + msgid "both module %s and %s obsolete %s" + msgstr "模块 %s 和 %s 同时取代了 %s" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "无 solver 设置" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "无法使 %s 绝对" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "把 debugdata 写入到 %1$s 失败: %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "在目标中没有 solv" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "没有解决方案,不能删除保护的软件包" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "没有可能的解决方案" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "问题: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "问题 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "这个操作将会导致删除以下受保护的软件包: " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv 的 solv_toolversion 为: %zu,但我们预计最大为:%zu" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "将 %1$s 重命名为 %2$s 失败: %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "在 %1$s 中设置 perms 失败: %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "无法创建目录 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "无法 stat 路径 %1$s: %2$s" +@@ -773,7 +828,7 @@ msgstr "无法为模块 '%s' 启用多个流" + #: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "默认设置与 repo '%s' 冲突 : %s" ++msgstr "默认设置与存储库 '%s' 冲突 : %s" + + #: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" +@@ -822,7 +877,7 @@ msgstr "无法把模块 Fail Safe 数据保存到 '%s'" + #: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "无法删除 '%s' 处的模块 Fail Safe 数据" ++msgstr "无法删除 '%s' 中的模块 Fail Safe 数据" + + #: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format +@@ -902,8 +957,8 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' " +-"操作符代替。" ++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并" ++"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -919,18 +974,18 @@ msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。" + #: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" +-msgstr "Repo '%s': 'basecachedir' 没有设置" ++msgstr "存储库 '%s': 'basecachedir' 没有设置" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'" ++msgstr "存储库 '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'" + + #: libdnf/repo/Repo.cpp:548 + msgid "'proxy_username' is set but not 'proxy_password'" +@@ -939,7 +994,7 @@ msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'" + #: libdnf/repo/Repo.cpp:629 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "无法为仓库 %s 找到一个有效的 baseurl" ++msgstr "无法为存储库找到一个有效的 baseurl:%s" + + #: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 + #, c-format +@@ -951,11 +1006,11 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236 ++#: libdnf/repo/Repo.cpp:1279 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "无法创建 repo 临时目录 \"%s\": %s" ++msgstr "无法创建存储库临时目录 \"%s\": %s" + + #: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 + #, c-format +@@ -975,7 +1030,7 @@ msgstr "为仓库 '%s' 获取 GPG 密钥失败 : %s" + #: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" +-msgstr "repo %s: 0x%s 已被导入" ++msgstr "存储库 %s: 0x%s 已被导入" + + #: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 + #, c-format +@@ -985,7 +1040,7 @@ msgstr "无法创建目录 \"%s\": %d - %s" + #: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." +-msgstr "repo %s: 已导入密钥 0x%s。" ++msgstr "存储库 %s: 已导入密钥 0x%s。" + + #: libdnf/repo/Repo.cpp:1176 + #, c-format +@@ -1035,17 +1090,17 @@ msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s" + #: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" +-msgstr "仓库: 正在为 %s 使用缓存" ++msgstr "存储库:使用缓存用于:%s" + + #: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "仅使用缓存已开启但没有 '%s' 的缓存" ++msgstr "仅启用缓存,但没有 '%s' 的缓存" + + #: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" +-msgstr "repo: 从远程下载: %s" ++msgstr "存储库: 从远程下载: %s" + + #: libdnf/repo/Repo.cpp:1362 + #, c-format +@@ -1094,11 +1149,11 @@ msgstr "没有在进行中" + msgid "No transaction in progress" + msgstr "没有事务在进行中" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "试图向已完成的事务中插入事务项" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "试图在已完成的事务中更新事务" + +@@ -1108,7 +1163,7 @@ msgstr "数据库损坏:表 'config' 中没有 'version' 行" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +-msgstr "Transformer: 无法打开 history persist dir" ++msgstr "转换程序: 无法打开历史持久目录" + + #: libdnf/transaction/Transformer.cpp:694 + msgid "Couldn't find a history database" +@@ -1127,8 +1182,23 @@ msgstr "TransactionItem 状态没有设置:%s" + msgid "Can't add console output to unsaved transaction" + msgstr "无法向未保存的事务中添加控制台输出" + ++#~ msgid "failed to add solv" ++#~ msgstr "添加 solv 失败" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() 写数据失败: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main() 重新加载写的 solv 文件失败" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) 已失败: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() 已失败。" ++ ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "无法解析模块工件 NEVRA '%s'" ++ + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo 的 id 无效: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "无法计算 RPMDB checksum" +-- +2.37.3 + diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec new file mode 100644 index 0000000..54f7fa4 --- /dev/null +++ b/SPECS/libdnf.spec @@ -0,0 +1,954 @@ +%global libsolv_version 0.7.21 +%global libmodulemd_version 2.13.0 +%global librepo_version 1.13.1 +%global dnf_conflict 4.10.0-4 +%global swig_version 3.0.12 +%global libdnf_major_version 0 +%global libdnf_minor_version 67 +%global libdnf_micro_version 0 + +%define __cmake_in_source_build 1 + +# set sphinx package name according to distro +%global requires_python2_sphinx python2-sphinx +%global requires_python3_sphinx python3-sphinx +%if 0%{?rhel} == 7 + %global requires_python2_sphinx python-sphinx +%endif +%if 0%{?suse_version} + %global requires_python2_sphinx python2-Sphinx + %global requires_python3_sphinx python3-Sphinx +%endif + +%bcond_with valgrind + +# Do not build bindings for python3 for RHEL <= 7 +%if 0%{?rhel} && 0%{?rhel} <= 7 +%bcond_with python3 +%else +%bcond_without python3 +%endif + +%if 0%{?rhel} > 7 || 0%{?fedora} > 29 +# Disable python2 build by default +%bcond_with python2 +%else +%bcond_without python2 +%endif + +%if 0%{?rhel} && ! 0%{?centos} +%bcond_without rhsm +%else +%bcond_with rhsm +%endif + +%if 0%{?rhel} +%bcond_with zchunk +%else +%bcond_without zchunk +%endif + +%bcond_with sanitizers + +%global _cmake_opts \\\ + -DENABLE_RHSM_SUPPORT=%{?with_rhsm:ON}%{!?with_rhsm:OFF} \\\ + %{nil} + +Name: libdnf +Version: %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version} +Release: 3%{?dist} +Summary: Library providing simplified C and Python API to libsolv +License: LGPLv2+ +URL: https://github.com/rpm-software-management/libdnf +Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz +Patch1: 0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch +Patch2: 0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch +Patch3: 0003-Update-translations-RHEL-9.1.patch + +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: libsolv-devel >= %{libsolv_version} +BuildRequires: pkgconfig(librepo) >= %{librepo_version} +BuildRequires: pkgconfig(check) +%if %{with valgrind} +BuildRequires: valgrind +%endif +BuildRequires: pkgconfig(gio-unix-2.0) >= 2.46.0 +BuildRequires: pkgconfig(gtk-doc) +BuildRequires: rpm-devel >= 4.15.0 +%if %{with rhsm} +BuildRequires: pkgconfig(librhsm) >= 0.0.3 +%endif +%if %{with zchunk} +BuildRequires: pkgconfig(zck) >= 0.9.11 +%endif +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(json-c) +BuildRequires: pkgconfig(cppunit) +BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version} +BuildRequires: pkgconfig(smartcols) +BuildRequires: gettext +BuildRequires: gpgme-devel + +%if %{with sanitizers} +BuildRequires: libasan +BuildRequires: liblsan +BuildRequires: libubsan +%endif + +Requires: libmodulemd%{?_isa} >= %{libmodulemd_version} +Requires: libsolv%{?_isa} >= %{libsolv_version} +Requires: librepo%{?_isa} >= %{librepo_version} + +%if %{without python2} +# Obsoleted from here so we can track the fast growing version easily. +# We intentionally only obsolete and not provide, this is a broken upgrade +# prevention, not providing the removed functionality. +Obsoletes: python2-%{name} < %{version}-%{release} +Obsoletes: python2-hawkey < %{version}-%{release} +Obsoletes: python2-hawkey-debuginfo < %{version}-%{release} +Obsoletes: python2-libdnf-debuginfo < %{version}-%{release} +%endif + +%description +A Library providing simplified C and Python API to libsolv. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libsolv-devel%{?_isa} >= %{libsolv_version} + +%description devel +Development files for %{name}. + +%if %{with python2} +%package -n python2-%{name} +%{?python_provide:%python_provide python2-%{name}} +Summary: Python 2 bindings for the libdnf library. +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: python2-devel +%if !0%{?mageia} +BuildRequires: %{requires_python2_sphinx} +%endif +%if 0%{?rhel} == 7 +BuildRequires: swig3 >= %{swig_version} +%else +BuildRequires: swig >= %{swig_version} +%endif + +%description -n python2-%{name} +Python 2 bindings for the libdnf library. +%endif +# endif with python2 + +%if %{with python3} +%package -n python3-%{name} +%{?python_provide:%python_provide python3-%{name}} +Summary: Python 3 bindings for the libdnf library. +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: python3-devel +BuildRequires: %{requires_python3_sphinx} +BuildRequires: swig >= %{swig_version} + +%description -n python3-%{name} +Python 3 bindings for the libdnf library. +%endif + +%if %{with python2} +%package -n python2-hawkey +Summary: Python 2 bindings for the hawkey library +%{?python_provide:%python_provide python2-hawkey} +BuildRequires: python2-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python2-%{name} = %{version}-%{release} +# Fix problem with hawkey - dnf version incompatibility +# Can be deleted for distros where only python2-dnf >= 2.0.0 +Conflicts: python2-dnf < %{dnf_conflict} +Conflicts: python-dnf < %{dnf_conflict} + +%description -n python2-hawkey +Python 2 bindings for the hawkey library. +%endif +# endif with python2 + +%if %{with python3} +%package -n python3-hawkey +Summary: Python 3 bindings for the hawkey library +%{?python_provide:%python_provide python3-hawkey} +BuildRequires: python3-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python3-%{name} = %{version}-%{release} +# Fix problem with hawkey - dnf version incompatibility +# Can be deleted for distros where only python3-dnf >= 2.0.0 +Conflicts: python3-dnf < %{dnf_conflict} +# Obsoletes F27 packages +Obsoletes: platform-python-hawkey < %{version}-%{release} + +%description -n python3-hawkey +Python 3 bindings for the hawkey library. +%endif + +%prep +%autosetup -p1 +%if %{with python2} +mkdir build-py2 +%endif +%if %{with python3} +mkdir build-py3 +%endif + +%build +%if %{with python2} +pushd build-py2 + %if 0%{?mageia} || 0%{?suse_version} + cd .. + %define _cmake_builddir build-py2 + %define __builddir build-py2 + %endif + %cmake -DPYTHON_DESIRED:FILEPATH=%{__python2} -DWITH_MAN=OFF ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ + -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} + %make_build +popd +%endif +# endif with python2 + +%if %{with python3} +pushd build-py3 + %if 0%{?mageia} || 0%{?suse_version} + cd .. + %define _cmake_builddir build-py3 + %define __builddir build-py3 + %endif + %cmake -DPYTHON_DESIRED:FILEPATH=%{__python3} -DWITH_GIR=0 -DWITH_MAN=0 -Dgtkdoc=0 ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ + -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} + %make_build +popd +%endif + +%check +%if %{with python2} +pushd build-py2 + make ARGS="-V" test +popd +%endif +%if %{with python3} +# If we didn't run the general tests yet, do it now. +%if %{without python2} +pushd build-py3 + make ARGS="-V" test +popd +%else +# Otherwise, run just the Python tests, not all of +# them, since we have coverage of the core from the +# first build +pushd build-py3/python/hawkey/tests + make ARGS="-V" test +popd +%endif +%endif + +%install +%if %{with python2} +pushd build-py2 + %make_install +popd +%endif +%if %{with python3} +pushd build-py3 + %make_install +popd +%endif + +%find_lang %{name} + +%if (0%{?rhel} && 0%{?rhel} <= 7) || 0%{?suse_version} +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig +%else +%ldconfig_scriptlets +%endif + +%files -f %{name}.lang +%license COPYING +%doc README.md AUTHORS +%{_libdir}/%{name}.so.* +%dir %{_libdir}/libdnf/ +%dir %{_libdir}/libdnf/plugins/ +%{_libdir}/libdnf/plugins/README +%if %{with sanitizers} +%{_sysconfdir}/profile.d/dnf-sanitizers.sh +%endif + +%files devel +%doc %{_datadir}/gtk-doc/html/%{name}/ +%{_libdir}/%{name}.so +%{_libdir}/pkgconfig/%{name}.pc +%{_includedir}/%{name}/ + +%if %{with python2} +%files -n python2-%{name} +%{python2_sitearch}/%{name}/ +%endif + +%if %{with python3} +%files -n python3-%{name} +%{python3_sitearch}/%{name}/ +%endif + +%if %{with python2} +%files -n python2-hawkey +%{python2_sitearch}/hawkey/ +%endif + +%if %{with python3} +%files -n python3-hawkey +%{python3_sitearch}/hawkey/ +%endif + +%changelog +* Wed Mar 15 2023 MSVSphere Packaging Team - 0.67.0-3 +- Rebuilt for MSVSphere 9.1. + +* Thu Sep 15 2022 Marek Blaha - 0.67.0-3 +- Update translations + +* Thu Jul 21 2022 Lukas Hrazky - 0.67.0-2 +- Add obsoletes to filtering for advisory candidates +- advisory upgrade: filter out advPkgs with different arch + +* Thu Apr 28 2022 Pavla Kratochvilova - 0.67.0-1 +- Fix handling transaction id in resolveTransactionItemReason (RhBug:2010259,2053014) +- Remove deprecated assertions (RhBug:2027383) +- Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394) +- Increase required rpm version since we use `rpmdbCookie()` +- Add 'loongarch' support +- Use dnf solv userdata to check versions and checksum (RhBug:2027445) +- context: Substitute all repository config options (RhBug:2076853) + +* Mon Feb 07 2022 Pavla Kratochvilova - 0.65.0-3 +- Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version` + +* Thu Dec 09 2021 Pavla Kratochvilova - 0.65.0-2 +- Rebuilt with json-c-0.14-11.el9 (RhBug:2023320) + +* Mon Oct 25 2021 Pavla Kratochvilova - 0.65.0-1 +- Update to 0.65.0 +- Implement logic for demodularization of modular rpms (RhBug:1805260) +- DnfContext: fix handling of default module profiles +- ModuleMetadata: gracefully handle modules with no defaults +- Remove failovermethod config option (RhBug:1961083) +- Add support for excluding packages to be installed as weak dependencies +- Add support for autodetecting packages to be excluded from being installed as weak dependencies +- Turn off strict validation of modulemd documents (RhBug:2004853,2007166,2007167) + +* Mon Aug 09 2021 Mohan Boddu - 0.63.0-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jul 27 2021 Pavla Kratochvilova - 0.63.0-3 +- Fix some covscan warnings + +* Wed Jun 16 2021 Mohan Boddu - 0.63.0-2 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 02 2021 Pavla Kratochvilova - 0.63.0-1 +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Hardening: add signature check with rpmcliVerifySignatures (RhBug:1932079) +- Do not allow 1 as installonly_limit value (RhBug:1926261) +- Add a config option to check TLS certificate revocation status (using OCSP stapling), defaults to false (RhBug:1814383) +- ModuleProfile: add isDefault() +- ModulePackage: add getDefaultProfile() +- Add new dnf_context_module_install() C API +- Fix a crash when [media] section in .treeinfo is missing for bootable media (RhBug:1946024) + +* Fri Apr 16 2021 Mohan Boddu - 0.60.0-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Mar 02 2021 Nicola Sella - 0.60.0-1 +- Update to 0.60.0 +- Fix repo.fresh() implementation +- build-sys: Add ENABLE_STATIC option +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- Apply proxy certificate options +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- build-sys: Clean up message about Python bindings +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Fix problematic language +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Support main config file option "installonlypkgs". +- Support main config file option "protected_packages". +- Properly handle multiple collections in updateinfo.xml (RhBug:1804234) + +* Thu Jan 28 2021 Nicola Sella - 0.58.0-1 +- Update to 0.58.0 +- Option: Add reset() method +- Add OptionBinds::getOption() method +- [context] Add dnf_repo_conf_from_gkeyfile() and dnf_repo_conf_reset() +- [context] Add support for options: minrate, throttle, bandwidth, timeout +- [context] Remove g_key_file_get_string() from dnf_repo_set_keyfile_data() +- Allow loading ext metadata even if only cache (solv) is present +- Add ASAN_OPTIONS for test_libdnf_main +- [context,API] Functions for accessing main/global configuration options +- [context,API] Function for adding setopt +- Add getter for modular obsoletes from ModuleMetadata +- Add ModulePackage.getStaticContext() and getRequires() +- Add compatible layer for MdDocuments v2 +- Fix modular queries with the new solver +- Improve formatting of error string for modules +- Change mechanism of module conflicts +- Fix load/update FailSafe + +* Tue Jan 26 2021 Fedora Release Engineering - 0.55.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 02 2020 Nicola Sella - 0.55.2-1 +- Update to 0.55.2 +- Improve performance of query installed() and available() +- Swdb: Add a method to get the current transaction +- [modules] Add special handling for src artifacts (RhBug:1809314) +- Better msgs if "basecachedir" or "proxy_password" isn't set (RhBug:1888946) +- Add new options module_stream_switch +- Support allow_vendor_change setting in dnf context API +- Fix couple of sanitizer builds in specfile + +* Mon Nov 23 2020 Nicola Sella - 0.55.0-1 +- Update to 0.55.0 +- Add vendor to dnf API (RhBug:1876561) +- Add formatting function for solver error +- Add error types in ModulePackageContainer +- Implement module enable for context part +- Improve string formatting for translation +- Remove redundant printf and change logging info to notice (RhBug:1827424) +- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371) + +* Thu Oct 29 2020 Adam Williamson - 0.54.2-3 +- Rebuild to keep NVR ahead of Fedora 32 + +* Tue Oct 13 2020 Ales Matej - 0.54.2-2 +- Increase needed conflicting dnf version + +* Wed Oct 07 2020 Nicola Sella - 0.54.2-1 +- Update to 0.54.2 +- history: Fix dnf history rollback when a package was removed (RhBug:1683134) +- Add support for HY_GT, HY_LT in query nevra_strict +- Fix parsing empty lines in config files +- Accept '==' as an operator in reldeps (RhBug:1847946) +- Add log file level main config option (RhBug:1802074) +- Add protect_running_kernel configuration option (RhBug:1698145) +- Context part of libdnf cannot assume zchunk is on (RhBug:1851841,1779104) +- Fix memory leak of resultingModuleIndex and handle g_object refs +- Redirect librepo logs to libdnf logs with different source +- Introduce changelog metadata in commit messages +- Add hy_goal_lock +- Update Copr targets for packit and use alias +- Enum/String conversions for Transaction Store/Replay +- utils: Add a method to decode URLs +- Unify hawkey.log line format with the rest of the logs + +* Mon Aug 10 2020 Nicola Sella - 0.48.0-4 +- spec: Fix building with new cmake macros +- tests: Fix incorrect usage of the fail_unless macros + +* Sat Aug 01 2020 Fedora Release Engineering - 0.48.0-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.48.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 02 2020 Nicola Sella - 0.48.0-1 +- Update to 0.48.0 +- swdb: Catch only SQLite3 exceptions and simplify the messages +- MergedTransaction list multiple comments (RhBug:1773679) +- Modify CMake to pull *.po files from weblate +- Optimize DependencyContainer creation from an existing queue +- fix a memory leak in dnf_package_get_requires() +- Fix memory leaks on g_build_filename() +- Fix memory leak in dnf_context_setup() +- Add `hy_goal_favor` and `hy_goal_disfavor` +- Define a cleanup function for `DnfPackageSet` +- dnf-repo: fix dnf_repo_get_public_keys double-free +- Do not cache RPMDB +- Use single-quotes around string literals used in SQL statements +- SQLite3: Do not close the database if it wasn't opened (RhBug:1761976) +- Don't create a new history DB connection for in-memory DB +- transaction/Swdb: Use a single logger variable in constructor +- utils: Add a safe version of pathExists() +- swdb: Handle the case when pathExists() fails on e.g. permission +- Repo: prepend "file://" if a local path is used as baseurl +- Move urlEncode() to utils +- utils: Add 'exclude' argument to urlEncode() +- Encode package URL for downloading through librepo (RhBug:1817130) +- Replace std::runtime_error with libdnf::RepoError +- Fixes and error handling improvements of the File class +- [context] Use ConfigRepo for gpgkey and baseurl (RhBug:1807864) +- [context] support "priority" option in .repo config file (RhBug:1797265) + +* Fri May 22 2020 Miro Hrončok - 0.47.0-3 +- Rebuilt for Python 3.9 + +* Tue Apr 21 2020 Björn Esser - 0.47.0-2 +- Rebuild (json-c) + +* Wed Apr 01 2020 Ales Matej - 0.47.0-1 +- Update to 0.47.0 +- Add prereq_ignoreinst & regular_requires properties for pkg (RhBug:1543449) +- Reset active modules when no module enabled or default (RhBug:1767351) +- Add comment option to transaction (RhBug:1773679) +- Failing to get module defauls is a recoverable error +- Baseurl is not exclusive with mirrorlist/metalink (RhBug: 1775184) +- Add new function to reset all modules in C API (dnf_context_reset_all_modules) +- [context] Fix to preserve additionalMetadata content (RhBug:1808677) +- Fix filtering of DepSolvables with source rpms (RhBug:1812596) +- Add setter for running kernel protection setting +- Handle situation when an unprivileged user cannot create history database (RhBug:1634385) +- Add query filter: latest by priority +- Add DNF_NO_PROTECTED flag to allow empty list of protected packages +- Remove 'dim' option from terminal colors to make them more readable (RhBug:1807774,1814563) +- [context] Error when main config file can't be opened (RhBug:1794864) +- [context] Add function function dnf_context_is_set_config_file_path + +* Mon Feb 24 2020 Ales Matej - 0.45.0-1 +- Config options: only first empty value clears existing (RhBug:1788154) +- Make parsing of reldeps more strict (RhBug:1788107) +- [context] Support repositories defined in main configuration file +- Fix filtering packages by advisory when more versions and arches are available (RhBug:1770125) +- Add expanding solvable provides for dependency matching (RhBug:1534123) +- DnfRepo: fix module_hotfixes keyfile priority level +- Add custom exceptions to libdnf interface +- [conf] Set useful default colors when color is enabled +- Port to libmodulemd-2 API (RhBug:1693683) + +* Tue Feb 04 2020 Adam Williamson - 0.43.1-3 +- [context] Create new repo instead of reusing old one (RhBug:1795004) + +* Wed Jan 29 2020 Fedora Release Engineering - 0.43.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Ales Matej - 0.43.1-1 +- Allow excluding packages with "excludepkgs" and globs +- Add two new query filters: obsoletes_by_priority, upgrades_by_priority +- [context] Use installonly_limit from global config (RhBug:1256108) +- [context] Add API to get/set "install_weak_deps" +- [context] Add wildcard support for repo_id in dnf_context_repo_enable/disable (RhBug:1781420) +- [context] Adds support for includepkgs in repository configuration. +- [context] Adds support for excludepkgs, exclude, includepkgs, and disable_excludes in main configuration. +- [context] Added function dnf_transaction_set_dont_solve_goal +- [context] Added functions dnf_context_get/set_config_file_path +- [context] Respect "plugins" global conf value +- [context] Add API to disable/enable plugins + +* Fri Nov 29 2019 Ales Matej - 0.39.1-1 +- Update to 0.39.1 +- Report reason how package was excluded (RhBug:1649754) +- Additional Arm detection improvements (RhBug:1691430) +- Set skip_if_unavailable for media repos to skip their update (RhBug:1716067) +- Add support of xml:base for remote and local url in context (RhBug:1734350, 1717865) +- Handle NoModuleException in dnf_context_reset_modules (RhBug:1767453) +- Add missing C function hy_nevra_free() for HyNevra deallocation +- Context part of libdnf now uses metadata_expire from global configuration + +* Wed Nov 13 2019 Pavla Kratochvilova - 0.37.2-2 +- Fix accidental code removal from hy_subject_get_best_solution() + +* Wed Nov 06 2019 Pavla Kratochvilova - 0.37.2-1 +- Update to 0.37.2 +- Use more descriptive message when failed to retrieve GPG key (RhBug:1605117) +- Add removeMetadataTypeFromDownload function to the API +- Context part of libdnf can now read vars (urlvars) from dirs and environment +- Throw exception immediately if file cannot be opened +- Add test when there is no primary metadata in compatible format (RhBug:1744960) +- Various improvements to countme features +- Don't abort on rpmdb checksum calculation failure +- Enable module dependency trees when using set_modules_enabled_by_pkgset() (RhBug:1762314) +- New method "Query::filterSubject()", replaces Solution::getBestSolution() +- The Solution class was removed +- Add query argument into get_best_query and get_best_solution +- Add module reset function into dnf_context +- Add method to get all repository metadata locations +- Catch NoModuleException in case of not existent value was used in persistor (RhBug:1761773) + +* Wed Oct 23 2019 Peter Robinson 0.35.5-5 +- Fixes for some issues on Arm platforms (rhbz 1691430) + +* Tue Oct 22 2019 Ales Matej - 0.35.5-4 +- Fix leaking log handlers in Sack that can cause a crash (RhBug:1758737) + +* Mon Oct 14 2019 Jaroslav Mracek - 0.35.5-3 +- Add POOL_FLAG_WHATPROVIDESWITHDISABLED flag into pool. +- Resolves: 1737469 + +* Tue Oct 01 2019 Ales Matej - 0.35.5-2 +- Fix dnf-conflict version + +* Tue Oct 01 2019 Ales Matej - 0.35.5-1 +- Update to 0.35.5 +- Fix crash in PackageKit (RhBug:1636803) +- Do not create @System.solv files (RhBug:1707995) +- Set LRO_CACHEDIR so zchunk works again (RhBug:1739867) +- Don't reinstall modified packages with the same NEVRA (RhBug:1644241) +- Fix bug when moving temporary repository metadata after download (RhBug:1700341) +- Improve detection of extras packages by comparing (name, arch) pair instead of full NEVRA (RhBuh:1684517) +- Improve handling multilib packages in the history command (RhBug:1728637) +- Repo download: use full error description into the exception text (RhBug:1741442) +- Properly close hawkey.log (RhBug:1594016) +- Fix dnf updateinfo --update to not list advisories for packages updatable only from non-enabled modules +- Apply modular filtering by package name (RhBug:1702729) +- Fully enable the modular fail safe mechanism (RhBug:1616167) + +* Sat Sep 14 2019 Jonathan Dieter - 0.35.3-5 +- Set LRO_CACHEDIR so zchunk works again + +* Wed Sep 11 2019 Jaroslav Mracek - 0.35.3-4 +- Backport patch to fix reinstalling packages with a different buildtime - part II + +* Tue Sep 10 2019 Jaroslav Mracek - 0.35.3-3 +- Backport patch to fix reinstalling packages with a different buildtime + +* Thu Aug 15 2019 Miro Hrončok - 0.35.3-2 +- Rebuilt for Python 3.8 + +* Tue Aug 13 2019 Pavla Kratochvilova - 0.35.3-1 +- Update to 0.35.3 +- Make libdnf own its plugin directory (RhBug:1714265) +- Don't disable nonexistent but required repositories (RhBug:1689331) +- Set priority of dnf.conf.d drop-ins +- Fix toString() to not insert [] (RhBug:1584442) +- Ignore trailing blank lines in config (RhBug:1722493) +- Fix handling large number of filenames on input (RhBug:1690915) +- Detect armv7 with crypto extension only on arm version >= 8 +- A new standardized User-Agent field consisting of the libdnf and OS version + (including the variant) (RhBug:1156007) +- Add basic countme support (RhBug:1647454) + +* Mon Jul 29 2019 Pavla Kratochvilova - 0.35.1-4 +- Rebuilt for librepo 1.10.5 + +* Thu Jul 25 2019 Fedora Release Engineering - 0.35.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 22 2019 Pavla Kratochvilova - 0.35.1-2 +- Backport patch to fix attaching and detaching of libsolvRepo and + repo_internalize_trigger() (RhBug:1727343,1727424) + +* Thu Jul 04 2019 Pavla Kratochvilova - 0.35.1-1 +- Update to 0.35.1 +- Enhance logging handling +- Do not log DEBUG messages by default +- Also add subkeys when adding GPG keys +- [module] Fix swig binding for getModuleDependencies() +- Skip invalid key files in "/etc/pki/rpm-gpg" with warning (RhBug:1644040) +- Enable timestamp preserving for downloaded data (RhBug:1688537) +- Set default to skip_if_unavailable=false (RhBug:1679509) +- Add configuration option skip_if_unavailable (RhBug:1689931) +- Fix 'database is locked' error (RhBug:1631533) +- Replace the 'Failed to synchronize cache' message (RhBug:1712055) +- Fix 'no such table: main.trans_cmdline' error (RhBug:1596540) +- Add support of modular FailSafe (RhBug:1623128) (temporarily with warnings + instead of errors when installing modular RPMs without modular metadata) +- Add support of DNF main config file in context; used by PackageKit and + microdnf (RhBug:1689331) +- Exit gpg-agent after repokey import (RhBug:1650266) + +* Mon Jun 10 22:13:19 CET 2019 Igor Gnatenko - 0.31.0-5 +- Rebuild for RPM 4.15 + +* Mon Jun 10 15:42:02 CET 2019 Igor Gnatenko - 0.31.0-4 +- Rebuild for RPM 4.15 + +* Fri May 03 2019 Pavla Kratochvilova - 0.31.0-3 +- Backport patches to reintroduce hawkeyRepo + +* Thu Apr 25 2019 Pavla Kratochvilova - 0.31.0-1 +- Update to 0.31.0 +- Installroot now requires absolute path +- Support "_none_" value for repo option "proxy" (RhBug:1680272) +- Add support for Module advisories +- Add support for xml:base attribute from primary.xml (RhBug:1691315) +- Improve detection of Platform ID (RhBug:1688462) + +* Wed Mar 27 2019 Pavla Kratochvilova - 0.28.1-1 +- Update to 0.28.1 +- Return empty query if incorrect reldep (RhBug:1687135) +- ConfigParser: Improve compatibility with Python ConfigParser and dnf-plugin-spacewalk (RhBug:1692044) +- ConfigParser: Unify default set of string represenation of boolean values +- Fix segfault when interrupting dnf process (RhBug:1610456) + +* Mon Mar 11 2019 Pavla Kratochvilova - 0.28.0-1 +- Update to 0.28.0 +- Exclude module pkgs that have conflict +- Enhance config parser to preserve order of data, and keep comments and format +- Improve ARM detection +- Add support for SHA-384 + +* Tue Feb 19 2019 Jaroslav Mracek - 0.26.0-2 +- Backport patches for zchunk + +* Wed Feb 13 2019 Pavla Kratochvilova - 0.26.0-1 +- Update to 0.26.0-1 +- Enhance modular solver to handle enabled and default module streams differently (RhBug:1648839) +- Add support of wild cards for modules (RhBug:1644588) +- Revert commit that adds best as default behavior + +* Fri Feb 01 2019 Fedora Release Engineering - 0.24.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 12 2018 Jaroslav Mracek - 0.24.1-1 +- Update to 0.24.1 +- Add support for zchunk +- Enhance LIBDNF plugins support +- Enhance sorting for module list (RhBug:1590358) +- [repo] Check whether metadata cache is expired (RhBug:1539620,1648274) +- [DnfRepo] Add methods for alternative repository metadata type and download (RhBug:1656314) +- Remove installed profile on module enable or disable (RhBug:1653623) +- [sack] Implement dnf_sack_get_rpmdb_version() + +* Thu Nov 22 2018 Jaroslav Mracek - 0.22.3-1 +- Permanently disable Python2 build for Fedora 30+ +- Update to 0.22.3 +- Modify solver_describe_decision to report cleaned (RhBug:1486749) +- [swdb] create persistent WAL files (RhBug:1640235) +- Relocate ModuleContainer save hook (RhBug:1632518) +- [transaction] Fix transaction item lookup for obsoleted packages (RhBug: 1642796) +- Fix memory leaks and memory allocations +- [repo] Possibility to extend downloaded repository metadata + +* Wed Nov 07 2018 Jaroslav Mracek - 0.22.0-8 +- Backport fixes for RHBZ#1642796 from upstream master + +* Tue Oct 30 2018 Igor Gnatenko - 0.22.0-7 +- Rebuild for libsolv 0.7 + +* Tue Oct 23 2018 Jaroslav Mracek - 0.22.0-6 +- Add patch Relocate-ModuleContainer-save-hook-RhBug1632518 +- Add patch Test-if-sack-is-present-and-run-save-module-persistor-RhBug1632518 + +* Sat Oct 20 2018 Jaroslav Mracek - 0.22.0-5 +- remove problematic patch Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Fri Oct 19 2018 Jaroslav Mracek - 0.22.0-4 +- backport Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Thu Oct 18 2018 Jaroslav Mracek - 0.22.0-3 +- bacport swdb-create-persistent-WAL-files-RhBug1640235 + +* Wed Oct 17 2018 Jaroslav Mracek - 0.22.0-2 +- backport Modify-solver_describe_decision-to-report-cleaned-RhBug1486749 +- backport history-Fix-crash-in-TransactionItemaddReplacedBy + +* Mon Oct 15 2018 Jaroslav Mracek - 0.22.0-1 +- Update to 0.22.0 +- Fix segfault in repo_internalize_trigger (RhBug:1375895) +- Change sorting of installonly packages (RhBug:1627685) +- [swdb] Fixed pattern searching in history db (RhBug:1635542) +- Check correctly gpg for repomd when refresh is used (RhBug:1636743) +- [conf] Provide additional VectorString methods for compatibility with Python list. +- [plugins] add plugin loading and hooks into libdnf + +* Sat Sep 29 2018 Kevin Fenzi - 0.20.0-2 +- Temp re-enable python2 subpackages to get rawhide composing again. + +* Tue Sep 25 2018 Jaroslav Mracek - 0.20.0-1 +- [module] Report module solver errors +- [module] Enhance module commands and errors +- [transaction] Fixed several problems with SWDB +- Remove unneeded regex URL tests (RhBug:1598336) +- Allow quoted values in ini files (RhBug:1624056) +- Filter out not unique set of solver problems (RhBug:1564369) +- Disable python2 build for Fedora 30+ + +* Tue Sep 18 2018 Adam Williamson - 0.19.1-3 +- Backport PR #585 for an update crash bug (#1629340) + +* Fri Sep 14 2018 Kalev Lember - 0.19.1-2 +- Backport a fix for a packagekit crasher / F29 Beta blocker (#1626851) + +* Mon Sep 10 2018 Jaroslav Mracek - 0.19.1-1 +- Fix compilation errors on gcc-4.8.5 +- [module] Allow module queries on disabled modules + +* Fri Sep 07 2018 Jaroslav Mracek - 0.19.0-1 +- [query] Reldeps can contain a space char (RhBug:1612462) +- [transaction] Avoid adding duplicates via Transaction::addItem() +- Fix compilation errors on gcc-4.8.5 +- [module] Make available ModuleProfile using SWIG +- [module] Redesign module disable and reset + +* Mon Aug 13 2018 Daniel Mach - 0.17.2-1 +- [sqlite3] Change db locking mode to DEFAULT. +- [doc] Add libsmartcols-devel to devel deps. + +* Mon Aug 13 2018 Daniel Mach - 0.17.1-1 +- [module] Solve a problem in python constructor of NSVCAP if no version. +- [translations] Update translations from zanata. +- [transaction] Fix crash after using dnf.comps.CompsQuery and forking the process in Anaconda. +- [module] Support for resetting module state. +- [output] Introduce wrapper for smartcols. + +* Fri Aug 10 2018 Adam Williamson - 0.17.0-2 +- Backport fix that prevented anaconda running dnf in a subprocess (#546) + +* Tue Aug 07 2018 Daniel Mach - 0.17.0-1 +- [conf] Add module_platform_id option. +- [module] Add ModulePackageContainer class. +- [module] Add ModulePersistor class. +- [sack] Module filtering made available in python API +- [sack] Module auto-enabling according to installed packages + +* Fri Jul 27 2018 Igor Gnatenko - 0.16.1-3 +- Rebuild for new binutils + +* Fri Jul 27 2018 Daniel Mach - 0.16.1-2 +- [module] Implement 'module_hotfixes' conf option to skip filtering RPMs from hotfix repos. +- [goal] Fix distupgrade filter, allow downgrades. +- [context] Allow to set module platform in context. +- [module] Introduce proper modular dependency solving. +- [module] Platform pseudo-module based on /etc/os-release. +- [goal] Add Goal::listSuggested(). +- [l10n] Support for translations, add gettext build dependency. + +* Sun Jul 22 2018 Daniel Mach - 0.16.0-1 +- Fix RHSM plugin +- Add support for logging +- Bump minimal libmodulemd version to 1.6.1 + +* Fri Jul 13 2018 Fedora Release Engineering - 0.15.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 29 2018 Jaroslav Mracek - 0.15.2-1 +- Update to 0.15.1 +- Resolves: rhbz#1595487 + +* Fri Jun 29 2018 Igor Gnatenko - 0.15.1-2 +- Restore proper ldconfig_scriptlets + +* Tue Jun 26 2018 Jaroslav Mracek - 0.15.1-1 +- Update to 0.15.1 + +* Fri Jun 15 2018 Miro Hrončok - 0.11.1-6 +- Rebuilt for Python 3.7 + +* Wed Feb 07 2018 Fedora Release Engineering - 0.11.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 30 2018 Igor Gnatenko - 0.11.1-4 +- Switch to %%ldconfig_scriptlets + +* Tue Nov 07 2017 Igor Gnatenko - 0.11.1-3 +- Use better Obsoletes for platform-python + +* Fri Nov 03 2017 Igor Gnatenko - 0.11.1-2 +- Remove platform-python subpackage + +* Mon Oct 16 2017 Jaroslav Mracek - 0.11.1-1 +- Rerelease of 0.11.1-1 +- Improvement query performance +- Run file query in hy_subject_get_best_solution only for files (arguments that start with ``/`` or + ``*/``) +- Resolves: rhbz#1498207 - DNF crash during upgrade installation F26 -> F27 + +* Tue Oct 10 2017 Igor Gnatenko - 0.11.0-1 +- Update to 0.11.0 + +* Mon Oct 02 2017 Jaroslav Mracek - 0.10.1-2 +- Rerelease of 0.10.1-1 + +* Wed Sep 27 2017 Jaroslav Mracek - 0.10.1-1 +- Update to 0.10.1 +- It improves query performance with name and arch filters. Also nevra filter will now + handle string with or without epoch. +- Additionally for python bindings it renames NEVRA._has_just_name() to NEVRA.has_just_name() due + to movement of code into c part of library. +- Resolves: rhbz#1260242 - --exclude does not affect dnf remove's removal of requirements +- Resolves: rhbz#1485881 - DNF claims it cannot install package, which have been already installed +- Resolves: rhbz#1361187 - [abrt] python-ipython-console: filter_updown(): python3.5 killed by SIGABRT + +* Fri Sep 15 2017 Igor Gnatenko - 0.9.3-8 +- Disable platform python on old releases + +* Tue Aug 15 2017 Lumír Balhar - 0.9.3-7 +- Add platform-python subpackage + +* Fri Aug 11 2017 Igor Gnatenko - 0.9.3-6 +- Rebuilt after RPM update (№ 3) + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-5 +- Rebuilt for RPM soname bump + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-4 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 24 2017 Jaroslav Mracek - 0.9.3-1 +- Update to 0.9.3 + +* Sat Jul 01 2017 Igor Gnatenko - 0.9.2-1 +- Update to 0.9.2 + +* Mon Jun 12 2017 Jaroslav Mracek - 0.9.1-1 +- Update to 0.9.1 + +* Mon May 22 2017 Jaroslav Mracek - 0.9.0-1 +- Update to 0.9.0 + +* Tue May 02 2017 Jaroslav Mracek - 0.8.2-1 +- Update to 0.8.2 + +* Fri Mar 24 2017 Igor Gnatenko - 0.8.1-1 +- Update to 0.8.1 + +* Tue Mar 21 2017 Jaroslav Mracek - 0.8.0-1 +- Update to 0.8.0 + +* Mon Feb 20 2017 Igor Gnatenko - 0.7.4-1 +- Update to 0.7.4 + +* Fri Feb 10 2017 Igor Gnatenko - 0.7.3-1 +- Update to 0.7.3 + +* Wed Feb 08 2017 Igor Gnatenko - 0.7.2-1 +- 0.7.2 + +* Fri Jan 06 2017 Igor Gnatenko - 0.7.1-1 +- 0.7.1 + +* Wed Dec 21 2016 Peter Robinson 0.7.0-0.7gitf9b798c +- Rebuild for Python 3.6 + +* Mon Dec 19 2016 Igor Gnatenko - 0.7.0-0.6gitf9b798c +- Use new upstream URL + +* Tue Dec 13 2016 Stratakis Charalampos - 0.7.0-0.5gitf9b798c +- Rebuild for Python 3.6 + +* Tue Dec 06 2016 Martin Hatina - 0.7.0-0.4gitf9b798c +- Increase conflict version of dnf + +* Thu Dec 01 2016 Igor Gnatenko - 0.7.0-0.3gitf9b798c +- Update to latest snapshot + +* Fri Nov 04 2016 Igor Gnatenko - 0.7.0-0.2git8bd77f8 +- Update to latest snapshot + +* Thu Sep 29 2016 Igor Gnatenko - 0.7.0-0.1git179c0a6 +- Initial package