diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..84049ca --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libdnf-0.63.0.tar.gz diff --git a/.libdnf.metadata b/.libdnf.metadata new file mode 100644 index 0000000..c25c067 --- /dev/null +++ b/.libdnf.metadata @@ -0,0 +1 @@ +5bb88aae1c1b8c104e34916c7509b04fcf7b4de9 SOURCES/libdnf-0.63.0.tar.gz diff --git a/SOURCES/0001-Fix-some-covscan-warnings.patch b/SOURCES/0001-Fix-some-covscan-warnings.patch new file mode 100644 index 0000000..c3dee0b --- /dev/null +++ b/SOURCES/0001-Fix-some-covscan-warnings.patch @@ -0,0 +1,202 @@ +From 153a8ae657a0d2a03f43db076bdadfb4e7dff41e Mon Sep 17 00:00:00 2001 +From: Aleš Matěj +Date: Mon, 21 Jun 2021 12:20:54 +0200 +Subject: [PATCH] Fix some covscan warnings + +- missing return value checks +- remove useless/unused code +- set fp to NULL to prevent double free false positive +- checksum function in utils.cpp doesn't have a declaration and + is used only in utils.cpp -> make it static + +Some of these were also compiler warnings +--- + libdnf/dnf-repo.cpp | 15 ++++++++++----- + libdnf/dnf-transaction.cpp | 2 -- + libdnf/module/ModulePackageContainer.cpp | 2 -- + libdnf/repo/Repo.cpp | 28 +++++++++++++++++++++++----- + libdnf/utils/filesystem.cpp | 9 ++++++++- + libdnf/utils/utils.cpp | 2 +- + tests/hawkey/test_iutil.cpp | 2 ++ + 7 files changed, 44 insertions(+), 16 deletions(-) + +diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp +index 710045f..cc6093e 100644 +--- a/libdnf/dnf-repo.cpp ++++ b/libdnf/dnf-repo.cpp +@@ -1966,9 +1966,12 @@ out: + g_free(updatedata.last_mirror_failure_message); + g_free(updatedata.last_mirror_url); + dnf_state_release_locks(state); +- lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSCB, NULL); +- lr_handle_setopt(priv->repo_handle, NULL, LRO_HMFCB, NULL); +- lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSDATA, 0xdeadbeef); ++ if (!lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSCB, NULL)) ++ g_debug("Failed to reset LRO_PROGRESSCB to NULL"); ++ if (!lr_handle_setopt(priv->repo_handle, NULL, LRO_HMFCB, NULL)) ++ g_debug("Failed to reset LRO_HMFCB to NULL"); ++ if (!lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSDATA, 0xdeadbeef)) ++ g_debug("Failed to set LRO_PROGRESSDATA to 0xdeadbeef"); + return ret; + } CATCH_TO_GERROR(FALSE) + +@@ -2296,8 +2299,10 @@ dnf_repo_download_packages(DnfRepo *repo, + + ret = TRUE; + out: +- lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSCB, NULL); +- lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSDATA, 0xdeadbeef); ++ if (!lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSCB, NULL)) ++ g_debug("Failed to reset LRO_PROGRESSCB to NULL"); ++ if (!lr_handle_setopt(priv->repo_handle, NULL, LRO_PROGRESSDATA, 0xdeadbeef)) ++ g_debug("Failed to set LRO_PROGRESSDATA to 0xdeadbeef"); + g_free(global_data.last_mirror_failure_message); + g_free(global_data.last_mirror_url); + g_slist_free_full(package_targets, (GDestroyNotify)lr_packagetarget_free); +diff --git a/libdnf/dnf-transaction.cpp b/libdnf/dnf-transaction.cpp +index 7c9a3a9..e096658 100644 +--- a/libdnf/dnf-transaction.cpp ++++ b/libdnf/dnf-transaction.cpp +@@ -1523,8 +1523,6 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state + + /* this section done */ + ret = dnf_state_done(state, error); +- if (!ret) +- goto out; + out: + dnf_transaction_reset(transaction); + dnf_state_release_locks(state); +diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp +index a20f8df..dc551a9 100644 +--- a/libdnf/module/ModulePackageContainer.cpp ++++ b/libdnf/module/ModulePackageContainer.cpp +@@ -1753,8 +1753,6 @@ void ModulePackageContainer::updateFailSafeData() + if (pImpl->activatedModules) { + std::vector latest = pImpl->getLatestActiveEnabledModules(); + +- auto begin = fileNames.begin(); +- auto end = fileNames.end(); + if (g_mkdir_with_parents(pImpl->persistDir.c_str(), 0755) == -1) { + const char * errTxt = strerror(errno); + auto logger(Log::getLogger()); +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index e3a574f..e1d5529 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -704,7 +704,11 @@ static std::vector rawkey2infos(int fd) { + + // set GPG home dir + char tmpdir[] = "/tmp/tmpdir.XXXXXX"; +- mkdtemp(tmpdir); ++ if (!mkdtemp(tmpdir)) { ++ const char * errTxt = strerror(errno); ++ throw RepoError(tfm::format(_("Cannot create repo temporary directory \"%s\": %s"), ++ tmpdir, errTxt)); ++ } + Finalizer tmpDirRemover([&tmpdir](){ + dnf_remove_recursive(tmpdir, NULL); + }); +@@ -894,8 +898,14 @@ void Repo::Impl::importRepoKeys() + } + + struct stat sb; +- if (stat(gpgDir.c_str(), &sb) != 0 || !S_ISDIR(sb.st_mode)) +- mkdir(gpgDir.c_str(), 0777); ++ if (stat(gpgDir.c_str(), &sb) != 0 || !S_ISDIR(sb.st_mode)) { ++ int res = mkdir(gpgDir.c_str(), 0777); ++ if (res != 0 && errno != EEXIST) { ++ auto msg = tfm::format(_("Failed to create directory \"%s\": %d - %s"), ++ gpgDir, errno, strerror(errno)); ++ throw RepoError(msg); ++ } ++ } + + gpgme_ctx_t ctx; + gpgme_new(&ctx); +@@ -1147,7 +1157,11 @@ bool Repo::Impl::isMetalinkInSync() + { + auto logger(Log::getLogger()); + char tmpdir[] = "/tmp/tmpdir.XXXXXX"; +- mkdtemp(tmpdir); ++ if (!mkdtemp(tmpdir)) { ++ const char * errTxt = strerror(errno); ++ throw RepoError(tfm::format(_("Cannot create repo temporary directory \"%s\": %s"), ++ tmpdir, errTxt)); ++ } + Finalizer tmpDirRemover([&tmpdir](){ + dnf_remove_recursive(tmpdir, NULL); + }); +@@ -1217,7 +1231,11 @@ bool Repo::Impl::isRepomdInSync() + auto logger(Log::getLogger()); + LrYumRepo *yum_repo; + char tmpdir[] = "/tmp/tmpdir.XXXXXX"; +- mkdtemp(tmpdir); ++ if (!mkdtemp(tmpdir)) { ++ const char * errTxt = strerror(errno); ++ throw RepoError(tfm::format(_("Cannot create repo temporary directory \"%s\": %s"), ++ tmpdir, errTxt)); ++ } + Finalizer tmpDirRemover([&tmpdir](){ + dnf_remove_recursive(tmpdir, NULL); + }); +diff --git a/libdnf/utils/filesystem.cpp b/libdnf/utils/filesystem.cpp +index c3abd3c..89a9478 100644 +--- a/libdnf/utils/filesystem.cpp ++++ b/libdnf/utils/filesystem.cpp +@@ -24,6 +24,8 @@ + #include + #include + ++#include "bgettext/bgettext-lib.h" ++#include "tinyformat/tinyformat.hpp" + #include "filesystem.hpp" + #include "../error.hpp" + +@@ -72,7 +74,12 @@ makeDirPath(std::string filePath) + previous = position; + // create directory if necessary + if (!pathExists(directory.c_str())) { +- mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); ++ int res = mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); ++ if (res != 0 && errno != EEXIST) { ++ auto msg = tfm::format(_("Failed to create directory \"%s\": %d - %s"), ++ directory, errno, strerror(errno)); ++ throw Error(msg); ++ } + } + } + } +diff --git a/libdnf/utils/utils.cpp b/libdnf/utils/utils.cpp +index 450718d..15f5275 100644 +--- a/libdnf/utils/utils.cpp ++++ b/libdnf/utils/utils.cpp +@@ -301,7 +301,7 @@ void decompress(const char * inPath, const char * outPath, mode_t outMode, const + fclose(inFile); + } + +-void checksum(const char * type, const char * inPath, const char * checksum_valid, bool * valid_out, gchar ** calculated_out) ++static void checksum(const char * type, const char * inPath, const char * checksum_valid, bool * valid_out, gchar ** calculated_out) + { + GError * errP{nullptr}; + gboolean valid; +diff --git a/tests/hawkey/test_iutil.cpp b/tests/hawkey/test_iutil.cpp +index 8d00cc9..6dafbdc 100644 +--- a/tests/hawkey/test_iutil.cpp ++++ b/tests/hawkey/test_iutil.cpp +@@ -79,11 +79,13 @@ START_TEST(test_checksum) + /* the taken checksum are not zeros anymore */ + fail_if(checksum_cmp(cs1, cs2) == 0); + fail_if(checksum_cmp(cs1_sum, cs2_sum) == 0); ++ fp = NULL; + + /* append something */ + fail_if((fp = fopen(new_file, "a")) == NULL); + fail_unless(fwrite("X", 1, 1, fp) == 1); + fclose(fp); ++ fp = NULL; + + /* take the second checksums */ + fail_if((fp = fopen(new_file, "r")) == NULL); +-- +libgit2 1.0.1 + diff --git a/SOURCES/0002-Update-translations.patch b/SOURCES/0002-Update-translations.patch new file mode 100644 index 0000000..64f047a --- /dev/null +++ b/SOURCES/0002-Update-translations.patch @@ -0,0 +1,4626 @@ +From 10bdd435851b1e65d0503f5f03d9e9b9a3b146f0 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 15 Sep 2021 13:18:44 +0200 +Subject: [PATCH] Update translations + +--- + po/fr.po | 501 ++++++++++++++++++++++++----------- + po/ja.po | 499 +++++++++++++++++++++++------------ + po/ko.po | 737 ++++++++++++++++++++++++++++++++-------------------- + po/zh_CN.po | 654 +++++++++++++++++++++++++++++----------------- + 4 files changed, 1564 insertions(+), 827 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index 055cdaff..fecde8b7 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -2,23 +2,24 @@ + # José Fournier , 2016. #zanata + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Jean-Baptiste Holcroft , 2019. #zanata + # Julien Humbert , 2020. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-06-29 02:40+0000\n" +-"Last-Translator: Julien Humbert \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2021-09-01 08:49+0200\n" ++"PO-Revision-Date: 2021-09-15 03:04+0000\n" ++"Last-Translator: Ludek Janda \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.1.1\n" ++"X-Generator: Weblate 4.8\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -39,17 +40,30 @@ msgstr "n’a pu convertir « %s » en octets" + msgid "unknown unit '%s'" + msgstr "unité « %s » inconnue" + +-#: libdnf/conf/ConfigMain.cpp:332 ++#: libdnf/conf/ConfigMain.cpp:204 libdnf/conf/OptionEnum.cpp:83 ++#: libdnf/conf/OptionNumber.cpp:88 ++msgid "invalid value" ++msgstr "valeur non valide" ++ ++#: libdnf/conf/ConfigMain.cpp:207 ++msgid "value 1 is not allowed" ++msgstr "la valeur 1 n’est pas autorisée" ++ ++#: libdnf/conf/ConfigMain.cpp:209 ++msgid "negative value is not allowed" ++msgstr "la valeur négative n'est pas autorisée" ++ ++#: libdnf/conf/ConfigMain.cpp:341 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "le pourcentage « %s » est en dehors des limites" + +-#: libdnf/conf/OptionBinds.cpp:76 ++#: libdnf/conf/OptionBinds.cpp:85 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" does not exist" + msgstr "Configuration : OptionBinding ayant pour id « %s » n’existe pas" + +-#: libdnf/conf/OptionBinds.cpp:88 ++#: libdnf/conf/OptionBinds.cpp:97 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" already exists" + msgstr "Configuration : OptionBinding ayant pour « %s » n’existe pas" +@@ -60,15 +74,11 @@ msgid "invalid boolean value '%s'" + msgstr "valeur booléenne invalide : « %s »" + + #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158 +-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59 ++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59 + #, c-format + msgid "'%s' is not an allowed value" + msgstr "la valeur « %s » n’est pas autorisée" + +-#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88 +-msgid "invalid value" +-msgstr "valeur non valide" +- + #: libdnf/conf/OptionNumber.cpp:73 + #, c-format + msgid "given value [%d] should be less than allowed value [%d]." +@@ -94,27 +104,145 @@ msgstr "le chemin fourni « %s » n’existe pas." + msgid "could not convert '%s' to seconds" + msgstr "n’a pu convertir « %s » en secondes" + +-#: libdnf/conf/OptionString.cpp:74 ++#: libdnf/conf/OptionString.cpp:79 + msgid "GetValue(): Value not set" + msgstr "GetValue() : valeur non définie" + +-#: libdnf/dnf-goal.cpp:68 ++#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#, 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:3188 libdnf/dnf-context.cpp:3206 ++#, 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é" ++ ++#: libdnf/dnf-context.cpp:3253 ++#, 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:3256 ++#, 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:3260 ++#, c-format ++msgid "Modular dependency problem: %s" ++msgstr "Problème de dépendance modulaire : %s" ++ ++#: 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:3460 libdnf/dnf-context.cpp:3470 ++#, c-format ++msgid "Unable to resolve argument '%s'" ++msgstr "Impossible de résoudre le paramètre ’%s’" ++ ++#: libdnf/dnf-context.cpp:3301 ++#, c-format ++msgid "" ++"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: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: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:3357 libdnf/dnf-context.cpp:3449 ++#: libdnf/dnf-context.cpp:3559 ++msgid "No modular data available" ++msgstr "Aucune donnée modulaire disponible" ++ ++#: 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:3412 ++#, c-format ++msgid "" ++"Problem during enablement of dependency tree for module '%1$s' stream " ++"'%2$s': %3$s" ++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:3424 ++msgid "Problems appeared for module enable request" ++msgstr "Des problèmes sont apparus pour la demande d'activation du module" ++ ++#. this really should never happen; unless the modular repodata is corrupted ++#: libdnf/dnf-context.cpp:3496 ++#, c-format ++msgid "Failed to parse module artifact NEVRA '%s'" ++msgstr "Échec de l'analyse de l'artefact de module '%s'" ++ ++#: libdnf/dnf-context.cpp:3530 ++msgid "Problems appeared for module install request" ++msgstr "Des problèmes sont apparus pour la demande d'installation du module" ++ ++#: libdnf/dnf-context.cpp:3590 ++msgid "Problems appeared for module reset request" ++msgstr "" ++"Des problèmes sont apparus pour la demande de réinitialisation des modules" ++ ++#: libdnf/dnf-context.cpp:3592 ++msgid "Problems appeared for module disable request" ++msgstr "Des problèmes sont apparus pour la demande de désactivation du module" ++ ++#: libdnf/dnf-context.cpp:3628 ++#, c-format ++msgid "" ++"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 »" ++ ++#: libdnf/dnf-context.cpp:3632 ++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." ++msgstr "" ++"Il n’est pas possible de basculer les flux actifs d’un module. 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:85 + msgid "Could not depsolve transaction; " + msgstr "Impossible de depsolve la transaction ; " + +-#: libdnf/dnf-goal.cpp:70 ++#: libdnf/dnf-goal.cpp:87 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "%i problème détecté :\n" + msgstr[1] "%i problèmes détectés :\n" + +-#: libdnf/dnf-goal.cpp:78 ++#: libdnf/dnf-goal.cpp:95 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " Problème %1$i : %2$s\n" + +-#: libdnf/dnf-goal.cpp:80 ++#: libdnf/dnf-goal.cpp:97 + #, c-format + msgid " Problem: %s\n" + msgstr " Problème : %s\n" +@@ -181,84 +309,84 @@ 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:381 ++#: libdnf/dnf-sack.cpp:395 ++msgid "failed to add solv" ++msgstr "n’a pu ajouter solv" ++ ++#: libdnf/dnf-sack.cpp:414 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "aucune chaine %1$s pour %2$s" + +-#: libdnf/dnf-sack.cpp:404 +-msgid "failed to add solv" +-msgstr "n’a pu ajouter solv" +- +-#: libdnf/dnf-sack.cpp:422 ++#: libdnf/dnf-sack.cpp:424 + #, c-format + msgid "failed to open: %s" + msgstr "n’a pas pu ouvrir : %s" + +-#: libdnf/dnf-sack.cpp:501 ++#: libdnf/dnf-sack.cpp:503 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "n’a pas pu créer le fichier temporaire : %s" + +-#: libdnf/dnf-sack.cpp:511 ++#: libdnf/dnf-sack.cpp:513 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "n’a pas pu ouvrir le fichier tmp : %s" + +-#: libdnf/dnf-sack.cpp:523 ++#: libdnf/dnf-sack.cpp:525 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() n’a pu écrire les données : %i" + +-#: libdnf/dnf-sack.cpp:540 ++#: 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:605 ++#: libdnf/dnf-sack.cpp:607 + #, c-format + msgid "can not create temporary file %s" + msgstr "n’a pas pu créer le fichier temporaire %s" + +-#: libdnf/dnf-sack.cpp:623 ++#: libdnf/dnf-sack.cpp:625 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) a échoué : %2$d" + +-#: libdnf/dnf-sack.cpp:678 ++#: libdnf/dnf-sack.cpp:680 + msgid "null repo md file" + msgstr "null repo md file" + +-#: libdnf/dnf-sack.cpp:687 ++#: libdnf/dnf-sack.cpp:689 + #, 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:701 ++#: libdnf/dnf-sack.cpp:703 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() a échoué." + +-#: libdnf/dnf-sack.cpp:714 ++#: libdnf/dnf-sack.cpp:716 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "échec du chargement du MD_TYPE_PRIMARY." + +-#: libdnf/dnf-sack.cpp:727 ++#: libdnf/dnf-sack.cpp:729 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() a échoué." + +-#: libdnf/dnf-sack.cpp:794 ++#: libdnf/dnf-sack.cpp:796 + msgid "failed to auto-detect architecture" + msgstr "n’a pu auto-détecter l’architecture" + +-#: libdnf/dnf-sack.cpp:919 ++#: libdnf/dnf-sack.cpp:961 + #, c-format + msgid "failed creating cachedir %s" + msgstr "n’a pu créer le cachedir %s" + +-#: libdnf/dnf-sack.cpp:1696 ++#: libdnf/dnf-sack.cpp:1738 + msgid "failed loading RPMDB" + msgstr "n’a pu télécharger RPMDB" + +-#: libdnf/dnf-sack.cpp:2403 ++#: libdnf/dnf-sack.cpp:2462 + #, c-format + msgid "No module defaults found: %s" + msgstr "Aucun module par défaut n’a été trouvé : %s" +@@ -334,28 +462,28 @@ msgstr "" + "Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible " + "%3$s" + +-#: libdnf/dnf-transaction.cpp:1196 ++#: libdnf/dnf-transaction.cpp:1195 + msgid "failed to set root" + msgstr "n’a pu réussi à définir root" + +-#: libdnf/dnf-transaction.cpp:1418 ++#: libdnf/dnf-transaction.cpp:1416 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erreur %i lors du test transactionnel" + +-#: libdnf/dnf-transaction.cpp:1458 ++#: libdnf/dnf-transaction.cpp:1456 + #, c-format + msgid "Error %i running transaction" + msgstr "Erreur %i pendant la transaction" + +-#: libdnf/dnf-transaction.cpp:1473 ++#: libdnf/dnf-transaction.cpp:1472 + #, 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:399 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "impossible d’ouvrir le dossier %1$s : %2$s" +@@ -365,327 +493,369 @@ msgstr "impossible d’ouvrir le dossier %1$s : %2$s" + msgid "failed to remove %s" + msgstr "n’a pas pu supprimer %s" + +-#: libdnf/goal/Goal.cpp:55 ++#: libdnf/goal/Goal.cpp:78 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "" + "Sélecteur Ill-formed, présence de plusieurs objets correspondants dans le " + "filtre" + +-#: libdnf/goal/Goal.cpp:56 ++#: 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" + +-#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94 ++#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" + msgstr " n’appartient pas à un dépôt distupgrade" + +-#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95 ++#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 + msgid " has inferior architecture" + msgstr " a une architecture inférieure" + +-#: libdnf/goal/Goal.cpp:69 ++#: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " + msgstr "problème avec le paquet installé " + +-#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97 ++#: libdnf/goal/Goal.cpp:93 libdnf/goal/Goal.cpp:120 + msgid "conflicting requests" + msgstr "requêtes conflictuelles" + +-#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98 ++#: libdnf/goal/Goal.cpp:94 libdnf/goal/Goal.cpp:121 + msgid "unsupported request" + msgstr "requête non prise en charge" + +-#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99 ++#: libdnf/goal/Goal.cpp:95 libdnf/goal/Goal.cpp:122 + msgid "nothing provides requested " + msgstr "rien ne fourni ce qui a été demandé " + +-#: libdnf/goal/Goal.cpp:73 ++#: libdnf/goal/Goal.cpp:96 + #, c-format + msgid "package %s does not exist" + msgstr "le paquet %s n’existe pas" + +-#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101 ++#: libdnf/goal/Goal.cpp:97 libdnf/goal/Goal.cpp:124 + msgid " is provided by the system" + msgstr " est fourni par le système" + +-#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102 ++#: libdnf/goal/Goal.cpp:98 libdnf/goal/Goal.cpp:125 + msgid "some dependency problem" + msgstr "quelques problèmes de dépendances" + +-#: libdnf/goal/Goal.cpp:76 ++#: libdnf/goal/Goal.cpp:99 + msgid "cannot install the best update candidate for package " + msgstr "installation impossible du meilleur candidat pour le paquet " + +-#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104 ++#: libdnf/goal/Goal.cpp:100 libdnf/goal/Goal.cpp:127 + msgid "cannot install the best candidate for the job" + msgstr "installation impossible du meilleur candidat pour la tâche" + +-#: libdnf/goal/Goal.cpp:78 ++#: libdnf/goal/Goal.cpp:101 + #, c-format + msgid "package %s is filtered out by modular filtering" + msgstr "le paquet %s a été filtré par filtrage modulaire" + +-#: libdnf/goal/Goal.cpp:79 ++#: libdnf/goal/Goal.cpp:102 + #, c-format + msgid "package %s does not have a compatible architecture" + msgstr "le paquet %s n’a pas d’architecture compatible" + +-#: libdnf/goal/Goal.cpp:80 ++#: libdnf/goal/Goal.cpp:103 + #, c-format + msgid "package %s is not installable" + msgstr "le paquet %s n’est pas installable" + +-#: libdnf/goal/Goal.cpp:81 ++#: libdnf/goal/Goal.cpp:104 + #, c-format + msgid "package %s is filtered out by exclude filtering" + msgstr "le paquet %s a été filtré en excluant le filtrage" + +-#: libdnf/goal/Goal.cpp:82 ++#: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" + msgstr "rien de fournit %s rendu nécessaire par %s" + +-#: libdnf/goal/Goal.cpp:83 ++#: libdnf/goal/Goal.cpp:106 + #, c-format + msgid "cannot install both %s and %s" + msgstr "installation impossible à la fois de %s et %s" + +-#: libdnf/goal/Goal.cpp:84 ++#: libdnf/goal/Goal.cpp:107 + #, c-format + msgid "package %s conflicts with %s provided by %s" + msgstr "le paquet %s est en conflit avec %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:85 ++#: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" + msgstr "le paquet %s rend obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:86 ++#: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" + msgstr "le paquet installé %s rend obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:87 ++#: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" + msgstr "le paquet %s rend implicitement obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:88 ++#: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" + msgstr "" + "le paquet %s nécessite %s, mais aucun fournisseur ne peut être installé" + +-#: libdnf/goal/Goal.cpp:89 ++#: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" + msgstr "le paquet %s est en conflit avec %s fourni par lui-même" + +-#: libdnf/goal/Goal.cpp:90 ++#: libdnf/goal/Goal.cpp:113 + #, c-format + msgid "both package %s and %s obsolete %s" + msgstr "à la fois le paquet %s et %s rendent obsolète %s" + +-#: libdnf/goal/Goal.cpp:96 ++#: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " + msgstr "problème avec le module installé " + +-#: libdnf/goal/Goal.cpp:100 ++#: libdnf/goal/Goal.cpp:123 + #, c-format + msgid "module %s does not exist" + msgstr "le module %s n’existe pas" + +-#: libdnf/goal/Goal.cpp:103 ++#: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " + msgstr "" + "installation impossible du meilleur candidat de mise à jour pour le module " + +-#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108 ++#: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format + msgid "module %s is disabled" + msgstr "le module %s est désactivé" + +-#: libdnf/goal/Goal.cpp:106 ++#: libdnf/goal/Goal.cpp:129 + #, c-format + msgid "module %s does not have a compatible architecture" + msgstr "le module %s n’a pas d’architecture compatible" + +-#: libdnf/goal/Goal.cpp:107 ++#: libdnf/goal/Goal.cpp:130 + #, c-format + msgid "module %s is not installable" + msgstr "le module %s n’est pas installable" + +-#: libdnf/goal/Goal.cpp:109 ++#: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" + msgstr "rien de fournit %s rendu nécessaire par le module %s" + +-#: libdnf/goal/Goal.cpp:110 ++#: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" + msgstr "installation impossible à la fois des modules %s et %s" + +-#: libdnf/goal/Goal.cpp:111 ++#: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" + msgstr "le module %s est en conflit avec %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:112 ++#: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" + msgstr "le module %s rend obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:113 ++#: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" + msgstr "le module installé %s rend obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:114 ++#: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" + msgstr "le module %s rend implicitement obsolète %s fourni par %s" + +-#: libdnf/goal/Goal.cpp:115 ++#: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" + msgstr "" + "le module %s nécessite %s, mais aucun fournisseur ne peut être installé" + +-#: libdnf/goal/Goal.cpp:116 ++#: libdnf/goal/Goal.cpp:139 + #, c-format + msgid "module %s conflicts with %s provided by itself" + msgstr "le module %s est en conflit avec %s fourni par lui-même" + +-#: libdnf/goal/Goal.cpp:117 ++#: libdnf/goal/Goal.cpp:140 + #, c-format + msgid "both module %s and %s obsolete %s" + msgstr "à la fois le module %s et %s rendent obsolète %s" + +-#: libdnf/goal/Goal.cpp:1038 ++#: libdnf/goal/Goal.cpp:1055 + msgid "no solver set" + msgstr "aucun solveur défini" + +-#: libdnf/goal/Goal.cpp:1043 ++#: libdnf/goal/Goal.cpp:1060 + #, c-format + msgid "failed to make %s absolute" + msgstr "n’a pas pu rendre %s absolu" + +-#: libdnf/goal/Goal.cpp:1050 ++#: libdnf/goal/Goal.cpp:1067 + #, 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:1062 ++#: libdnf/goal/Goal.cpp:1079 + msgid "no solv in the goal" + msgstr "pas de solv dans l’objectif" + +-#: libdnf/goal/Goal.cpp:1064 ++#: libdnf/goal/Goal.cpp:1081 + msgid "no solution, cannot remove protected package" + msgstr "aucune solution, n’a pas pu supprimer le package protégé" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1084 + msgid "no solution possible" + msgstr "aucune solution n’est possible" + +-#: libdnf/goal/Goal.cpp:1479 ++#: libdnf/goal/Goal.cpp:1210 ++msgid "Problem: " ++msgstr "Problème : " ++ ++#: libdnf/goal/Goal.cpp:1215 ++#, c-format ++msgid "Problem %d: " ++msgstr "Probléme %d : " ++ ++#: libdnf/goal/Goal.cpp:1542 + 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:322 ++#: libdnf/hy-iutil.cpp:326 + #, 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:330 ++#: libdnf/hy-iutil.cpp:334 + #, 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:376 ++#: libdnf/hy-iutil.cpp:380 + #, 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:411 ++#: libdnf/hy-iutil.cpp:415 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "impossible de stat le chemin %1$s : %2$s" + +-#: libdnf/module/ModulePackage.cpp:499 ++#: libdnf/module/ModulePackage.cpp:573 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "Format invalide du module de plateforme : %s" + +-#: libdnf/module/ModulePackage.cpp:514 ++#: libdnf/module/ModulePackage.cpp:588 + msgid "Multiple module platforms provided by available packages\n" + msgstr "" + "De multiples modules de plateformes sont fournis par les paquets " + "disponibles\n" + +-#: libdnf/module/ModulePackage.cpp:527 ++#: libdnf/module/ModulePackage.cpp:601 + msgid "Multiple module platforms provided by installed packages\n" + msgstr "" + "De multiples modules de plateformes sont fournis par les paquets installés\n" + +-#: libdnf/module/ModulePackage.cpp:554 ++#: libdnf/module/ModulePackage.cpp:628 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" + msgstr "La détection des modules de plateformes dans %s a échoué : %s" + +-#: libdnf/module/ModulePackage.cpp:563 ++#: libdnf/module/ModulePackage.cpp:637 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "L'identifiant de la platforme est manquant dans %s" + +-#: libdnf/module/ModulePackage.cpp:568 ++#: libdnf/module/ModulePackage.cpp:642 + msgid "No valid Platform ID detected" + msgstr "Aucun identifiant de plateforme n'a été détecté" + +-#: libdnf/module/ModulePackageContainer.cpp:68 ++#: libdnf/module/ModulePackageContainer.cpp:107 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "Impossible d’activer les flux pour le module « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:294 ++#: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "Valeurs par défaut en conflit avec le dépôt « %s » : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1569 ++#: libdnf/module/ModulePackageContainer.cpp:918 ++msgid "Installing module profiles:\n" ++msgstr "Installation des profils de module :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:933 ++msgid "Disabling module profiles:\n" ++msgstr "Désactivation des profils de module :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:948 ++msgid "Enabling module streams:\n" ++msgstr "Activation des flux de modules :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:962 ++msgid "Switching module streams:\n" ++msgstr "Basculement des flux de modules :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:980 ++msgid "Disabling modules:\n" ++msgstr "Désactivation des modules :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:991 ++msgid "Resetting modules:\n" ++msgstr "Réinitialisation des modules :\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1674 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "Impossible de charger les données de sécurité à « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1575 ++#: libdnf/module/ModulePackageContainer.cpp:1680 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "" + "Impossible de charger les données de sécurité modulaires pour le module " + "« %s : %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1639 ++#: libdnf/module/ModulePackageContainer.cpp:1761 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "" + "Impossible de créer le dossier « %s » pour les données de sécurité " + "modulaires : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1661 ++#: libdnf/module/ModulePackageContainer.cpp:1777 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "" + "Impossible d’enregistrer les données de sécurité modulaires vers « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1686 ++#: libdnf/module/ModulePackageContainer.cpp:1800 + #, 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 »" + ++#: libdnf/module/ModulePackageContainer.cpp:1832 ++#, c-format ++msgid "" ++"Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " ++"disabled" ++msgstr "" ++"Impossible d'appliquer les obsolètes modulaires à '%s:%s' car le module " ++"cible '%s' est désactivé" ++ + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format + msgid "Failed to update from string: %s" +@@ -712,6 +882,13 @@ msgstr "Échec de la mise à jour des paramètres par défaut : %s" + msgid "Failed to upgrade streams: %s" + msgstr "Échec de la mise à jour des flux : %s" + ++#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#, c-format ++msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" ++msgstr "" ++"Impossible de récupérer les modules obsolètes car aucune correspondance de " ++"flux %s: %s" ++ + #: libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +@@ -769,12 +946,13 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format +-msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "Impossible de trouver une adresse de base pour le dépôt : %s" ++msgid "repo '%s': 'basecachedir' is not set" ++msgstr "repo '%s' : 'basecachedir' n'est pas fixé" + +-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672 ++#: libdnf/repo/Repo.cpp:512 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" +@@ -782,139 +960,161 @@ msgstr "" + "La vitesse de téléchargement maximale est plus basse que le minimum. " + "Veuillez modifier les paramètres minrate ou throttle" + +-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655 ++#: libdnf/repo/Repo.cpp:546 ++#, c-format ++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" ++msgstr "repo '%s' : 'proxy_username' est défini mais pas 'proxy_password'." ++ ++#: libdnf/repo/Repo.cpp:548 ++msgid "'proxy_username' is set but not 'proxy_password'" ++msgstr "" ++"Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe " ++"\"proxy_password\"" ++ ++#: libdnf/repo/Repo.cpp:629 ++#, c-format ++msgid "Cannot find a valid baseurl for repo: %s" ++msgstr "Impossible de trouver une adresse de base pour le dépôt : %s" ++ ++#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s : gpgme_data_new_from_fd() : %s" + +-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663 ++#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s : gpgme_op_import() : %s" + +-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880 ++#: 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" ++ ++#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s : gpgme_ctx_set_engine_info() : %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "n’a pas pu lister les clés : %s" + +-#: libdnf/repo/Repo.cpp:806 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "Impossible de récupérer la clé GPG pour le dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:859 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "dépôt %s : 0x%s déjà importé" + +-#: libdnf/repo/Repo.cpp:887 ++#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#, c-format ++msgid "Failed to create directory \"%s\": %d - %s" ++msgstr "Impossible de créer le répertoire \"%s« :%s - %s" ++ ++#: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "dépôt %s : clé importée 0x%s." + +-#: libdnf/repo/Repo.cpp:1131 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "relance : dépôt « %s » ignoré, pas de méta-lien." + +-#: libdnf/repo/Repo.cpp:1150 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "relance : dépôt « %s » ignoré, pas de hachage utilisable." + +-#: libdnf/repo/Repo.cpp:1173 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "relance : échec pour « %s », la somme de %s ne correspond pas." + +-#: libdnf/repo/Repo.cpp:1179 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "relance : « %s » peut être relancé - la somme de contrôle du méta-lien " + "correspond." + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "relance : « %s » peut être relancé - le repomd correspond." + +-#: libdnf/repo/Repo.cpp:1206 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "relance : échec pour « %s », le repomd ne correspond pas." + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "Impossible de créer le répertoire de destination du dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1230 +-#, 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" +- +-#: libdnf/repo/Repo.cpp:1244 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Impossible de créer le répertoire « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1267 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Impossible de renommer le répertoire « %s » en « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1290 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "dépôt : utilisation du cache pour : %s" + +-#: libdnf/repo/Repo.cpp:1302 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "« cache uniquement » activé, mais pas de cache pour « %s »" + +-#: libdnf/repo/Repo.cpp:1306 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "dépôt : téléchargement à distance en provenance de : %s" + +-#: libdnf/repo/Repo.cpp:1312 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "Échec du téléchargement des métadonnées pour le dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1338 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir() : échec du calcul de SHA256" + +-#: libdnf/repo/Repo.cpp:1363 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "Impossible de créer le dossier persistant « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1763 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "« resume » (reprise) ne peut pas être utilisé avec le paramètre " + "byterangestart" + +-#: libdnf/repo/Repo.cpp:1780 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "L’initialisation de Package Target a échoué : %s" + +-#: libdnf/repo/Repo.cpp:1886 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "impossible d’ouvrir %s : %s" + +-#: libdnf/repo/Repo.cpp:1930 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Log handler ayant pour id %ld n’existe pas" +@@ -923,13 +1123,13 @@ msgstr "Log handler ayant pour id %ld n’existe pas" + msgid "In progress" + msgstr "En cours" + +-#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216 +-#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245 +-#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394 ++#: libdnf/transaction/Swdb.cpp:187 libdnf/transaction/Swdb.cpp:215 ++#: libdnf/transaction/Swdb.cpp:227 libdnf/transaction/Swdb.cpp:244 ++#: libdnf/transaction/Swdb.cpp:383 libdnf/transaction/Swdb.cpp:393 + msgid "Not in progress" + msgstr "Pas en cours" + +-#: libdnf/transaction/Swdb.cpp:255 ++#: libdnf/transaction/Swdb.cpp:254 + msgid "No transaction in progress" + msgstr "Aucune transaction n’est en cours" + +@@ -975,6 +1175,3 @@ msgstr "" + + #~ 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 b9064ee6..19e12ea0 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,20 +1,21 @@ + # Casey Jones , 2018. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Casey Jones , 2020. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-05-05 09:40+0000\n" +-"Last-Translator: Casey Jones \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2021-09-01 08:49+0200\n" ++"PO-Revision-Date: 2021-09-11 10:04+0000\n" ++"Last-Translator: Ludek Janda \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.0.3\n" ++"X-Generator: Weblate 4.8\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -35,17 +36,30 @@ msgstr "'%s' を バイトへ変換できませんでした" + msgid "unknown unit '%s'" + msgstr "不明な単位 '%s'" + +-#: libdnf/conf/ConfigMain.cpp:332 ++#: libdnf/conf/ConfigMain.cpp:204 libdnf/conf/OptionEnum.cpp:83 ++#: libdnf/conf/OptionNumber.cpp:88 ++msgid "invalid value" ++msgstr "無効な値" ++ ++#: libdnf/conf/ConfigMain.cpp:207 ++msgid "value 1 is not allowed" ++msgstr "値 1 は許可されません" ++ ++#: libdnf/conf/ConfigMain.cpp:209 ++msgid "negative value is not allowed" ++msgstr "負の値は許可されていません" ++ ++#: libdnf/conf/ConfigMain.cpp:341 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "パーセンテージ '%s' が範囲外にあります" + +-#: libdnf/conf/OptionBinds.cpp:76 ++#: libdnf/conf/OptionBinds.cpp:85 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" does not exist" + msgstr "設定: id \"%s\" を伴う OptionBinding は存在しません" + +-#: libdnf/conf/OptionBinds.cpp:88 ++#: libdnf/conf/OptionBinds.cpp:97 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" already exists" + msgstr "設定: id \"%s\" を伴う OptionBinding はすでに存在します" +@@ -56,24 +70,20 @@ msgid "invalid boolean value '%s'" + msgstr "無効な boolean 値 '%s'" + + #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158 +-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59 ++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59 + #, c-format + msgid "'%s' is not an allowed value" + msgstr "'%s' 値は許可されていない値です" + +-#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88 +-msgid "invalid value" +-msgstr "無効な値" +- + #: libdnf/conf/OptionNumber.cpp:73 + #, c-format + msgid "given value [%d] should be less than allowed value [%d]." +-msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください" ++msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください。" + + #: libdnf/conf/OptionNumber.cpp:76 + #, c-format + msgid "given value [%d] should be greater than allowed value [%d]." +-msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください" ++msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください。" + + #: libdnf/conf/OptionPath.cpp:78 + #, c-format +@@ -90,26 +100,131 @@ msgstr "指定されたパス '%s' が存在しません。" + msgid "could not convert '%s' to seconds" + msgstr "'%s' を 秒に変換できません" + +-#: libdnf/conf/OptionString.cpp:74 ++#: libdnf/conf/OptionString.cpp:79 + msgid "GetValue(): Value not set" + msgstr "GetValue(): 値は設定されていません" + +-#: libdnf/dnf-goal.cpp:68 ++#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#, c-format ++msgid "Cannot enable more streams from module '%s' at the same time" ++msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません" ++ ++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206 ++#, 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:3253 ++#, c-format ++msgid "Modular dependency problem with Defaults: %s" ++msgstr "デフォルトのモジュラー依存問題: %s" ++ ++#: libdnf/dnf-context.cpp:3256 ++#, c-format ++msgid "Modular dependency problem with the latest modules: %s" ++msgstr "最新のモジュールでモジュールの依存関係の問題: %s" ++ ++#: libdnf/dnf-context.cpp:3260 ++#, c-format ++msgid "Modular dependency problem: %s" ++msgstr "モジュラーの依存に関する問題: %s" ++ ++#: 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:3460 libdnf/dnf-context.cpp:3470 ++#, c-format ++msgid "Unable to resolve argument '%s'" ++msgstr "引数 '%s' を解決できません" ++ ++#: libdnf/dnf-context.cpp:3301 ++#, c-format ++msgid "" ++"Only module name is required. Ignoring unneeded information in argument: " ++"'%s'" ++msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'" ++ ++#: libdnf/dnf-context.cpp:3315 ++#, c-format ++msgid "Cannot reset module '%s': State of module already modified" ++msgstr "モジュール '%s' をリセットできません。モジュールの状態はすでに変更されています" ++ ++#: libdnf/dnf-context.cpp:3326 ++#, c-format ++msgid "Cannot disable module '%s': State of module already modified" ++msgstr "モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています" ++ ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449 ++#: libdnf/dnf-context.cpp:3559 ++msgid "No modular data available" ++msgstr "モジュールデータは利用できません" ++ ++#: libdnf/dnf-context.cpp:3374 ++#, c-format ++msgid "Ignoring unneeded information in argument: '%s'" ++msgstr "引数の不要な情報は無視します: '%s'" ++ ++#: 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:3424 ++msgid "Problems appeared for module enable request" ++msgstr "モジュール有効リクエストに発生する問題" ++ ++#. this really should never happen; unless the modular repodata is corrupted ++#: libdnf/dnf-context.cpp:3496 ++#, c-format ++msgid "Failed to parse module artifact NEVRA '%s'" ++msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました" ++ ++#: libdnf/dnf-context.cpp:3530 ++msgid "Problems appeared for module install request" ++msgstr "モジュールインストールリクエストに発生する問題" ++ ++#: libdnf/dnf-context.cpp:3590 ++msgid "Problems appeared for module reset request" ++msgstr "モジュールリセットリクエストに発生する問題" ++ ++#: libdnf/dnf-context.cpp:3592 ++msgid "Problems appeared for module disable request" ++msgstr "モジュール無効化リクエストに発生する問題" ++ ++#: libdnf/dnf-context.cpp:3628 ++#, c-format ++msgid "" ++"The operation would result in switching of module '%s' stream '%s' to stream" ++" '%s'" ++msgstr "オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り替える結果となります" ++ ++#: libdnf/dnf-context.cpp:3632 ++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." ++msgstr "" ++"有効化されたモジュールのストリームの切り替えはできません。\n" ++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module reset ' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。" ++ ++#: libdnf/dnf-goal.cpp:85 + msgid "Could not depsolve transaction; " + msgstr "トランザクションを depsolve できませんでした; " + +-#: libdnf/dnf-goal.cpp:70 ++#: libdnf/dnf-goal.cpp:87 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "%i 問題を検出:\n" + +-#: libdnf/dnf-goal.cpp:78 ++#: libdnf/dnf-goal.cpp:95 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " 問題 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:80 ++#: libdnf/dnf-goal.cpp:97 + #, c-format + msgid " Problem: %s\n" + msgstr " 問題: %s\n" +@@ -174,87 +289,87 @@ msgstr "パッケージ %s を見つけることができませんでした" + msgid "could not add erase element %1$s(%2$i)" + msgstr "erase 要素 %1$s(%2$i) を追加することができません" + +-#: libdnf/dnf-sack.cpp:381 ++#: libdnf/dnf-sack.cpp:395 ++msgid "failed to add solv" ++msgstr "solv の追加に失敗しました" ++ ++#: libdnf/dnf-sack.cpp:414 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s の %1$s 文字列はありません" + +-#: libdnf/dnf-sack.cpp:404 +-msgid "failed to add solv" +-msgstr "solv の追加に失敗しました" +- +-#: libdnf/dnf-sack.cpp:422 ++#: libdnf/dnf-sack.cpp:424 + #, c-format + msgid "failed to open: %s" + msgstr "開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:501 ++#: libdnf/dnf-sack.cpp:503 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "一時ファイルを作成できません: %s" + +-#: libdnf/dnf-sack.cpp:511 ++#: libdnf/dnf-sack.cpp:513 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "tmp ファイルを開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:523 ++#: libdnf/dnf-sack.cpp:525 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() はデータの書き込みに失敗しました: %i" + +-#: libdnf/dnf-sack.cpp:540 ++#: libdnf/dnf-sack.cpp:542 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:605 ++#: libdnf/dnf-sack.cpp:607 + #, c-format + msgid "can not create temporary file %s" + msgstr "一時ファイル %s を作成できません" + +-#: libdnf/dnf-sack.cpp:623 ++#: libdnf/dnf-sack.cpp:625 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) は失敗しました: %2$d" + +-#: libdnf/dnf-sack.cpp:678 ++#: libdnf/dnf-sack.cpp:680 + msgid "null repo md file" + msgstr "null repo md ファイル" + +-#: libdnf/dnf-sack.cpp:687 ++#: libdnf/dnf-sack.cpp:689 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "ファイル %1$s を読み込みできません: %2$s" + +-#: libdnf/dnf-sack.cpp:701 ++#: libdnf/dnf-sack.cpp:703 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() は失敗しました。" + +-#: libdnf/dnf-sack.cpp:714 ++#: libdnf/dnf-sack.cpp:716 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY のロードに失敗しました。" + +-#: libdnf/dnf-sack.cpp:727 ++#: libdnf/dnf-sack.cpp:729 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" + +-#: libdnf/dnf-sack.cpp:794 ++#: libdnf/dnf-sack.cpp:796 + msgid "failed to auto-detect architecture" + msgstr "アーキテクチャーの自動検出に失敗しました" + +-#: libdnf/dnf-sack.cpp:919 ++#: libdnf/dnf-sack.cpp:961 + #, c-format + msgid "failed creating cachedir %s" + msgstr "cachedir %s の作成に失敗しました" + +-#: libdnf/dnf-sack.cpp:1696 ++#: libdnf/dnf-sack.cpp:1738 + msgid "failed loading RPMDB" + msgstr "RPMDB のロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:2403 ++#: libdnf/dnf-sack.cpp:2462 + #, c-format + msgid "No module defaults found: %s" +-msgstr "" ++msgstr "モジュールのデフォルトは見つかりませんでした: %s" + + #: libdnf/dnf-state.cpp:1184 + #, c-format +@@ -323,26 +438,26 @@ msgstr "%s に filesystem をフリーサイズで取得することに失敗し + 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:1196 ++#: libdnf/dnf-transaction.cpp:1195 + msgid "failed to set root" + msgstr "root の設定に失敗しました" + +-#: libdnf/dnf-transaction.cpp:1418 ++#: libdnf/dnf-transaction.cpp:1416 + #, c-format + msgid "Error %i running transaction test" + msgstr "トランザクションテストの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1458 ++#: libdnf/dnf-transaction.cpp:1456 + #, c-format + msgid "Error %i running transaction" + msgstr "トランザクションの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1473 ++#: libdnf/dnf-transaction.cpp:1472 + #, 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:399 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を開くことができません: %2$s" +@@ -352,310 +467,350 @@ msgstr "ディレクトリー %1$s を開くことができません: %2$s" + msgid "failed to remove %s" + msgstr "%s の削除に失敗しました" + +-#: libdnf/goal/Goal.cpp:55 ++#: libdnf/goal/Goal.cpp:78 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "不適格な Selector、フィルター内に複数の一致するオブジェクトが存在" + +-#: libdnf/goal/Goal.cpp:56 ++#: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "操作に使用される不適格な Selector、間違った比較タイプ" + +-#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94 ++#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" + msgstr " はdistupgradeレポジトリーに属していません" + +-#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95 ++#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 + msgid " has inferior architecture" + msgstr " は下位アーキテクチャがあります" + +-#: libdnf/goal/Goal.cpp:69 ++#: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " + msgstr "インストール済パッケージの問題 " + +-#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97 ++#: libdnf/goal/Goal.cpp:93 libdnf/goal/Goal.cpp:120 + msgid "conflicting requests" + msgstr "競合するリクエスト" + +-#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98 ++#: libdnf/goal/Goal.cpp:94 libdnf/goal/Goal.cpp:121 + msgid "unsupported request" + msgstr "非サポートのリクエスト" + +-#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99 ++#: libdnf/goal/Goal.cpp:95 libdnf/goal/Goal.cpp:122 + msgid "nothing provides requested " + msgstr "何もリクエストされていません " + +-#: libdnf/goal/Goal.cpp:73 ++#: libdnf/goal/Goal.cpp:96 + #, c-format + msgid "package %s does not exist" + msgstr "パッケージ %s は存在しません" + +-#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101 ++#: libdnf/goal/Goal.cpp:97 libdnf/goal/Goal.cpp:124 + msgid " is provided by the system" + msgstr " はシステムから提供されます" + +-#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102 ++#: libdnf/goal/Goal.cpp:98 libdnf/goal/Goal.cpp:125 + msgid "some dependency problem" + msgstr "いくつかの依存問題" + +-#: libdnf/goal/Goal.cpp:76 ++#: libdnf/goal/Goal.cpp:99 + msgid "cannot install the best update candidate for package " + msgstr "パッケージの最良アップデート候補をインストールできません " + +-#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104 ++#: libdnf/goal/Goal.cpp:100 libdnf/goal/Goal.cpp:127 + msgid "cannot install the best candidate for the job" + msgstr "ジョブの最良アップデート候補をインストールできません" + +-#: libdnf/goal/Goal.cpp:78 ++#: libdnf/goal/Goal.cpp:101 + #, c-format + msgid "package %s is filtered out by modular filtering" + msgstr "パッケージ %s はモジュラーフィルタリングに一致しません" + +-#: libdnf/goal/Goal.cpp:79 ++#: libdnf/goal/Goal.cpp:102 + #, c-format + msgid "package %s does not have a compatible architecture" + msgstr "パッケージ %s は互換性のあるアーキテクチャーがありません" + +-#: libdnf/goal/Goal.cpp:80 ++#: libdnf/goal/Goal.cpp:103 + #, c-format + msgid "package %s is not installable" + msgstr "パッケージ %s はインストール不可です" + +-#: libdnf/goal/Goal.cpp:81 ++#: libdnf/goal/Goal.cpp:104 + #, c-format + msgid "package %s is filtered out by exclude filtering" + msgstr "パッケージ %s は除外フィルタリングに一致しません" + +-#: libdnf/goal/Goal.cpp:82 ++#: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" + msgstr "%s が提供されません %s に必要です" + +-#: libdnf/goal/Goal.cpp:83 ++#: libdnf/goal/Goal.cpp:106 + #, c-format + msgid "cannot install both %s and %s" + msgstr "%s と %s どちらもインストールできません" + +-#: libdnf/goal/Goal.cpp:84 ++#: libdnf/goal/Goal.cpp:107 + #, c-format + msgid "package %s conflicts with %s provided by %s" + msgstr "パッケージ %s は %s と競合しています。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:85 ++#: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" + msgstr "パッケージ %s は %s を廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:86 ++#: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" + msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:87 ++#: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" + msgstr "パッケージ %s は %s を暗に廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:88 ++#: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" + msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません" + +-#: libdnf/goal/Goal.cpp:89 ++#: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" + msgstr "パッケージ %s は自己提供される %s と競合しています" + +-#: libdnf/goal/Goal.cpp:90 ++#: libdnf/goal/Goal.cpp:113 + #, c-format + msgid "both package %s and %s obsolete %s" + msgstr "パッケージ %s と %s 両方は %s を廃止しました" + +-#: libdnf/goal/Goal.cpp:96 ++#: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " + msgstr "インストール済モジュールの問題 " + +-#: libdnf/goal/Goal.cpp:100 ++#: libdnf/goal/Goal.cpp:123 + #, c-format + msgid "module %s does not exist" + msgstr "モジュール %s は存在しません" + +-#: libdnf/goal/Goal.cpp:103 ++#: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " + msgstr "モジュールの最良アップデート候補をインストールできません " + +-#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108 ++#: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format + msgid "module %s is disabled" + msgstr "モジュール %s は無効です" + +-#: libdnf/goal/Goal.cpp:106 ++#: libdnf/goal/Goal.cpp:129 + #, c-format + msgid "module %s does not have a compatible architecture" + msgstr "モジュール %s は互換性のあるアーキテクチャーがありません" + +-#: libdnf/goal/Goal.cpp:107 ++#: libdnf/goal/Goal.cpp:130 + #, c-format + msgid "module %s is not installable" + msgstr "モジュール %s はインストール不可です" + +-#: libdnf/goal/Goal.cpp:109 ++#: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" + msgstr "%s が提供されませんモジュール %s に必要です" + +-#: libdnf/goal/Goal.cpp:110 ++#: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" + msgstr "モジュール %s と %s どちらもインストールできません" + +-#: libdnf/goal/Goal.cpp:111 ++#: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" + msgstr "モジュール %s は %s と競合しています。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:112 ++#: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" + msgstr "モジュール %s は %s を廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:113 ++#: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" + msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:114 ++#: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" + msgstr "モジュール %s は %s を暗に廃止しました。これは %s により提供されます" + +-#: libdnf/goal/Goal.cpp:115 ++#: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" + msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません" + +-#: libdnf/goal/Goal.cpp:116 ++#: libdnf/goal/Goal.cpp:139 + #, c-format + msgid "module %s conflicts with %s provided by itself" + msgstr "モジュール %s は自己提供される %s と競合しています" + +-#: libdnf/goal/Goal.cpp:117 ++#: libdnf/goal/Goal.cpp:140 + #, c-format + msgid "both module %s and %s obsolete %s" + msgstr "モジュール %s と %s 両方は %s を廃止しました" + +-#: libdnf/goal/Goal.cpp:1038 ++#: libdnf/goal/Goal.cpp:1055 + msgid "no solver set" + msgstr "設定されたソルバーはありません" + +-#: libdnf/goal/Goal.cpp:1043 ++#: libdnf/goal/Goal.cpp:1060 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s を絶対的にすることに失敗しました" + +-#: libdnf/goal/Goal.cpp:1050 ++#: libdnf/goal/Goal.cpp:1067 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s" + +-#: libdnf/goal/Goal.cpp:1062 ++#: libdnf/goal/Goal.cpp:1079 + msgid "no solv in the goal" + msgstr "目標に solv がありません" + +-#: libdnf/goal/Goal.cpp:1064 ++#: libdnf/goal/Goal.cpp:1081 + msgid "no solution, cannot remove protected package" + msgstr "ソリューションがなく、保護されたパッケージを削除できません" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1084 + msgid "no solution possible" + msgstr "可能なソリューションがありません" + +-#: libdnf/goal/Goal.cpp:1479 ++#: libdnf/goal/Goal.cpp:1210 ++msgid "Problem: " ++msgstr "問題: " ++ ++#: libdnf/goal/Goal.cpp:1215 ++#, c-format ++msgid "Problem %d: " ++msgstr "問題 %d: " ++ ++#: libdnf/goal/Goal.cpp:1542 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " + +-#: libdnf/hy-iutil.cpp:322 ++#: libdnf/hy-iutil.cpp:326 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s" + +-#: libdnf/hy-iutil.cpp:330 ++#: libdnf/hy-iutil.cpp:334 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "%1$s に権限を設定できませんでした: %2$s" + +-#: libdnf/hy-iutil.cpp:376 ++#: libdnf/hy-iutil.cpp:380 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を作成できません : %2$s" + +-#: libdnf/hy-iutil.cpp:411 ++#: libdnf/hy-iutil.cpp:415 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "パス %1$s のstatを調べられません : %2$s" + +-#: libdnf/module/ModulePackage.cpp:499 ++#: libdnf/module/ModulePackage.cpp:573 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "不正なプラットフォームモジュールのフォーマット: %s" + +-#: libdnf/module/ModulePackage.cpp:514 ++#: libdnf/module/ModulePackage.cpp:588 + msgid "Multiple module platforms provided by available packages\n" + msgstr "利用可能パッケージに提供される複数のモジュールプラットフォーム\n" + +-#: libdnf/module/ModulePackage.cpp:527 ++#: libdnf/module/ModulePackage.cpp:601 + msgid "Multiple module platforms provided by installed packages\n" + msgstr "インストール済パッケージに提供される複数のモジュールプラットフォーム\n" + +-#: libdnf/module/ModulePackage.cpp:554 ++#: libdnf/module/ModulePackage.cpp:628 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" + msgstr "%s のプラットフォームモジュールの検出に失敗しました: %s" + +-#: libdnf/module/ModulePackage.cpp:563 ++#: libdnf/module/ModulePackage.cpp:637 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "%s に PLATFORM_ID が見つかりません" + +-#: libdnf/module/ModulePackage.cpp:568 ++#: libdnf/module/ModulePackage.cpp:642 + msgid "No valid Platform ID detected" + msgstr "有効な Platform ID が検出されませんでした" + +-#: libdnf/module/ModulePackageContainer.cpp:68 ++#: libdnf/module/ModulePackageContainer.cpp:107 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "モジュール '%s' の複数ストリームを有効化できません" + +-#: libdnf/module/ModulePackageContainer.cpp:294 ++#: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "repo '%s' のデフォルトが競合: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1569 ++#: libdnf/module/ModulePackageContainer.cpp:918 ++msgid "Installing module profiles:\n" ++msgstr "モジュールプロファイルのインストール中:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:933 ++msgid "Disabling module profiles:\n" ++msgstr "モジュールプロファイルの無効化中:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:948 ++msgid "Enabling module streams:\n" ++msgstr "モジュールストリームの有効化中:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:962 ++msgid "Switching module streams:\n" ++msgstr "モジュールストリームの切り替え中:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:980 ++msgid "Disabling modules:\n" ++msgstr "モジュールの無効化:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:991 ++msgid "Resetting modules:\n" ++msgstr "モジュールの再設定中:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1674 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1575 ++#: libdnf/module/ModulePackageContainer.cpp:1680 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1639 ++#: libdnf/module/ModulePackageContainer.cpp:1761 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1661 ++#: libdnf/module/ModulePackageContainer.cpp:1777 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを保存できません" + +-#: libdnf/module/ModulePackageContainer.cpp:1686 ++#: libdnf/module/ModulePackageContainer.cpp:1800 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを削除できません" + ++#: libdnf/module/ModulePackageContainer.cpp:1832 ++#, c-format ++msgid "" ++"Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " ++"disabled" ++msgstr "ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用できません" ++ + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format + msgid "Failed to update from string: %s" +@@ -669,7 +824,7 @@ msgstr "名前解決に失敗しました: %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:115 + #, c-format + msgid "There were errors while resolving modular defaults: %s" +-msgstr "" ++msgstr "モジュラーデフォルトの解決中にエラーが発生しました: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:120 + #, c-format +@@ -681,6 +836,11 @@ msgstr "デフォルトのアップグレードに失敗しました: %s" + msgid "Failed to upgrade streams: %s" + msgstr "ストリームのアップグレードに失敗しました: %s" + ++#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#, c-format ++msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" ++msgstr "%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" ++ + #: libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +@@ -722,6 +882,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" ++"reldeps で '==' " ++"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' " ++"演算子を使用してください。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -733,146 +896,167 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format +-msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "repo に対して有効な baseurl を見つけられません: %s" ++msgid "repo '%s': 'basecachedir' is not set" ++msgstr "repo '%s': 'basecachedir' が設定されていません" + +-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672 ++#: libdnf/repo/Repo.cpp:512 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" +-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。" ++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' は設定されていません" ++ ++#: libdnf/repo/Repo.cpp:548 ++msgid "'proxy_username' is set but not 'proxy_password'" ++msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++ ++#: libdnf/repo/Repo.cpp:629 ++#, c-format ++msgid "Cannot find a valid baseurl for repo: %s" ++msgstr "repo に対して有効な baseurl を見つけられません: %s" + +-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655 ++#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663 ++#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880 ++#: 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" ++ ++#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "キーを一覧表示できません: %s" + +-#: libdnf/repo/Repo.cpp:806 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "repo '%s' のGPG鍵の回収に失敗しました : %s" + +-#: libdnf/repo/Repo.cpp:859 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s はインポート済みです" + +-#: libdnf/repo/Repo.cpp:887 ++#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#, c-format ++msgid "Failed to create directory \"%s\": %d - %s" ++msgstr "ディレクトリー \"%s\" の作成に失敗しました: %d - %s" ++ ++#: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: インポート済みのキー 0x%s。" + +-#: libdnf/repo/Repo.cpp:1131 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "復元中: repo '%s' はスキップされました、metalink はありません。" + +-#: libdnf/repo/Repo.cpp:1150 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + +-#: libdnf/repo/Repo.cpp:1173 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。" + +-#: libdnf/repo/Repo.cpp:1179 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。" + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "復元中: '%s' は復元できます - repomd が一致します。" + +-#: libdnf/repo/Repo.cpp:1206 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." +-msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" ++msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1230 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s" +- +-#: libdnf/repo/Repo.cpp:1244 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "ディレクトリー \"%s\" を作成できません: %s" + +-#: libdnf/repo/Repo.cpp:1267 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s" + +-#: libdnf/repo/Repo.cpp:1290 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: キャッシュを使用: %s" + +-#: libdnf/repo/Repo.cpp:1302 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + +-#: libdnf/repo/Repo.cpp:1306 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: リモートからダウンロード中: %s" + +-#: libdnf/repo/Repo.cpp:1312 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s" + +-#: libdnf/repo/Repo.cpp:1338 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました" + +-#: libdnf/repo/Repo.cpp:1363 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "persistdir \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1763 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume は byterangestart param と同時に使用できません" + +-#: libdnf/repo/Repo.cpp:1780 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget の初期化に失敗しました: %s" + +-#: libdnf/repo/Repo.cpp:1886 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "%s を開くことができません: %s" + +-#: libdnf/repo/Repo.cpp:1930 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id %ld を伴うログハンドラーは存在しません" +@@ -881,13 +1065,13 @@ msgstr "id %ld を伴うログハンドラーは存在しません" + msgid "In progress" + msgstr "進行中" + +-#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216 +-#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245 +-#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394 ++#: libdnf/transaction/Swdb.cpp:187 libdnf/transaction/Swdb.cpp:215 ++#: libdnf/transaction/Swdb.cpp:227 libdnf/transaction/Swdb.cpp:244 ++#: libdnf/transaction/Swdb.cpp:383 libdnf/transaction/Swdb.cpp:393 + msgid "Not in progress" + msgstr "進行中ではありません" + +-#: libdnf/transaction/Swdb.cpp:255 ++#: libdnf/transaction/Swdb.cpp:254 + msgid "No transaction in progress" + msgstr "進行中のトランザクションはありません" + +@@ -901,7 +1085,7 @@ msgstr "完了したトランザクションにトランザクションアイテ + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" ++msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -926,6 +1110,3 @@ msgstr "未保存のトランザクションにコンソールの出力を追加 + + #~ 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 48094831..5e5c927d 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -1,31 +1,31 @@ + # SOME DESCRIPTIVE TITLE. + # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER + # This file is distributed under the same license as the PACKAGE package. +-# FIRST AUTHOR , YEAR. + # Ludek Janda , 2018. #zanata ++# simmon , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2018-11-02 05:26+0000\n" +-"Last-Translator: Copied by Zanata \n" +-"Language-Team: Korean\n" ++"POT-Creation-Date: 2021-09-01 08:49+0200\n" ++"PO-Revision-Date: 2021-09-04 21:04+0000\n" ++"Last-Translator: simmon \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: Zanata 4.6.2\n" ++"Plural-Forms: nplurals=1; plural=0;\n" ++"X-Generator: Weblate 4.8\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +-msgstr "값이 지정되지 않았습니다." ++msgstr "값이 지정되지 않았습니다" + + #: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48 + #, c-format + msgid "seconds value '%s' must not be negative" +-msgstr "초 값 '%s음수가 아니어야합니다." ++msgstr "초 값 '%s 음수가 아니어야합니다" + + #: libdnf/conf/ConfigMain.cpp:71 + #, c-format +@@ -37,17 +37,30 @@ msgstr "변환 할 수 없습니다 '%s'~ 바이트" + msgid "unknown unit '%s'" + msgstr "알 수없는 단위 '%s'" + +-#: libdnf/conf/ConfigMain.cpp:332 ++#: libdnf/conf/ConfigMain.cpp:204 libdnf/conf/OptionEnum.cpp:83 ++#: libdnf/conf/OptionNumber.cpp:88 ++msgid "invalid value" ++msgstr "잘못된 값" ++ ++#: libdnf/conf/ConfigMain.cpp:207 ++msgid "value 1 is not allowed" ++msgstr "값 1은 허용되지 않습니다" ++ ++#: libdnf/conf/ConfigMain.cpp:209 ++msgid "negative value is not allowed" ++msgstr "음수 값은 허용되지 않습니다" ++ ++#: libdnf/conf/ConfigMain.cpp:341 + #, c-format + msgid "percentage '%s' is out of range" +-msgstr "백분율 '%s'범위를 벗어났습니다." ++msgstr "백분율 '%s' 범위를 벗어났습니다" + +-#: libdnf/conf/OptionBinds.cpp:76 ++#: libdnf/conf/OptionBinds.cpp:85 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" does not exist" + msgstr "구성 : ID가 \"%s\" 존재하지 않는다" + +-#: libdnf/conf/OptionBinds.cpp:88 ++#: libdnf/conf/OptionBinds.cpp:97 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" already exists" + msgstr "구성 : ID가 \"%s\" 이미 존재 함" +@@ -58,14 +71,10 @@ msgid "invalid boolean value '%s'" + msgstr "유효하지 않은 부울 값 '%s'" + + #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158 +-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59 ++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59 + #, c-format + msgid "'%s' is not an allowed value" +-msgstr "'%s'은 (는) 허용 된 값이 아닙니다." +- +-#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88 +-msgid "invalid value" +-msgstr "잘못된 값" ++msgstr "'%s'는 허용 된 값이 아닙니다" + + #: libdnf/conf/OptionNumber.cpp:73 + #, c-format +@@ -92,36 +101,141 @@ msgstr "주어진 경로 '%s' 존재하지 않는다." + msgid "could not convert '%s' to seconds" + msgstr "변환 할 수 없습니다 '%s'초까지" + +-#: libdnf/conf/OptionString.cpp:74 ++#: libdnf/conf/OptionString.cpp:79 + msgid "GetValue(): Value not set" +-msgstr "GetValue () : 값이 설정되지 않았습니다." ++msgstr "GetValue () : 값이 설정되지 않았습니다" + +-#: libdnf/dnf-goal.cpp:68 +-msgid "Could not depsolve transaction; " ++#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#, c-format ++msgid "Cannot enable more streams from module '%s' at the same time" ++msgstr "동시에 모듈 '%s’에서 다른 스트림을 활성화 할 수 없습니다" ++ ++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206 ++#, 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:3253 ++#, c-format ++msgid "Modular dependency problem with Defaults: %s" ++msgstr "기본설정에 모듈 의존성 문제: %s" ++ ++#: libdnf/dnf-context.cpp:3256 ++#, c-format ++msgid "Modular dependency problem with the latest modules: %s" ++msgstr "최신 모듈에 모듈 의존성 문제: %s" ++ ++#: libdnf/dnf-context.cpp:3260 ++#, c-format ++msgid "Modular dependency problem: %s" ++msgstr "모듈러 의존성 문제: %s" ++ ++#: 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:3460 libdnf/dnf-context.cpp:3470 ++#, c-format ++msgid "Unable to resolve argument '%s'" ++msgstr "인수 %s를 해결 할 수 없습니다" ++ ++#: libdnf/dnf-context.cpp:3301 ++#, c-format ++msgid "" ++"Only module name is required. Ignoring unneeded information in argument: " ++"'%s'" ++msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'" ++ ++#: libdnf/dnf-context.cpp:3315 ++#, c-format ++msgid "Cannot reset module '%s': State of module already modified" ++msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" ++ ++#: libdnf/dnf-context.cpp:3326 ++#, c-format ++msgid "Cannot disable module '%s': State of module already modified" ++msgstr "모듈 '%s'사용 할 수 없습니다: 모듈 상태는 이미 적재되었습니다" ++ ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449 ++#: libdnf/dnf-context.cpp:3559 ++msgid "No modular data available" ++msgstr "모듈러 자료를 이용 할 수 없습니다" ++ ++#: libdnf/dnf-context.cpp:3374 ++#, c-format ++msgid "Ignoring unneeded information in argument: '%s'" ++msgstr "인수: '%s'에 불필요한 정보를 무시하기" ++ ++#: 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:3424 ++msgid "Problems appeared for module enable request" ++msgstr "모듈 활성화 요청에 나타난 문제" ++ ++#. this really should never happen; unless the modular repodata is corrupted ++#: libdnf/dnf-context.cpp:3496 ++#, c-format ++msgid "Failed to parse module artifact NEVRA '%s'" ++msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함" ++ ++#: libdnf/dnf-context.cpp:3530 ++msgid "Problems appeared for module install request" ++msgstr "모듈 설치 요청을 위해 나타난 문제" ++ ++#: libdnf/dnf-context.cpp:3590 ++msgid "Problems appeared for module reset request" ++msgstr "모듈 초기화 요청을 위해 나나탄 문제" ++ ++#: libdnf/dnf-context.cpp:3592 ++msgid "Problems appeared for module disable request" ++msgstr "모듈 비활성화 요청을 위해 나타난 문제" ++ ++#: libdnf/dnf-context.cpp:3628 ++#, c-format ++msgid "" ++"The operation would result in switching of module '%s' stream '%s' to stream" ++" '%s'" ++msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다" ++ ++#: libdnf/dnf-context.cpp:3632 ++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." + msgstr "" ++"활성화된 모듈 스트림을 전환 할 수 없습니다.\n" ++"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니다." + +-#: libdnf/dnf-goal.cpp:70 ++#: libdnf/dnf-goal.cpp:85 ++msgid "Could not depsolve transaction; " ++msgstr "연결을 해제 할 수 없습니다; " ++ ++#: libdnf/dnf-goal.cpp:87 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i 발견 된 문제 :\n" + +-#: libdnf/dnf-goal.cpp:78 ++#: libdnf/dnf-goal.cpp:95 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " 문제 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:80 ++#: libdnf/dnf-goal.cpp:97 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " 문제: %s\n" + + #: libdnf/dnf-rpmts.cpp:79 + #, c-format + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "" ++msgstr "모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 할 수 없습니다" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -156,11 +270,11 @@ msgstr "설치 요소를 추가하지 못했습니다. %1$s [%2$i]" + #: libdnf/dnf-rpmts.cpp:274 + #, c-format + msgid "Error running transaction: %s" +-msgstr "트랜잭션 실행 오류 : %s" ++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" +@@ -176,87 +290,87 @@ msgstr "꾸러미를 찾지 못했습니다. %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:381 ++#: libdnf/dnf-sack.cpp:395 ++msgid "failed to add solv" ++msgstr "solv를 추가하지 못했습니다" ++ ++#: libdnf/dnf-sack.cpp:414 + #, c-format + msgid "no %1$s string for %2$s" +-msgstr "" +- +-#: libdnf/dnf-sack.cpp:404 +-msgid "failed to add solv" +-msgstr "solv를 추가하지 못했습니다." ++msgstr "%2$s에 %1$s 문자열이 없습니다" + +-#: libdnf/dnf-sack.cpp:422 ++#: libdnf/dnf-sack.cpp:424 + #, c-format + msgid "failed to open: %s" + msgstr "열지 못했습니다 : %s" + +-#: libdnf/dnf-sack.cpp:501 ++#: libdnf/dnf-sack.cpp:503 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:511 ++#: libdnf/dnf-sack.cpp:513 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "여는 tmp 파일을 열지 못했습니다. %s" + +-#: libdnf/dnf-sack.cpp:523 ++#: libdnf/dnf-sack.cpp:525 + #, c-format + msgid "write_main() failed writing data: %i" +-msgstr "write_main() failed writing data: %i" ++msgstr "write_main() 실패한 쓰기 자료: %i" + +-#: libdnf/dnf-sack.cpp:540 ++#: libdnf/dnf-sack.cpp:542 + msgid "write_main() failed to re-load written solv file" +-msgstr "write_main ()이 작성된 solv 파일을 다시로드하지 못했습니다." ++msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" + +-#: libdnf/dnf-sack.cpp:605 ++#: libdnf/dnf-sack.cpp:607 + #, c-format + msgid "can not create temporary file %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:623 ++#: libdnf/dnf-sack.cpp:625 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) has failed: %2$d" ++msgstr "write_ext(%1$d) 실패하였습니다: %2$d" + +-#: libdnf/dnf-sack.cpp:678 ++#: libdnf/dnf-sack.cpp:680 + msgid "null repo md file" + msgstr "null repo md 파일" + +-#: libdnf/dnf-sack.cpp:687 ++#: libdnf/dnf-sack.cpp:689 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "파일을 읽을 수 없습니다. %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:701 ++#: libdnf/dnf-sack.cpp:703 + msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() has failed." ++msgstr "repo_add_solv() 실패하였습니다." + +-#: libdnf/dnf-sack.cpp:714 ++#: libdnf/dnf-sack.cpp:716 + msgid "loading of MD_TYPE_PRIMARY has failed." +-msgstr "" ++msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다." + +-#: libdnf/dnf-sack.cpp:727 ++#: libdnf/dnf-sack.cpp:729 + msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() has failed." ++msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." + +-#: libdnf/dnf-sack.cpp:794 ++#: libdnf/dnf-sack.cpp:796 + msgid "failed to auto-detect architecture" +-msgstr "아키텍처 자동 검색에 실패했습니다." ++msgstr "구조 자동 검색에 실패했습니다" + +-#: libdnf/dnf-sack.cpp:919 ++#: libdnf/dnf-sack.cpp:961 + #, c-format + msgid "failed creating cachedir %s" + msgstr "캐시 된 생성 실패 %s" + +-#: libdnf/dnf-sack.cpp:1696 ++#: libdnf/dnf-sack.cpp:1738 + msgid "failed loading RPMDB" + msgstr "RPMDB로드 실패" + +-#: libdnf/dnf-sack.cpp:2403 ++#: libdnf/dnf-sack.cpp:2462 + #, c-format + msgid "No module defaults found: %s" +-msgstr "" ++msgstr "모듈 기본 설정을 찾을 수 없습니다: %s" + + #: libdnf/dnf-state.cpp:1184 + #, c-format +@@ -285,7 +399,7 @@ msgstr "이미 100 %% 상태 [%s]" + #: libdnf/dnf-transaction.cpp:300 + #, c-format + msgid "Sources not set when trying to ensure package %s" +-msgstr "패키지를 만들 때 소스가 설정되지 않았습니다. %s" ++msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s" + + #: libdnf/dnf-transaction.cpp:326 + #, c-format +@@ -299,7 +413,7 @@ msgstr "신뢰할 수 없는지 확인하지 못했습니다. " + #: libdnf/dnf-transaction.cpp:377 + #, c-format + msgid "Downloaded file for %s not found" +-msgstr "에 대한 다운로드 파일 %s 찾을 수 없음" ++msgstr "에 대한 내려받기 파일 %s 찾을 수 없음" + + #: libdnf/dnf-transaction.cpp:397 + #, c-format +@@ -308,7 +422,7 @@ msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 + + #: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 + msgid "Failed to get value for CacheDir" +-msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다." ++msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다" + + #: libdnf/dnf-transaction.cpp:911 + #, c-format +@@ -325,26 +439,26 @@ msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니 + 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:1196 ++#: libdnf/dnf-transaction.cpp:1195 + msgid "failed to set root" +-msgstr "루트를 설정하지 못했습니다." ++msgstr "루트를 설정하지 못했습니다" + +-#: libdnf/dnf-transaction.cpp:1418 ++#: libdnf/dnf-transaction.cpp:1416 + #, c-format + msgid "Error %i running transaction test" +-msgstr "오류 %i 실행중인 트랜잭션 테스트" ++msgstr "%i 연결 실행 중 오류" + +-#: libdnf/dnf-transaction.cpp:1458 ++#: libdnf/dnf-transaction.cpp:1456 + #, c-format + msgid "Error %i running transaction" +-msgstr "오류 %i 실행중인 거래" ++msgstr "오류 %i 실행중인 연결" + +-#: libdnf/dnf-transaction.cpp:1473 ++#: libdnf/dnf-transaction.cpp:1472 + #, 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:399 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s" +@@ -354,369 +468,414 @@ msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s" + msgid "failed to remove %s" + msgstr "제거하지 못했습니다. %s" + +-#: libdnf/goal/Goal.cpp:55 ++#: libdnf/goal/Goal.cpp:78 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "잘못된 형식의 선택기, 필터에 일치하는 개체가 여러 개 있음" + +-#: libdnf/goal/Goal.cpp:56 ++#: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" ++msgstr "조작에 잘못 형성된 선택자, 잘못된 비교 유형" + +-#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94 ++#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" +-msgstr "" ++msgstr " distupgrade 저장소에 속하지 않습니다" + +-#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95 ++#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 + msgid " has inferior architecture" +-msgstr "" ++msgstr " 하위 구조" + +-#: libdnf/goal/Goal.cpp:69 ++#: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +-msgstr "" ++msgstr "설치된 꾸러미 문제 " + +-#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97 ++#: libdnf/goal/Goal.cpp:93 libdnf/goal/Goal.cpp:120 + msgid "conflicting requests" +-msgstr "" ++msgstr "충돌하는 요청" + +-#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98 ++#: libdnf/goal/Goal.cpp:94 libdnf/goal/Goal.cpp:121 + msgid "unsupported request" +-msgstr "" ++msgstr "지원되지 않는 요청" + +-#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99 ++#: libdnf/goal/Goal.cpp:95 libdnf/goal/Goal.cpp:122 + msgid "nothing provides requested " +-msgstr "" ++msgstr "요청이 없습니다 " + +-#: libdnf/goal/Goal.cpp:73 ++#: libdnf/goal/Goal.cpp:96 + #, c-format + msgid "package %s does not exist" +-msgstr "" ++msgstr "꾸러미 %s가 존재하지 않습니다" + +-#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101 ++#: libdnf/goal/Goal.cpp:97 libdnf/goal/Goal.cpp:124 + msgid " is provided by the system" +-msgstr "" ++msgstr " 시스템에서 제공" + +-#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102 ++#: libdnf/goal/Goal.cpp:98 libdnf/goal/Goal.cpp:125 + msgid "some dependency problem" +-msgstr "" ++msgstr "종속성 문제" + +-#: libdnf/goal/Goal.cpp:76 ++#: libdnf/goal/Goal.cpp:99 + msgid "cannot install the best update candidate for package " +-msgstr "" ++msgstr "꾸러미에 가장 적합한 최신화 선택을 설치 할 수 없습니다 " + +-#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104 ++#: libdnf/goal/Goal.cpp:100 libdnf/goal/Goal.cpp:127 + msgid "cannot install the best candidate for the job" +-msgstr "" ++msgstr "작업에 가장 적합한 선택을 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:78 ++#: libdnf/goal/Goal.cpp:101 + #, c-format + msgid "package %s is filtered out by modular filtering" +-msgstr "" ++msgstr "꾸러미 %s가 모듈식으로 걸러 제거됩니다" + +-#: libdnf/goal/Goal.cpp:79 ++#: libdnf/goal/Goal.cpp:102 + #, c-format + msgid "package %s does not have a compatible architecture" +-msgstr "" ++msgstr "꾸러미 %s에 호환 구조가 없습니다" + +-#: libdnf/goal/Goal.cpp:80 ++#: libdnf/goal/Goal.cpp:103 + #, c-format + msgid "package %s is not installable" +-msgstr "" ++msgstr "꾸러미 %s 가 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:81 ++#: libdnf/goal/Goal.cpp:104 + #, c-format + msgid "package %s is filtered out by exclude filtering" +-msgstr "" ++msgstr "꾸러미 %s가 걸러지는 것에서 제외되었습니다" + +-#: libdnf/goal/Goal.cpp:82 ++#: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "" ++msgstr "%s에 필요한 %s가 제공되지 않았습니다" + +-#: libdnf/goal/Goal.cpp:83 ++#: libdnf/goal/Goal.cpp:106 + #, c-format + msgid "cannot install both %s and %s" +-msgstr "" ++msgstr "%s 와 %s 모두 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:84 ++#: libdnf/goal/Goal.cpp:107 + #, c-format + msgid "package %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "꾸러미 %s은 %s에서 제공된 %s와 충돌합니다" + +-#: libdnf/goal/Goal.cpp:85 ++#: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "꾸러미 %s가 %s에의해 제공된 %s를 폐기합니다" + +-#: libdnf/goal/Goal.cpp:86 ++#: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "설치된 꾸러미 %s는 %s에 의해 %s 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:87 ++#: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "꾸러미 %s가 %s에 의해 %s가 암시적으로 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:88 ++#: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "꾸러미 %s는 %s가 필요하지만, 공급자가 없어 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:89 ++#: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "꾸러미 %s가 자체적으로 제공된 %s와 충돌합니다" + +-#: libdnf/goal/Goal.cpp:90 ++#: libdnf/goal/Goal.cpp:113 + #, c-format + msgid "both package %s and %s obsolete %s" +-msgstr "" ++msgstr "꾸러미 %s 와 %s 는 모두 %s에서 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:96 ++#: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +-msgstr "" ++msgstr "설치된 모듈 문제 " + +-#: libdnf/goal/Goal.cpp:100 ++#: libdnf/goal/Goal.cpp:123 + #, c-format + msgid "module %s does not exist" +-msgstr "" ++msgstr "모듈 %s이 존재하지 않음" + +-#: libdnf/goal/Goal.cpp:103 ++#: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " +-msgstr "" ++msgstr "모듈에 가장 적합한 최신화 추천을 설치 할 수 없습니다 " + +-#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108 ++#: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format + msgid "module %s is disabled" +-msgstr "" ++msgstr "모듈 %s를 사용할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:106 ++#: libdnf/goal/Goal.cpp:129 + #, c-format + msgid "module %s does not have a compatible architecture" +-msgstr "" ++msgstr "모듈 %s 에 호환되는 구조가 없습니다" + +-#: libdnf/goal/Goal.cpp:107 ++#: libdnf/goal/Goal.cpp:130 + #, c-format + msgid "module %s is not installable" +-msgstr "" ++msgstr "모듈 %s 를 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:109 ++#: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "" ++msgstr "모듈 %s 에 필요한 %s 가 제공되지 않았습니다" + +-#: libdnf/goal/Goal.cpp:110 ++#: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "" ++msgstr "모듈 %s 와 %s를 모두 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:111 ++#: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "모듈 %s가 %s에 의해 제공된 %s와 충돌합니다" + +-#: libdnf/goal/Goal.cpp:112 ++#: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "모듈 %s가 %s에 의해 제공된 %s를 폐기하였습니다" + +-#: libdnf/goal/Goal.cpp:113 ++#: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "설치된 모듈 %s 가 %s의해 제공된 %s를 폐기합니다" + +-#: libdnf/goal/Goal.cpp:114 ++#: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "모듈 %s가 %s 에 의해 %s를 암시적으로 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:115 ++#: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "모듈 %s 에 %s 가 필요하지만 공급 업체가 없어 설치 할 수 없습니다" + +-#: libdnf/goal/Goal.cpp:116 ++#: libdnf/goal/Goal.cpp:139 + #, c-format + msgid "module %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" + +-#: libdnf/goal/Goal.cpp:117 ++#: libdnf/goal/Goal.cpp:140 + #, c-format + msgid "both module %s and %s obsolete %s" +-msgstr "" ++msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:1038 ++#: libdnf/goal/Goal.cpp:1055 + msgid "no solver set" +-msgstr "" ++msgstr "solver 설정 없음" + +-#: libdnf/goal/Goal.cpp:1043 ++#: libdnf/goal/Goal.cpp:1060 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "%s 절대값을 생성을 실패하였습니다" + +-#: libdnf/goal/Goal.cpp:1050 ++#: libdnf/goal/Goal.cpp:1067 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다" + +-#: libdnf/goal/Goal.cpp:1062 ++#: libdnf/goal/Goal.cpp:1079 + msgid "no solv in the goal" +-msgstr "" ++msgstr "목표에 solv가 없다" + +-#: libdnf/goal/Goal.cpp:1064 ++#: libdnf/goal/Goal.cpp:1081 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1084 + msgid "no solution possible" +-msgstr "" ++msgstr "해결책 없음" + +-#: libdnf/goal/Goal.cpp:1479 ++#: libdnf/goal/Goal.cpp:1210 ++msgid "Problem: " ++msgstr "문제: " ++ ++#: libdnf/goal/Goal.cpp:1215 ++#, c-format ++msgid "Problem %d: " ++msgstr "문제 %d: " ++ ++#: libdnf/goal/Goal.cpp:1542 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. " + +-#: libdnf/hy-iutil.cpp:322 ++#: libdnf/hy-iutil.cpp:326 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "%1$s 을 %2$s: %3$s에 이름 바꾸기 실패" + +-#: libdnf/hy-iutil.cpp:330 ++#: libdnf/hy-iutil.cpp:334 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "%1$s: %2$s에 perms 설정 실패하였습니다" + +-#: libdnf/hy-iutil.cpp:376 ++#: libdnf/hy-iutil.cpp:380 + #, c-format + msgid "cannot create directory %1$s: %2$s" +-msgstr "" ++msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:411 ++#: libdnf/hy-iutil.cpp:415 + #, c-format + msgid "cannot stat path %1$s: %2$s" +-msgstr "" ++msgstr "경로 %1$s: %2$s stat 할 수 없습니다" + +-#: libdnf/module/ModulePackage.cpp:499 ++#: libdnf/module/ModulePackage.cpp:573 + #, c-format + msgid "Invalid format of Platform module: %s" +-msgstr "" ++msgstr "잘못된 형식의 기반 모듈: %s" + +-#: libdnf/module/ModulePackage.cpp:514 ++#: libdnf/module/ModulePackage.cpp:588 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" ++msgstr "사용 가능한 꾸러미로 제공되는 다중 모듈 기반\n" + +-#: libdnf/module/ModulePackage.cpp:527 ++#: libdnf/module/ModulePackage.cpp:601 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" ++msgstr "설치된 꾸러미로 제공되는 다중 모듈 기반\n" + +-#: libdnf/module/ModulePackage.cpp:554 ++#: libdnf/module/ModulePackage.cpp:628 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" +-msgstr "" ++msgstr "%s 실패한: %s 에서 기반(Platform) 모듈 감지" + +-#: libdnf/module/ModulePackage.cpp:563 ++#: libdnf/module/ModulePackage.cpp:637 + #, c-format + msgid "Missing PLATFORM_ID in %s" +-msgstr "" ++msgstr "%s에서 PLATFORM_ID가 누락됨" + +-#: libdnf/module/ModulePackage.cpp:568 ++#: libdnf/module/ModulePackage.cpp:642 + msgid "No valid Platform ID detected" +-msgstr "" ++msgstr "유효한 기반(Platform) ID가 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:68 ++#: libdnf/module/ModulePackageContainer.cpp:107 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" +-msgstr "" ++msgstr "모듈 '%s’를 위해 다중 스트림을 활성화 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:294 ++#: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "" ++msgstr "저장소 '%s: %s'와 기본 설정이 충돌합니다" ++ ++#: libdnf/module/ModulePackageContainer.cpp:918 ++msgid "Installing module profiles:\n" ++msgstr "모듈 프로파일 설치:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:933 ++msgid "Disabling module profiles:\n" ++msgstr "모듈 프로파일 비활성화:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:948 ++msgid "Enabling module streams:\n" ++msgstr "모듈 스트림 활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1569 ++#: libdnf/module/ModulePackageContainer.cpp:962 ++msgid "Switching module streams:\n" ++msgstr "모듈 스트림 전환:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:980 ++msgid "Disabling modules:\n" ++msgstr "모듈 비활성화:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:991 ++msgid "Resetting modules:\n" ++msgstr "모듈 재설정:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1674 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" +-msgstr "" ++msgstr "'%s'에서 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1575 ++#: libdnf/module/ModulePackageContainer.cpp:1680 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" +-msgstr "" ++msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1639 ++#: libdnf/module/ModulePackageContainer.cpp:1761 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "" ++msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1661 ++#: libdnf/module/ModulePackageContainer.cpp:1777 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" +-msgstr "" ++msgstr "모듈식 Fail Safe 자료를 '%s'에 저장 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1686 ++#: libdnf/module/ModulePackageContainer.cpp:1800 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" ++msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1832 ++#, c-format ++msgid "" ++"Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " ++"disabled" ++msgstr "'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 되어 있기 때문에)" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format + msgid "Failed to update from string: %s" +-msgstr "" ++msgstr "문자열에서 최신화하지 못했습니다: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:110 + #, c-format + msgid "Failed to resolve: %s" +-msgstr "" ++msgstr "해결하지 못했습니다: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:115 + #, c-format + msgid "There were errors while resolving modular defaults: %s" +-msgstr "" ++msgstr "모듈식 기본값을 해결하는 동안 오류가 발생했습니다: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:120 + #, c-format + msgid "Failed to upgrade defaults: %s" +-msgstr "" ++msgstr "기본값을 최신화에 실패하였습니다: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:123 + #, c-format + msgid "Failed to upgrade streams: %s" +-msgstr "" ++msgstr "스트림 최신화에 실패하였습니다: %s" ++ ++#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#, c-format ++msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" ++msgstr "%s: %s 일치하는 스트림이 없기 때문에 구식 모듈을 검색 할 수 없습니다" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +-msgstr "" ++msgstr "공유 라이브러리\"%s\": %s 를 적재 할 수 없습니다" + + #: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67 + #: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79 + #, c-format + msgid "Can't obtain address of symbol \"%s\": %s" +-msgstr "" ++msgstr "기호 \"%s\": %s 의 주소를 가져 올 수 없습니다" + + #: libdnf/plugin/plugin.cpp:86 + #, c-format + msgid "Loading plugin file=\"%s\"" +-msgstr "" ++msgstr "플러그인 파일 적재중=\"%s\"" + + #: libdnf/plugin/plugin.cpp:89 + #, c-format + msgid "Loaded plugin name=\"%s\", version=\"%s\"" +-msgstr "" ++msgstr "적재된 플러그인 이름=\"%s\", 버전=\"%s\"" + + #: libdnf/plugin/plugin.cpp:96 + msgid "Plugins::loadPlugins() dirPath cannot be empty" +-msgstr "" ++msgstr "Plugins::loadPlugins() dirPath는 비워 둘 수 없습니다" + + #: libdnf/plugin/plugin.cpp:105 + #, c-format + msgid "Can't read plugin directory \"%s\": %s" +-msgstr "" ++msgstr "플러그인 디렉토리 \"%s\": %s 를 읽을 수 없습니다" + + #: libdnf/plugin/plugin.cpp:114 + #, c-format + msgid "Can't load plugin \"%s\": %s" +-msgstr "" ++msgstr "플러그인\"%s\": %s를 적재 할 수 없습니다" + + #: libdnf/repo/DependencySplitter.cpp:50 + msgid "" +@@ -724,198 +883,221 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" ++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 " ++"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요." + + #: libdnf/repo/Repo.cpp:321 + #, c-format + msgid "Repository %s has no mirror or baseurl set." +-msgstr "" ++msgstr "저장소 %s 는 연결주소 또는 baseurl 구성을 갖고 있지 않습니다." + + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "저장소 '%s'는 지원하지 않는 유형: 'type=%s'이며, 건너뜁니다." + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format +-msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "" ++msgid "repo '%s': 'basecachedir' is not set" ++msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다" + +-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672 ++#: libdnf/repo/Repo.cpp:512 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" +-msgstr "" ++msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요" + +-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655 ++#: 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'가 없습니다" ++ ++#: libdnf/repo/Repo.cpp:548 ++msgid "'proxy_username' is set but not 'proxy_password'" ++msgstr "'proxy_username' 이 구성되어 있지만 'proxy_password'가 없습니다" ++ ++#: libdnf/repo/Repo.cpp:629 ++#, c-format ++msgid "Cannot find a valid baseurl for repo: %s" ++msgstr "repo: %s 를 위해 유효한 baseurl을 찾을 수 없습니다" ++ ++#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663 ++#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880 ++#: 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" ++ ++#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "열쇠를 나열 할 수 없습니다 : %s" + +-#: libdnf/repo/Repo.cpp:806 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" +-msgstr "" ++msgstr "repo '%s': %sf 를 위해 GPG key 가져오기에 실패하였습니다" + +-#: libdnf/repo/Repo.cpp:859 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" +-msgstr "레포 %s: 0x%s 이미 수입" ++msgstr "repo %s: 0x%s를 이미 가져왔습니다" + +-#: libdnf/repo/Repo.cpp:887 ++#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#, c-format ++msgid "Failed to create directory \"%s\": %d - %s" ++msgstr "디렉토리를 생성 할 수 없습니다 \"%s\": %d - %s" ++ ++#: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." +-msgstr "레포 %s: 가져온 키 0x%s." ++msgstr "repo %s: 0x%s 키를 가져왔습니다." + +-#: libdnf/repo/Repo.cpp:1131 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "부활 : repo '%s'건너 뛰었습니다." + +-#: libdnf/repo/Repo.cpp:1150 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다." + +-#: libdnf/repo/Repo.cpp:1173 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합." + +-#: libdnf/repo/Repo.cpp:1179 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다." + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다." + +-#: libdnf/repo/Repo.cpp:1206 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd." + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" +-msgstr "" +- +-#: libdnf/repo/Repo.cpp:1230 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s" ++msgstr "repo 목적지 디렉토리 \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1244 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1267 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1290 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo : 캐시 사용 : %s" + +-#: libdnf/repo/Repo.cpp:1302 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "캐시 만 사용 가능하지만 '%s'" + +-#: libdnf/repo/Repo.cpp:1306 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" +-msgstr "repo : 원격에서 다운로드 중 : %s" ++msgstr "repo : 원격에서 내려받기 중 : %s" + +-#: libdnf/repo/Repo.cpp:1312 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" +-msgstr "" ++msgstr "repo '%s': %s 를 위해 메타데이타 내려받기에 실패하였습니다" + +-#: libdnf/repo/Repo.cpp:1338 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" +-msgstr "getCachedir () : SHA256 계산에 실패했습니다." ++msgstr "getCachedir () : SHA256 계산에 실패했습니다" + +-#: libdnf/repo/Repo.cpp:1363 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" +-msgstr "" ++msgstr "persistdir \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1763 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" +-msgstr "이력서는 byterangestart 매개 변수와 동시에 사용할 수 없습니다." ++msgstr "이력서는 byterangestart 매개 변수와 동시에 사용 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1780 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 초기화에 실패했습니다 : %s" + +-#: libdnf/repo/Repo.cpp:1886 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "열 수 없다 %s: %s" + +-#: libdnf/repo/Repo.cpp:1930 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" +-msgstr "ID가있는 로그 처리기 %ld 존재하지 않는다." ++msgstr "ID가 있는 로그 처리기 %ld 존재하지 않는다" + + #: libdnf/transaction/Swdb.cpp:173 + msgid "In progress" + msgstr "진행 중" + +-#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216 +-#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245 +-#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394 ++#: libdnf/transaction/Swdb.cpp:187 libdnf/transaction/Swdb.cpp:215 ++#: libdnf/transaction/Swdb.cpp:227 libdnf/transaction/Swdb.cpp:244 ++#: libdnf/transaction/Swdb.cpp:383 libdnf/transaction/Swdb.cpp:393 + msgid "Not in progress" + msgstr "진행 중이 아님" + +-#: libdnf/transaction/Swdb.cpp:255 ++#: libdnf/transaction/Swdb.cpp:254 + msgid "No transaction in progress" +-msgstr "진행중인 트랜잭션 없음" ++msgstr "진행 중인 연결 없음" + + #: libdnf/transaction/TransactionItem.cpp:147 + msgid "Attempt to insert transaction item into completed transaction" +-msgstr "트랜잭션 항목을 완료된 트랜잭션에 삽입하려고 시도했습니다." ++msgstr "연결 항목을 완료된 연결에 삽입하려고 시도했습니다" + + #: libdnf/transaction/TransactionItem.cpp:218 + msgid "Attempt to update transaction item in completed transaction" +-msgstr "완료된 트랜잭션에서 트랜잭션 항목 업데이트를 시도합니다." ++msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" ++msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +-msgstr "변압기 : 역사를 열 수 없습니다." ++msgstr "변형 : persist dir 기록을 열 수 없습니다" + + #: libdnf/transaction/Transformer.cpp:694 + msgid "Couldn't find a history database" +-msgstr "기록 데이터베이스를 찾을 수 없습니다." ++msgstr "기록 데이타베이스를 찾을 수 없습니다" + + #: libdnf/transaction/private/Transaction.cpp:41 + msgid "Transaction has already began!" +-msgstr "거래가 이미 시작되었습니다!" ++msgstr "연결이 이미 시작되었습니다!" + + #: libdnf/transaction/private/Transaction.cpp:58 + #, c-format +@@ -924,7 +1106,4 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s" + + #: libdnf/transaction/private/Transaction.cpp:243 + msgid "Can't add console output to unsaved transaction" +-msgstr "저장되지 않은 트랜잭션에 콘솔 출력을 추가 할 수 없습니다." +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB 체크섬 계산 실패" ++msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 9583b075..b3bd7f10 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,19 +1,20 @@ +-# Charles Lee , 2017. #zanata, 2020. +-# Ludek Janda , 2018. #zanata ++# Charles Lee , 2017. #zanata, 2020, 2021. ++# Ludek Janda , 2018. #zanata, 2021. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-09 13:27+0000\n" +-"Last-Translator: Charles Lee \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2021-09-01 08:49+0200\n" ++"PO-Revision-Date: 2021-09-11 10:04+0000\n" ++"Last-Translator: Ludek Janda \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.1.1\n" ++"X-Generator: Weblate 4.8\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -32,37 +33,46 @@ msgstr "无法把 '%s' 转换为字节" + #: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66 + #, c-format + msgid "unknown unit '%s'" +-msgstr "未知单元 “%s”" ++msgstr "未知单元 '%s'" + +-#: libdnf/conf/ConfigMain.cpp:332 ++#: libdnf/conf/ConfigMain.cpp:204 libdnf/conf/OptionEnum.cpp:83 ++#: libdnf/conf/OptionNumber.cpp:88 ++msgid "invalid value" ++msgstr "无效值" ++ ++#: libdnf/conf/ConfigMain.cpp:207 ++msgid "value 1 is not allowed" ++msgstr "1 不是一个被允许的值" ++ ++#: libdnf/conf/ConfigMain.cpp:209 ++msgid "negative value is not allowed" ++msgstr "负数值不被允许" ++ ++#: libdnf/conf/ConfigMain.cpp:341 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "百分数 '%s' 超出范围" + +-#: libdnf/conf/OptionBinds.cpp:76 ++#: libdnf/conf/OptionBinds.cpp:85 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" does not exist" +-msgstr "配置:ID 为 \"%s\" 的 OptionBinding 不存在" ++msgstr "配置:ID 为 \"%s\" 的 OptionBinding 不存在" + +-#: libdnf/conf/OptionBinds.cpp:88 ++#: libdnf/conf/OptionBinds.cpp:97 + #, c-format + msgid "Configuration: OptionBinding with id \"%s\" already exists" +-msgstr "配置:ID 为 \"%s\" 的 OptionBinding 已存在" ++msgstr "配置:ID 为 \"%s\" 的 OptionBinding 已存在" + + #: libdnf/conf/OptionBool.cpp:47 + #, c-format + msgid "invalid boolean value '%s'" +-msgstr "无效的布尔值“%s”" ++msgstr "无效的布尔值 '%s'" + + #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158 +-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59 ++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59 + #, c-format + msgid "'%s' is not an allowed value" +-msgstr "'%s' 不是一个允许的值" +- +-#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88 +-msgid "invalid value" +-msgstr "无效值" ++msgstr "'%s' 不是一个允许的值" + + #: libdnf/conf/OptionNumber.cpp:73 + #, c-format +@@ -89,26 +99,131 @@ msgstr "给定的路径 “%s” 不存在。" + msgid "could not convert '%s' to seconds" + msgstr "无法把 '%s' 转换为秒" + +-#: libdnf/conf/OptionString.cpp:74 ++#: libdnf/conf/OptionString.cpp:79 + msgid "GetValue(): Value not set" + msgstr "GetValue(): 值没有设置" + +-#: libdnf/dnf-goal.cpp:68 ++#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#, c-format ++msgid "Cannot enable more streams from module '%s' at the same time" ++msgstr "无法同时从模块 '%s' 中启用更多流" ++ ++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206 ++#, 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:3253 ++#, c-format ++msgid "Modular dependency problem with Defaults: %s" ++msgstr "默认设置的模块依赖性问题:%s" ++ ++#: libdnf/dnf-context.cpp:3256 ++#, c-format ++msgid "Modular dependency problem with the latest modules: %s" ++msgstr "最新模块的模块化依赖关系问题: %s" ++ ++#: libdnf/dnf-context.cpp:3260 ++#, c-format ++msgid "Modular dependency problem: %s" ++msgstr "模块依赖问题:%s" ++ ++#: 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:3460 libdnf/dnf-context.cpp:3470 ++#, c-format ++msgid "Unable to resolve argument '%s'" ++msgstr "无法解析参数 '%s'" ++ ++#: libdnf/dnf-context.cpp:3301 ++#, c-format ++msgid "" ++"Only module name is required. Ignoring unneeded information in argument: " ++"'%s'" ++msgstr "只需要模块名。忽略参数 '%s' 中的无用信息" ++ ++#: libdnf/dnf-context.cpp:3315 ++#, c-format ++msgid "Cannot reset module '%s': State of module already modified" ++msgstr "无法重置模块 '%s':已修改的模块状态" ++ ++#: libdnf/dnf-context.cpp:3326 ++#, c-format ++msgid "Cannot disable module '%s': State of module already modified" ++msgstr "无法禁用模块 '%s':已经修改的模块状态" ++ ++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449 ++#: libdnf/dnf-context.cpp:3559 ++msgid "No modular data available" ++msgstr "没有可用的模块数据" ++ ++#: libdnf/dnf-context.cpp:3374 ++#, c-format ++msgid "Ignoring unneeded information in argument: '%s'" ++msgstr "忽略参数:\"%s\" 中不需要的信息" ++ ++#: 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:3424 ++msgid "Problems appeared for module enable request" ++msgstr "模块启用请求时出现问题" ++ ++#. this really should never happen; unless the modular repodata is corrupted ++#: libdnf/dnf-context.cpp:3496 ++#, c-format ++msgid "Failed to parse module artifact NEVRA '%s'" ++msgstr "无法解析模块工件 NEVRA '%s'" ++ ++#: libdnf/dnf-context.cpp:3530 ++msgid "Problems appeared for module install request" ++msgstr "模块安装请求出现问题" ++ ++#: libdnf/dnf-context.cpp:3590 ++msgid "Problems appeared for module reset request" ++msgstr "模块重置请求时出现问题" ++ ++#: libdnf/dnf-context.cpp:3592 ++msgid "Problems appeared for module disable request" ++msgstr "模块禁用请求时出现问题" ++ ++#: libdnf/dnf-context.cpp:3628 ++#, c-format ++msgid "" ++"The operation would result in switching of module '%s' stream '%s' to stream" ++" '%s'" ++msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'" ++ ++#: libdnf/dnf-context.cpp:3632 ++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." ++msgstr "" ++"无法切换一个模块已启用的流。 \n" ++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' 命令重置模块。在重置模块后就可以安装其他流。" ++ ++#: libdnf/dnf-goal.cpp:85 + msgid "Could not depsolve transaction; " +-msgstr "无法 depsolve 事务: " ++msgstr "无法 depsolve 事务; " + +-#: libdnf/dnf-goal.cpp:70 ++#: libdnf/dnf-goal.cpp:87 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "发现 %i 问题:\n" + +-#: libdnf/dnf-goal.cpp:78 ++#: libdnf/dnf-goal.cpp:95 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " 问题 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:80 ++#: libdnf/dnf-goal.cpp:97 + #, c-format + msgid " Problem: %s\n" + msgstr " 问题: %s\n" +@@ -118,7 +233,7 @@ msgstr " 问题: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "" ++msgstr "模块软件包 '%s' 没有可用的模块元数据,它将不能被安装至此系统上" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -173,87 +288,87 @@ msgstr "无法找到软件包 %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "无法添加删除元素 %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:381 +-#, c-format +-msgid "no %1$s string for %2$s" +-msgstr "" +- +-#: libdnf/dnf-sack.cpp:404 ++#: libdnf/dnf-sack.cpp:395 + msgid "failed to add solv" + msgstr "添加 solv 失败" + +-#: libdnf/dnf-sack.cpp:422 ++#: libdnf/dnf-sack.cpp:414 ++#, c-format ++msgid "no %1$s string for %2$s" ++msgstr "没有为 %2$s 的 %1$s 字符串" ++ ++#: libdnf/dnf-sack.cpp:424 + #, c-format + msgid "failed to open: %s" + msgstr "打开失败:%s" + +-#: libdnf/dnf-sack.cpp:501 ++#: libdnf/dnf-sack.cpp:503 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "不能创建临时文件: %s" + +-#: libdnf/dnf-sack.cpp:511 ++#: libdnf/dnf-sack.cpp:513 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打开 tmp 文件失败: %s" + +-#: libdnf/dnf-sack.cpp:523 ++#: libdnf/dnf-sack.cpp:525 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() 写数据失败: %i" + +-#: libdnf/dnf-sack.cpp:540 ++#: libdnf/dnf-sack.cpp:542 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() 重新加载写的 solv 文件失败" + +-#: libdnf/dnf-sack.cpp:605 ++#: libdnf/dnf-sack.cpp:607 + #, c-format + msgid "can not create temporary file %s" + msgstr "不能创建临时文件 %s" + +-#: libdnf/dnf-sack.cpp:623 ++#: libdnf/dnf-sack.cpp:625 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) 已失败: %2$d" + +-#: libdnf/dnf-sack.cpp:678 ++#: libdnf/dnf-sack.cpp:680 + msgid "null repo md file" + msgstr "null repo md 文件" + +-#: libdnf/dnf-sack.cpp:687 ++#: libdnf/dnf-sack.cpp:689 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "不能读文件 %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:701 ++#: libdnf/dnf-sack.cpp:703 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() 已失败。" + +-#: libdnf/dnf-sack.cpp:714 ++#: libdnf/dnf-sack.cpp:716 + msgid "loading of MD_TYPE_PRIMARY has failed." +-msgstr "" ++msgstr "加载 MD_TYPE_PRIMARY 失败。" + +-#: libdnf/dnf-sack.cpp:727 ++#: libdnf/dnf-sack.cpp:729 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() 已失败。" + +-#: libdnf/dnf-sack.cpp:794 ++#: libdnf/dnf-sack.cpp:796 + msgid "failed to auto-detect architecture" + msgstr "自动检测架构失败" + +-#: libdnf/dnf-sack.cpp:919 ++#: libdnf/dnf-sack.cpp:961 + #, c-format + msgid "failed creating cachedir %s" + msgstr "无法创建 cachedir %s" + +-#: libdnf/dnf-sack.cpp:1696 ++#: libdnf/dnf-sack.cpp:1738 + msgid "failed loading RPMDB" + msgstr "无法加载 RPMDB" + +-#: libdnf/dnf-sack.cpp:2403 ++#: libdnf/dnf-sack.cpp:2462 + #, c-format + msgid "No module defaults found: %s" +-msgstr "" ++msgstr "没有找到模块默认设置:%s" + + #: libdnf/dnf-state.cpp:1184 + #, c-format +@@ -291,7 +406,7 @@ msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载) + + #: libdnf/dnf-transaction.cpp:367 + msgid "Failed to check untrusted: " +-msgstr "检查不被信任失败: " ++msgstr "检查不被信任失败 : " + + #: libdnf/dnf-transaction.cpp:377 + #, c-format +@@ -310,7 +425,7 @@ msgstr "无法为 CacheDir 获得值" + #: libdnf/dnf-transaction.cpp:911 + #, c-format + msgid "Failed to get filesystem free size for %s: " +-msgstr "无法为 %s 获得文件系统可用空间的大小: " ++msgstr "无法为 %s 获得文件系统可用空间的大小: " + + #: libdnf/dnf-transaction.cpp:919 + #, c-format +@@ -322,26 +437,26 @@ msgstr "无法为 %s 获得文件系统可用空间的大小" + 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:1196 ++#: libdnf/dnf-transaction.cpp:1195 + msgid "failed to set root" + msgstr "设置 root 失败" + +-#: libdnf/dnf-transaction.cpp:1418 ++#: libdnf/dnf-transaction.cpp:1416 + #, c-format + msgid "Error %i running transaction test" + msgstr "错误 %i 运行事务测试" + +-#: libdnf/dnf-transaction.cpp:1458 ++#: libdnf/dnf-transaction.cpp:1456 + #, c-format + msgid "Error %i running transaction" + msgstr "错误 %i 运行事务" + +-#: libdnf/dnf-transaction.cpp:1473 ++#: libdnf/dnf-transaction.cpp:1472 + #, 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:399 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "无法打开目录 %1$s: %2$s" +@@ -351,369 +466,414 @@ msgstr "无法打开目录 %1$s: %2$s" + msgid "failed to remove %s" + msgstr "无法删除 %s" + +-#: libdnf/goal/Goal.cpp:55 ++#: libdnf/goal/Goal.cpp:78 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "Ill-formed Selector,在过滤器中有多个匹配的对象" + +-#: libdnf/goal/Goal.cpp:56 ++#: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型" + +-#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94 ++#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" +-msgstr "" ++msgstr " 不属于 distupgrade 仓库" + +-#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95 ++#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 + msgid " has inferior architecture" +-msgstr "" ++msgstr " 有 inferior 架构" + +-#: libdnf/goal/Goal.cpp:69 ++#: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +-msgstr "" ++msgstr "安装的软件包的问题 " + +-#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97 ++#: libdnf/goal/Goal.cpp:93 libdnf/goal/Goal.cpp:120 + msgid "conflicting requests" +-msgstr "" ++msgstr "冲突的请求" + +-#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98 ++#: libdnf/goal/Goal.cpp:94 libdnf/goal/Goal.cpp:121 + msgid "unsupported request" +-msgstr "" ++msgstr "不支持的请求" + +-#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99 ++#: libdnf/goal/Goal.cpp:95 libdnf/goal/Goal.cpp:122 + msgid "nothing provides requested " +-msgstr "" ++msgstr "没有东西可以提供所请求的 " + +-#: libdnf/goal/Goal.cpp:73 ++#: libdnf/goal/Goal.cpp:96 + #, c-format + msgid "package %s does not exist" +-msgstr "" ++msgstr "软件包 %s 不存在" + +-#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101 ++#: libdnf/goal/Goal.cpp:97 libdnf/goal/Goal.cpp:124 + msgid " is provided by the system" +-msgstr "" ++msgstr " 由系统提供" + +-#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102 ++#: libdnf/goal/Goal.cpp:98 libdnf/goal/Goal.cpp:125 + msgid "some dependency problem" +-msgstr "" ++msgstr "一些依赖问题" + +-#: libdnf/goal/Goal.cpp:76 ++#: libdnf/goal/Goal.cpp:99 + msgid "cannot install the best update candidate for package " +-msgstr "" ++msgstr "无法为软件包安装最佳更新候选 " + +-#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104 ++#: libdnf/goal/Goal.cpp:100 libdnf/goal/Goal.cpp:127 + msgid "cannot install the best candidate for the job" +-msgstr "" ++msgstr "无法为该任务安装最佳候选" + +-#: libdnf/goal/Goal.cpp:78 ++#: libdnf/goal/Goal.cpp:101 + #, c-format + msgid "package %s is filtered out by modular filtering" +-msgstr "" ++msgstr "软件包 %s 被模块过滤过滤掉" + +-#: libdnf/goal/Goal.cpp:79 ++#: libdnf/goal/Goal.cpp:102 + #, c-format + msgid "package %s does not have a compatible architecture" +-msgstr "" ++msgstr "软件包 %s 没有兼容的架构" + +-#: libdnf/goal/Goal.cpp:80 ++#: libdnf/goal/Goal.cpp:103 + #, c-format + msgid "package %s is not installable" +-msgstr "" ++msgstr "软件包 %s 不可安装" + +-#: libdnf/goal/Goal.cpp:81 ++#: libdnf/goal/Goal.cpp:104 + #, c-format + msgid "package %s is filtered out by exclude filtering" +-msgstr "" ++msgstr "软件包 %s 被排除过滤过滤掉" + +-#: libdnf/goal/Goal.cpp:82 ++#: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "" ++msgstr "没有东西可提供 %s(%s 需要)" + +-#: libdnf/goal/Goal.cpp:83 ++#: libdnf/goal/Goal.cpp:106 + #, c-format + msgid "cannot install both %s and %s" +-msgstr "" ++msgstr "无法同时安装 %s 和 %s" + +-#: libdnf/goal/Goal.cpp:84 ++#: libdnf/goal/Goal.cpp:107 + #, c-format + msgid "package %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 与 %s(由 %s 提供)冲突" + +-#: libdnf/goal/Goal.cpp:85 ++#: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:86 ++#: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "已安装的软件包 %s 取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:87 ++#: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:88 ++#: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "软件包 %s 需要 %s,但没有提供者可以被安装" + +-#: libdnf/goal/Goal.cpp:89 ++#: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "软件包 %s 与自己提供的 %s 冲突" + +-#: libdnf/goal/Goal.cpp:90 ++#: libdnf/goal/Goal.cpp:113 + #, c-format + msgid "both package %s and %s obsolete %s" +-msgstr "" ++msgstr "软件包 %s 和 %s 同时取代了 %s" + +-#: libdnf/goal/Goal.cpp:96 ++#: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +-msgstr "" ++msgstr "已安装模块的问题 " + +-#: libdnf/goal/Goal.cpp:100 ++#: libdnf/goal/Goal.cpp:123 + #, c-format + msgid "module %s does not exist" +-msgstr "" ++msgstr "模块 %s 不存在" + +-#: libdnf/goal/Goal.cpp:103 ++#: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " +-msgstr "" ++msgstr "无法为模块安装最佳更新候选 " + +-#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108 ++#: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format + msgid "module %s is disabled" +-msgstr "" ++msgstr "模块 %s 被禁用" + +-#: libdnf/goal/Goal.cpp:106 ++#: libdnf/goal/Goal.cpp:129 + #, c-format + msgid "module %s does not have a compatible architecture" +-msgstr "" ++msgstr "模块 %s 没有兼容的架构" + +-#: libdnf/goal/Goal.cpp:107 ++#: libdnf/goal/Goal.cpp:130 + #, c-format + msgid "module %s is not installable" +-msgstr "" ++msgstr "模块 %s 不可安装" + +-#: libdnf/goal/Goal.cpp:109 ++#: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "" ++msgstr "没有东西提供 %s(模块 %s 需要它)" + +-#: libdnf/goal/Goal.cpp:110 ++#: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "" ++msgstr "无法同时安装模块 %s 和 %s" + +-#: libdnf/goal/Goal.cpp:111 ++#: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "模块 %s 与 %s (由 %s 提供)冲突" + +-#: libdnf/goal/Goal.cpp:112 ++#: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:113 ++#: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "已安装的模块 %s 取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:114 ++#: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)" + +-#: libdnf/goal/Goal.cpp:115 ++#: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "模块 %s 需要 %s,但没有提供者可以被安装" + +-#: libdnf/goal/Goal.cpp:116 ++#: libdnf/goal/Goal.cpp:139 + #, c-format + msgid "module %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "模块 %s 与自己提供的 %s 冲突" + +-#: libdnf/goal/Goal.cpp:117 ++#: libdnf/goal/Goal.cpp:140 + #, c-format + msgid "both module %s and %s obsolete %s" +-msgstr "" ++msgstr "模块 %s 和 %s 同时取代了 %s" + +-#: libdnf/goal/Goal.cpp:1038 ++#: libdnf/goal/Goal.cpp:1055 + msgid "no solver set" + msgstr "无 solver 设置" + +-#: libdnf/goal/Goal.cpp:1043 ++#: libdnf/goal/Goal.cpp:1060 + #, c-format + msgid "failed to make %s absolute" + msgstr "无法使 %s 绝对" + +-#: libdnf/goal/Goal.cpp:1050 ++#: libdnf/goal/Goal.cpp:1067 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "把 debugdata 写入到 %1$s 失败: %2$s" + +-#: libdnf/goal/Goal.cpp:1062 ++#: libdnf/goal/Goal.cpp:1079 + msgid "no solv in the goal" + msgstr "在目标中没有 solv" + +-#: libdnf/goal/Goal.cpp:1064 ++#: libdnf/goal/Goal.cpp:1081 + msgid "no solution, cannot remove protected package" + msgstr "没有解决方案,不能删除保护的软件包" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1084 + msgid "no solution possible" + msgstr "没有可能的解决方案" + +-#: libdnf/goal/Goal.cpp:1479 ++#: libdnf/goal/Goal.cpp:1210 ++msgid "Problem: " ++msgstr "问题: " ++ ++#: libdnf/goal/Goal.cpp:1215 ++#, c-format ++msgid "Problem %d: " ++msgstr "问题 %d: " ++ ++#: libdnf/goal/Goal.cpp:1542 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "这个操作可能会导致删除以下受保护的软件包: " ++msgstr "这个操作将会导致删除以下受保护的软件包: " + +-#: libdnf/hy-iutil.cpp:322 ++#: libdnf/hy-iutil.cpp:326 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "将 %1$s 重命名为 %2$s 失败: %3$s" + +-#: libdnf/hy-iutil.cpp:330 ++#: libdnf/hy-iutil.cpp:334 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "在 %1$s 中设置 perms 失败: %2$s" + +-#: libdnf/hy-iutil.cpp:376 ++#: libdnf/hy-iutil.cpp:380 + #, c-format + msgid "cannot create directory %1$s: %2$s" +-msgstr "" ++msgstr "无法创建目录 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:411 ++#: libdnf/hy-iutil.cpp:415 + #, c-format + msgid "cannot stat path %1$s: %2$s" +-msgstr "" ++msgstr "无法 stat 路径 %1$s: %2$s" + +-#: libdnf/module/ModulePackage.cpp:499 ++#: libdnf/module/ModulePackage.cpp:573 + #, c-format + msgid "Invalid format of Platform module: %s" +-msgstr "" ++msgstr "Platform 模块格式无效 : %s" + +-#: libdnf/module/ModulePackage.cpp:514 ++#: libdnf/module/ModulePackage.cpp:588 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" ++msgstr "可用软件包提供了多个模块平台\n" + +-#: libdnf/module/ModulePackage.cpp:527 ++#: libdnf/module/ModulePackage.cpp:601 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" ++msgstr "已安装的软件包提供了多个模块平台\n" + +-#: libdnf/module/ModulePackage.cpp:554 ++#: libdnf/module/ModulePackage.cpp:628 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" +-msgstr "" ++msgstr "检测 %s 中的 Platform 模块失败: %s" + +-#: libdnf/module/ModulePackage.cpp:563 ++#: libdnf/module/ModulePackage.cpp:637 + #, c-format + msgid "Missing PLATFORM_ID in %s" +-msgstr "" ++msgstr "在 %s 中缺少 PLATFORM_ID" + +-#: libdnf/module/ModulePackage.cpp:568 ++#: libdnf/module/ModulePackage.cpp:642 + msgid "No valid Platform ID detected" +-msgstr "" ++msgstr "没有检测到有效的 Platform ID" + +-#: libdnf/module/ModulePackageContainer.cpp:68 ++#: libdnf/module/ModulePackageContainer.cpp:107 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" +-msgstr "" ++msgstr "无法为模块 '%s' 启用多个流" + +-#: libdnf/module/ModulePackageContainer.cpp:294 ++#: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "" ++msgstr "默认设置与 repo '%s' 冲突 : %s" ++ ++#: libdnf/module/ModulePackageContainer.cpp:918 ++msgid "Installing module profiles:\n" ++msgstr "安装模块配置档案:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:933 ++msgid "Disabling module profiles:\n" ++msgstr "禁用模块配置档案:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:948 ++msgid "Enabling module streams:\n" ++msgstr "启用模块流:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:962 ++msgid "Switching module streams:\n" ++msgstr "切换模块流:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:980 ++msgid "Disabling modules:\n" ++msgstr "禁用模块:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1569 ++#: libdnf/module/ModulePackageContainer.cpp:991 ++msgid "Resetting modules:\n" ++msgstr "重置模块:\n" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1674 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" +-msgstr "" ++msgstr "无法加载位于 '%s' 的模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1575 ++#: libdnf/module/ModulePackageContainer.cpp:1680 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" +-msgstr "" ++msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1639 ++#: libdnf/module/ModulePackageContainer.cpp:1761 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "" ++msgstr "无法为模块 Fail Safe 数据创建目录 \"%s\" : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1661 ++#: libdnf/module/ModulePackageContainer.cpp:1777 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" +-msgstr "" ++msgstr "无法把模块 Fail Safe 数据保存到 '%s'" + +-#: libdnf/module/ModulePackageContainer.cpp:1686 ++#: libdnf/module/ModulePackageContainer.cpp:1800 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" ++msgstr "无法删除 '%s' 处的模块 Fail Safe 数据" ++ ++#: libdnf/module/ModulePackageContainer.cpp:1832 ++#, c-format ++msgid "" ++"Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " ++"disabled" ++msgstr "无法将模块化过时应用到 '%s:%s',因为目标模块 '%s' 被禁用" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format + msgid "Failed to update from string: %s" +-msgstr "" ++msgstr "无法从字符串更新: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:110 + #, c-format + msgid "Failed to resolve: %s" +-msgstr "" ++msgstr "无法解析: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:115 + #, c-format + msgid "There were errors while resolving modular defaults: %s" +-msgstr "" ++msgstr "在解析模块默认值时出现了错误:%s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:120 + #, c-format + msgid "Failed to upgrade defaults: %s" +-msgstr "" ++msgstr "无法升级默认值: %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:123 + #, c-format + msgid "Failed to upgrade streams: %s" +-msgstr "" ++msgstr "升级流失败: %s" ++ ++#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#, c-format ++msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" ++msgstr "无法获取模块过时,因为没有流匹配 %s:%s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +-msgstr "" ++msgstr "无法加载共享库 \"%s\": %s" + + #: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67 + #: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79 + #, c-format + msgid "Can't obtain address of symbol \"%s\": %s" +-msgstr "" ++msgstr "无法获取符号 \"%s\" 的地址: %s" + + #: libdnf/plugin/plugin.cpp:86 + #, c-format + msgid "Loading plugin file=\"%s\"" +-msgstr "" ++msgstr "正在加载插件文件=\"%s\"" + + #: libdnf/plugin/plugin.cpp:89 + #, c-format + msgid "Loaded plugin name=\"%s\", version=\"%s\"" +-msgstr "" ++msgstr "已加载插件名=\"%s\", 版本=\"%s\"" + + #: libdnf/plugin/plugin.cpp:96 + msgid "Plugins::loadPlugins() dirPath cannot be empty" +-msgstr "" ++msgstr "Plugins::loadPlugins() dirPath 不能为空" + + #: libdnf/plugin/plugin.cpp:105 + #, c-format + msgid "Can't read plugin directory \"%s\": %s" +-msgstr "" ++msgstr "无法读取插件目录 \"%s\": %s" + + #: libdnf/plugin/plugin.cpp:114 + #, c-format + msgid "Can't load plugin \"%s\": %s" +-msgstr "" ++msgstr "无法加载插件 \"%s\": %s" + + #: libdnf/repo/DependencySplitter.cpp:50 + msgid "" +@@ -721,6 +881,8 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" ++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' " ++"操作符代替。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -732,146 +894,167 @@ msgstr "软件仓库 %s 没有设置镜像或者 baseurl。" + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format +-msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "无法为仓库 %s 找到一个有效的 baseurl" ++msgid "repo '%s': 'basecachedir' is not set" ++msgstr "Repo '%s': 'basecachedir' 没有设置" + +-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672 ++#: libdnf/repo/Repo.cpp:512 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置" + +-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655 ++#: 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'" ++ ++#: libdnf/repo/Repo.cpp:548 ++msgid "'proxy_username' is set but not 'proxy_password'" ++msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'" ++ ++#: libdnf/repo/Repo.cpp:629 ++#, c-format ++msgid "Cannot find a valid baseurl for repo: %s" ++msgstr "无法为仓库 %s 找到一个有效的 baseurl" ++ ++#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663 ++#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880 ++#: 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" ++ ++#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "不能列出 key: %s" + +-#: libdnf/repo/Repo.cpp:806 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" +-msgstr "" ++msgstr "为仓库 '%s' 获取 GPG 密钥失败 : %s" + +-#: libdnf/repo/Repo.cpp:859 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s 已被导入" + +-#: libdnf/repo/Repo.cpp:887 ++#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#, c-format ++msgid "Failed to create directory \"%s\": %d - %s" ++msgstr "无法创建目录 \"%s\": %d - %s" ++ ++#: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: 已导入密钥 0x%s。" + +-#: libdnf/repo/Repo.cpp:1131 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。" + +-#: libdnf/repo/Repo.cpp:1150 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。" + +-#: libdnf/repo/Repo.cpp:1173 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "恢复: '%s' 失败,不匹配的 %s sum。" + +-#: libdnf/repo/Repo.cpp:1179 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。" + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。" + +-#: libdnf/repo/Repo.cpp:1206 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "恢复: '%s' 失败,不匹配的 repomd。" + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" +-msgstr "" ++msgstr "无法创建仓库目标目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1230 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "无法创建 repo 临时目录 \"%s\": %s" +- +-#: libdnf/repo/Repo.cpp:1244 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "无法创建目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1267 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1290 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "仓库: 正在为 %s 使用缓存" + +-#: libdnf/repo/Repo.cpp:1302 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "仅使用缓存已开启但没有 '%s' 的缓存" + +-#: libdnf/repo/Repo.cpp:1306 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: 从远程下载: %s" + +-#: libdnf/repo/Repo.cpp:1312 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" +-msgstr "" ++msgstr "为仓库 '%s' 下载元数据失败 : %s" + +-#: libdnf/repo/Repo.cpp:1338 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): 计算 SHA256 失败" + +-#: libdnf/repo/Repo.cpp:1363 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" +-msgstr "" ++msgstr "无法创建 persistdir \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1763 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume 不能和 the byterangestart 参数同时使用" + +-#: libdnf/repo/Repo.cpp:1780 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 初始失败: %s" + +-#: libdnf/repo/Repo.cpp:1886 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "无法打开 %s: %s" + +-#: libdnf/repo/Repo.cpp:1930 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id 为 %ld 的日志处理器不存在" +@@ -880,13 +1063,13 @@ msgstr "id 为 %ld 的日志处理器不存在" + msgid "In progress" + msgstr "进行中" + +-#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216 +-#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245 +-#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394 ++#: libdnf/transaction/Swdb.cpp:187 libdnf/transaction/Swdb.cpp:215 ++#: libdnf/transaction/Swdb.cpp:227 libdnf/transaction/Swdb.cpp:244 ++#: libdnf/transaction/Swdb.cpp:383 libdnf/transaction/Swdb.cpp:393 + msgid "Not in progress" + msgstr "没有在进行中" + +-#: libdnf/transaction/Swdb.cpp:255 ++#: libdnf/transaction/Swdb.cpp:254 + msgid "No transaction in progress" + msgstr "没有事务在进行中" + +@@ -900,7 +1083,7 @@ msgstr "试图在已完成的事务中更新事务" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" ++msgstr "数据库损坏:表 'config' 中没有 'version' 行" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -925,6 +1108,3 @@ msgstr "无法向未保存的事务中添加控制台输出" + + #~ 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.31.1 + diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec new file mode 100644 index 0000000..199f9ab --- /dev/null +++ b/SPECS/libdnf.spec @@ -0,0 +1,922 @@ +%global libsolv_version 0.7.17 +%global libmodulemd_version 2.11.2-2 +%global librepo_version 1.13.1 +%global dnf_conflict 4.3.0 +%global swig_version 3.0.12 +%global libdnf_major_version 0 +%global libdnf_minor_version 63 +%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: 5%{?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-Fix-some-covscan-warnings.patch +Patch2: 0002-Update-translations.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.11.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(libcrypto) +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 Sep 15 2021 Marek Blaha - 0.63.0-5 +- Update translations + +* 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