commit b35c2792c9cb41e0d712471f658784f7f3011e51 Author: CentOS Sources Date: Tue May 17 06:27:18 2022 -0400 import libdnf-0.65.0-5.el9_0 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..94739ac --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libdnf-0.65.0.tar.gz diff --git a/.libdnf.metadata b/.libdnf.metadata new file mode 100644 index 0000000..c753363 --- /dev/null +++ b/.libdnf.metadata @@ -0,0 +1 @@ +95bd8ed682ca9c1b20913afba767c5e91fa3da13 SOURCES/libdnf-0.65.0.tar.gz diff --git a/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch b/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch new file mode 100644 index 0000000..b9d7ded --- /dev/null +++ b/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch @@ -0,0 +1,383 @@ +From 5fbecb9533a5584d20a2b76f5816e58c2ffbb6f6 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Wed, 2 Feb 2022 08:45:36 +0100 +Subject: [PATCH 1/2] Use `rpmdbCookie` from librpm, remove + `hawkey.Sack._rpmdb_version` + +`dnf_sack_get_rpmdb_version` function that computed the hash of installed +packages was removed. `rpmdbCookie` function from librpm is used in context +part of libdnf instead. + +The private Python function `hawkey.Sack._rpmdb_version()` was removed too. +It was used by DNF. The new version of DNF uses +`rpm.TransactionSet.dbCookie()` function from librpm, which wraps +the `rpmdbCookie` function. So the same librpm function will be used +in context part of libdnf (e.g. by microdnf) and in the DNF. + +`rpmdbCookie` funkcion is safer. It also detect reinstalation of package +as a change. That will be needed in the future to determining if the libsolv +cache is still valid. +It also solves the libdnf problem with SHA1 in FIPS mode. + += changelog = +msg: Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version` +type: bugfix +related: https://bugzilla.redhat.com/show_bug.cgi?id=2043476 +--- + libdnf/dnf-sack-private.hpp | 15 ------------ + libdnf/dnf-sack.cpp | 40 ------------------------------- + libdnf/dnf-transaction.cpp | 48 +++++++++++++++++++++---------------- + python/hawkey/sack-py.cpp | 8 ------- + 4 files changed, 27 insertions(+), 84 deletions(-) + +diff --git a/libdnf/dnf-sack-private.hpp b/libdnf/dnf-sack-private.hpp +index 89873534..2db96320 100644 +--- a/libdnf/dnf-sack-private.hpp ++++ b/libdnf/dnf-sack-private.hpp +@@ -81,19 +81,4 @@ std::pair>, libdnf::ModulePackageContainer: + + std::vector requiresModuleEnablement(DnfSack * sack, const libdnf::PackageSet * installSet); + +-/** +- * @brief Return fingerprint of installed RPMs. +- * The format is :. +- * is a count of installed RPMs. +- * is a sha1 hash of sorted sha1hdr hashes of installed RPMs. +- * +- * The count can be computed from the command line by running: +- * rpm -qa --qf='%{name}\n' | grep -v '^gpg-pubkey$' | wc -l +- * +- * The hash can be computed from the command line by running: +- * rpm -qa --qf='%{name} %{sha1header}\n' | grep -v '^gpg-pubkey ' \ +- * | cut -d ' ' -f 2 | LC_ALL=C sort | tr -d '\n' | sha1sum +- */ +-std::string dnf_sack_get_rpmdb_version(DnfSack *sack); +- + #endif // HY_SACK_INTERNAL_H +diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp +index a88e8a1c..13977730 100644 +--- a/libdnf/dnf-sack.cpp ++++ b/libdnf/dnf-sack.cpp +@@ -80,7 +80,6 @@ extern "C" { + #include "module/ModulePackage.hpp" + #include "repo/Repo-private.hpp" + #include "repo/solvable/DependencyContainer.hpp" +-#include "utils/crypto/sha1.hpp" + #include "utils/File.hpp" + #include "utils/utils.hpp" + #include "log.hpp" +@@ -2535,42 +2534,3 @@ std::pair>, libdnf::ModulePackageContainer: + setModuleExcludes(sack, hotfixRepos, *moduleContainer); + return ret; + } +- +-std::string dnf_sack_get_rpmdb_version(DnfSack *sack) { +- // collect all sha1hdr checksums +- // they are sufficiently unique IDs that represent installed RPMs +- std::vector checksums; +- +- // iterate all @System repo RPMs (rpmdb records) +- libdnf::Query query{sack, libdnf::Query::ExcludeFlags::IGNORE_EXCLUDES}; +- query.installed(); +- +- auto pset = query.getResultPset(); +- Id id = -1; +- while(true) { +- id = pset->next(id); +- if (id == -1) { +- break; +- } +- DnfPackage *pkg = dnf_package_new(sack, id); +- // store pkgid (equals to sha1hdr) +- checksums.push_back(libdnf::string::fromCstring(dnf_package_get_pkgid(pkg))); +- g_object_unref(pkg); +- } +- +- // sort checksums to compute the output checksum always the same +- std::sort(checksums.begin(), checksums.end()); +- +- SHA1Hash h; +- for (auto & checksum : checksums) { +- h.update(checksum.c_str()); +- } +- +- // build : output +- std::ostringstream result; +- result << checksums.size(); +- result << ":"; +- result << h.hexdigest(); +- +- return result.str(); +-} +diff --git a/libdnf/dnf-transaction.cpp b/libdnf/dnf-transaction.cpp +index e0966582..d93c5ec6 100644 +--- a/libdnf/dnf-transaction.cpp ++++ b/libdnf/dnf-transaction.cpp +@@ -28,6 +28,7 @@ + * This object represents an RPM transaction. + */ + ++#include + #include + #include + #include +@@ -53,6 +54,7 @@ + #include "transaction/Swdb.hpp" + #include "transaction/Transformer.hpp" + #include "utils/bgettext/bgettext-lib.h" ++#include "utils/utils.hpp" + + typedef enum { + DNF_TRANSACTION_STEP_STARTED, +@@ -1136,9 +1138,8 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state + libdnf::Swdb *swdb = priv->swdb; + PluginHookContextTransactionData data{PLUGIN_HOOK_ID_CONTEXT_PRE_TRANSACTION, transaction, goal, state}; + DnfSack * sack = hy_goal_get_sack(goal); +- DnfSack * rpmdb_version_sack = NULL; +- std::string rpmdb_begin; +- std::string rpmdb_end; ++ std::unique_ptr rpmdb_cookie_uptr{nullptr, free}; ++ std::string rpmdb_cookie; + + /* take lock */ + ret = dnf_state_take_lock(state, DNF_LOCK_TYPE_RPMDB, DNF_LOCK_MODE_PROCESS, error); +@@ -1431,17 +1432,24 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state + if (!dnf_context_plugin_hook(priv->context, PLUGIN_HOOK_ID_CONTEXT_PRE_TRANSACTION, &data, nullptr)) + goto out; + +- // FIXME get commandline +- if (sack) { +- rpmdb_begin = dnf_sack_get_rpmdb_version(sack); +- } else { +- // if sack is not available, create a custom instance +- rpmdb_version_sack = dnf_sack_new(); +- dnf_sack_load_system_repo(rpmdb_version_sack, nullptr, DNF_SACK_LOAD_FLAG_NONE, nullptr); +- rpmdb_begin = dnf_sack_get_rpmdb_version(rpmdb_version_sack); +- g_object_unref(rpmdb_version_sack); ++ // Open rpm database if it is not already open ++ if (!rpmtsGetRdb(priv->ts)) { ++ rc = rpmtsOpenDB(priv->ts, rpmtsGetDBMode(priv->ts)); ++ if (rc != 0) { ++ ret = FALSE; ++ g_set_error( ++ error, DNF_ERROR, DNF_ERROR_INTERNAL_ERROR, _("Error %i opening rpm database"), rc); ++ goto out; ++ } + } +- swdb->beginTransaction(_get_current_time(), rpmdb_begin, "", priv->uid); ++ ++ rpmdb_cookie_uptr.reset(rpmdbCookie(rpmtsGetRdb(priv->ts))); ++ rpmdb_cookie = libdnf::string::fromCstring(rpmdb_cookie_uptr.get()); ++ if (rpmdb_cookie.empty()) { ++ g_critical(_("The rpmdbCookie() function did not return cookie of rpm database.")); ++ } ++ // FIXME get commandline ++ swdb->beginTransaction(_get_current_time(), rpmdb_cookie, "", priv->uid); + + /* run the transaction */ + priv->state = dnf_state_get_child(state); +@@ -1481,14 +1489,12 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state + if (!ret) + goto out; + +- // finalize swdb transaction +- // always load a new sack with rpmdb state after the transaction +- rpmdb_version_sack = dnf_sack_new(); +- dnf_sack_load_system_repo(rpmdb_version_sack, nullptr, DNF_SACK_LOAD_FLAG_NONE, nullptr); +- rpmdb_end = dnf_sack_get_rpmdb_version(rpmdb_version_sack); +- g_object_unref(rpmdb_version_sack); +- +- swdb->endTransaction(_get_current_time(), rpmdb_end.c_str(), libdnf::TransactionState::DONE); ++ rpmdb_cookie_uptr.reset(rpmdbCookie(rpmtsGetRdb(priv->ts))); ++ rpmdb_cookie = libdnf::string::fromCstring(rpmdb_cookie_uptr.get()); ++ if (rpmdb_cookie.empty()) { ++ g_critical(_("The rpmdbCookie() function did not return cookie of rpm database.")); ++ } ++ swdb->endTransaction(_get_current_time(), rpmdb_cookie, libdnf::TransactionState::DONE); + swdb->closeTransaction(); + + data.hookId = PLUGIN_HOOK_ID_CONTEXT_TRANSACTION; +diff --git a/python/hawkey/sack-py.cpp b/python/hawkey/sack-py.cpp +index 4de499cb..fcb5cd61 100644 +--- a/python/hawkey/sack-py.cpp ++++ b/python/hawkey/sack-py.cpp +@@ -783,13 +783,6 @@ load_repo(_SackObject *self, PyObject *args, PyObject *kwds) try + Py_RETURN_NONE; + } CATCH_TO_PYTHON + +-static PyObject * +-rpmdb_version(_SackObject *self, PyObject *unused) try +-{ +- auto result = dnf_sack_get_rpmdb_version(self->sack); +- return PyString_FromString(result.c_str()); +-} CATCH_TO_PYTHON +- + static Py_ssize_t + len(_SackObject *self) try + { +@@ -858,7 +851,6 @@ PyMethodDef sack_methods[] = { + METH_VARARGS | METH_KEYWORDS, NULL}, + {"load_repo", (PyCFunction)load_repo, METH_VARARGS | METH_KEYWORDS, + NULL}, +- {"_rpmdb_version", (PyCFunction)rpmdb_version, METH_VARARGS | METH_KEYWORDS, NULL}, + {NULL} /* sentinel */ + }; + +-- +2.34.1 + + +From 3dae1fd8754ec9521e16e2e11a7c4bf2c81bbb02 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Wed, 2 Feb 2022 18:00:39 +0100 +Subject: [PATCH 2/2] Remove class `SHA1Hash`, which is no longer used, remove + OpenSSL require + +The class was used by the `dnf_sack_get_rpmdb_version` function, which was +removed. The `rpmdbCookie` function from librpm is used instead. +--- + CMakeLists.txt | 1 - + libdnf.spec | 1 - + libdnf/CMakeLists.txt | 1 - + libdnf/utils/CMakeLists.txt | 1 - + libdnf/utils/crypto/CMakeLists.txt | 5 ----- + libdnf/utils/crypto/sha1.cpp | 36 ------------------------------ + libdnf/utils/crypto/sha1.hpp | 25 --------------------- + 7 files changed, 70 deletions(-) + delete mode 100644 libdnf/utils/crypto/CMakeLists.txt + delete mode 100644 libdnf/utils/crypto/sha1.cpp + delete mode 100644 libdnf/utils/crypto/sha1.hpp + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 60cf1b8c..7149b9e6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -52,7 +52,6 @@ endif() + # build dependencies + find_package(Gpgme REQUIRED) + find_package(LibSolv 0.6.30 REQUIRED COMPONENTS ext) +-find_package(OpenSSL REQUIRED) + + + # build dependencies via pkg-config +diff --git a/libdnf.spec b/libdnf.spec +index 697911f0..89d2fb40 100644 +--- a/libdnf.spec ++++ b/libdnf.spec +@@ -83,7 +83,6 @@ BuildRequires: pkgconfig(zck) >= 0.9.11 + 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 +diff --git a/libdnf/CMakeLists.txt b/libdnf/CMakeLists.txt +index 998a6f94..9e71d139 100644 +--- a/libdnf/CMakeLists.txt ++++ b/libdnf/CMakeLists.txt +@@ -75,7 +75,6 @@ target_link_libraries(libdnf + ${GLIB_GIO_UNIX_LIBRARIES} + ${LIBSOLV_LIBRARY} + ${LIBSOLV_EXT_LIBRARY} +- ${OPENSSL_CRYPTO_LIBRARY} + ${RPM_LIBRARIES} + ${SCOLS_LIBRARIES} + ${SQLite3_LIBRARIES} +diff --git a/libdnf/utils/CMakeLists.txt b/libdnf/utils/CMakeLists.txt +index 71a1042c..4ec456ef 100644 +--- a/libdnf/utils/CMakeLists.txt ++++ b/libdnf/utils/CMakeLists.txt +@@ -1,5 +1,4 @@ + add_subdirectory(bgettext) +-add_subdirectory(crypto) + add_subdirectory(iniparser) + add_subdirectory(regex) + add_subdirectory(sqlite3) +diff --git a/libdnf/utils/crypto/CMakeLists.txt b/libdnf/utils/crypto/CMakeLists.txt +deleted file mode 100644 +index 149d100c..00000000 +--- a/libdnf/utils/crypto/CMakeLists.txt ++++ /dev/null +@@ -1,5 +0,0 @@ +-set(UTILS_SOURCES +- ${UTILS_SOURCES} +- ${CMAKE_CURRENT_SOURCE_DIR}/sha1.cpp +- PARENT_SCOPE +-) +diff --git a/libdnf/utils/crypto/sha1.cpp b/libdnf/utils/crypto/sha1.cpp +deleted file mode 100644 +index 1533ee6b..00000000 +--- a/libdnf/utils/crypto/sha1.cpp ++++ /dev/null +@@ -1,36 +0,0 @@ +-#include +- +-#include +-#include +- +-#include "sha1.hpp" +- +- +-SHA1Hash::SHA1Hash() +-{ +- md_ctx = EVP_MD_CTX_new(); +- EVP_DigestInit_ex(md_ctx, EVP_sha1(), NULL); +-} +- +- +-void +-SHA1Hash::update(const char * data) +-{ +- EVP_DigestUpdate(md_ctx, data, strlen(data)); +-} +- +- +-std::string +-SHA1Hash::hexdigest() +-{ +- unsigned char md[digestLength]; +- EVP_DigestFinal_ex(md_ctx, md, NULL); +- +- std::stringstream ss; +- for(int i=0; i(md[i]); +- } +- +- EVP_MD_CTX_free(md_ctx); +- return ss.str(); +-} +diff --git a/libdnf/utils/crypto/sha1.hpp b/libdnf/utils/crypto/sha1.hpp +deleted file mode 100644 +index 9f1dfdeb..00000000 +--- a/libdnf/utils/crypto/sha1.hpp ++++ /dev/null +@@ -1,25 +0,0 @@ +-#include +-#include +-#include +- +- +-/* +-USAGE: +- +-SHA1Hash h; +-h.update("foo"); +-h.update("bar"); +-std::cout << h.hexdigest() << std::endl; +-*/ +- +- +-class SHA1Hash { +-public: +- SHA1Hash(); +- void update(const char *data); +- std::string hexdigest(); +- static constexpr int digestLength = SHA_DIGEST_LENGTH; +- +-private: +- EVP_MD_CTX *md_ctx; +-}; +-- +2.34.1 + diff --git a/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch b/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch new file mode 100644 index 0000000..a8770c6 --- /dev/null +++ b/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch @@ -0,0 +1,70 @@ +From 025d477f63baf3df2f6da3b10a21f00d4a339073 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Tue, 8 Feb 2022 09:30:03 +0100 +Subject: [PATCH] Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394) + +Rich dependencies are difficult to properly evaluate because we do not +have enough information about past and only libsolv is capable to +evaluate it in comparison to present state of the system. + +Additionally - rich deps are used for langpacks therefore disabling +unmet rich deps will have a negative impact on UX. + +https://bugzilla.redhat.com/show_bug.cgi?id=2048394 +https://bugzilla.redhat.com/show_bug.cgi?id=2033130 +--- + libdnf/goal/Goal.cpp | 22 +++++++++++++++++++--- + 1 file changed, 19 insertions(+), 3 deletions(-) + +diff --git a/libdnf/goal/Goal.cpp b/libdnf/goal/Goal.cpp +index 2b698f7..ebe2fbd 100644 +--- a/libdnf/goal/Goal.cpp ++++ b/libdnf/goal/Goal.cpp +@@ -835,8 +835,12 @@ Goal::exclude_from_weak_autodetect() + installed_names.push_back(dnf_package_get_name(pkg)); + std::unique_ptr recommends(dnf_package_get_recommends(pkg)); + for (int i = 0; i < recommends->count(); ++i) { +- Query query(base_query); + std::unique_ptr dep(recommends->getPtr(i)); ++ const char * dep_string = dep->toString(); ++ if (dep_string[0] == '(') { ++ continue; ++ } ++ Query query(base_query); + const char * version = dep->getVersion(); + // There can be installed provider in different version or upgraded packed can recommend a different version + // Ignore version and search only by reldep name +@@ -858,7 +862,7 @@ Goal::exclude_from_weak_autodetect() + } + } + +- // Invesigate supplements of only available packages with a different name to installed packages ++ // Investigate supplements of only available packages with a different name to installed packages + installed_names.push_back(nullptr); + base_query.addFilter(HY_PKG_NAME, HY_NEQ, installed_names.data()); + auto * available_pset = base_query.getResultPset(); +@@ -870,8 +874,20 @@ Goal::exclude_from_weak_autodetect() + if (supplements->count() == 0) { + continue; + } ++ libdnf::DependencyContainer supplements_without_rich(getSack()); ++ for (int i = 0; i < supplements->count(); ++i) { ++ std::unique_ptr dep(supplements->getPtr(i)); ++ const char * dep_string = dep->toString(); ++ if (dep_string[0] == '(') { ++ continue; ++ } ++ supplements_without_rich.add(dep.get()); ++ } ++ if (supplements_without_rich.count() == 0) { ++ continue; ++ } + Query query(installed_query); +- query.addFilter(HY_PKG_PROVIDES, supplements.get()); ++ query.addFilter(HY_PKG_PROVIDES, &supplements_without_rich); + // When supplemented package already installed, exclude_from_weak available package + if (!query.empty()) { + add_exclude_from_weak(pkg); +-- +libgit2 1.1.0 + diff --git a/SOURCES/0003-Update-translations-RhBug-2017349.patch b/SOURCES/0003-Update-translations-RhBug-2017349.patch new file mode 100644 index 0000000..e25a182 --- /dev/null +++ b/SOURCES/0003-Update-translations-RhBug-2017349.patch @@ -0,0 +1,4689 @@ +From 8db854d225eebe0929a2fa9cdb003f0fa4847a3e Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Mon, 21 Mar 2022 10:15:10 +0100 +Subject: [PATCH] Update translations (RhBug:2017349) + +--- + po/fr.po | 421 +++++++++++++++++++++------------------- + po/ja.po | 471 ++++++++++++++++++++++++++------------------- + po/ko.po | 407 ++++++++++++++++++++++----------------- + po/libdnf.pot | 247 +++++++++++++----------- + po/zh_CN.po | 519 +++++++++++++++++++++++++++----------------------- + 5 files changed, 1140 insertions(+), 925 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index f89cdfa8..d0b10345 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -1,25 +1,27 @@ +-# Jean-Baptiste Holcroft , 2016. #zanata, 2021. ++# Jean-Baptiste Holcroft , 2016. #zanata + # José Fournier , 2016. #zanata + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata +-# Ludek Janda , 2018. #zanata +-# Jean-Baptiste Holcroft , 2019. #zanata, 2021. +-# Julien Humbert , 2020, 2021. +-# Arnaud T. , 2020. ++# Ludek Janda , 2018. #zanata, 2021. ++# Jean-Baptiste Holcroft , 2019. #zanata ++# Julien Humbert , 2020. ++# Sundeep Anand , 2021, 2022. ++# Titouan Bénard , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2021-05-16 09:18-0400\n" +-"PO-Revision-Date: 2021-05-17 03:02+0000\n" +-"Last-Translator: Julien Humbert \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2022-02-28 10:38+0100\n" ++"PO-Revision-Date: 2022-03-02 10:16+0000\n" ++"Last-Translator: Sundeep Anand \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=n > 1;\n" +-"X-Generator: Weblate 4.6.2\n" ++"X-Generator: Weblate 4.11\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -51,9 +53,9 @@ msgstr "la valeur 1 n’est pas autorisée" + + #: libdnf/conf/ConfigMain.cpp:209 + msgid "negative value is not allowed" +-msgstr "une valeur négative n’est pas autorisée" ++msgstr "la valeur négative n'est pas autorisée" + +-#: libdnf/conf/ConfigMain.cpp:341 ++#: libdnf/conf/ConfigMain.cpp:343 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "le pourcentage « %s » est en dehors des limites" +@@ -108,140 +110,161 @@ msgstr "n’a pu convertir « %s » en secondes" + msgid "GetValue(): Value not set" + msgstr "GetValue() : valeur non définie" + +-#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" +-msgstr "Impossible d’activer plus de flux du module « %s » en même temps" ++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 ++#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" +-"Impossible d'activer le module « %1$s » flux « %2$s » : Etat du module déjà " +-"modifié" ++"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module " ++"déjà modifié" + +-#: libdnf/dnf-context.cpp:3253 ++#: libdnf/dnf-context.cpp:3263 + #, c-format + msgid "Modular dependency problem with Defaults: %s" +-msgstr "Problème de dépendance Modular avec Defaults : %s" ++msgstr "Problème de dépendance modulaire avec les valeurs par défaut : %s" + +-#: libdnf/dnf-context.cpp:3256 ++#: libdnf/dnf-context.cpp:3266 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" +-msgstr "Problème de dépendance modulaire avec les derniers modules : %s" ++msgstr "Problème de dépendance modulaire avec les derniers modules : %s" + +-#: libdnf/dnf-context.cpp:3260 ++#: libdnf/dnf-context.cpp:3270 + #, c-format + msgid "Modular dependency problem: %s" +-msgstr "Problème de dépendances Modular : %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 ++#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 ++#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 ++#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 ++#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 + #, c-format + msgid "Unable to resolve argument '%s'" +-msgstr "Impossible de résoudre l’argument « %s »" ++msgstr "Impossible de résoudre le paramètre ’%s’" + +-#: libdnf/dnf-context.cpp:3301 ++#: libdnf/dnf-context.cpp:3300 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + "Seul le nom du module est nécessaire. Les paramètres inutiles ont été " +-"ignorés : « %s »" ++"ignorés : ’%s’" + +-#: libdnf/dnf-context.cpp:3315 ++#: libdnf/dnf-context.cpp:3314 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" +-"Impossible de réinitialiser le module « %s » : Etat du module déjà modifié" ++"Impossible de réinitialiser le module '%s' : État du module déjà modifié" + +-#: libdnf/dnf-context.cpp:3326 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" +-msgstr "" +-"Impossible de désactiver le module « %s » : Etat du module déjà modifié" ++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 ++#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 ++#: libdnf/dnf-context.cpp:3633 + msgid "No modular data available" + msgstr "Aucune donnée modulaire disponible" + +-#: libdnf/dnf-context.cpp:3374 ++#: libdnf/dnf-context.cpp:3373 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" +-msgstr "Ces informations inutiles ont été ignorées dans l'argument : « %s »" ++msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'" + +-#: libdnf/dnf-context.cpp:3412 ++#: libdnf/dnf-context.cpp:3411 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "" +-"Problème durant l'activation de l'arbre de dépendances pour le module « %1$s" +-" » du flux « %2$s » : %3$s" ++"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 durant la requête d’activation du module" ++#: libdnf/dnf-context.cpp:3423 ++msgid "Problems appeared for module enable request:" ++msgstr "Des problèmes sont apparus pour la demande d'activation du module :" ++ ++#: libdnf/dnf-context.cpp:3518 ++#, c-format ++msgid "No active module packages found for module spec '%s'" ++msgstr "Aucun paquetage de module actif n'a été trouvé pour le module spec '%s'" + +-#. this really should never happen; unless the modular repodata is corrupted +-#: libdnf/dnf-context.cpp:3496 ++#: libdnf/dnf-context.cpp:3523 + #, c-format +-msgid "Failed to parse module artifact NEVRA '%s'" +-msgstr "Échec de l’analyse du module d’artéfact NEVRA : %s" ++msgid "Cannot install module '%s' from fail-safe repository" ++msgstr "Impossible d'installer le module '%s' à partir du dépôt de sécurité" + + #: libdnf/dnf-context.cpp:3530 +-msgid "Problems appeared for module install request" +-msgstr "Des problèmes sont apparus durant la requête d’installation du module" ++#, c-format ++msgid "No profile found matching '%s'" ++msgstr "Aucun profil trouvé correspondant à '%s'" + +-#: libdnf/dnf-context.cpp:3590 +-msgid "Problems appeared for module reset request" +-msgstr "" +-"Des problèmes sont apparus durant la requête de réinitialisation du module" ++#: libdnf/dnf-context.cpp:3584 ++#, c-format ++msgid "No match for package '%s' for module spec %s" ++msgstr "Aucune correspondance pour le paquet '%s' pour le module spec %s" ++ ++#: libdnf/dnf-context.cpp:3595 ++#, c-format ++msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" ++msgstr "Problème lors de l'installation du module '%1$s' stream '%2$s' : %3$s" ++ ++#: libdnf/dnf-context.cpp:3604 ++msgid "Problems appeared for module install request:" ++msgstr "Des problèmes sont apparus pour la demande d'installation du module :" + +-#: libdnf/dnf-context.cpp:3592 +-msgid "Problems appeared for module disable request" ++#: libdnf/dnf-context.cpp:3663 ++msgid "Problems appeared for module reset request:" + msgstr "" +-"Des problèmes sont apparus durant la requête de désactivation du module" ++"Des problèmes sont apparus pour la demande de réinitialisation des modules :" + +-#: libdnf/dnf-context.cpp:3628 ++#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++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:3755 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "" +-"Le résultat de l’opération sera le basculement du flux « %s » du module " +-"« %s » vers le flux « %s »" ++"Le résultat de l’opération sera le basculement du flux « %s » du module « %s " ++"» vers le flux « %s »" + +-#: libdnf/dnf-context.cpp:3632 ++#: libdnf/dnf-context.cpp:3759 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" +-"Il n’est pas possible de basculer les flux actifs d’un module.\n" +-"Il est recommandé de retirer tout le contenu installé du module, et de réinitialiser le module en utilisant la commande « dnf module reset ». Après la réinitialisation, vous pourrez installer les autres flux." ++"Il n’est pas possible de basculer les flux actifs d’un module. \n" ++"Il est recommandé de retirer tout contenu installé par le module, et de " ++"réinitialiser le mode en utilisant la commande 'microdnf module reset " ++"’. Après la réinitialisation du module, vous pouvez installer " ++"les autres flux." + +-#: libdnf/dnf-goal.cpp:85 ++#: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " + msgstr "Impossible de depsolve la transaction ; " + +-#: libdnf/dnf-goal.cpp:87 ++#: libdnf/dnf-goal.cpp:109 + #, 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:95 ++#: libdnf/dnf-goal.cpp:117 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " Problème %1$i : %2$s\n" + +-#: libdnf/dnf-goal.cpp:97 ++#: libdnf/dnf-goal.cpp:119 + #, c-format + msgid " Problem: %s\n" + msgstr " Problème : %s\n" +@@ -308,84 +331,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:395 ++#: libdnf/dnf-sack.cpp:394 + msgid "failed to add solv" + msgstr "n’a pu ajouter solv" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:413 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "aucune chaine %1$s pour %2$s" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:423 + #, c-format + msgid "failed to open: %s" + msgstr "n’a pas pu ouvrir : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:502 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "n’a pas pu créer le fichier temporaire : %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:512 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "n’a pas pu ouvrir le fichier tmp : %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:524 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() n’a pu écrire les données : %i" + +-#: libdnf/dnf-sack.cpp:542 ++#: libdnf/dnf-sack.cpp:541 + 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:607 ++#: libdnf/dnf-sack.cpp:606 + #, c-format + msgid "can not create temporary file %s" + msgstr "n’a pas pu créer le fichier temporaire %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:624 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) a échoué : %2$d" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:679 + msgid "null repo md file" +-msgstr "null repo md file" ++msgstr "fichier md de dépôt nul" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:688 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "n’a pu lire le fichier %1$s : %2$s" + +-#: libdnf/dnf-sack.cpp:703 ++#: libdnf/dnf-sack.cpp:702 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() a échoué." + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:715 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "échec du chargement du MD_TYPE_PRIMARY." + +-#: libdnf/dnf-sack.cpp:729 ++#: libdnf/dnf-sack.cpp:728 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() a échoué." + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:795 + msgid "failed to auto-detect architecture" + msgstr "n’a pu auto-détecter l’architecture" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:960 + #, c-format + msgid "failed creating cachedir %s" + msgstr "n’a pu créer le cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1737 + msgid "failed loading RPMDB" + msgstr "n’a pu télécharger RPMDB" + +-#: libdnf/dnf-sack.cpp:2462 ++#: libdnf/dnf-sack.cpp:2521 + #, c-format + msgid "No module defaults found: %s" + msgstr "Aucun module par défaut n’a été trouvé : %s" +@@ -414,68 +437,78 @@ msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "déjà en état à 100%% [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "Sources non définies quand vous essayez d’assurer paquet %s" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "N’a pu assurer %1$s comme dépôt %2$s non trouvé (%3$i dépôts chargés)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "Échec de la vérification d’untrusted : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "Fichier téléchargé pour %s non trouvé" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + "le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "N’a pas pu obtenir la valeur de CacheDir" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + "Échec de l’obtention de l’espace libre du système de fichiers pour %s : " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" +-"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible " +-"%3$s" ++"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "n’a pu réussi à définir root" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erreur %i lors du test transactionnel" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "Erreur %i lors de l’ouverture de la base de données rpm" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données " ++"rpm." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "Erreur %i pendant la transaction" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -501,8 +534,7 @@ msgstr "" + #: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" +-"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison " +-"incorrecte" ++"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte" + + #: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" +@@ -690,42 +722,42 @@ msgstr "le module %s est en conflit avec %s fourni par lui-même" + msgid "both module %s and %s obsolete %s" + msgstr "à la fois le module %s et %s rendent obsolète %s" + +-#: libdnf/goal/Goal.cpp:1055 ++#: libdnf/goal/Goal.cpp:1141 + msgid "no solver set" + msgstr "aucun solveur défini" + +-#: libdnf/goal/Goal.cpp:1060 ++#: libdnf/goal/Goal.cpp:1146 + #, c-format + msgid "failed to make %s absolute" + msgstr "n’a pas pu rendre %s absolu" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1153 + #, 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:1079 ++#: libdnf/goal/Goal.cpp:1165 + msgid "no solv in the goal" + msgstr "pas de solv dans l’objectif" + +-#: libdnf/goal/Goal.cpp:1081 ++#: libdnf/goal/Goal.cpp:1167 + msgid "no solution, cannot remove protected package" + msgstr "aucune solution, n’a pas pu supprimer le package protégé" + +-#: libdnf/goal/Goal.cpp:1084 ++#: libdnf/goal/Goal.cpp:1170 + msgid "no solution possible" + msgstr "aucune solution n’est possible" + +-#: libdnf/goal/Goal.cpp:1210 ++#: libdnf/goal/Goal.cpp:1296 + msgid "Problem: " +-msgstr "Problème : " ++msgstr "Problème : " + +-#: libdnf/goal/Goal.cpp:1215 ++#: libdnf/goal/Goal.cpp:1301 + #, c-format + msgid "Problem %d: " +-msgstr "Problème %d : " ++msgstr "Probléme %d : " + +-#: libdnf/goal/Goal.cpp:1542 ++#: libdnf/goal/Goal.cpp:1634 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" +@@ -751,33 +783,33 @@ msgstr "impossible de créer le dossier %1$s : %2$s" + msgid "cannot stat path %1$s: %2$s" + msgstr "impossible de stat le chemin %1$s : %2$s" + +-#: libdnf/module/ModulePackage.cpp:573 ++#: libdnf/module/ModulePackage.cpp:604 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "Format invalide du module de plateforme : %s" + +-#: libdnf/module/ModulePackage.cpp:588 ++#: libdnf/module/ModulePackage.cpp:619 + 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:601 ++#: libdnf/module/ModulePackage.cpp:632 + 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:628 ++#: libdnf/module/ModulePackage.cpp:659 + #, 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:637 ++#: libdnf/module/ModulePackage.cpp:668 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "L'identifiant de la platforme est manquant dans %s" + +-#: libdnf/module/ModulePackage.cpp:642 ++#: libdnf/module/ModulePackage.cpp:673 + msgid "No valid Platform ID detected" + msgstr "Aucun identifiant de plateforme n'a été détecté" + +@@ -791,69 +823,68 @@ msgstr "Impossible d’activer les flux pour le module « %s »" + 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:918 ++#: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" +-msgstr "Installation des profils de module :\n" ++msgstr "Installation des profils de module :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:933 ++#: libdnf/module/ModulePackageContainer.cpp:932 + msgid "Disabling module profiles:\n" +-msgstr "Désactivation des profils de module\n" ++msgstr "Désactivation des profils de module :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:948 ++#: libdnf/module/ModulePackageContainer.cpp:947 + msgid "Enabling module streams:\n" +-msgstr "Activation des flux de modules :\n" ++msgstr "Activation des flux de modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:962 ++#: libdnf/module/ModulePackageContainer.cpp:961 + msgid "Switching module streams:\n" +-msgstr "Basculement des flux de modules :\n" ++msgstr "Basculement des flux de modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:980 ++#: libdnf/module/ModulePackageContainer.cpp:979 + msgid "Disabling modules:\n" +-msgstr "Désactivation des modules :\n" ++msgstr "Désactivation des modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:991 ++#: libdnf/module/ModulePackageContainer.cpp:990 + msgid "Resetting modules:\n" +-msgstr "Réinitialisation des modules :\n" ++msgstr "Réinitialisation des modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1674 ++#: libdnf/module/ModulePackageContainer.cpp:1704 + #, 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:1680 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, 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:1763 ++#: libdnf/module/ModulePackageContainer.cpp:1791 + #, 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:1779 ++#: libdnf/module/ModulePackageContainer.cpp:1807 + #, 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:1802 ++#: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" +-"Impossible de supprimer les données de sécurité modulaires dans « %s »" ++msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1834 ++#: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" + msgstr "" +-"Impossible d'appliquer les obsolescences modulaires à « %s:%s » car le " +-"module cible « %s » est désactivé" ++"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 +@@ -881,12 +912,12 @@ 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 ++#: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" + msgstr "" +-"Impossible de récupérer les obsolescences modulaires aucun flux ne " +-"correspond à « %s:%s »" ++"Impossible de récupérer les modules obsolètes car aucune correspondance de " ++"flux %s : %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -931,8 +962,8 @@ msgid "" + "operator instead." + msgstr "" + "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un " +-"comportement indéfini. Il est déprécié et le support sera abandonné dans les" +-" prochaines versions. Utilisez plutôt l’opérateur « = »." ++"comportement indéfini. Il est déprécié et le support sera abandonné dans les " ++"prochaines versions. Utilisez plutôt l’opérateur « = »." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -946,15 +977,15 @@ msgstr "" + "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1382 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" +-msgstr "dépôt « %s » : 'basecachedir' n'est pas défini" ++msgstr "repo '%s' : 'basecachedir' n'est pas fixé" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "" + "La vitesse de téléchargement maximale est plus basse que le minimum. " + "Veuillez modifier les paramètres minrate ou throttle" +@@ -962,11 +993,13 @@ msgstr "" + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "dépôt « %s » : 'proxy_username' est défini mais pas '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 "'proxy_username' est défini mais pas '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 +@@ -983,129 +1016,135 @@ msgstr "%s : gpgme_data_new_from_fd() : %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s : gpgme_op_import() : %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907 ++#: 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:740 libdnf/repo/Repo.cpp:804 ++#: 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:833 ++#: 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:886 ++#: 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:914 ++#: 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« :%d - %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:1162 ++#: 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:1181 ++#: 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:1204 ++#: 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:1210 ++#: 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:1235 ++#: 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:1237 ++#: 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:1255 ++#: 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:1261 +-#, 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:1275 ++#: 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:1298 ++#: 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:1321 ++#: 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:1333 ++#: 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:1337 ++#: 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:1344 ++#: 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:1370 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir() : échec du calcul de SHA256" + +-#: libdnf/repo/Repo.cpp:1398 ++#: 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:1775 ++#: 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:1792 ++#: 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:1898 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "impossible d’ouvrir %s : %s" + +-#: libdnf/repo/Repo.cpp:1942 ++#: 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" +@@ -1164,8 +1203,8 @@ msgid "Can't add console output to unsaved transaction" + msgstr "" + "Ne peut pas ajouter une sortie de console à une transaction non enregistrée" + ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "Échec de l'analyse de l'artefact de module '%s'" ++ + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "n’a pu calculer la somme de contrôle RPMDB" +diff --git a/po/ja.po b/po/ja.po +index 3d6f5c5b..de74c431 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,20 +1,22 @@ + # Casey Jones , 2018. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Casey Jones , 2020. ++# Sundeep Anand , 2021, 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2021-05-16 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: 2022-02-28 10:38+0100\n" ++"PO-Revision-Date: 2022-03-02 10:16+0000\n" ++"Last-Translator: Sundeep Anand \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.11\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -41,16 +43,14 @@ msgid "invalid value" + msgstr "無効な値" + + #: libdnf/conf/ConfigMain.cpp:207 +-#, fuzzy +-#| msgid "'%s' is not an allowed value" + msgid "value 1 is not allowed" +-msgstr "'%s' 値は許可されていない値です" ++msgstr "値 1 は許可されません" + + #: libdnf/conf/ConfigMain.cpp:209 + msgid "negative value is not allowed" +-msgstr "" ++msgstr "負の値は許可されていません" + +-#: libdnf/conf/ConfigMain.cpp:341 ++#: libdnf/conf/ConfigMain.cpp:343 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "パーセンテージ '%s' が範囲外にあります" +@@ -79,12 +79,12 @@ msgstr "'%s' 値は許可されていない値です" + #: 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 +@@ -105,130 +105,158 @@ msgstr "'%s' を 秒に変換できません" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 値は設定されていません" + +-#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 +-#, fuzzy, c-format +-#| msgid "Cannot enable multiple streams for module '%s'" ++#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#, c-format + msgid "Cannot enable more streams from module '%s' at the same time" +-msgstr "モジュール '%s' の複数ストリームを有効化できません" ++msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません" + +-#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206 ++#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 + #, 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 ++#: libdnf/dnf-context.cpp:3263 + #, c-format + msgid "Modular dependency problem with Defaults: %s" +-msgstr "" ++msgstr "デフォルトのモジュラー依存問題: %s" + +-#: libdnf/dnf-context.cpp:3256 +-#, fuzzy, c-format +-#| msgid "some dependency problem" ++#: libdnf/dnf-context.cpp:3266 ++#, c-format + msgid "Modular dependency problem with the latest modules: %s" +-msgstr "いくつかの依存問題" ++msgstr "最新のモジュールでモジュールの依存関係の問題: %s" + +-#: libdnf/dnf-context.cpp:3260 +-#, fuzzy, c-format +-#| msgid "some dependency problem" ++#: libdnf/dnf-context.cpp:3270 ++#, c-format + msgid "Modular dependency problem: %s" +-msgstr "いくつかの依存問題" ++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 +-#, fuzzy, c-format +-#| msgid "Failed to resolve: %s" ++#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 ++#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 ++#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 ++#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#, c-format + msgid "Unable to resolve argument '%s'" +-msgstr "名前解決に失敗しました: %s" ++msgstr "引数 '%s' を解決できません" + +-#: libdnf/dnf-context.cpp:3301 ++#: libdnf/dnf-context.cpp:3300 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" +-msgstr "" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" ++msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3315 ++#: libdnf/dnf-context.cpp:3314 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" ++"モジュール '%s' をリセットできません。モジュールの状態はすでに変更されていま" ++"す" + +-#: libdnf/dnf-context.cpp:3326 ++#: libdnf/dnf-context.cpp:3325 + #, 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 ++#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 ++#: libdnf/dnf-context.cpp:3633 + msgid "No modular data available" +-msgstr "" ++msgstr "モジュールデータは利用できません" + +-#: libdnf/dnf-context.cpp:3374 ++#: libdnf/dnf-context.cpp:3373 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" +-msgstr "" ++msgstr "引数の不要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3412 ++#: libdnf/dnf-context.cpp:3411 + #, 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 "" ++#: libdnf/dnf-context.cpp:3423 ++msgid "Problems appeared for module enable request:" ++msgstr "モジュール有効化リクエストに発生する問題:" + +-#. this really should never happen; unless the modular repodata is corrupted +-#: libdnf/dnf-context.cpp:3496 +-#, fuzzy, c-format +-#| msgid "Failed to upgrade defaults: %s" +-msgid "Failed to parse module artifact NEVRA '%s'" +-msgstr "デフォルトのアップグレードに失敗しました: %s" ++#: libdnf/dnf-context.cpp:3518 ++#, c-format ++msgid "No active module packages found for module spec '%s'" ++msgstr "モジュール仕様 '%s' " ++"について、アクティブなモジュールパッケージが見つかりません" ++ ++#: libdnf/dnf-context.cpp:3523 ++#, c-format ++msgid "Cannot install module '%s' from fail-safe repository" ++msgstr "フェイルセーフリポジトリーからモジュール '%s' をインストールできません" + + #: libdnf/dnf-context.cpp:3530 +-msgid "Problems appeared for module install request" +-msgstr "" ++#, c-format ++msgid "No profile found matching '%s'" ++msgstr "'%s' にマッチするプロファイルが見つかりません" + +-#: libdnf/dnf-context.cpp:3590 +-msgid "Problems appeared for module reset request" +-msgstr "" ++#: libdnf/dnf-context.cpp:3584 ++#, c-format ++msgid "No match for package '%s' for module spec %s" ++msgstr "モジュール仕様 %s について、パッケージ '%s' にマッチする項目はありません" + +-#: libdnf/dnf-context.cpp:3592 +-msgid "Problems appeared for module disable request" +-msgstr "" ++#: libdnf/dnf-context.cpp:3595 ++#, c-format ++msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" ++msgstr "モジュール '%1$s' ストリーム '%2$s' のインストール中に問題: %3$s" ++ ++#: libdnf/dnf-context.cpp:3604 ++msgid "Problems appeared for module install request:" ++msgstr "モジュールインストールリクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3628 ++#: libdnf/dnf-context.cpp:3663 ++msgid "Problems appeared for module reset request:" ++msgstr "モジュールリセットリクエストに発生する問題:" ++ ++#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++msgid "Problems appeared for module disable request:" ++msgstr "モジュール無効化リクエストに発生する問題:" ++ ++#: libdnf/dnf-context.cpp:3755 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "" ++"オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り" ++"替える結果となります" + +-#: libdnf/dnf-context.cpp:3632 ++#: libdnf/dnf-context.cpp:3759 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" ++"有効化されたモジュールのストリームの切り替えはできません。\n" ++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module " ++"reset ' コマンドを使用してモジュールをリセットすることを推奨しま" ++"す。モジュールのリセット後に、別のストリームをインストールできます。" + +-#: libdnf/dnf-goal.cpp:85 ++#: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " + msgstr "トランザクションを depsolve できませんでした; " + +-#: libdnf/dnf-goal.cpp:87 ++#: libdnf/dnf-goal.cpp:109 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "%i 問題を検出:\n" + +-#: libdnf/dnf-goal.cpp:95 ++#: libdnf/dnf-goal.cpp:117 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " 問題 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:97 ++#: libdnf/dnf-goal.cpp:119 + #, c-format + msgid " Problem: %s\n" + msgstr " 問題: %s\n" +@@ -238,7 +266,9 @@ msgstr " 問題: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません" ++msgstr "" ++"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ" ++"ンストールはできません" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -277,7 +307,8 @@ msgstr "トランザクションの実行中にエラーが発生しました: % + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" ++msgstr "" ++"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -293,87 +324,87 @@ msgstr "パッケージ %s を見つけることができませんでした" + msgid "could not add erase element %1$s(%2$i)" + msgstr "erase 要素 %1$s(%2$i) を追加することができません" + +-#: libdnf/dnf-sack.cpp:395 ++#: libdnf/dnf-sack.cpp:394 + msgid "failed to add solv" + msgstr "solv の追加に失敗しました" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:413 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s の %1$s 文字列はありません" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:423 + #, c-format + msgid "failed to open: %s" + msgstr "開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:502 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "一時ファイルを作成できません: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:512 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "tmp ファイルを開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:524 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() はデータの書き込みに失敗しました: %i" + +-#: libdnf/dnf-sack.cpp:542 ++#: libdnf/dnf-sack.cpp:541 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:606 + #, c-format + msgid "can not create temporary file %s" + msgstr "一時ファイル %s を作成できません" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:624 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) は失敗しました: %2$d" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:679 + msgid "null repo md file" + msgstr "null repo md ファイル" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:688 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "ファイル %1$s を読み込みできません: %2$s" + +-#: libdnf/dnf-sack.cpp:703 ++#: libdnf/dnf-sack.cpp:702 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() は失敗しました。" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:715 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY のロードに失敗しました。" + +-#: libdnf/dnf-sack.cpp:729 ++#: libdnf/dnf-sack.cpp:728 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:795 + msgid "failed to auto-detect architecture" + msgstr "アーキテクチャーの自動検出に失敗しました" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:960 + #, c-format + msgid "failed creating cachedir %s" + msgstr "cachedir %s の作成に失敗しました" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1737 + msgid "failed loading RPMDB" + msgstr "RPMDB のロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:2462 ++#: libdnf/dnf-sack.cpp:2521 + #, c-format + msgid "No module defaults found: %s" +-msgstr "" ++msgstr "モジュールのデフォルトは見つかりませんでした: %s" + + #: libdnf/dnf-state.cpp:1184 + #, c-format +@@ -399,67 +430,82 @@ msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "すでに 100%% の状態 [%s] にあります" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)" ++msgstr "" ++"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo " ++"はロード済み)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "untrusted の確認に失敗しました: " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "%s にダウンロードしたファイルが見つかりませんでした" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" ++msgstr "" ++"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir の値の取得に失敗しました" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" +-msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" ++msgstr "" ++"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "root の設定に失敗しました" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "トランザクションテストの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm データベースを開く際にエラー %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 関数は rpm データベースのクッキーを返しませんでした。" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "トランザクションの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" +-msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした" ++msgstr "" ++"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま" ++"せんでした" + + #: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 + #, c-format +@@ -567,7 +613,9 @@ msgstr "パッケージ %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +@@ -577,7 +625,9 @@ msgstr "パッケージ %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +@@ -640,7 +690,9 @@ msgstr "モジュール %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +@@ -650,7 +702,9 @@ msgstr "モジュール %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +@@ -662,45 +716,42 @@ msgstr "モジュール %s は自己提供される %s と競合しています" + msgid "both module %s and %s obsolete %s" + msgstr "モジュール %s と %s 両方は %s を廃止しました" + +-#: libdnf/goal/Goal.cpp:1055 ++#: libdnf/goal/Goal.cpp:1141 + msgid "no solver set" + msgstr "設定されたソルバーはありません" + +-#: libdnf/goal/Goal.cpp:1060 ++#: libdnf/goal/Goal.cpp:1146 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s を絶対的にすることに失敗しました" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1153 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s" + +-#: libdnf/goal/Goal.cpp:1079 ++#: libdnf/goal/Goal.cpp:1165 + msgid "no solv in the goal" + msgstr "目標に solv がありません" + +-#: libdnf/goal/Goal.cpp:1081 ++#: libdnf/goal/Goal.cpp:1167 + msgid "no solution, cannot remove protected package" + msgstr "ソリューションがなく、保護されたパッケージを削除できません" + +-#: libdnf/goal/Goal.cpp:1084 ++#: libdnf/goal/Goal.cpp:1170 + msgid "no solution possible" + msgstr "可能なソリューションがありません" + +-#: libdnf/goal/Goal.cpp:1210 +-#, fuzzy +-#| msgid " Problem: %s\n" ++#: libdnf/goal/Goal.cpp:1296 + msgid "Problem: " +-msgstr "問題: %s " ++msgstr "問題: " + +-#: libdnf/goal/Goal.cpp:1215 +-#, fuzzy, c-format +-#| msgid " Problem: %s\n" ++#: libdnf/goal/Goal.cpp:1301 ++#, c-format + msgid "Problem %d: " +-msgstr "問題: %s " ++msgstr "問題 %d: " + +-#: libdnf/goal/Goal.cpp:1542 ++#: libdnf/goal/Goal.cpp:1634 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " +@@ -725,30 +776,30 @@ msgstr "ディレクトリー %1$s を作成できません : %2$s" + msgid "cannot stat path %1$s: %2$s" + msgstr "パス %1$s のstatを調べられません : %2$s" + +-#: libdnf/module/ModulePackage.cpp:573 ++#: libdnf/module/ModulePackage.cpp:604 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "不正なプラットフォームモジュールのフォーマット: %s" + +-#: libdnf/module/ModulePackage.cpp:588 ++#: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" + msgstr "利用可能パッケージに提供される複数のモジュールプラットフォーム\n" + +-#: libdnf/module/ModulePackage.cpp:601 ++#: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" + msgstr "インストール済パッケージに提供される複数のモジュールプラットフォーム\n" + +-#: libdnf/module/ModulePackage.cpp:628 ++#: libdnf/module/ModulePackage.cpp:659 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" + msgstr "%s のプラットフォームモジュールの検出に失敗しました: %s" + +-#: libdnf/module/ModulePackage.cpp:637 ++#: libdnf/module/ModulePackage.cpp:668 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "%s に PLATFORM_ID が見つかりません" + +-#: libdnf/module/ModulePackage.cpp:642 ++#: libdnf/module/ModulePackage.cpp:673 + msgid "No valid Platform ID detected" + msgstr "有効な Platform ID が検出されませんでした" + +@@ -762,61 +813,65 @@ msgstr "モジュール '%s' の複数ストリームを有効化できません + msgid "Conflicting defaults with repo '%s': %s" + msgstr "repo '%s' のデフォルトが競合: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:918 ++#: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" +-msgstr "" ++msgstr "モジュールプロファイルのインストール中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:933 ++#: libdnf/module/ModulePackageContainer.cpp:932 + msgid "Disabling module profiles:\n" +-msgstr "" ++msgstr "モジュールプロファイルの無効化中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:948 ++#: libdnf/module/ModulePackageContainer.cpp:947 + msgid "Enabling module streams:\n" +-msgstr "" ++msgstr "モジュールストリームの有効化中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:962 ++#: libdnf/module/ModulePackageContainer.cpp:961 + msgid "Switching module streams:\n" +-msgstr "" ++msgstr "モジュールストリームの切り替え中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:980 ++#: libdnf/module/ModulePackageContainer.cpp:979 + msgid "Disabling modules:\n" +-msgstr "" ++msgstr "モジュールの無効化:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:991 ++#: libdnf/module/ModulePackageContainer.cpp:990 + msgid "Resetting modules:\n" +-msgstr "" ++msgstr "モジュールの再設定中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1674 ++#: libdnf/module/ModulePackageContainer.cpp:1704 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1680 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1763 ++#: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s" ++msgstr "" ++"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: " ++"%s" + +-#: libdnf/module/ModulePackageContainer.cpp:1779 ++#: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを保存できません" + +-#: libdnf/module/ModulePackageContainer.cpp:1802 ++#: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを削除できません" + +-#: libdnf/module/ModulePackageContainer.cpp:1834 ++#: libdnf/module/ModulePackageContainer.cpp:1862 + #, 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 +@@ -831,7 +886,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 +@@ -843,10 +898,11 @@ msgstr "デフォルトのアップグレードに失敗しました: %s" + msgid "Failed to upgrade streams: %s" + msgstr "ストリームのアップグレードに失敗しました: %s" + +-#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" + msgstr "" ++"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -889,6 +945,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" ++"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。" ++"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演" ++"算子を使用してください。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -898,28 +957,35 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" ++msgstr "" ++"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ" ++"ピング。" + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1382 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" +-msgstr "" ++msgstr "repo '%s': 'basecachedir' が設定されていません" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの" ++"設定を変更してください" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" + msgstr "" ++"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい" ++"ません" + + #: 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 +@@ -936,125 +1002,133 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907 ++#: 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:740 libdnf/repo/Repo.cpp:804 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "キーを一覧表示できません: %s" + +-#: libdnf/repo/Repo.cpp:833 ++#: 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:886 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s はインポート済みです" + +-#: libdnf/repo/Repo.cpp:914 ++#: 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:1162 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "復元中: repo '%s' はスキップされました、metalink はありません。" + +-#: libdnf/repo/Repo.cpp:1181 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." +-msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" ++msgstr "" ++"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。" + +-#: libdnf/repo/Repo.cpp:1210 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。" + +-#: libdnf/repo/Repo.cpp:1235 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "復元中: '%s' は復元できます - repomd が一致します。" + +-#: libdnf/repo/Repo.cpp:1237 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." +-msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" ++msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1261 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s" +- +-#: libdnf/repo/Repo.cpp:1275 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "ディレクトリー \"%s\" を作成できません: %s" + +-#: libdnf/repo/Repo.cpp:1298 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s" + +-#: libdnf/repo/Repo.cpp:1321 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: キャッシュを使用: %s" + +-#: libdnf/repo/Repo.cpp:1333 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" ++msgstr "" ++"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + +-#: libdnf/repo/Repo.cpp:1337 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: リモートからダウンロード中: %s" + +-#: libdnf/repo/Repo.cpp:1344 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s" + +-#: libdnf/repo/Repo.cpp:1370 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました" + +-#: libdnf/repo/Repo.cpp:1398 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "persistdir \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1775 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume は byterangestart param と同時に使用できません" + +-#: libdnf/repo/Repo.cpp:1792 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget の初期化に失敗しました: %s" + +-#: libdnf/repo/Repo.cpp:1898 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "%s を開くことができません: %s" + +-#: libdnf/repo/Repo.cpp:1942 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id %ld を伴うログハンドラーは存在しません" +@@ -1084,6 +1158,7 @@ msgstr "完了したトランザクションにトランザクションアイテ + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" + msgstr "" ++"データベースが破損しています。テーブル 'config' の行 'version' がありません" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1106,8 +1181,8 @@ msgstr "TransactionItem の状態は設定されていません: %s" + msgid "Can't add console output to unsaved transaction" + msgstr "未保存のトランザクションにコンソールの出力を追加できません" + ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました" ++ + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo に対する不正な id: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB チェックサムの計算に失敗しました" +diff --git a/po/ko.po b/po/ko.po +index 505d1e15..5c972958 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -3,20 +3,22 @@ + # This file is distributed under the same license as the PACKAGE package. + # Ludek Janda , 2018. #zanata + # simmon , 2021. ++# Kim InSoo , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2021-05-16 09:18-0400\n" +-"PO-Revision-Date: 2021-04-24 16:02+0000\n" +-"Last-Translator: simmon \n" +-"Language-Team: Korean \n" ++"POT-Creation-Date: 2022-02-28 10:38+0100\n" ++"PO-Revision-Date: 2022-03-01 07:37+0000\n" ++"Last-Translator: Kim InSoo \n" ++"Language-Team: Korean \n" + "Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.6\n" ++"X-Generator: Weblate 4.11\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -44,13 +46,13 @@ msgstr "잘못된 값" + + #: libdnf/conf/ConfigMain.cpp:207 + msgid "value 1 is not allowed" +-msgstr "값 1은 허용하지 않습니다" ++msgstr "값 1은 허용되지 않습니다" + + #: libdnf/conf/ConfigMain.cpp:209 + msgid "negative value is not allowed" +-msgstr "음수 값은 허용하지 않습니다" ++msgstr "음수 값은 허용되지 않습니다" + +-#: libdnf/conf/ConfigMain.cpp:341 ++#: libdnf/conf/ConfigMain.cpp:343 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "백분율 '%s' 범위를 벗어났습니다" +@@ -105,127 +107,153 @@ msgstr "변환 할 수 없습니다 '%s'초까지" + msgid "GetValue(): Value not set" + msgstr "GetValue () : 값이 설정되지 않았습니다" + +-#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 + #, 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 ++#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" +-msgstr "모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었" ++"습니다" + +-#: libdnf/dnf-context.cpp:3253 ++#: libdnf/dnf-context.cpp:3263 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "기본설정에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3256 ++#: libdnf/dnf-context.cpp:3266 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" +-msgstr "최신 모듈: %s 에 모듈러 의존성 문제" ++msgstr "최신 모듈에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3260 ++#: libdnf/dnf-context.cpp:3270 + #, 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 ++#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 ++#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 ++#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 ++#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "인수 %s를 해결 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3301 ++#: libdnf/dnf-context.cpp:3300 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'" + +-#: libdnf/dnf-context.cpp:3315 ++#: libdnf/dnf-context.cpp:3314 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" + +-#: libdnf/dnf-context.cpp:3326 ++#: libdnf/dnf-context.cpp:3325 + #, 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 ++#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 ++#: libdnf/dnf-context.cpp:3633 + msgid "No modular data available" + msgstr "모듈러 자료를 이용 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3374 ++#: libdnf/dnf-context.cpp:3373 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "인수: '%s'에 불필요한 정보를 무시하기" + +-#: libdnf/dnf-context.cpp:3412 ++#: libdnf/dnf-context.cpp:3411 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 동안에 발생하는 문제" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 " ++"문제" + +-#: libdnf/dnf-context.cpp:3424 +-msgid "Problems appeared for module enable request" +-msgstr "모듈 활성화 요청에 나타난 문제" ++#: libdnf/dnf-context.cpp:3423 ++msgid "Problems appeared for module enable request:" ++msgstr "모듈 활성화 요청에 나타난 문제:" ++ ++#: libdnf/dnf-context.cpp:3518 ++#, c-format ++msgid "No active module packages found for module spec '%s'" ++msgstr "모듈 상세 '%s'를 위한 활성 모듈 꾸러미가 없습니다" + +-#. this really should never happen; unless the modular repodata is corrupted +-#: libdnf/dnf-context.cpp:3496 ++#: libdnf/dnf-context.cpp:3523 + #, c-format +-msgid "Failed to parse module artifact NEVRA '%s'" +-msgstr "모듈 artifact NERVRA '%s'를 구문 분석하는데 실패하였습니다" ++msgid "Cannot install module '%s' from fail-safe repository" ++msgstr "실패-방지 저장소에서 모듈 '%s'를 설치 할 수 없습니다" + + #: libdnf/dnf-context.cpp:3530 +-msgid "Problems appeared for module install request" +-msgstr "모듈 설치 요청을 위해 나타난 문제" ++#, c-format ++msgid "No profile found matching '%s'" ++msgstr "'%s'와 일치하는 프로파일을 찾을 수 없습니다" ++ ++#: libdnf/dnf-context.cpp:3584 ++#, c-format ++msgid "No match for package '%s' for module spec %s" ++msgstr "꾸러미 '%s'가(모듈 상세 %s에 대한) 일치하지 않습니다" + +-#: libdnf/dnf-context.cpp:3590 +-msgid "Problems appeared for module reset request" +-msgstr "모듈 초기화 요청을 위해 나나탄 문제" ++#: libdnf/dnf-context.cpp:3595 ++#, c-format ++msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" ++msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치 중에 발생하는 문제" + +-#: libdnf/dnf-context.cpp:3592 +-msgid "Problems appeared for module disable request" +-msgstr "모듈 비활성화 요청을 위해 나타난 문제" ++#: libdnf/dnf-context.cpp:3604 ++msgid "Problems appeared for module install request:" ++msgstr "모듈 설치 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3628 ++#: libdnf/dnf-context.cpp:3663 ++msgid "Problems appeared for module reset request:" ++msgstr "모듈 초기화 요청을 위해 나타난 문제:" ++ ++#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++msgid "Problems appeared for module disable request:" ++msgstr "모듈 비활성화 요청을 위해 나타난 문제:" ++ ++#: libdnf/dnf-context.cpp:3755 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다" + +-#: libdnf/dnf-context.cpp:3632 ++#: libdnf/dnf-context.cpp:3759 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "활성화된 모듈 스트림을 전환 할 수 없습니다.\n" +-"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치할 수 있습니다." ++"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 " ++"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니" ++"다." + +-#: libdnf/dnf-goal.cpp:85 ++#: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " + msgstr "연결을 해제 할 수 없습니다; " + +-#: libdnf/dnf-goal.cpp:87 ++#: libdnf/dnf-goal.cpp:109 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "%i 발견 된 문제 :\n" + +-#: libdnf/dnf-goal.cpp:95 ++#: libdnf/dnf-goal.cpp:117 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " 문제 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:97 ++#: libdnf/dnf-goal.cpp:119 + #, c-format + msgid " Problem: %s\n" + msgstr " 문제: %s\n" +@@ -235,7 +263,9 @@ msgstr " 문제: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "모듈 꾸러미 '%s'를 위하여 사용 가능한 메타 데이터가 없으며; 시스템에 설치할 수 없습니다" ++msgstr "" ++"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 " ++"할 수 없습니다" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -274,7 +304,8 @@ msgstr "연결 실행 오류 : %s" + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" ++msgstr "" ++"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -290,84 +321,84 @@ msgstr "꾸러미를 찾지 못했습니다. %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 ++#: libdnf/dnf-sack.cpp:394 + msgid "failed to add solv" + msgstr "solv를 추가하지 못했습니다" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:413 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s에 %1$s 문자열이 없습니다" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:423 + #, c-format + msgid "failed to open: %s" + msgstr "열지 못했습니다 : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:502 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:512 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "여는 tmp 파일을 열지 못했습니다. %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:524 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() 실패한 쓰기 자료: %i" + +-#: libdnf/dnf-sack.cpp:542 ++#: libdnf/dnf-sack.cpp:541 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:606 + #, c-format + msgid "can not create temporary file %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:624 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) 실패하였습니다: %2$d" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:679 + msgid "null repo md file" + msgstr "null repo md 파일" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:688 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "파일을 읽을 수 없습니다. %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 ++#: libdnf/dnf-sack.cpp:702 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() 실패하였습니다." + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:715 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다." + +-#: libdnf/dnf-sack.cpp:729 ++#: libdnf/dnf-sack.cpp:728 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:795 + msgid "failed to auto-detect architecture" + msgstr "구조 자동 검색에 실패했습니다" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:960 + #, c-format + msgid "failed creating cachedir %s" + msgstr "캐시 된 생성 실패 %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1737 + msgid "failed loading RPMDB" + msgstr "RPMDB로드 실패" + +-#: libdnf/dnf-sack.cpp:2462 ++#: libdnf/dnf-sack.cpp:2521 + #, c-format + msgid "No module defaults found: %s" + msgstr "모듈 기본 설정을 찾을 수 없습니다: %s" +@@ -396,64 +427,73 @@ msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$ + msgid "already at 100%% state [%s]" + msgstr "이미 100 %% 상태 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "보장하지 못함 %1$s 레포로서 %2$s 찾을 수 없음 (%3$i repos loaded)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "신뢰할 수 없는지 확인하지 못했습니다. " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "에 대한 내려받기 파일 %s 찾을 수 없음" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "루트를 설정하지 못했습니다" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "%i 연결 실행 중 오류" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm 데이타베이스를 여는 동안 오류 %i가 발생했습니다" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환하지 않습니다." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "오류 %i 실행중인 연결" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "연결이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)" +@@ -554,7 +594,7 @@ msgstr "%s 와 %s 모두 설치 할 수 없습니다" + #: libdnf/goal/Goal.cpp:107 + #, c-format + msgid "package %s conflicts with %s provided by %s" +-msgstr "제공된 꾸러미 %s 은 %s에 의해 %s 와 충돌합니다" ++msgstr "꾸러미 %s은 %s에서 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:108 + #, c-format +@@ -574,12 +614,12 @@ msgstr "꾸러미 %s가 %s에 의해 %s가 암시적으로 폐기되었습니다 + #: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "꾸러미 %s에 %s가 필요하지만 공급 업체 없어 설치할 수 없습니다" ++msgstr "꾸러미 %s는 %s가 필요하지만, 공급자가 없어 설치 할 수 없습니다" + + #: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "꾸러미 %s가 %s와 자체적으로 충돌합니다" ++msgstr "꾸러미 %s가 자체적으로 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:113 + #, c-format +@@ -622,12 +662,12 @@ msgstr "모듈 %s 에 필요한 %s 가 제공되지 않았습니다" + #: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "%s 와 %s 모듈을 모두 설치할 수 없습니다" ++msgstr "모듈 %s 와 %s를 모두 설치 할 수 없습니다" + + #: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "모듈 %s 가 %s와 함께 %s와 충돌합니다" ++msgstr "모듈 %s가 %s에 의해 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:135 + #, c-format +@@ -659,42 +699,42 @@ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" + msgid "both module %s and %s obsolete %s" + msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:1055 ++#: libdnf/goal/Goal.cpp:1141 + msgid "no solver set" + msgstr "solver 설정 없음" + +-#: libdnf/goal/Goal.cpp:1060 ++#: libdnf/goal/Goal.cpp:1146 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s 절대값을 생성을 실패하였습니다" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1153 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다" + +-#: libdnf/goal/Goal.cpp:1079 ++#: libdnf/goal/Goal.cpp:1165 + msgid "no solv in the goal" + msgstr "목표에 solv가 없다" + +-#: libdnf/goal/Goal.cpp:1081 ++#: libdnf/goal/Goal.cpp:1167 + msgid "no solution, cannot remove protected package" + msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음" + +-#: libdnf/goal/Goal.cpp:1084 ++#: libdnf/goal/Goal.cpp:1170 + msgid "no solution possible" + msgstr "해결책 없음" + +-#: libdnf/goal/Goal.cpp:1210 ++#: libdnf/goal/Goal.cpp:1296 + msgid "Problem: " + msgstr "문제: " + +-#: libdnf/goal/Goal.cpp:1215 ++#: libdnf/goal/Goal.cpp:1301 + #, c-format + msgid "Problem %d: " + msgstr "문제 %d: " + +-#: libdnf/goal/Goal.cpp:1542 ++#: libdnf/goal/Goal.cpp:1634 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. " +@@ -719,30 +759,30 @@ msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s" + msgid "cannot stat path %1$s: %2$s" + msgstr "경로 %1$s: %2$s stat 할 수 없습니다" + +-#: libdnf/module/ModulePackage.cpp:573 ++#: libdnf/module/ModulePackage.cpp:604 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "잘못된 형식의 기반 모듈: %s" + +-#: libdnf/module/ModulePackage.cpp:588 ++#: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" + msgstr "사용 가능한 꾸러미로 제공되는 다중 모듈 기반\n" + +-#: libdnf/module/ModulePackage.cpp:601 ++#: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" + msgstr "설치된 꾸러미로 제공되는 다중 모듈 기반\n" + +-#: libdnf/module/ModulePackage.cpp:628 ++#: libdnf/module/ModulePackage.cpp:659 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" + msgstr "%s 실패한: %s 에서 기반(Platform) 모듈 감지" + +-#: libdnf/module/ModulePackage.cpp:637 ++#: libdnf/module/ModulePackage.cpp:668 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "%s에서 PLATFORM_ID가 누락됨" + +-#: libdnf/module/ModulePackage.cpp:642 ++#: libdnf/module/ModulePackage.cpp:673 + msgid "No valid Platform ID detected" + msgstr "유효한 기반(Platform) ID가 없습니다" + +@@ -754,63 +794,65 @@ msgstr "모듈 '%s’를 위해 다중 스트림을 활성화 할 수 없습니 + #: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "repo '%s: %s'와 기본 설정이 충돌합니다" ++msgstr "저장소 '%s: %s'와 기본 설정이 충돌합니다" + +-#: libdnf/module/ModulePackageContainer.cpp:918 ++#: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" + msgstr "모듈 프로파일 설치:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:933 ++#: libdnf/module/ModulePackageContainer.cpp:932 + msgid "Disabling module profiles:\n" + msgstr "모듈 프로파일 비활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:948 ++#: libdnf/module/ModulePackageContainer.cpp:947 + msgid "Enabling module streams:\n" + msgstr "모듈 스트림 활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:962 ++#: libdnf/module/ModulePackageContainer.cpp:961 + msgid "Switching module streams:\n" + msgstr "모듈 스트림 전환:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:980 ++#: libdnf/module/ModulePackageContainer.cpp:979 + msgid "Disabling modules:\n" + msgstr "모듈 비활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:991 ++#: libdnf/module/ModulePackageContainer.cpp:990 + msgid "Resetting modules:\n" + msgstr "모듈 재설정:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1674 ++#: libdnf/module/ModulePackageContainer.cpp:1704 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "'%s'에서 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1680 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1763 ++#: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1779 ++#: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "모듈식 Fail Safe 자료를 '%s'에 저장 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1802 ++#: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1834 ++#: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "'%s:%s'에 모듈 폐기를 적용 할 수 없다 왜냐하면 목표 모듈 '%s' 을 사용 할 수 없기 때문입니다" ++msgstr "" ++"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 " ++"되어 있기 때문에)" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -837,10 +879,10 @@ msgstr "기본값을 최신화에 실패하였습니다: %s" + msgid "Failed to upgrade streams: %s" + msgstr "스트림 최신화에 실패하였습니다: %s" + +-#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "모듈 폐기를 검색 할 수 없습니다 왜냐하면 스트림 일치 %s: %s 가 없습니다" ++msgstr "%s: %s 일치하는 스트림이 없기 때문에 구식 모듈을 검색 할 수 없습니다" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -883,8 +925,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 " +-"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요." ++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 " ++"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 " ++"'=' 연산자를 사용하세요." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -897,21 +940,24 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "저장소 '%s'는 지원하지 않는 유형: 'type=%s'이며, 건너뜁니다." + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1382 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주" ++"세요" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" ++msgstr "" ++"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" + + #: libdnf/repo/Repo.cpp:548 + msgid "'proxy_username' is set but not 'proxy_password'" +@@ -932,128 +978,134 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907 ++#: 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:740 libdnf/repo/Repo.cpp:804 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "열쇠를 나열 할 수 없습니다 : %s" + +-#: libdnf/repo/Repo.cpp:833 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "repo '%s': %sf 를 위해 GPG key 가져오기에 실패하였습니다" + +-#: libdnf/repo/Repo.cpp:886 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s를 이미 가져왔습니다" + +-#: libdnf/repo/Repo.cpp:914 ++#: 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:1162 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." +-msgstr "부활 : repo '%s'건너 뛰었습니다." ++msgstr "부활: repo '%s' 건너 뛰었으며, 메타링크가 없습니다." + +-#: libdnf/repo/Repo.cpp:1181 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." +-msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다." ++msgstr "부활: repo '%s'건너 뛰었으며, 사용 가능한 해쉬가 없습니다." + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." +-msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합." ++msgstr "부활 : '%s'에 실패하고, %s 합과 일치하지 않음." + +-#: libdnf/repo/Repo.cpp:1210 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." +-msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다." ++msgstr "부활: '%s'는 부활 할 수 있습니다 - 메타링크 체크섬이 일치합니다." + +-#: libdnf/repo/Repo.cpp:1235 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." +-msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다." ++msgstr "부활: '%s'는 부활 할 수 있습니다 - repomd가 일치합니다." + +-#: libdnf/repo/Repo.cpp:1237 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." +-msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd." ++msgstr "부활: '%s'에 실패하고, 일치하지 않은 repomd." + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "repo 목적지 디렉토리 \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1261 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s" +- +-#: libdnf/repo/Repo.cpp:1275 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1298 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1321 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" +-msgstr "repo : 캐시 사용 : %s" ++msgstr "repo: 캐쉬 사용: %s" + +-#: libdnf/repo/Repo.cpp:1333 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "캐시 만 사용 가능하지만 '%s'" ++msgstr "캐쉬만 사용 가능하지만 '%s'를 위해 캐쉬가 없습니다" + +-#: libdnf/repo/Repo.cpp:1337 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" +-msgstr "repo : 원격에서 내려받기 중 : %s" ++msgstr "repo: 원격에서 내려받기 중: %s" + +-#: libdnf/repo/Repo.cpp:1344 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" +-msgstr "repo '%s': %s 를 위해 메타데이타 내려받기에 실패하였습니다" ++msgstr "repo를 위한 메타자료 내려받기에 실패하였습니다 '%s': %s" + +-#: libdnf/repo/Repo.cpp:1370 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" +-msgstr "getCachedir () : SHA256 계산에 실패했습니다" ++msgstr "getCachedir(): SHA256 계산에 실패했습니다" + +-#: libdnf/repo/Repo.cpp:1398 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "persistdir \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1775 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "이력서는 byterangestart 매개 변수와 동시에 사용 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1792 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" +-msgstr "PackageTarget 초기화에 실패했습니다 : %s" ++msgstr "PackageTarget 초기화에 실패했습니다: %s" + +-#: libdnf/repo/Repo.cpp:1898 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" +-msgstr "열 수 없다 %s: %s" ++msgstr "열 수 없습니다 %s: %s" + +-#: libdnf/repo/Repo.cpp:1942 ++#: 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" +@@ -1079,11 +1131,12 @@ msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" ++msgstr "" ++"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +-msgstr "변형 : persist dir 기록을 열 수 없습니다" ++msgstr "변형: persist dir 기록을 열 수 없습니다" + + #: libdnf/transaction/Transformer.cpp:694 + msgid "Couldn't find a history database" +@@ -1102,5 +1155,5 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s" + msgid "Can't add console output to unsaved transaction" + msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다" + +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB 체크섬 계산 실패" ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함" +diff --git a/po/libdnf.pot b/po/libdnf.pot +index 7ab5b67e..d7fb56ad 100644 +--- a/po/libdnf.pot ++++ b/po/libdnf.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2021-06-13 09:18-0400\n" ++"POT-Creation-Date: 2022-02-28 10:38+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -50,7 +50,7 @@ msgstr "" + msgid "negative value is not allowed" + msgstr "" + +-#: libdnf/conf/ConfigMain.cpp:341 ++#: libdnf/conf/ConfigMain.cpp:343 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -105,122 +105,122 @@ msgstr "" + msgid "GetValue(): Value not set" + msgstr "" + +-#: libdnf/dnf-context.cpp:3173 libdnf/dnf-context.cpp:3182 ++#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "" + +-#: libdnf/dnf-context.cpp:3191 libdnf/dnf-context.cpp:3209 ++#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3258 ++#: libdnf/dnf-context.cpp:3263 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3261 ++#: libdnf/dnf-context.cpp:3266 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3265 ++#: libdnf/dnf-context.cpp:3270 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3288 libdnf/dnf-context.cpp:3312 +-#: libdnf/dnf-context.cpp:3323 libdnf/dnf-context.cpp:3362 +-#: libdnf/dnf-context.cpp:3378 libdnf/dnf-context.cpp:3410 +-#: libdnf/dnf-context.cpp:3459 libdnf/dnf-context.cpp:3469 ++#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 ++#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 ++#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 ++#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3295 ++#: libdnf/dnf-context.cpp:3300 + #, c-format + msgid "" + "Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3309 ++#: libdnf/dnf-context.cpp:3314 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3320 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3351 libdnf/dnf-context.cpp:3447 +-#: libdnf/dnf-context.cpp:3620 ++#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 ++#: libdnf/dnf-context.cpp:3633 + msgid "No modular data available" + msgstr "" + +-#: libdnf/dnf-context.cpp:3368 ++#: libdnf/dnf-context.cpp:3373 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3406 ++#: libdnf/dnf-context.cpp:3411 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3418 ++#: libdnf/dnf-context.cpp:3423 + msgid "Problems appeared for module enable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3513 ++#: libdnf/dnf-context.cpp:3518 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3523 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" + msgstr "" + +-#: libdnf/dnf-context.cpp:3525 ++#: libdnf/dnf-context.cpp:3530 + #, c-format + msgid "No profile found matching '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3571 ++#: libdnf/dnf-context.cpp:3584 + #, c-format + msgid "No match for package '%s' for module spec %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3582 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3591 ++#: libdnf/dnf-context.cpp:3604 + msgid "Problems appeared for module install request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3650 ++#: libdnf/dnf-context.cpp:3663 + msgid "Problems appeared for module reset request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3651 ++#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 + msgid "Problems appeared for module disable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3689 ++#: libdnf/dnf-context.cpp:3755 + #, c-format + msgid "" + "The operation would result in switching of module '%s' stream '%s' to stream " + "'%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3693 ++#: libdnf/dnf-context.cpp:3759 + 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 " +@@ -228,23 +228,23 @@ msgid "" + "reset the module, you can install the other stream." + msgstr "" + +-#: libdnf/dnf-goal.cpp:85 ++#: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " + msgstr "" + +-#: libdnf/dnf-goal.cpp:87 ++#: libdnf/dnf-goal.cpp:109 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "" + msgstr[1] "" + +-#: libdnf/dnf-goal.cpp:95 ++#: libdnf/dnf-goal.cpp:117 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr "" + +-#: libdnf/dnf-goal.cpp:97 ++#: libdnf/dnf-goal.cpp:119 + #, c-format + msgid " Problem: %s\n" + msgstr "" +@@ -309,84 +309,84 @@ msgstr "" + msgid "could not add erase element %1$s(%2$i)" + msgstr "" + +-#: libdnf/dnf-sack.cpp:395 ++#: libdnf/dnf-sack.cpp:394 + msgid "failed to add solv" + msgstr "" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:413 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:423 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:502 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:512 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:524 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: libdnf/dnf-sack.cpp:542 ++#: libdnf/dnf-sack.cpp:541 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:606 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:624 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:679 + msgid "null repo md file" + msgstr "" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:688 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:703 ++#: libdnf/dnf-sack.cpp:702 + msgid "repo_add_solv() has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:715 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:729 ++#: libdnf/dnf-sack.cpp:728 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:795 + msgid "failed to auto-detect architecture" + msgstr "" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:960 + #, c-format + msgid "failed creating cachedir %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1737 + msgid "failed loading RPMDB" + msgstr "" + +-#: libdnf/dnf-sack.cpp:2462 ++#: libdnf/dnf-sack.cpp:2521 + #, c-format + msgid "No module defaults found: %s" + msgstr "" +@@ -415,64 +415,73 @@ msgstr "" + msgid "already at 100%% state [%s]" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -678,42 +687,42 @@ msgstr "" + msgid "both module %s and %s obsolete %s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1055 ++#: libdnf/goal/Goal.cpp:1141 + msgid "no solver set" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1060 ++#: libdnf/goal/Goal.cpp:1146 + #, c-format + msgid "failed to make %s absolute" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1153 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1079 ++#: libdnf/goal/Goal.cpp:1165 + msgid "no solv in the goal" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1081 ++#: libdnf/goal/Goal.cpp:1167 + msgid "no solution, cannot remove protected package" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1084 ++#: libdnf/goal/Goal.cpp:1170 + msgid "no solution possible" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1210 ++#: libdnf/goal/Goal.cpp:1296 + msgid "Problem: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1215 ++#: libdnf/goal/Goal.cpp:1301 + #, c-format + msgid "Problem %d: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1542 ++#: libdnf/goal/Goal.cpp:1634 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" +@@ -738,30 +747,30 @@ msgstr "" + msgid "cannot stat path %1$s: %2$s" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:573 ++#: libdnf/module/ModulePackage.cpp:604 + #, c-format + msgid "Invalid format of Platform module: %s" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:588 ++#: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:601 ++#: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:628 ++#: libdnf/module/ModulePackage.cpp:659 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:637 ++#: libdnf/module/ModulePackage.cpp:668 + #, c-format + msgid "Missing PLATFORM_ID in %s" + msgstr "" + +-#: libdnf/module/ModulePackage.cpp:642 ++#: libdnf/module/ModulePackage.cpp:673 + msgid "No valid Platform ID detected" + msgstr "" + +@@ -799,32 +808,32 @@ msgstr "" + msgid "Resetting modules:\n" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1673 ++#: libdnf/module/ModulePackageContainer.cpp:1704 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1679 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1762 ++#: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1778 ++#: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1801 ++#: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "" + +-#: libdnf/module/ModulePackageContainer.cpp:1833 ++#: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " +@@ -856,7 +865,7 @@ msgstr "" + msgid "Failed to upgrade streams: %s" + msgstr "" + +-#: libdnf/module/modulemd/ModuleMetadata.cpp:219 ++#: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" + msgstr "" +@@ -914,7 +923,7 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1382 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "" +@@ -949,125 +958,131 @@ msgstr "" + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907 ++#: 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 "" ++ ++#: 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 "" + +-#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804 ++#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 + #, c-format + msgid "can not list keys: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:833 ++#: libdnf/repo/Repo.cpp:837 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:886 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: libdnf/repo/Repo.cpp:914 ++#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#, c-format ++msgid "Failed to create directory \"%s\": %d - %s" ++msgstr "" ++ ++#: libdnf/repo/Repo.cpp:924 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1162 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1181 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1210 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1235 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1237 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1261 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "" +- +-#: libdnf/repo/Repo.cpp:1275 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1298 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1321 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1333 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1337 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1344 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1370 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1398 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1775 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1792 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1898 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1942 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 9fb6834d..864983a9 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,20 +1,21 @@ + # Charles Lee , 2017. #zanata, 2020, 2021. +-# Ludek Janda , 2018. #zanata +-# Qiyu Yan , 2021. ++# Ludek Janda , 2018. #zanata, 2021. ++# Sundeep Anand , 2021, 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2021-05-16 09:18-0400\n" +-"PO-Revision-Date: 2021-04-23 08:02+0000\n" +-"Last-Translator: Charles Lee \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2022-02-28 10:38+0100\n" ++"PO-Revision-Date: 2022-03-02 10:16+0000\n" ++"Last-Translator: Sundeep Anand \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.6\n" ++"X-Generator: Weblate 4.11\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -33,7 +34,7 @@ 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:204 libdnf/conf/OptionEnum.cpp:83 + #: libdnf/conf/OptionNumber.cpp:88 +@@ -41,16 +42,14 @@ msgid "invalid value" + msgstr "无效值" + + #: libdnf/conf/ConfigMain.cpp:207 +-#, fuzzy +-#| msgid "'%s' is not an allowed value" + msgid "value 1 is not allowed" +-msgstr "'%s' 不是一个允许的值" ++msgstr "1 不是一个被允许的值" + + #: libdnf/conf/ConfigMain.cpp:209 + msgid "negative value is not allowed" +-msgstr "" ++msgstr "负数值不被允许" + +-#: libdnf/conf/ConfigMain.cpp:341 ++#: libdnf/conf/ConfigMain.cpp:343 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "百分数 '%s' 超出范围" +@@ -58,23 +57,23 @@ msgstr "百分数 '%s' 超出范围" + #: 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: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:64 libdnf/conf/OptionStringList.cpp:59 + #, c-format + msgid "'%s' is not an allowed value" +-msgstr "'%s' 不是一个允许的值" ++msgstr "'%s' 不是一个允许的值" + + #: libdnf/conf/OptionNumber.cpp:73 + #, c-format +@@ -105,128 +104,148 @@ msgstr "无法把 '%s' 转换为秒" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 值没有设置" + +-#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179 ++#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 + #, 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 ++#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 + #, 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 ++#: libdnf/dnf-context.cpp:3263 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "默认设置的模块依赖性问题:%s" + +-#: libdnf/dnf-context.cpp:3256 +-#, fuzzy, c-format +-#| msgid "some dependency problem" ++#: libdnf/dnf-context.cpp:3266 ++#, c-format + msgid "Modular dependency problem with the latest modules: %s" +-msgstr "一些依赖问题" ++msgstr "最新模块的模块化依赖关系问题: %s" + +-#: libdnf/dnf-context.cpp:3260 +-#, fuzzy, c-format +-#| msgid "some dependency problem" ++#: libdnf/dnf-context.cpp:3270 ++#, c-format + msgid "Modular dependency problem: %s" +-msgstr "一些依赖问题" ++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 +-#, fuzzy, c-format +-#| msgid "Failed to resolve: %s" ++#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 ++#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 ++#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 ++#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#, c-format + msgid "Unable to resolve argument '%s'" +-msgstr "无法解析: %s" ++msgstr "无法解析参数 '%s'" + +-#: libdnf/dnf-context.cpp:3301 ++#: libdnf/dnf-context.cpp:3300 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "只需要模块名。忽略参数 '%s' 中的无用信息" + +-#: libdnf/dnf-context.cpp:3315 ++#: libdnf/dnf-context.cpp:3314 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "无法重置模块 '%s':已修改的模块状态" + +-#: libdnf/dnf-context.cpp:3326 ++#: libdnf/dnf-context.cpp:3325 + #, 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 ++#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 ++#: libdnf/dnf-context.cpp:3633 + msgid "No modular data available" +-msgstr "" ++msgstr "没有可用的模块数据" + +-#: libdnf/dnf-context.cpp:3374 ++#: libdnf/dnf-context.cpp:3373 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" +-msgstr "" ++msgstr "忽略参数:\"%s\" 中不需要的信息" + +-#: libdnf/dnf-context.cpp:3412 ++#: libdnf/dnf-context.cpp:3411 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "" ++msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s" + +-#: libdnf/dnf-context.cpp:3424 +-msgid "Problems appeared for module enable request" +-msgstr "" ++#: libdnf/dnf-context.cpp:3423 ++msgid "Problems appeared for module enable request:" ++msgstr "模块启用请求出现问题:" + +-#. this really should never happen; unless the modular repodata is corrupted +-#: libdnf/dnf-context.cpp:3496 ++#: libdnf/dnf-context.cpp:3518 + #, c-format +-msgid "Failed to parse module artifact NEVRA '%s'" +-msgstr "" ++msgid "No active module packages found for module spec '%s'" ++msgstr "未找到模块规范 '%s' 的活动模块包" ++ ++#: libdnf/dnf-context.cpp:3523 ++#, c-format ++msgid "Cannot install module '%s' from fail-safe repository" ++msgstr "无法从故障保护存储库安装模块 '%s'" + + #: libdnf/dnf-context.cpp:3530 +-msgid "Problems appeared for module install request" +-msgstr "" ++#, c-format ++msgid "No profile found matching '%s'" ++msgstr "未找到匹配 '%s' 的配置文件" + +-#: libdnf/dnf-context.cpp:3590 +-msgid "Problems appeared for module reset request" +-msgstr "" ++#: libdnf/dnf-context.cpp:3584 ++#, c-format ++msgid "No match for package '%s' for module spec %s" ++msgstr "没有匹配模块规范 %s 的包 '%s'" + +-#: libdnf/dnf-context.cpp:3592 +-msgid "Problems appeared for module disable request" +-msgstr "" ++#: libdnf/dnf-context.cpp:3595 ++#, c-format ++msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" ++msgstr "在安装模块 '%1$s' 流 '%2$s'时的问题:%3$s" + +-#: libdnf/dnf-context.cpp:3628 ++#: libdnf/dnf-context.cpp:3604 ++msgid "Problems appeared for module install request:" ++msgstr "模块安装请求出现问题:" ++ ++#: libdnf/dnf-context.cpp:3663 ++msgid "Problems appeared for module reset request:" ++msgstr "模块重置请求出现问题:" ++ ++#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++msgid "Problems appeared for module disable request:" ++msgstr "模块禁用请求出现问题:" ++ ++#: libdnf/dnf-context.cpp:3755 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" +-msgstr "" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" ++msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'" + +-#: libdnf/dnf-context.cpp:3632 ++#: libdnf/dnf-context.cpp:3759 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" ++"无法切换一个模块已启用的流。 \n" ++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' " ++"命令重置模块。在重置模块后就可以安装其他流。" + +-#: libdnf/dnf-goal.cpp:85 ++#: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +-msgstr "无法 depsolve 事务: " ++msgstr "无法 depsolve 事务; " + +-#: libdnf/dnf-goal.cpp:87 ++#: libdnf/dnf-goal.cpp:109 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" + msgstr[0] "发现 %i 问题:\n" + +-#: libdnf/dnf-goal.cpp:95 ++#: libdnf/dnf-goal.cpp:117 + #, c-format + msgid " Problem %1$i: %2$s\n" + msgstr " 问题 %1$i: %2$s\n" + +-#: libdnf/dnf-goal.cpp:97 ++#: libdnf/dnf-goal.cpp:119 + #, c-format + msgid " Problem: %s\n" + msgstr " 问题: %s\n" +@@ -236,7 +255,7 @@ msgstr " 问题: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "对于模块软件包 '%s' 没有可用的模块元数据,它将不能被安装至此系统上" ++msgstr "模块软件包 '%s' 没有可用的模块元数据,它将不能被安装至此系统上" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -291,87 +310,87 @@ msgstr "无法找到软件包 %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "无法添加删除元素 %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 ++#: libdnf/dnf-sack.cpp:394 + msgid "failed to add solv" + msgstr "添加 solv 失败" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:413 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "没有为 %2$s 的 %1$s 字符串" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:423 + #, c-format + msgid "failed to open: %s" + msgstr "打开失败:%s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:502 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "不能创建临时文件: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:512 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打开 tmp 文件失败: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:524 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() 写数据失败: %i" + +-#: libdnf/dnf-sack.cpp:542 ++#: libdnf/dnf-sack.cpp:541 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() 重新加载写的 solv 文件失败" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:606 + #, c-format + msgid "can not create temporary file %s" + msgstr "不能创建临时文件 %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:624 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) 已失败: %2$d" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:679 + msgid "null repo md file" + msgstr "null repo md 文件" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:688 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "不能读文件 %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 ++#: libdnf/dnf-sack.cpp:702 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() 已失败。" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:715 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "加载 MD_TYPE_PRIMARY 失败。" + +-#: libdnf/dnf-sack.cpp:729 ++#: libdnf/dnf-sack.cpp:728 + msgid "repo_add_repomdxml/rpmmd() has failed." + msgstr "repo_add_repomdxml/rpmmd() 已失败。" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:795 + msgid "failed to auto-detect architecture" + msgstr "自动检测架构失败" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:960 + #, c-format + msgid "failed creating cachedir %s" + msgstr "无法创建 cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1737 + msgid "failed loading RPMDB" + msgstr "无法加载 RPMDB" + +-#: libdnf/dnf-sack.cpp:2462 ++#: libdnf/dnf-sack.cpp:2521 + #, c-format + msgid "No module defaults found: %s" +-msgstr "" ++msgstr "没有找到模块默认设置:%s" + + #: libdnf/dnf-state.cpp:1184 + #, c-format +@@ -397,64 +416,73 @@ msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "已是 100%% 状态 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "在尝试确保软件包 %s 时源没有设置" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " +-msgstr "检查不被信任失败: " ++msgstr "检查不被信任失败 : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "没有找到下载的文件 %s" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "软件包 %1$s 不能被验证,repo %2$s 启用了 GPG: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "无法为 CacheDir 获得值" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " +-msgstr "无法为 %s 获得文件系统可用空间的大小: " ++msgstr "无法为 %s 获得文件系统可用空间的大小: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "无法为 %s 获得文件系统可用空间的大小" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "设置 root 失败" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" +-msgstr "错误 %i 运行事务测试" ++msgstr "运行事务测试时错误 %i" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "打开 rpm 数据库时错误 %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie()函数没有返回 rpm 数据库的 cookie。" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" +-msgstr "错误 %i 运行事务" ++msgstr "运行事务时错误 %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "事务没有进入写阶段,但没有返回错误(%i)" +@@ -545,51 +573,51 @@ msgstr "软件包 %s 被排除过滤过滤掉" + #: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "" ++msgstr "没有东西可提供 %s(%s 需要)" + + #: libdnf/goal/Goal.cpp:106 + #, c-format + msgid "cannot install both %s and %s" +-msgstr "" ++msgstr "无法同时安装 %s 和 %s" + + #: 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:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 取代了 %s(由 %s 提供)" + + #: 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:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)" + + #: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "软件包 %s 需要 %s,但没有提供者可以被安装" + + #: libdnf/goal/Goal.cpp:112 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "软件包 %s 与自己提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:113 + #, c-format + msgid "both package %s and %s obsolete %s" +-msgstr "" ++msgstr "软件包 %s 和 %s 同时取代了 %s" + + #: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +-msgstr "" ++msgstr "已安装模块的问题 " + + #: libdnf/goal/Goal.cpp:123 + #, c-format +@@ -598,110 +626,107 @@ msgstr "模块 %s 不存在" + + #: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " +-msgstr "" ++msgstr "无法为模块安装最佳更新候选 " + + #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format + msgid "module %s is disabled" +-msgstr "" ++msgstr "模块 %s 被禁用" + + #: libdnf/goal/Goal.cpp:129 + #, c-format + msgid "module %s does not have a compatible architecture" +-msgstr "" ++msgstr "模块 %s 没有兼容的架构" + + #: libdnf/goal/Goal.cpp:130 + #, c-format + msgid "module %s is not installable" +-msgstr "" ++msgstr "模块 %s 不可安装" + + #: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "" ++msgstr "没有东西提供 %s(模块 %s 需要它)" + + #: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "" ++msgstr "无法同时安装模块 %s 和 %s" + + #: 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:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 取代了 %s(由 %s 提供)" + + #: 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:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)" + + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "模块 %s 需要 %s,但没有提供者可以被安装" + + #: libdnf/goal/Goal.cpp:139 + #, c-format + msgid "module %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "模块 %s 与自己提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:140 + #, c-format + msgid "both module %s and %s obsolete %s" +-msgstr "" ++msgstr "模块 %s 和 %s 同时取代了 %s" + +-#: libdnf/goal/Goal.cpp:1055 ++#: libdnf/goal/Goal.cpp:1141 + msgid "no solver set" + msgstr "无 solver 设置" + +-#: libdnf/goal/Goal.cpp:1060 ++#: libdnf/goal/Goal.cpp:1146 + #, c-format + msgid "failed to make %s absolute" + msgstr "无法使 %s 绝对" + +-#: libdnf/goal/Goal.cpp:1067 ++#: libdnf/goal/Goal.cpp:1153 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "把 debugdata 写入到 %1$s 失败: %2$s" + +-#: libdnf/goal/Goal.cpp:1079 ++#: libdnf/goal/Goal.cpp:1165 + msgid "no solv in the goal" + msgstr "在目标中没有 solv" + +-#: libdnf/goal/Goal.cpp:1081 ++#: libdnf/goal/Goal.cpp:1167 + msgid "no solution, cannot remove protected package" + msgstr "没有解决方案,不能删除保护的软件包" + +-#: libdnf/goal/Goal.cpp:1084 ++#: libdnf/goal/Goal.cpp:1170 + msgid "no solution possible" + msgstr "没有可能的解决方案" + +-#: libdnf/goal/Goal.cpp:1210 +-#, fuzzy +-#| msgid " Problem: %s\n" ++#: libdnf/goal/Goal.cpp:1296 + msgid "Problem: " +-msgstr "问题: %s " ++msgstr "问题: " + +-#: libdnf/goal/Goal.cpp:1215 +-#, fuzzy, c-format +-#| msgid " Problem: %s\n" ++#: libdnf/goal/Goal.cpp:1301 ++#, c-format + msgid "Problem %d: " +-msgstr "问题: %s " ++msgstr "问题 %d: " + +-#: libdnf/goal/Goal.cpp:1542 ++#: libdnf/goal/Goal.cpp:1634 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "这个操作可能会导致删除以下受保护的软件包: " ++msgstr "这个操作将会导致删除以下受保护的软件包: " + + #: libdnf/hy-iutil.cpp:326 + #, c-format +@@ -721,105 +746,105 @@ msgstr "无法创建目录 %1$s: %2$s" + #: 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:573 ++#: libdnf/module/ModulePackage.cpp:604 + #, c-format + msgid "Invalid format of Platform module: %s" +-msgstr "" ++msgstr "Platform 模块格式无效 : %s" + +-#: libdnf/module/ModulePackage.cpp:588 ++#: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" ++msgstr "可用软件包提供了多个模块平台\n" + +-#: libdnf/module/ModulePackage.cpp:601 ++#: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" ++msgstr "已安装的软件包提供了多个模块平台\n" + +-#: libdnf/module/ModulePackage.cpp:628 ++#: libdnf/module/ModulePackage.cpp:659 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" +-msgstr "" ++msgstr "检测 %s 中的 Platform 模块失败: %s" + +-#: libdnf/module/ModulePackage.cpp:637 ++#: libdnf/module/ModulePackage.cpp:668 + #, c-format + msgid "Missing PLATFORM_ID in %s" +-msgstr "" ++msgstr "在 %s 中缺少 PLATFORM_ID" + +-#: libdnf/module/ModulePackage.cpp:642 ++#: libdnf/module/ModulePackage.cpp:673 + msgid "No valid Platform ID detected" +-msgstr "" ++msgstr "没有检测到有效的 Platform ID" + + #: libdnf/module/ModulePackageContainer.cpp:107 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" +-msgstr "" ++msgstr "无法为模块 '%s' 启用多个流" + + #: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "" ++msgstr "默认设置与 repo '%s' 冲突 : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:918 ++#: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" +-msgstr "" ++msgstr "安装模块配置档案:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:933 ++#: libdnf/module/ModulePackageContainer.cpp:932 + msgid "Disabling module profiles:\n" +-msgstr "" ++msgstr "禁用模块配置档案:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:948 ++#: libdnf/module/ModulePackageContainer.cpp:947 + msgid "Enabling module streams:\n" +-msgstr "" ++msgstr "启用模块流:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:962 ++#: libdnf/module/ModulePackageContainer.cpp:961 + msgid "Switching module streams:\n" +-msgstr "" ++msgstr "切换模块流:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:980 ++#: libdnf/module/ModulePackageContainer.cpp:979 + msgid "Disabling modules:\n" +-msgstr "" ++msgstr "禁用模块:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:991 ++#: libdnf/module/ModulePackageContainer.cpp:990 + msgid "Resetting modules:\n" +-msgstr "" ++msgstr "重置模块:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1674 ++#: libdnf/module/ModulePackageContainer.cpp:1704 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" +-msgstr "" ++msgstr "无法加载位于 '%s' 的模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1680 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" +-msgstr "" ++msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1763 ++#: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "" ++msgstr "无法为模块 Fail Safe 数据创建目录 \"%s\" : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1779 ++#: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" +-msgstr "" ++msgstr "无法把模块 Fail Safe 数据保存到 '%s'" + +-#: libdnf/module/ModulePackageContainer.cpp:1802 ++#: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" ++msgstr "无法删除 '%s' 处的模块 Fail Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1834 ++#: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "" ++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 +@@ -829,57 +854,57 @@ 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 ++#: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "" ++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 "" +@@ -887,6 +912,8 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" ++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并" ++"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -899,25 +926,25 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。" + + #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1382 ++#: libdnf/repo/Repo.cpp:1400 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" +-msgstr "" ++msgstr "Repo '%s': 'basecachedir' 没有设置" + + #: libdnf/repo/Repo.cpp:512 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置" + + #: libdnf/repo/Repo.cpp:546 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "" ++msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'" + + #: libdnf/repo/Repo.cpp:548 + msgid "'proxy_username' is set but not 'proxy_password'" +-msgstr "" ++msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'" + + #: libdnf/repo/Repo.cpp:629 + #, c-format +@@ -934,125 +961,131 @@ msgstr "%s: gpgme_data_new_from_fd(): %s" + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907 ++#: 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:740 libdnf/repo/Repo.cpp:804 ++#: 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:833 ++#: 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:886 ++#: libdnf/repo/Repo.cpp:890 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s 已被导入" + +-#: libdnf/repo/Repo.cpp:914 ++#: 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:1162 ++#: libdnf/repo/Repo.cpp:1176 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。" + +-#: libdnf/repo/Repo.cpp:1181 ++#: libdnf/repo/Repo.cpp:1195 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。" + +-#: libdnf/repo/Repo.cpp:1204 ++#: libdnf/repo/Repo.cpp:1218 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "恢复: '%s' 失败,不匹配的 %s sum。" + +-#: libdnf/repo/Repo.cpp:1210 ++#: libdnf/repo/Repo.cpp:1224 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。" + +-#: libdnf/repo/Repo.cpp:1235 ++#: libdnf/repo/Repo.cpp:1253 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。" + +-#: libdnf/repo/Repo.cpp:1237 ++#: libdnf/repo/Repo.cpp:1255 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "恢复: '%s' 失败,不匹配的 repomd。" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1273 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "无法创建仓库目标目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1261 +-#, c-format +-msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "无法创建 repo 临时目录 \"%s\": %s" +- +-#: libdnf/repo/Repo.cpp:1275 ++#: libdnf/repo/Repo.cpp:1293 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "无法创建目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1298 ++#: libdnf/repo/Repo.cpp:1316 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1321 ++#: libdnf/repo/Repo.cpp:1339 + #, c-format + msgid "repo: using cache for: %s" + msgstr "仓库: 正在为 %s 使用缓存" + +-#: libdnf/repo/Repo.cpp:1333 ++#: libdnf/repo/Repo.cpp:1351 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "仅使用缓存已开启但没有 '%s' 的缓存" + +-#: libdnf/repo/Repo.cpp:1337 ++#: libdnf/repo/Repo.cpp:1355 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: 从远程下载: %s" + +-#: libdnf/repo/Repo.cpp:1344 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" +-msgstr "" ++msgstr "为仓库 '%s' 下载元数据失败 : %s" + +-#: libdnf/repo/Repo.cpp:1370 ++#: libdnf/repo/Repo.cpp:1388 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): 计算 SHA256 失败" + +-#: libdnf/repo/Repo.cpp:1398 ++#: libdnf/repo/Repo.cpp:1416 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" +-msgstr "" ++msgstr "无法创建 persistdir \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1775 ++#: libdnf/repo/Repo.cpp:1793 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume 不能和 the byterangestart 参数同时使用" + +-#: libdnf/repo/Repo.cpp:1792 ++#: libdnf/repo/Repo.cpp:1810 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 初始失败: %s" + +-#: libdnf/repo/Repo.cpp:1898 ++#: libdnf/repo/Repo.cpp:1916 + #, c-format + msgid "Cannot open %s: %s" + msgstr "无法打开 %s: %s" + +-#: libdnf/repo/Repo.cpp:1942 ++#: libdnf/repo/Repo.cpp:1960 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id 为 %ld 的日志处理器不存在" +@@ -1081,7 +1114,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" +@@ -1104,8 +1137,8 @@ msgstr "TransactionItem 状态没有设置:%s" + msgid "Can't add console output to unsaved transaction" + msgstr "无法向未保存的事务中添加控制台输出" + ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "无法解析模块工件 NEVRA '%s'" ++ + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo 的 id 无效: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "无法计算 RPMDB checksum" +-- +2.35.1 + diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec new file mode 100644 index 0000000..dbb0e58 --- /dev/null +++ b/SPECS/libdnf.spec @@ -0,0 +1,941 @@ +%global libsolv_version 0.7.20 +%global libmodulemd_version 2.13.0 +%global librepo_version 1.13.1 +%global dnf_conflict 4.10.0-4 +%global swig_version 3.0.12 +%global libdnf_major_version 0 +%global libdnf_minor_version 65 +%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-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch +Patch2: 0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch +Patch3: 0003-Update-translations-RhBug-2017349.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(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 +* Mon Mar 21 2022 Marek Blaha - 0.65.0-5 +- Update translations + +* Fri Mar 11 2022 Pavla Kratochvilova - 0.65.0-4 +- Skip rich deps for autodetection of unmet dependencies (RhBug:2048394) + +* Mon Feb 07 2022 Pavla Kratochvilova - 0.65.0-3 +- Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version` + +* Thu Dec 09 2021 Pavla Kratochvilova - 0.65.0-2 +- Rebuilt with json-c-0.14-11.el9 (RhBug:2023320) + +* Mon Oct 25 2021 Pavla Kratochvilova - 0.65.0-1 +- Update to 0.65.0 +- Implement logic for demodularization of modular rpms (RhBug:1805260) +- DnfContext: fix handling of default module profiles +- ModuleMetadata: gracefully handle modules with no defaults +- Remove failovermethod config option (RhBug:1961083) +- Add support for excluding packages to be installed as weak dependencies +- Add support for autodetecting packages to be excluded from being installed as weak dependencies +- Turn off strict validation of modulemd documents (RhBug:2004853,2007166,2007167) + +* Mon Aug 09 2021 Mohan Boddu - 0.63.0-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jul 27 2021 Pavla Kratochvilova - 0.63.0-3 +- Fix some covscan warnings + +* Wed Jun 16 2021 Mohan Boddu - 0.63.0-2 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 02 2021 Pavla Kratochvilova - 0.63.0-1 +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Hardening: add signature check with rpmcliVerifySignatures (RhBug:1932079) +- Do not allow 1 as installonly_limit value (RhBug:1926261) +- Add a config option to check TLS certificate revocation status (using OCSP stapling), defaults to false (RhBug:1814383) +- ModuleProfile: add isDefault() +- ModulePackage: add getDefaultProfile() +- Add new dnf_context_module_install() C API +- Fix a crash when [media] section in .treeinfo is missing for bootable media (RhBug:1946024) + +* Fri Apr 16 2021 Mohan Boddu - 0.60.0-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Mar 02 2021 Nicola Sella - 0.60.0-1 +- Update to 0.60.0 +- Fix repo.fresh() implementation +- build-sys: Add ENABLE_STATIC option +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- Apply proxy certificate options +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- build-sys: Clean up message about Python bindings +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Fix problematic language +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Support main config file option "installonlypkgs". +- Support main config file option "protected_packages". +- Properly handle multiple collections in updateinfo.xml (RhBug:1804234) + +* Thu Jan 28 2021 Nicola Sella - 0.58.0-1 +- Update to 0.58.0 +- Option: Add reset() method +- Add OptionBinds::getOption() method +- [context] Add dnf_repo_conf_from_gkeyfile() and dnf_repo_conf_reset() +- [context] Add support for options: minrate, throttle, bandwidth, timeout +- [context] Remove g_key_file_get_string() from dnf_repo_set_keyfile_data() +- Allow loading ext metadata even if only cache (solv) is present +- Add ASAN_OPTIONS for test_libdnf_main +- [context,API] Functions for accessing main/global configuration options +- [context,API] Function for adding setopt +- Add getter for modular obsoletes from ModuleMetadata +- Add ModulePackage.getStaticContext() and getRequires() +- Add compatible layer for MdDocuments v2 +- Fix modular queries with the new solver +- Improve formatting of error string for modules +- Change mechanism of module conflicts +- Fix load/update FailSafe + +* Tue Jan 26 2021 Fedora Release Engineering - 0.55.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 02 2020 Nicola Sella - 0.55.2-1 +- Update to 0.55.2 +- Improve performance of query installed() and available() +- Swdb: Add a method to get the current transaction +- [modules] Add special handling for src artifacts (RhBug:1809314) +- Better msgs if "basecachedir" or "proxy_password" isn't set (RhBug:1888946) +- Add new options module_stream_switch +- Support allow_vendor_change setting in dnf context API +- Fix couple of sanitizer builds in specfile + +* Mon Nov 23 2020 Nicola Sella - 0.55.0-1 +- Update to 0.55.0 +- Add vendor to dnf API (RhBug:1876561) +- Add formatting function for solver error +- Add error types in ModulePackageContainer +- Implement module enable for context part +- Improve string formatting for translation +- Remove redundant printf and change logging info to notice (RhBug:1827424) +- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371) + +* Thu Oct 29 2020 Adam Williamson - 0.54.2-3 +- Rebuild to keep NVR ahead of Fedora 32 + +* Tue Oct 13 2020 Ales Matej - 0.54.2-2 +- Increase needed conflicting dnf version + +* Wed Oct 07 2020 Nicola Sella - 0.54.2-1 +- Update to 0.54.2 +- history: Fix dnf history rollback when a package was removed (RhBug:1683134) +- Add support for HY_GT, HY_LT in query nevra_strict +- Fix parsing empty lines in config files +- Accept '==' as an operator in reldeps (RhBug:1847946) +- Add log file level main config option (RhBug:1802074) +- Add protect_running_kernel configuration option (RhBug:1698145) +- Context part of libdnf cannot assume zchunk is on (RhBug:1851841,1779104) +- Fix memory leak of resultingModuleIndex and handle g_object refs +- Redirect librepo logs to libdnf logs with different source +- Introduce changelog metadata in commit messages +- Add hy_goal_lock +- Update Copr targets for packit and use alias +- Enum/String conversions for Transaction Store/Replay +- utils: Add a method to decode URLs +- Unify hawkey.log line format with the rest of the logs + +* Mon Aug 10 2020 Nicola Sella - 0.48.0-4 +- spec: Fix building with new cmake macros +- tests: Fix incorrect usage of the fail_unless macros + +* Sat Aug 01 2020 Fedora Release Engineering - 0.48.0-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.48.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 02 2020 Nicola Sella - 0.48.0-1 +- Update to 0.48.0 +- swdb: Catch only SQLite3 exceptions and simplify the messages +- MergedTransaction list multiple comments (RhBug:1773679) +- Modify CMake to pull *.po files from weblate +- Optimize DependencyContainer creation from an existing queue +- fix a memory leak in dnf_package_get_requires() +- Fix memory leaks on g_build_filename() +- Fix memory leak in dnf_context_setup() +- Add `hy_goal_favor` and `hy_goal_disfavor` +- Define a cleanup function for `DnfPackageSet` +- dnf-repo: fix dnf_repo_get_public_keys double-free +- Do not cache RPMDB +- Use single-quotes around string literals used in SQL statements +- SQLite3: Do not close the database if it wasn't opened (RhBug:1761976) +- Don't create a new history DB connection for in-memory DB +- transaction/Swdb: Use a single logger variable in constructor +- utils: Add a safe version of pathExists() +- swdb: Handle the case when pathExists() fails on e.g. permission +- Repo: prepend "file://" if a local path is used as baseurl +- Move urlEncode() to utils +- utils: Add 'exclude' argument to urlEncode() +- Encode package URL for downloading through librepo (RhBug:1817130) +- Replace std::runtime_error with libdnf::RepoError +- Fixes and error handling improvements of the File class +- [context] Use ConfigRepo for gpgkey and baseurl (RhBug:1807864) +- [context] support "priority" option in .repo config file (RhBug:1797265) + +* Fri May 22 2020 Miro Hrončok - 0.47.0-3 +- Rebuilt for Python 3.9 + +* Tue Apr 21 2020 Björn Esser - 0.47.0-2 +- Rebuild (json-c) + +* Wed Apr 01 2020 Ales Matej - 0.47.0-1 +- Update to 0.47.0 +- Add prereq_ignoreinst & regular_requires properties for pkg (RhBug:1543449) +- Reset active modules when no module enabled or default (RhBug:1767351) +- Add comment option to transaction (RhBug:1773679) +- Failing to get module defauls is a recoverable error +- Baseurl is not exclusive with mirrorlist/metalink (RhBug: 1775184) +- Add new function to reset all modules in C API (dnf_context_reset_all_modules) +- [context] Fix to preserve additionalMetadata content (RhBug:1808677) +- Fix filtering of DepSolvables with source rpms (RhBug:1812596) +- Add setter for running kernel protection setting +- Handle situation when an unprivileged user cannot create history database (RhBug:1634385) +- Add query filter: latest by priority +- Add DNF_NO_PROTECTED flag to allow empty list of protected packages +- Remove 'dim' option from terminal colors to make them more readable (RhBug:1807774,1814563) +- [context] Error when main config file can't be opened (RhBug:1794864) +- [context] Add function function dnf_context_is_set_config_file_path + +* Mon Feb 24 2020 Ales Matej - 0.45.0-1 +- Config options: only first empty value clears existing (RhBug:1788154) +- Make parsing of reldeps more strict (RhBug:1788107) +- [context] Support repositories defined in main configuration file +- Fix filtering packages by advisory when more versions and arches are available (RhBug:1770125) +- Add expanding solvable provides for dependency matching (RhBug:1534123) +- DnfRepo: fix module_hotfixes keyfile priority level +- Add custom exceptions to libdnf interface +- [conf] Set useful default colors when color is enabled +- Port to libmodulemd-2 API (RhBug:1693683) + +* Tue Feb 04 2020 Adam Williamson - 0.43.1-3 +- [context] Create new repo instead of reusing old one (RhBug:1795004) + +* Wed Jan 29 2020 Fedora Release Engineering - 0.43.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Ales Matej - 0.43.1-1 +- Allow excluding packages with "excludepkgs" and globs +- Add two new query filters: obsoletes_by_priority, upgrades_by_priority +- [context] Use installonly_limit from global config (RhBug:1256108) +- [context] Add API to get/set "install_weak_deps" +- [context] Add wildcard support for repo_id in dnf_context_repo_enable/disable (RhBug:1781420) +- [context] Adds support for includepkgs in repository configuration. +- [context] Adds support for excludepkgs, exclude, includepkgs, and disable_excludes in main configuration. +- [context] Added function dnf_transaction_set_dont_solve_goal +- [context] Added functions dnf_context_get/set_config_file_path +- [context] Respect "plugins" global conf value +- [context] Add API to disable/enable plugins + +* Fri Nov 29 2019 Ales Matej - 0.39.1-1 +- Update to 0.39.1 +- Report reason how package was excluded (RhBug:1649754) +- Additional Arm detection improvements (RhBug:1691430) +- Set skip_if_unavailable for media repos to skip their update (RhBug:1716067) +- Add support of xml:base for remote and local url in context (RhBug:1734350, 1717865) +- Handle NoModuleException in dnf_context_reset_modules (RhBug:1767453) +- Add missing C function hy_nevra_free() for HyNevra deallocation +- Context part of libdnf now uses metadata_expire from global configuration + +* Wed Nov 13 2019 Pavla Kratochvilova - 0.37.2-2 +- Fix accidental code removal from hy_subject_get_best_solution() + +* Wed Nov 06 2019 Pavla Kratochvilova - 0.37.2-1 +- Update to 0.37.2 +- Use more descriptive message when failed to retrieve GPG key (RhBug:1605117) +- Add removeMetadataTypeFromDownload function to the API +- Context part of libdnf can now read vars (urlvars) from dirs and environment +- Throw exception immediately if file cannot be opened +- Add test when there is no primary metadata in compatible format (RhBug:1744960) +- Various improvements to countme features +- Don't abort on rpmdb checksum calculation failure +- Enable module dependency trees when using set_modules_enabled_by_pkgset() (RhBug:1762314) +- New method "Query::filterSubject()", replaces Solution::getBestSolution() +- The Solution class was removed +- Add query argument into get_best_query and get_best_solution +- Add module reset function into dnf_context +- Add method to get all repository metadata locations +- Catch NoModuleException in case of not existent value was used in persistor (RhBug:1761773) + +* Wed Oct 23 2019 Peter Robinson 0.35.5-5 +- Fixes for some issues on Arm platforms (rhbz 1691430) + +* Tue Oct 22 2019 Ales Matej - 0.35.5-4 +- Fix leaking log handlers in Sack that can cause a crash (RhBug:1758737) + +* Mon Oct 14 2019 Jaroslav Mracek - 0.35.5-3 +- Add POOL_FLAG_WHATPROVIDESWITHDISABLED flag into pool. +- Resolves: 1737469 + +* Tue Oct 01 2019 Ales Matej - 0.35.5-2 +- Fix dnf-conflict version + +* Tue Oct 01 2019 Ales Matej - 0.35.5-1 +- Update to 0.35.5 +- Fix crash in PackageKit (RhBug:1636803) +- Do not create @System.solv files (RhBug:1707995) +- Set LRO_CACHEDIR so zchunk works again (RhBug:1739867) +- Don't reinstall modified packages with the same NEVRA (RhBug:1644241) +- Fix bug when moving temporary repository metadata after download (RhBug:1700341) +- Improve detection of extras packages by comparing (name, arch) pair instead of full NEVRA (RhBuh:1684517) +- Improve handling multilib packages in the history command (RhBug:1728637) +- Repo download: use full error description into the exception text (RhBug:1741442) +- Properly close hawkey.log (RhBug:1594016) +- Fix dnf updateinfo --update to not list advisories for packages updatable only from non-enabled modules +- Apply modular filtering by package name (RhBug:1702729) +- Fully enable the modular fail safe mechanism (RhBug:1616167) + +* Sat Sep 14 2019 Jonathan Dieter - 0.35.3-5 +- Set LRO_CACHEDIR so zchunk works again + +* Wed Sep 11 2019 Jaroslav Mracek - 0.35.3-4 +- Backport patch to fix reinstalling packages with a different buildtime - part II + +* Tue Sep 10 2019 Jaroslav Mracek - 0.35.3-3 +- Backport patch to fix reinstalling packages with a different buildtime + +* Thu Aug 15 2019 Miro Hrončok - 0.35.3-2 +- Rebuilt for Python 3.8 + +* Tue Aug 13 2019 Pavla Kratochvilova - 0.35.3-1 +- Update to 0.35.3 +- Make libdnf own its plugin directory (RhBug:1714265) +- Don't disable nonexistent but required repositories (RhBug:1689331) +- Set priority of dnf.conf.d drop-ins +- Fix toString() to not insert [] (RhBug:1584442) +- Ignore trailing blank lines in config (RhBug:1722493) +- Fix handling large number of filenames on input (RhBug:1690915) +- Detect armv7 with crypto extension only on arm version >= 8 +- A new standardized User-Agent field consisting of the libdnf and OS version + (including the variant) (RhBug:1156007) +- Add basic countme support (RhBug:1647454) + +* Mon Jul 29 2019 Pavla Kratochvilova - 0.35.1-4 +- Rebuilt for librepo 1.10.5 + +* Thu Jul 25 2019 Fedora Release Engineering - 0.35.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 22 2019 Pavla Kratochvilova - 0.35.1-2 +- Backport patch to fix attaching and detaching of libsolvRepo and + repo_internalize_trigger() (RhBug:1727343,1727424) + +* Thu Jul 04 2019 Pavla Kratochvilova - 0.35.1-1 +- Update to 0.35.1 +- Enhance logging handling +- Do not log DEBUG messages by default +- Also add subkeys when adding GPG keys +- [module] Fix swig binding for getModuleDependencies() +- Skip invalid key files in "/etc/pki/rpm-gpg" with warning (RhBug:1644040) +- Enable timestamp preserving for downloaded data (RhBug:1688537) +- Set default to skip_if_unavailable=false (RhBug:1679509) +- Add configuration option skip_if_unavailable (RhBug:1689931) +- Fix 'database is locked' error (RhBug:1631533) +- Replace the 'Failed to synchronize cache' message (RhBug:1712055) +- Fix 'no such table: main.trans_cmdline' error (RhBug:1596540) +- Add support of modular FailSafe (RhBug:1623128) (temporarily with warnings + instead of errors when installing modular RPMs without modular metadata) +- Add support of DNF main config file in context; used by PackageKit and + microdnf (RhBug:1689331) +- Exit gpg-agent after repokey import (RhBug:1650266) + +* Mon Jun 10 22:13:19 CET 2019 Igor Gnatenko - 0.31.0-5 +- Rebuild for RPM 4.15 + +* Mon Jun 10 15:42:02 CET 2019 Igor Gnatenko - 0.31.0-4 +- Rebuild for RPM 4.15 + +* Fri May 03 2019 Pavla Kratochvilova - 0.31.0-3 +- Backport patches to reintroduce hawkeyRepo + +* Thu Apr 25 2019 Pavla Kratochvilova - 0.31.0-1 +- Update to 0.31.0 +- Installroot now requires absolute path +- Support "_none_" value for repo option "proxy" (RhBug:1680272) +- Add support for Module advisories +- Add support for xml:base attribute from primary.xml (RhBug:1691315) +- Improve detection of Platform ID (RhBug:1688462) + +* Wed Mar 27 2019 Pavla Kratochvilova - 0.28.1-1 +- Update to 0.28.1 +- Return empty query if incorrect reldep (RhBug:1687135) +- ConfigParser: Improve compatibility with Python ConfigParser and dnf-plugin-spacewalk (RhBug:1692044) +- ConfigParser: Unify default set of string represenation of boolean values +- Fix segfault when interrupting dnf process (RhBug:1610456) + +* Mon Mar 11 2019 Pavla Kratochvilova - 0.28.0-1 +- Update to 0.28.0 +- Exclude module pkgs that have conflict +- Enhance config parser to preserve order of data, and keep comments and format +- Improve ARM detection +- Add support for SHA-384 + +* Tue Feb 19 2019 Jaroslav Mracek - 0.26.0-2 +- Backport patches for zchunk + +* Wed Feb 13 2019 Pavla Kratochvilova - 0.26.0-1 +- Update to 0.26.0-1 +- Enhance modular solver to handle enabled and default module streams differently (RhBug:1648839) +- Add support of wild cards for modules (RhBug:1644588) +- Revert commit that adds best as default behavior + +* Fri Feb 01 2019 Fedora Release Engineering - 0.24.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 12 2018 Jaroslav Mracek - 0.24.1-1 +- Update to 0.24.1 +- Add support for zchunk +- Enhance LIBDNF plugins support +- Enhance sorting for module list (RhBug:1590358) +- [repo] Check whether metadata cache is expired (RhBug:1539620,1648274) +- [DnfRepo] Add methods for alternative repository metadata type and download (RhBug:1656314) +- Remove installed profile on module enable or disable (RhBug:1653623) +- [sack] Implement dnf_sack_get_rpmdb_version() + +* Thu Nov 22 2018 Jaroslav Mracek - 0.22.3-1 +- Permanently disable Python2 build for Fedora 30+ +- Update to 0.22.3 +- Modify solver_describe_decision to report cleaned (RhBug:1486749) +- [swdb] create persistent WAL files (RhBug:1640235) +- Relocate ModuleContainer save hook (RhBug:1632518) +- [transaction] Fix transaction item lookup for obsoleted packages (RhBug: 1642796) +- Fix memory leaks and memory allocations +- [repo] Possibility to extend downloaded repository metadata + +* Wed Nov 07 2018 Jaroslav Mracek - 0.22.0-8 +- Backport fixes for RHBZ#1642796 from upstream master + +* Tue Oct 30 2018 Igor Gnatenko - 0.22.0-7 +- Rebuild for libsolv 0.7 + +* Tue Oct 23 2018 Jaroslav Mracek - 0.22.0-6 +- Add patch Relocate-ModuleContainer-save-hook-RhBug1632518 +- Add patch Test-if-sack-is-present-and-run-save-module-persistor-RhBug1632518 + +* Sat Oct 20 2018 Jaroslav Mracek - 0.22.0-5 +- remove problematic patch Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Fri Oct 19 2018 Jaroslav Mracek - 0.22.0-4 +- backport Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Thu Oct 18 2018 Jaroslav Mracek - 0.22.0-3 +- bacport swdb-create-persistent-WAL-files-RhBug1640235 + +* Wed Oct 17 2018 Jaroslav Mracek - 0.22.0-2 +- backport Modify-solver_describe_decision-to-report-cleaned-RhBug1486749 +- backport history-Fix-crash-in-TransactionItemaddReplacedBy + +* Mon Oct 15 2018 Jaroslav Mracek - 0.22.0-1 +- Update to 0.22.0 +- Fix segfault in repo_internalize_trigger (RhBug:1375895) +- Change sorting of installonly packages (RhBug:1627685) +- [swdb] Fixed pattern searching in history db (RhBug:1635542) +- Check correctly gpg for repomd when refresh is used (RhBug:1636743) +- [conf] Provide additional VectorString methods for compatibility with Python list. +- [plugins] add plugin loading and hooks into libdnf + +* Sat Sep 29 2018 Kevin Fenzi - 0.20.0-2 +- Temp re-enable python2 subpackages to get rawhide composing again. + +* Tue Sep 25 2018 Jaroslav Mracek - 0.20.0-1 +- [module] Report module solver errors +- [module] Enhance module commands and errors +- [transaction] Fixed several problems with SWDB +- Remove unneeded regex URL tests (RhBug:1598336) +- Allow quoted values in ini files (RhBug:1624056) +- Filter out not unique set of solver problems (RhBug:1564369) +- Disable python2 build for Fedora 30+ + +* Tue Sep 18 2018 Adam Williamson - 0.19.1-3 +- Backport PR #585 for an update crash bug (#1629340) + +* Fri Sep 14 2018 Kalev Lember - 0.19.1-2 +- Backport a fix for a packagekit crasher / F29 Beta blocker (#1626851) + +* Mon Sep 10 2018 Jaroslav Mracek - 0.19.1-1 +- Fix compilation errors on gcc-4.8.5 +- [module] Allow module queries on disabled modules + +* Fri Sep 07 2018 Jaroslav Mracek - 0.19.0-1 +- [query] Reldeps can contain a space char (RhBug:1612462) +- [transaction] Avoid adding duplicates via Transaction::addItem() +- Fix compilation errors on gcc-4.8.5 +- [module] Make available ModuleProfile using SWIG +- [module] Redesign module disable and reset + +* Mon Aug 13 2018 Daniel Mach - 0.17.2-1 +- [sqlite3] Change db locking mode to DEFAULT. +- [doc] Add libsmartcols-devel to devel deps. + +* Mon Aug 13 2018 Daniel Mach - 0.17.1-1 +- [module] Solve a problem in python constructor of NSVCAP if no version. +- [translations] Update translations from zanata. +- [transaction] Fix crash after using dnf.comps.CompsQuery and forking the process in Anaconda. +- [module] Support for resetting module state. +- [output] Introduce wrapper for smartcols. + +* Fri Aug 10 2018 Adam Williamson - 0.17.0-2 +- Backport fix that prevented anaconda running dnf in a subprocess (#546) + +* Tue Aug 07 2018 Daniel Mach - 0.17.0-1 +- [conf] Add module_platform_id option. +- [module] Add ModulePackageContainer class. +- [module] Add ModulePersistor class. +- [sack] Module filtering made available in python API +- [sack] Module auto-enabling according to installed packages + +* Fri Jul 27 2018 Igor Gnatenko - 0.16.1-3 +- Rebuild for new binutils + +* Fri Jul 27 2018 Daniel Mach - 0.16.1-2 +- [module] Implement 'module_hotfixes' conf option to skip filtering RPMs from hotfix repos. +- [goal] Fix distupgrade filter, allow downgrades. +- [context] Allow to set module platform in context. +- [module] Introduce proper modular dependency solving. +- [module] Platform pseudo-module based on /etc/os-release. +- [goal] Add Goal::listSuggested(). +- [l10n] Support for translations, add gettext build dependency. + +* Sun Jul 22 2018 Daniel Mach - 0.16.0-1 +- Fix RHSM plugin +- Add support for logging +- Bump minimal libmodulemd version to 1.6.1 + +* Fri Jul 13 2018 Fedora Release Engineering - 0.15.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 29 2018 Jaroslav Mracek - 0.15.2-1 +- Update to 0.15.1 +- Resolves: rhbz#1595487 + +* Fri Jun 29 2018 Igor Gnatenko - 0.15.1-2 +- Restore proper ldconfig_scriptlets + +* Tue Jun 26 2018 Jaroslav Mracek - 0.15.1-1 +- Update to 0.15.1 + +* Fri Jun 15 2018 Miro Hrončok - 0.11.1-6 +- Rebuilt for Python 3.7 + +* Wed Feb 07 2018 Fedora Release Engineering - 0.11.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 30 2018 Igor Gnatenko - 0.11.1-4 +- Switch to %%ldconfig_scriptlets + +* Tue Nov 07 2017 Igor Gnatenko - 0.11.1-3 +- Use better Obsoletes for platform-python + +* Fri Nov 03 2017 Igor Gnatenko - 0.11.1-2 +- Remove platform-python subpackage + +* Mon Oct 16 2017 Jaroslav Mracek - 0.11.1-1 +- Rerelease of 0.11.1-1 +- Improvement query performance +- Run file query in hy_subject_get_best_solution only for files (arguments that start with ``/`` or + ``*/``) +- Resolves: rhbz#1498207 - DNF crash during upgrade installation F26 -> F27 + +* Tue Oct 10 2017 Igor Gnatenko - 0.11.0-1 +- Update to 0.11.0 + +* Mon Oct 02 2017 Jaroslav Mracek - 0.10.1-2 +- Rerelease of 0.10.1-1 + +* Wed Sep 27 2017 Jaroslav Mracek - 0.10.1-1 +- Update to 0.10.1 +- It improves query performance with name and arch filters. Also nevra filter will now + handle string with or without epoch. +- Additionally for python bindings it renames NEVRA._has_just_name() to NEVRA.has_just_name() due + to movement of code into c part of library. +- Resolves: rhbz#1260242 - --exclude does not affect dnf remove's removal of requirements +- Resolves: rhbz#1485881 - DNF claims it cannot install package, which have been already installed +- Resolves: rhbz#1361187 - [abrt] python-ipython-console: filter_updown(): python3.5 killed by SIGABRT + +* Fri Sep 15 2017 Igor Gnatenko - 0.9.3-8 +- Disable platform python on old releases + +* Tue Aug 15 2017 Lumír Balhar - 0.9.3-7 +- Add platform-python subpackage + +* Fri Aug 11 2017 Igor Gnatenko - 0.9.3-6 +- Rebuilt after RPM update (№ 3) + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-5 +- Rebuilt for RPM soname bump + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-4 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 24 2017 Jaroslav Mracek - 0.9.3-1 +- Update to 0.9.3 + +* Sat Jul 01 2017 Igor Gnatenko - 0.9.2-1 +- Update to 0.9.2 + +* Mon Jun 12 2017 Jaroslav Mracek - 0.9.1-1 +- Update to 0.9.1 + +* Mon May 22 2017 Jaroslav Mracek - 0.9.0-1 +- Update to 0.9.0 + +* Tue May 02 2017 Jaroslav Mracek - 0.8.2-1 +- Update to 0.8.2 + +* Fri Mar 24 2017 Igor Gnatenko - 0.8.1-1 +- Update to 0.8.1 + +* Tue Mar 21 2017 Jaroslav Mracek - 0.8.0-1 +- Update to 0.8.0 + +* Mon Feb 20 2017 Igor Gnatenko - 0.7.4-1 +- Update to 0.7.4 + +* Fri Feb 10 2017 Igor Gnatenko - 0.7.3-1 +- Update to 0.7.3 + +* Wed Feb 08 2017 Igor Gnatenko - 0.7.2-1 +- 0.7.2 + +* Fri Jan 06 2017 Igor Gnatenko - 0.7.1-1 +- 0.7.1 + +* Wed Dec 21 2016 Peter Robinson 0.7.0-0.7gitf9b798c +- Rebuild for Python 3.6 + +* Mon Dec 19 2016 Igor Gnatenko - 0.7.0-0.6gitf9b798c +- Use new upstream URL + +* Tue Dec 13 2016 Stratakis Charalampos - 0.7.0-0.5gitf9b798c +- Rebuild for Python 3.6 + +* Tue Dec 06 2016 Martin Hatina - 0.7.0-0.4gitf9b798c +- Increase conflict version of dnf + +* Thu Dec 01 2016 Igor Gnatenko - 0.7.0-0.3gitf9b798c +- Update to latest snapshot + +* Fri Nov 04 2016 Igor Gnatenko - 0.7.0-0.2git8bd77f8 +- Update to latest snapshot + +* Thu Sep 29 2016 Igor Gnatenko - 0.7.0-0.1git179c0a6 +- Initial package