[PackageKit-commit] packagekit: Branch 'master' - 97 commits

Richard Hughes hughsient at kemper.freedesktop.org
Mon Dec 13 02:22:28 PST 2010


 .gitignore                                     |    6 
 NEWS                                           |   84 
 README.transifex                               |   11 
 RELEASE                                        |   10 
 backends/.gitignore                            |    1 
 backends/Makefile.am                           |    4 
 backends/alpm/Makefile.am                      |    3 
 backends/alpm/pk-backend-alpm.c                |    2 
 backends/apt/Makefile.am                       |    3 
 backends/apt/pk-backend-apt.c                  |    3 
 backends/aptcc/Makefile.am                     |   10 
 backends/aptcc/apt.cpp                         |  262 -
 backends/aptcc/gstMatcher.cpp                  |  154 
 backends/aptcc/gstMatcher.h                    |   51 
 backends/aptcc/pk-backend-aptcc.cpp            |  310 -
 backends/box/Makefile.am                       |    3 
 backends/box/pk-backend-box.c                  |    2 
 backends/conary/Makefile.am                    |    3 
 backends/conary/pk-backend-conary.c            |    2 
 backends/dummy/pk-backend-dummy.c              |   62 
 backends/entropy/Makefile.am                   |    3 
 backends/entropy/pk-backend-entropy.c          |    2 
 backends/opkg/Makefile.am                      |    3 
 backends/opkg/pk-backend-opkg.c                |    2 
 backends/pacman/Makefile.am                    |    3 
 backends/pacman/backend-pacman.c               |    3 
 backends/pisi/Makefile.am                      |    3 
 backends/pisi/pk-backend-pisi.c                |    2 
 backends/poldek/Makefile.am                    |    3 
 backends/poldek/pk-backend-poldek.c            |    2 
 backends/portage/Makefile.am                   |    3 
 backends/portage/pk-backend-portage.c          |    2 
 backends/ports/Makefile.am                     |    3 
 backends/ports/pk-backend-ports.c              |    2 
 backends/razor/Makefile.am                     |    3 
 backends/razor/pk-backend-razor.c              |    2 
 backends/slapt/Makefile.am                     |    3 
 backends/slapt/pk-backend-slapt.c              |    2 
 backends/smart/Makefile.am                     |    3 
 backends/smart/pk-backend-smart.c              |    2 
 backends/smart/smartBackend.py                 |    6 
 backends/test/Makefile.am                      |    3 
 backends/test/pk-backend-test-fail.c           |   11 
 backends/test/pk-backend-test-succeed.c        |    9 
 backends/urpmi/Makefile.am                     |    3 
 backends/urpmi/pk-backend-urpmi.c              |    3 
 backends/yum/Makefile.am                       |    5 
 backends/yum/Yum.conf                          |   17 
 backends/yum/pk-backend-yum.c                  | 2741 -------------
 backends/yum/yumBackend.py                     |  140 
 backends/zif/.gitignore                        |    1 
 backends/zif/Makefile.am                       |   27 
 backends/zif/licenses.txt                      |    1 
 backends/zif/pk-backend-zif.c                  | 5102 +++++++++++++++++++++++++
 backends/zif/zif-comps-groups.conf             |    1 
 backends/zypp/Makefile.am                      |    3 
 backends/zypp/pk-backend-zypp.cpp              |  459 +-
 backends/zypp/zypp-utils.cpp                   |   54 
 backends/zypp/zypp-utils.h                     |    2 
 client/pk-console.c                            |   21 
 configure.ac                                   |   20 
 contrib/PackageKit.spec.in                     |   17 
 contrib/pk-completion.bash                     |    7 
 docs/api/spec/pk-concepts.xml                  |    3 
 docs/html/pk-download.html                     |   11 
 lib/packagekit-glib2/pk-bitfield.c             |   23 
 lib/packagekit-glib2/pk-client-helper.c        |   66 
 lib/packagekit-glib2/pk-client-sync.c          |   57 
 lib/packagekit-glib2/pk-client-sync.h          |    8 
 lib/packagekit-glib2/pk-client.c               |   83 
 lib/packagekit-glib2/pk-client.h               |   11 
 lib/packagekit-glib2/pk-distro-upgrade.c       |   57 
 lib/packagekit-glib2/pk-distro-upgrade.h       |    7 
 lib/packagekit-glib2/pk-enum.c                 |   44 
 lib/packagekit-glib2/pk-enum.h                 |   20 
 lib/packagekit-glib2/pk-self-test.c            |    4 
 lib/packagekit-qt/src/client.cpp               |    3 
 lib/packagekit-qt/src/clientprivate.cpp        |   26 
 lib/packagekit-qt/src/clientprivate.h          |   27 
 lib/packagekit-qt/src/enum.h                   | 1123 ++---
 lib/packagekit-qt/src/transaction.cpp          |   17 
 lib/packagekit-qt/src/transaction.h            |   12 
 lib/packagekit-qt/src/transactionprivate.cpp   |    2 
 lib/python/packagekit/backend.py               |   10 
 lib/python/packagekit/client.py                |    2 
 po/cs.po                                       | 2490 +++++++-----
 po/es.po                                       |  911 ++--
 po/eu.po                                       | 2075 ++++++++++
 po/pl.po                                       |  775 +--
 po/uk.po                                       |  964 ++--
 po/zh_TW.po                                    |  873 ++--
 policy/org.freedesktop.packagekit.policy.in    |   16 
 src/egg-string.c                               |    2 
 src/org.freedesktop.PackageKit.Transaction.xml |  102 
 src/pk-backend.c                               |   86 
 src/pk-backend.h                               |   11 
 src/pk-transaction-list.c                      |    3 
 src/pk-transaction.c                           |  122 
 src/pk-transaction.h                           |    7 
 99 files changed, 12990 insertions(+), 6753 deletions(-)

New commits:
commit 6e4b7e6de79891cdba9d10eed4ec7b326ebcb856
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Dec 13 10:22:11 2010 +0000

    Release version 0.6.11

diff --git a/NEWS b/NEWS
index 38064b0..ceb86bf 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,87 @@
+Version 0.6.11
+~~~~~~~~~~~~~~
+Released: 2010-12-13
+
+Notes:
+ - Additonal notes have been added to the DBus specification that allow
+   backends to send the origin of a installed package. This is optional.
+ - Additionally, more reccomendations have been made to allow searching
+   by repository. See the DBus specification for more details.
+ - An experimental Zif backend has been added. This should not be used
+   on production machines as it may crash and cause filesystem corruption.
+
+Translations:
+ - Added Basque translation (assar)
+ - Updated Chinese (Taiwan) (zh_TW) translation (Cheng-Chia Tseng)
+ - Updated Czech (cs) translation (fri)
+ - Updated Polish (pl) translation (Piotr DrÄ…g)
+ - Updated Spanish (Castilian) (es) translation (Jorge González)
+ - Updated Ukrainian (uk) translation (Yuri Chornoivan)
+
+Libraries:
+ - glib: Add some C getters to PkDistroUpgrade (Richard Hughes)
+ - packagekit-qt: Add searchGroups methods that can take a string so we can search on categories (Daniel Nicoletti)
+ - packagekit-qt: Emit transactionListChanged(empty) when daemon crashes (Daniel Nicoletti)
+ - packagekit-qt: Fix order of initialization (Daniel Nicoletti)
+ - packagekit-qt: Updated enums and converted tabs to spaces (Daniel Nicoletti)
+ - packagekit-qt: Use QDBusServiceWatcher instead of watching for serviceOwnerChanged() (Daniel Nicoletti)
+ - packagekit-qt: Write the getCategories() code so we can use it (Daniel Nicoletti)
+ - python: use SetHints now instead of SetLocale (Tim Waugh)
+
+Backends:
+ - aptcc: Added GStreamer search (Daniel Nicoletti)
+ - aptcc: Fix crash due to NULL strings
+ - aptcc: Fix regex not to match "()(64bit)" as we don't support multiarch anyway (Daniel Nicoletti)
+ - aptcc: Make sure the package is valid before some operations (Daniel Nicoletti)
+ - aptcc: Port away from PK_BACKEND_OPTIONS (Daniel Nicoletti)
+ - aptcc: Set the env proxy vars so that Apt::Acquire is not overwritten, fixes LP: #633008 (Daniel Nicoletti)
+ - aptcc: Use the new PK_ERROR_ENUM_CANNOT_GET_LOCK (Daniel Nicoletti)
+ - dummy: Add a more realistic UpgradeSystem (Richard Hughes)
+ - dummy: Fix a potential NULL dereference spotted by clang (Richard Hughes)
+ - pacman: Prevent recursive logging (Jonathan Conder)
+ - smart: Add origin to installed, if available (Anders F Bjorklund)
+ - yum: Allow a cache refresh when offline to deal with networkless setups (Richard Hughes)
+ - yum: Do not claim to implement the RepoSetData method (Richard Hughes)
+ - yum: Fix compiling when not using Zif (Richard Hughes)
+ - yum: Set the repository directory when doing a complete upgrade (Richard Hughes)
+ - yum: Support repo:foo virtual categories and searching using SearchGroup (Richard Hughes)
+ - yum: Support the optional origin extension for installed packages by using the yumdb information (Richard Hughes)
+ - zif: Add a new backend, which uses Zif to interface with the rpmdb and the Fedora metadata (Richard Hughes)
+ - zif: Add support for SearchGroup('repo:foo') (Richard Hughes)
+ - zif: Don't emit a ZifState warning if an update does not have update details (Richard Hughes)
+ - zif: Fix changelog generation when there is no changeset version available (Richard Hughes)
+ - zif: For updates without updateinfo, do not put '<none>' in the translated display (Richard Hughes)
+ - zif: Get the update vendor string and send to the daemon (Richard Hughes)
+ - zif: If we are running in background mode, depsolve the update lists (Richard Hughes)
+ - zif: Try to use PK_ERROR_ENUM_INTERNAL_ERROR less by using the correct PackageKit error code (Richard Hughes)
+ - zif: Use zif_package_get_printable() to get easier to understand error messages (Richard Hughes)
+ - zypp: Catch ZYppFactoryException in get_zypp (Zhang Qiang)
+ - zypp: Filter installed packages to update (Zhang Qiang)
+ - zypp: Fix a logic error in refresh cache (Zhang Qiang)
+ - zypp: Fix a typo in get_zypp (Zhang Qiang)
+ - zypp: Port from PK_BACKEND_OPTIONS function table (Duncan Mac-Vicar P)
+ - zypp: Support repo filter in geting repo list (Zhang Qiang)
+ - zypp: Transfer correct restart info while updating packages (Zhang Qiang)
+ - zypp: Use zypp::sat::SolvAttr::filelist in search file (Zhang Qiang)
+
+New Features:
+ - Add a new backend role for updating the whole distro: UpgradeSystem (Richard Hughes)
+ - Allow backend to encode the package origin in the package-id (Richard Hughes)
+ - Added PK_ERROR_ENUM_CANNOT_FETCH_SOURCES when refreshing cache fails (Daniel Nicoletti)
+ - Add recommendation repo:foo' to be able to return all packages in a certain repository (Richard Hughes)
+ - Change the spec to recommend 'category:web-development' rather than '@web-development' (Richard Hughes)
+ - Spawn KDE Debconf frontend if KDE is running (Matthias Klumpp)
+
+Bugfixes:
+ - Allow cancelling a transaction if it is not cancellable (Richard Hughes)
+ - Always show update a package even if already update (Zhang Qiang)
+ - Correct the description of org.freedesktop.packagekit.upgrade-system (Sveinung Kvilhaugsvik)
+ - Do not disable background mode if we are marked as interactive, as the two are orthognal (Richard Hughes)
+ - Ensure we can send a cache-age of maxuint to fix command-not-found (Richard Hughes)
+ - Ensure we emit PK_STATUS_ENUM_WAIT when a transaction is in the 'ready' state (Richard Hughes)
+ - Ignore unknown entries in the pk_x_bitfield_from_string() to ensure forwards compatibility (Richard Hughes)
+ - Use G_LOG_DOMAIN in all the backends (Richard Hughes)
+
 Version 0.6.10
 ~~~~~~~~~~~~~~
 Released: 2010-11-01
diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index e6547f4..5410b6b 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -72,6 +72,7 @@ Releases are normally on the first working Monday of each month.
 </p>
 <table>
 <tr><td><b>Version</b></td><td>&nbsp;&nbsp;</td><td><b>Date</b></td></tr>
+<tr><td>0.6.11</td><td></td><td>2010-12-13</td></tr>
 <tr><td>0.6.10</td><td></td><td>2010-11-01</td></tr>
 <tr><td>0.6.9</td><td></td><td>2010-10-04</td></tr>
 <tr><td>0.6.8</td><td></td><td>2010-09-06</td></tr>
commit 8be3967a18eda8928326a0e064674ddedfcc3290
Merge: 02721af... a0d3395...
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Sun Dec 12 18:31:26 2010 +0100

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 02721af4f8302914227c18d0b3834191add6dabb
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Sun Dec 12 18:30:45 2010 +0100

    trivial: Fix compilation issue with GCC 4.5
    
    For some reason, GCC throws an error cause the
    "command" var might be not initialized.
    So we initialize it now.

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 2d7c8cd..a77df9a 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -687,7 +687,7 @@ pk_transaction_process_script (PkTransaction *transaction, const gchar *filename
 	GFile *file = NULL;
 	GFileInfo *info = NULL;
 	guint file_uid;
-	gchar *command;
+	gchar *command = NULL;
 	gint exit_status = 0;
 	gboolean ret;
 	GError *error = NULL;
commit a0d3395f6b3372dab3e516921dcdcec746ab8653
Author: Anders F Bjorklund <afb at users.sourceforge.net>
Date:   Fri Dec 10 12:23:05 2010 +0100

    smart: add origin to installed, if available

diff --git a/backends/smart/smartBackend.py b/backends/smart/smartBackend.py
index d7eeeab..5121efe 100755
--- a/backends/smart/smartBackend.py
+++ b/backends/smart/smartBackend.py
@@ -1029,7 +1029,7 @@ class PackageKitSmartBackend(PackageKitBaseBackend):
         if repoid == 'local':
             channels = self.ctrl.getFileChannels()
         elif repoid:
-            if repoid == 'installed':
+            if repoid.startswith('installed'):
                 repoid = self.systemchannel
             channels = self.ctrl.getChannels()
             channels = [x for x in channels if x.getAlias() == repoid]
@@ -1073,6 +1073,10 @@ class PackageKitSmartBackend(PackageKitBaseBackend):
         channel = loader.getChannel()
         if package.installed:
             data = 'installed'
+            if hasattr(smart.pkgconf, 'getOrigin'):
+                origin = smart.pkgconf.getOrigin(package)
+                if origin:
+                    data += ':' + origin
         elif self._channel_is_local(channel):
             data = 'local'
         else:
commit 34a11a9123d14155097c1f7f81b1f45f54da0bf4
Author: Tim Waugh <twaugh at redhat.com>
Date:   Fri Dec 10 11:05:41 2010 +0000

    python: use SetHints now instead of SetLocale.

diff --git a/lib/python/packagekit/client.py b/lib/python/packagekit/client.py
index 5273a7e..b051fd3 100644
--- a/lib/python/packagekit/client.py
+++ b/lib/python/packagekit/client.py
@@ -168,7 +168,7 @@ class PackageKitTransaction:
 
     def set_locale(self, code):
         '''Set the language to the given locale code'''
-        return self._iface.SetLocale(code)
+        return self._iface.SetHints(['locale=%s' % code])
 
     def cancel(self):
         '''Cancel the transaction'''
commit 2ecb5fde0b9e14dcf897362f4e136b2f53331b6f
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Fri Dec 10 14:05:58 2010 +0800

    zypp:use zypp::sat::SolvAttr::filelist in search file
    
    Use zypp::sat::SolvAttr::filelist to instead of calling
    zypp_get_packages_by_file to search file with full path.
    
    Without this patch, 'pkcon search file' can only search files that has
    already been installed.

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 29b171a..f3af16f 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1433,14 +1433,13 @@ backend_find_packages_thread (PkBackend *backend)
 		// did not search in srcpackages.
 		break;
 	case SEARCH_TYPE_FILE: {
-		// zypp_build_pool (TRUE); called by zypp_get_packages_by_file
-		std::vector<zypp::sat::Solvable> *r;
-		r = zypp_get_packages_by_file (backend, search);
-		v.swap( *r );
-		delete r;
-		// zypp_get_packages_by_file does strange things :)
-		// Maybe it would be sufficient to simply query
-		// zypp::sat::SolvAttr::filelist instead?
+		zypp_build_pool (backend, TRUE);
+		q.addKind( zypp::ResKind::package );
+		q.addAttribute( zypp::sat::SolvAttr::name );
+		q.addAttribute( zypp::sat::SolvAttr::description );
+		q.addAttribute( zypp::sat::SolvAttr::filelist );
+		q.setFilesMatchFullPath(true);
+		q.setMatchExact();
 		break;
 	    }
 	};
commit d10753a01553899e8e4f7659b6e6a4745d9a0275
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 18:29:56 2010 +0000

    zif: add support for SearchGroup('repo:foo')

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index 0efdfba..2cc0695 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -776,6 +776,96 @@ out:
 }
 
 /**
+ * pk_backend_search_repos:
+ */
+static GPtrArray *
+pk_backend_search_repos (gchar **repos,
+			 ZifState *state,
+			 GError **error)
+{
+	gboolean ret;
+	gchar *installed_repo_id = NULL;
+	GPtrArray *array_local = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *array_remote = NULL;
+	GPtrArray *array_tmp = NULL;
+	guint i;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifStoreRemote *store;
+
+	/* set steps */
+	ret = zif_state_set_steps (state,
+				   NULL,
+				   90, /* search installed */
+				   5, /* get remote store */
+				   5, /* get store */
+				   -1);
+	g_assert (ret);
+
+	/* results array */
+	array_tmp = zif_object_array_new ();
+
+	/* blank */
+	if (g_strcmp0 (repos[0], "repo:") == 0)
+		goto skip;
+
+	/* get all installed packages that were installed from this repo */
+	installed_repo_id = g_strdup_printf ("installed:%s", repos[0]);
+	state_local = zif_state_get_child (state);
+	array_local = zif_store_get_packages (priv->store_local, state_local, error);
+	if (array_local == NULL)
+		goto out;
+	for (i=0; i<array_local->len; i++) {
+		package = g_ptr_array_index (array_local, i);
+		if (g_strcmp0 (zif_package_get_data (package),
+			       installed_repo_id) == 0)
+			zif_object_array_add (array_tmp, package);
+	}
+
+	/* this section done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+
+	/* get all the available packages from this repo */
+	state_local = zif_state_get_child (state);
+	store = zif_repos_get_store (priv->repos, repos[0], state_local, error);
+	if (store == NULL)
+		goto out;
+
+	/* this section done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+
+	state_local = zif_state_get_child (state);
+	array_remote = zif_store_get_packages (ZIF_STORE (store), state_local, error);
+	if (array_remote == NULL)
+		goto out;
+	zif_object_array_add_array (array_tmp, array_remote);
+
+	/* this section done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+skip:
+	/* success */
+	array = g_ptr_array_ref (array_tmp);
+out:
+	g_free (installed_repo_id);
+	if (store != NULL)
+		g_object_unref (store);
+	if (array_tmp != NULL)
+		g_ptr_array_unref (array_tmp);
+	if (array_local != NULL)
+		g_ptr_array_unref (array_local);
+	if (array_remote != NULL)
+		g_ptr_array_unref (array_remote);
+	return array;
+}
+
+/**
  * pk_backend_search_collections:
  */
 static GPtrArray *
@@ -1172,6 +1262,20 @@ pk_backend_search_thread (PkBackend *backend)
 					search_stripped[i] = g_strdup (&search[i][1]);
 				array = zif_store_array_search_category (store_array, search_stripped, state_local, &error);
 				g_strfreev (search_stripped);
+			} else if (g_str_has_prefix (search[0], "category:")) {
+				search_entries = g_strv_length (search);
+				search_stripped = g_new0 (gchar *, search_entries + 1);
+				for (i=0; i < search_entries; i++)
+					search_stripped[i] = g_strdup (&search[i][9]);
+				array = zif_store_array_search_category (store_array, search_stripped, state_local, &error);
+				g_strfreev (search_stripped);
+			} else if (g_str_has_prefix (search[0], "repo:")) {
+				search_entries = g_strv_length (search);
+				search_stripped = g_new0 (gchar *, search_entries + 1);
+				for (i=0; i < search_entries; i++)
+					search_stripped[i] = g_strdup (&search[i][5]);
+				array = pk_backend_search_repos (search_stripped, state_local, &error);
+				g_strfreev (search_stripped);
 			} else if (g_strcmp0 (search[0], "newest") == 0) {
 				recent = zif_config_get_uint (priv->config, "recent", &error);
 				array = pk_backend_search_newest (store_array, state_local, recent, &error);
@@ -4389,21 +4493,29 @@ out:
 static gboolean
 pk_backend_get_categories_thread (PkBackend *backend)
 {
+	const gchar *name;
+	const gchar *repo_id;
+	gboolean enabled;
 	gboolean ret;
 	gchar *cat_id;
+	GError *error = NULL;
 	GPtrArray *array = NULL;
+	GPtrArray *repos = NULL;
 	GPtrArray *stores = NULL;
 	guint i;
 	ZifCategory *cat;
-
 	ZifState *state_local;
-	GError *error = NULL;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+	ZifStoreRemote *store;
 
 	/* set steps */
 	ret = zif_state_set_steps (priv->state,
 				   NULL,
 				   25, /* get stores */
-				   60, /* get cats */
+				   50, /* get cats */
+				   5, /* get repos */
+				   5, /* emit repos */
 				   15, /* emit */
 				   -1);
 	g_assert (ret);
@@ -4489,8 +4601,131 @@ pk_backend_get_categories_thread (PkBackend *backend)
 		g_error_free (error);
 		goto out;
 	}
+
+	/* add the repo category objects */
+	pk_backend_category (backend,
+			     NULL,
+			     "repo:",
+			     "Software Sources",
+			     "Packages from specific software sources",
+			     "base-system");
+	state_local = zif_state_get_child (priv->state);
+	repos = zif_repos_get_stores (priv->repos, state_local, &error);
+	if (repos == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_NOT_FOUND,
+				       "failed to find repos: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* looks at each store */
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, repos->len);
+	for (i=0; i<repos->len; i++) {
+		store = g_ptr_array_index (repos, i);
+
+		/* allow filtering on devel */
+		state_loop = zif_state_get_child (state_local);
+
+		/* devel, name, enabled */
+		ret = zif_state_set_steps (state_loop,
+					   NULL,
+					   50, /* get enabled */
+					   50, /* get name */
+					   -1);
+		g_assert (ret);
+
+		state_tmp = zif_state_get_child (state_loop);
+		enabled = zif_store_remote_get_enabled (store, state_tmp, NULL);
+		if (!enabled) {
+			ret = zif_state_finished (state_loop, &error);
+			if (!ret) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+						       "cancelled: %s",
+						       error->message);
+				g_error_free (error);
+				goto out;
+			}
+			goto skip;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get name */
+		state_tmp = zif_state_get_child (state_loop);
+		name = zif_store_remote_get_name (store, state_tmp, NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* emit */
+		repo_id = zif_store_get_id (ZIF_STORE (store));
+		cat_id = g_strdup_printf ("repo:%s", repo_id);
+		pk_backend_category (backend,
+				     "repo:",
+				     cat_id,
+				     name,
+				     name,
+				     "base-system");
+		g_free (cat_id);
+skip:
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
 out:
 	pk_backend_finished (backend);
+	if (repos != NULL)
+		g_ptr_array_unref (repos);
 	if (array != NULL)
 		g_ptr_array_unref (array);
 	if (stores != NULL)
commit 520752778559a4b2a6f14340febe7b82d89f1005
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Thu Dec 9 18:46:30 2010 +0100

    Spawn KDE Debconf frontend if KDE is running
    
    Make pk-glib2 run a KDE frontend if it is installed
    and KDE is running.
    This will make it possible for KDE users to have nice
    KDE dialogs displayed when using pkcon.

diff --git a/lib/packagekit-glib2/pk-client-helper.c b/lib/packagekit-glib2/pk-client-helper.c
index fd440ac..4781a90 100644
--- a/lib/packagekit-glib2/pk-client-helper.c
+++ b/lib/packagekit-glib2/pk-client-helper.c
@@ -110,19 +110,21 @@ pk_client_helper_stop (PkClientHelper *client_helper, GError **error)
 	g_return_val_if_fail (priv->socket_file != NULL, FALSE);
 
 	/* close the socket */
-	ret = g_socket_close (priv->socket, error);
-	if (!ret)
-		goto out;
+	if (priv->socket != NULL) {
+		ret = g_socket_close (priv->socket, error);
+		if (!ret)
+			goto out;
 
-	/* stop watching for events */
-	if (priv->io_channel_socket_listen_id > 0)
-		g_source_remove (priv->io_channel_socket_listen_id);
-	if (priv->io_channel_child_stdout_listen_id > 0)
-		g_source_remove (priv->io_channel_child_stdout_listen_id);
-	if (priv->io_channel_child_stderr_listen_id > 0)
-		g_source_remove (priv->io_channel_child_stderr_listen_id);
-	if (priv->io_channel_child_stdin_listen_id > 0)
-		g_source_remove (priv->io_channel_child_stdin_listen_id);
+		/* stop watching for events */
+		if (priv->io_channel_socket_listen_id > 0)
+			g_source_remove (priv->io_channel_socket_listen_id);
+		if (priv->io_channel_child_stdout_listen_id > 0)
+			g_source_remove (priv->io_channel_child_stdout_listen_id);
+		if (priv->io_channel_child_stderr_listen_id > 0)
+			g_source_remove (priv->io_channel_child_stderr_listen_id);
+		if (priv->io_channel_child_stdin_listen_id > 0)
+			g_source_remove (priv->io_channel_child_stdin_listen_id);
+	}
 
 	/* kill process */
 	if (priv->child_pid > 0) {
@@ -138,10 +140,15 @@ pk_client_helper_stop (PkClientHelper *client_helper, GError **error)
 		}
 	}
 
+	/* when we're here, everything worked fine */
+	ret = TRUE;
+
 	/* remove any socket file */
-	ret = g_file_delete (priv->socket_file, NULL, error);
-	if (!ret)
-		goto out;
+	if (g_file_query_exists (priv->socket_file, NULL)) {
+		ret = g_file_delete (priv->socket_file, NULL, error);
+		if (!ret)
+		    goto out;
+	}
 out:
 	return ret;
 }
@@ -437,7 +444,10 @@ pk_client_helper_start (PkClientHelper *client_helper,
 			gchar **argv, gchar **envp,
 			GError **error)
 {
+	guint i;
 	gboolean ret = FALSE;
+	gboolean use_kde_helper = FALSE;
+	GError *error_local = NULL;
 	gint fd;
 	GSocketAddress *address = NULL;
 	PkClientHelperPrivate *priv = client_helper->priv;
@@ -459,13 +469,20 @@ pk_client_helper_start (PkClientHelper *client_helper,
 	}
 
 	g_debug ("using socket in %s", socket_filename);
+	priv->socket_file = g_file_new_for_path (socket_filename);
+
+	/* preconfigure KDE frontend, if requested */
+	for (i=0; envp[i] != NULL; i++) {
+		if (g_strcmp0 (envp[i], "DEBIAN_FRONTEND=kde") == 0)
+			if (g_file_test ("/usr/bin/debconf-kde-helper", G_FILE_TEST_EXISTS))
+				use_kde_helper = TRUE;
+	}
 
 	/* cache for actual start */
 	priv->argv = g_strdupv (argv);
 	priv->envp = g_strdupv (envp);
 
 	/* create socket */
-	priv->socket_file = g_file_new_for_path (socket_filename);
 	priv->socket = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, error);
 	if (priv->socket == NULL)
 		goto out;
@@ -476,6 +493,23 @@ pk_client_helper_start (PkClientHelper *client_helper,
 	if (!ret)
 		goto out;
 
+	/* spawn KDE debconf communicator */
+	if (use_kde_helper) {
+		priv->argv = g_new0 (gchar *, 2);
+		priv->argv[0] = g_strdup ("/usr/bin/debconf-kde-helper");
+		priv->argv[1] = g_strconcat ("--socket-path", "=", socket_filename, NULL);
+
+		ret = g_spawn_async (NULL, priv->argv, NULL, G_SPAWN_STDOUT_TO_DEV_NULL,
+			NULL, NULL, &priv->child_pid, &error_local);
+		if (!ret) {
+			g_warning ("failed to spawn: %s", error_local->message);
+			g_error_free (error_local);
+			goto out;
+		}
+		g_debug ("started process %s with pid %i", priv->argv[0], priv->child_pid);
+		goto out;
+	}
+
 	/* listen to the socket */
 	ret = g_socket_listen (priv->socket, error);
 	if (!ret)
commit a53380b0846cfcf5cc263b2c1ee26220d9eec728
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 16:29:38 2010 +0000

    yum: Support repo:foo virtual categories and searching using SearchGroup

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 0d10c49..0edce6d 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -520,6 +520,113 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
         return pkgs
 
+    def _handle_repo_group_search_using_yumdb(self, repo_id, filters):
+        """
+        Handle the special repo groups
+        """
+        self.percentage(None)
+        pkgfilter = YumFilter(filters)
+        available = []
+        installed = []
+
+        pkgs = []
+        # get installed packages that came from this repo
+        try:
+            pkgs = self.yumbase.rpmdb
+        except exceptions.IOError, e:
+            self.error(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+        except Exception, e:
+            self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+        for pkg in pkgs:
+            if pkg.yumdb_info.get('from_repo') == repo_id:
+                pkgfilter.add_installed([pkg])
+
+        # find the correct repo
+        try:
+            repos = self.yumbase.repos.findRepos(repo_id)
+        except exceptions.IOError, e:
+            raise PkError(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+        except Exception, e:
+            raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+        if len(repos) == 0:
+            raise PkError(ERROR_REPO_NOT_FOUND, "cannot find repo %s" % repo)
+
+        # the repo might have been disabled if it is no longer contactable
+        if not repos[0].isEnabled():
+            raise PkError(ERROR_PACKAGE_NOT_FOUND, '%s cannot be found as %s is disabled' % (_format_package_id(package_id), repos[0].id))
+
+        # populate the sack with data
+        try:
+            self.yumbase.repos.populateSack(repo_id)
+        except exceptions.IOError, e:
+            raise PkError(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+        except Exception, e:
+            raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+        for pkg in repos[0].sack:
+            available.append(pkg)
+
+        # add list to filter
+        pkgfilter.add_installed(installed)
+        pkgfilter.add_available(available)
+        package_list = pkgfilter.post_process()
+        self._show_package_list(package_list)
+        self.percentage(100)
+
+    def _handle_repo_group_search(self, repo_id, filters):
+        """
+        Handle the special repo groups
+        This is much slower than using _handle_repo_group_search_using_yumdb()
+        as we have to resolve each package in the repo to see if it's
+        installed.
+        Of course, on RHEL5, there is no yumdb.
+        """
+        self.percentage(None)
+        pkgfilter = YumFilter(filters)
+        available = []
+        installed = []
+
+        # find the correct repo
+        try:
+            repos = self.yumbase.repos.findRepos(repo_id)
+        except exceptions.IOError, e:
+            raise PkError(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+        except Exception, e:
+            raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+        if len(repos) == 0:
+            raise PkError(ERROR_REPO_NOT_FOUND, "cannot find repo %s" % repo)
+        print "found repos"
+
+        # the repo might have been disabled if it is no longer contactable
+        if not repos[0].isEnabled():
+            raise PkError(ERROR_PACKAGE_NOT_FOUND, '%s cannot be found as %s is disabled' % (_format_package_id(package_id), repos[0].id))
+
+        # populate the sack with data
+        try:
+            self.yumbase.repos.populateSack(repo_id)
+        except exceptions.IOError, e:
+            raise PkError(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+        except Exception, e:
+            raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+
+        for pkg in repos[0].sack:
+            try:
+                instpo = self.yumbase.rpmdb.searchNevra(name=pkg.name, epoch=pkg.epoch, ver=pkg.ver, rel=pkg.rel, arch=pkg.arch)
+            except exceptions.IOError, e:
+                raise PkError(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+            except Exception, e:
+                raise PkError(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+            if self._is_inst(pkg):
+                installed.append(instpo[0])
+            else:
+                available.append(pkg)
+
+        # add list to filter
+        pkgfilter.add_installed(installed)
+        pkgfilter.add_available(available)
+        package_list = pkgfilter.post_process()
+        self._show_package_list(package_list)
+        self.percentage(100)
+
     def _handle_newest(self, filters):
         """
         Handle the special newest group
@@ -640,6 +747,14 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                 self.error(e.code, e.details, exit=False)
             return
 
+        # handle repo groups
+        if 'repo:' in values[0]:
+            try:
+                self._handle_repo_group_search_using_yumdb(values[0].replace('repo:',''), filters)
+            except PkError, e:
+                self.error(e.code, e.details, exit=False)
+            return
+
         # for each search term
         for value in values:
             # handle dynamic groups (yum comps group)
@@ -894,6 +1009,20 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                 self.category("", cat_id, name, summary, icon)
                 self._get_groups(cat_id)
 
+        # also add the repo category objects
+        self.category("", 'repo:', 'Software Sources', 'Packages from specific software sources', 'base-system')
+        try:
+            repos = self.yumbase.repos.repos.values()
+        except exceptions.IOError, e:
+            self.error(ERROR_NO_SPACE_ON_DEVICE, "Disk error: %s" % _to_unicode(e))
+            return
+        except Exception, e:
+            self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
+            return
+        for repo in repos:
+            if repo.isEnabled():
+                self.category("repo:", "repo:" + repo.id, repo.name, 'Packages from ' + repo.name, 'base-system')
+
     def _get_groups(self, cat_id):
         '''
         Implement the get-collections functionality
commit c1ddea497f0634acc393f15f554553403fbc5943
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 16:21:10 2010 +0000

    Add 'repo:foo' to the specification to be able to return all packages in a certain repository and to list them as categories

diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index b879efa..da08713 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -283,6 +283,13 @@
             This method typically emits
             <doc:tt>Categories</doc:tt> and <doc:tt>Error</doc:tt>.
           </doc:para>
+          <doc:para>
+            Note: Categories can be returned that represent groups of
+            packages in a specific repository.
+            These will have a category prefix of <doc:tt>repo:</doc:tt>
+            which should be understood by <doc:tt>SearchGroups</doc:tt>
+            if this feature is used.
+          </doc:para>
       </doc:doc>
     </method>
 
@@ -1205,6 +1212,14 @@
               This is still supported, and backends should continue to support
               category searches like <doc:tt>@web-development</doc:tt>.
             </doc:para>
+            <doc:para>
+              If the values strings are prefixed with <doc:tt>repo:</doc:tt> then
+              the request is treated as a 'repository search', for example:
+              <doc:tt>repo:fedora-debuginfo</doc:tt>.
+              In this instance all packages that were either installed
+              from, or can be installed from the <doc:tt>fedora-debuginfo</doc:tt>
+              source would be returned.
+            </doc:para>
           </doc:summary>
         </doc:doc>
       </arg>
commit 2272147a6d0aa846da8aa3e41c099f4082ee43e3
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 16:19:27 2010 +0000

    Change the spec to recommend 'category:web-development' rather than '@web-development' as it's less magic

diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index 2855550..b879efa 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -1194,11 +1194,16 @@
             <doc:para>
               An enumerated group type, or <doc:tt>unknown</doc:tt>. The search
               cannot contain spaces.
+              The following recommendations are made below:
             </doc:para>
             <doc:para>
-              If the values strings are prefixed with <doc:tt>@</doc:tt> then
-              this is treated as a category, for example:
-              <doc:tt>@web-development</doc:tt>.
+              If the values strings are prefixed with <doc:tt>category:</doc:tt> then
+              the request is treated as a 'category search', for example:
+              <doc:tt>category:web-development</doc:tt>.
+              Note: the old nomenclature for a 'category search' suggested
+              using a <doc:tt>@</doc:tt> prefix for the values options.
+              This is still supported, and backends should continue to support
+              category searches like <doc:tt>@web-development</doc:tt>.
             </doc:para>
           </doc:summary>
         </doc:doc>
commit ef0f3ede40592650248db5673ede85ab66b5d841
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 12:14:45 2010 +0000

    yum: support the optional origin extension for installed packages by using the yumdb information

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index f956d3e..0d10c49 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -421,7 +421,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
             try:
                 res = self.yumbase.searchGenerator(searchlist, values)
                 for (pkg, inst) in res:
-                    if pkg.repo.id == 'installed':
+                    if pkg.repo.id.startswith('installed'):
                         installed.append(pkg)
                     else:
                         available.append(pkg)
@@ -1056,7 +1056,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         # get e, v, r from package id version
         e, v, r = _getEVR(idver)
 
-        if repo == 'installed':
+        if repo.startswith('installed'):
             # search the rpmdb for the nevra
             try:
                 pkgs = self.yumbase.rpmdb.searchNevra(name=n, epoch=e, ver=v, rel=r, arch=a)
@@ -2478,7 +2478,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
 
         # if we are remote and in the cache, our size is zero
         size = pkg.size
-        if pkg.repo.id != 'installed' and pkg.verifyLocalPkg():
+        if not pkg.repo.id.startswith('installed') and pkg.verifyLocalPkg():
             size = 0
 
         group = self.comps.get_group(pkg.name)
@@ -2514,6 +2514,11 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         repo = str(pkg.repo)
         if repo.startswith('/'):
             repo = "local"
+        # can we add data from the yumdb
+        if repo == 'installed':
+            repo_tmp = pkg.yumdb_info.get('from_repo')
+            if repo_tmp:
+                repo = 'installed:' + repo_tmp
         package_id = self.get_package_id(pkg.name, pkgver, pkg.arch, repo)
         return package_id
 
commit 07e6cd5ba15bd8c3f4553c5bdf748a7c7636c4fa
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Dec 9 11:16:35 2010 +0000

    Add an optional spec enhancement to allow backend to encode the package origin in the package-id
    
    This allow local package-id in the format 'hal;0.1;i386;installed:fedora'

diff --git a/docs/api/spec/pk-concepts.xml b/docs/api/spec/pk-concepts.xml
index aaf82b2..b74b532 100644
--- a/docs/api/spec/pk-concepts.xml
+++ b/docs/api/spec/pk-concepts.xml
@@ -22,8 +22,7 @@
       be present.
       For instance, <literal>gnome-keyring-manager;2.18.0;;</literal> is
       valid but <literal>gnome-keyring-manager;2.18.0</literal> is not.
-      The data field can be used for the repository name or any other purpose.
-      It is designed to make the life of a backend writer a little bit easier.
+      The data field is used for the repository name.
     </para>
     <para>
       The data field for an installed package must be
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index 17b3ab9..2855550 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -1063,7 +1063,8 @@
           <doc:para>
             <doc:tt>Package</doc:tt> enumerated types should be
             <doc:tt>available</doc:tt> or <doc:tt>installed</doc:tt>.
-          </doc:para>        </doc:description>
+          </doc:para>
+        </doc:description>
       </doc:doc>
       <arg type="s" name="filter" direction="in">
         <doc:doc>
@@ -1115,7 +1116,8 @@
           <doc:para>
             <doc:tt>Package</doc:tt> enumerated types should be
             <doc:tt>available</doc:tt> or <doc:tt>installed</doc:tt>.
-          </doc:para>        </doc:description>
+          </doc:para>
+        </doc:description>
       </doc:doc>
       <arg type="s" name="filter" direction="in">
         <doc:doc>
@@ -1870,7 +1872,32 @@
         <doc:doc>
           <doc:summary>
             <doc:para>
-              A valid package ID string with as much data as known
+              This identifier is of the form <doc:tt>name;version;arch;data</doc:tt>
+              in a single string and is meant to represent a single package
+              unique across all local and remote data stores.
+            </doc:para>
+            <doc:para>
+              For a remote, not-installed package the data field should
+              be set as the repository identifier or repository name.
+            </doc:para>
+            <doc:para>
+              The data field for an installed package must be prefixed
+              with <doc:tt>installed</doc:tt> as this is used to identify
+              which packages are installable or installed in the client
+              tools.
+            </doc:para>
+            <doc:para>
+              As a special extension, if the package manager is able to
+              track which repository a package was originally installed
+              from, then the data field can be set to
+              <doc:tt>installed:REPO-NAME</doc:tt> which allows the
+              frontend client to advise the user of the package origin.
+            </doc:para>
+            <doc:para>
+              The data field for a non-installed local package must be
+              <doc:tt>local</doc:tt> as this signifies a repository name is
+              not available and that package resides locally on the
+              client system rather than in any specific repository.
             </doc:para>
           </doc:summary>
         </doc:doc>
commit adbf3a705ff16d0b9d561aea210c8a7c5b9920e7
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 7 16:00:45 2010 +0000

    trivial: remove some flags that are no longer needed now the transaction has it's own state

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 77bc85b..2d7c8cd 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -91,8 +91,6 @@ struct PkTransactionPrivate
 	guint			 remaining_time;
 	guint			 speed;
 	gboolean		 finished;
-	gboolean		 running;
-	gboolean		 has_been_run;
 	gboolean		 allow_cancel;
 	gboolean		 waiting_for_auth;
 	gboolean		 emit_eula_required;
@@ -1051,9 +1049,6 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit_enum, PkTransact
 	/* we should get no more from the backend with this tid */
 	transaction->priv->finished = TRUE;
 
-	/* mark not running */
-	transaction->priv->running = FALSE;
-
 	/* if we did ::repo-signature-required or ::eula-required, change the error code */
 	if (transaction->priv->emit_signature_required)
 		exit_enum = PK_EXIT_ENUM_KEY_REQUIRED;
@@ -1945,8 +1940,6 @@ pk_transaction_set_running (PkTransaction *transaction)
 				  G_CALLBACK (pk_transaction_speed_cb), transaction);
 
 	/* mark running */
-	priv->running = TRUE;
-	priv->has_been_run = TRUE;
 	priv->allow_cancel = FALSE;
 
 	/* reset after the pre-transaction checks */
@@ -2826,7 +2819,7 @@ pk_transaction_cancel (PkTransaction *transaction, DBusGMethodInvocation *contex
 
 skip_uid:
 	/* if it's never been run, just remove this transaction from the list */
-	if (!transaction->priv->has_been_run) {
+	if (transaction->priv->state <= PK_TRANSACTION_STATE_READY) {
 		pk_transaction_progress_changed_emit (transaction, 100, 100, 0, 0);
 		pk_transaction_allow_cancel_emit (transaction, FALSE);
 		pk_transaction_status_changed_emit (transaction, PK_STATUS_ENUM_FINISHED);
@@ -5766,8 +5759,6 @@ pk_transaction_init (PkTransaction *transaction)
 #endif
 	transaction->priv = PK_TRANSACTION_GET_PRIVATE (transaction);
 	transaction->priv->finished = FALSE;
-	transaction->priv->running = FALSE;
-	transaction->priv->has_been_run = FALSE;
 	transaction->priv->waiting_for_auth = FALSE;
 	transaction->priv->allow_cancel = TRUE;
 	transaction->priv->emit_eula_required = FALSE;
commit bdc9c0edf89817ef75f086c961a2f6164db33769
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 7 15:58:41 2010 +0000

    Allow cancelling a transaction if it is not cancellable
    
    Also, don't set an auto-cancel timeout as it's really not a safe thing
    to do. Let the backend handle this always.

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 151689d..48723db 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -114,7 +114,6 @@ struct PkBackendPrivate
 	guint			 signal_error_timeout;
 	guint			 signal_finished;
 	guint			 speed;
-	guint			 cancel_id;
 	GHashTable		*eulas;
 	GModule			*handle;
 	GThread			*thread;
@@ -2253,12 +2252,6 @@ pk_backend_finished (PkBackend *backend)
 	/* safe to check now */
 	g_return_val_if_fail (backend->priv->locked != FALSE, FALSE);
 
-	/* no longer need to cancel */
-	if (backend->priv->cancel_id != 0) {
-		g_source_remove (backend->priv->cancel_id);
-		backend->priv->cancel_id = 0;
-	}
-
 	/* find out what we just did */
 	role_text = pk_role_enum_to_string (backend->priv->role);
 	g_debug ("finished role %s", role_text);
@@ -2740,9 +2733,6 @@ pk_backend_finalize (GObject *object)
 	g_object_unref (backend->priv->conf);
 	g_hash_table_destroy (backend->priv->eulas);
 
-	if (backend->priv->cancel_id > 0)
-		g_source_remove (backend->priv->cancel_id);
-
 	if (backend->priv->handle != NULL)
 		g_module_close (backend->priv->handle);
 	g_debug ("parent_class->finalize");
@@ -2965,22 +2955,6 @@ pk_backend_reset (PkBackend *backend)
 }
 
 /**
- * pk_backend_cancel_cb:
- */
-static gboolean
-pk_backend_cancel_cb (PkBackend *backend)
-{
-	/* set an error if the backend didn't do it for us */
-	if (!backend->priv->set_error) {
-		g_warning ("backend failed to exit in %ims, cancelling ourselves", PK_BACKEND_CANCEL_ACTION_TIMEOUT);
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "transaction was cancelled");
-		pk_backend_finished (backend);
-	}
-	backend->priv->cancel_id = 0;
-	return FALSE;
-}
-
-/**
  * pk_backend_cancel:
  */
 void
@@ -2990,13 +2964,6 @@ pk_backend_cancel (PkBackend *backend)
 
 	/* call into the backend */
 	backend->priv->desc->cancel (backend);
-
-	/* set an error if the backend didn't do it for us */
-	backend->priv->cancel_id = g_timeout_add (PK_BACKEND_CANCEL_ACTION_TIMEOUT,
-						  (GSourceFunc) pk_backend_cancel_cb, backend);
-#if GLIB_CHECK_VERSION(2,25,8)
-	g_source_set_name_by_id (backend->priv->cancel_id, "[PkBackend] cancel");
-#endif
 }
 
 /**
@@ -3469,7 +3436,6 @@ pk_backend_init (PkBackend *backend)
 	backend->priv->locked = FALSE;
 	backend->priv->use_threads = FALSE;
 	backend->priv->signal_finished = 0;
-	backend->priv->cancel_id = 0;
 	backend->priv->speed = 0;
 	backend->priv->signal_error_timeout = 0;
 	backend->priv->during_initialize = FALSE;
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index ac77e84..77bc85b 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -2790,16 +2790,6 @@ pk_transaction_cancel (PkTransaction *transaction, DBusGMethodInvocation *contex
 		goto out;
 	}
 
-	/* check if it's safe to kill */
-	if (!transaction->priv->allow_cancel) {
-		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_CANNOT_CANCEL,
-				     "Tried to cancel %s (%s) that is not safe to kill",
-				     transaction->priv->tid,
-				     pk_role_enum_to_string (transaction->priv->role));
-		pk_transaction_dbus_return_error (context, error);
-		goto out;
-	}
-
 	/* first, check the sender -- if it's the same we don't need to check the uid */
 	sender = dbus_g_method_get_sender (context);
 	ret = (g_strcmp0 (transaction->priv->sender, sender) == 0);
commit 512fb25514fa6926b46bb5734f3b55a533c1723d
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Dec 7 15:52:09 2010 +0000

    zif: try to use PK_ERROR_ENUM_INTERNAL_ERROR less by using the correct PackageKit error code

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index d7c718d..0efdfba 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -128,6 +128,150 @@ pk_backend_is_all_installed (gchar **package_ids)
 }
 
 /**
+ * pk_backend_convert_error:
+ */
+static PkErrorEnum
+pk_backend_convert_error (const GError *error)
+{
+	PkErrorEnum error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+	if (error->domain == ZIF_STATE_ERROR) {
+		switch (error->code) {
+		case ZIF_STATE_ERROR_CANCELLED:
+			error_code = PK_ERROR_ENUM_TRANSACTION_CANCELLED;
+			break;
+		case ZIF_STATE_ERROR_INVALID:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_TRANSACTION_ERROR) {
+		switch (error->code) {
+		case ZIF_TRANSACTION_ERROR_FAILED:
+			error_code = PK_ERROR_ENUM_TRANSACTION_ERROR;
+			break;
+		case ZIF_TRANSACTION_ERROR_NOTHING_TO_DO:
+			error_code = PK_ERROR_ENUM_NO_PACKAGES_TO_UPDATE;
+			break;
+		case ZIF_TRANSACTION_ERROR_NOT_SUPPORTED:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_TRANSACTION_ERROR_CONFLICTING:
+			error_code = PK_ERROR_ENUM_FILE_CONFLICTS;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_STORE_ERROR) {
+		switch (error->code) {
+		case ZIF_STORE_ERROR_FAILED_AS_OFFLINE:
+			error_code = PK_ERROR_ENUM_NO_NETWORK;
+			break;
+		case ZIF_STORE_ERROR_FAILED_TO_FIND:
+			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
+			break;
+		case ZIF_STORE_ERROR_FAILED_TO_DOWNLOAD:
+			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
+			break;
+		case ZIF_STORE_ERROR_ARRAY_IS_EMPTY:
+			error_code = PK_ERROR_ENUM_NO_PACKAGES_TO_UPDATE;
+			break;
+		case ZIF_STORE_ERROR_NO_SUPPORT:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_STORE_ERROR_NOT_LOCKED:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_STORE_ERROR_FAILED:
+		case ZIF_STORE_ERROR_MULTIPLE_MATCHES:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_PACKAGE_ERROR) {
+		switch (error->code) {
+		case ZIF_PACKAGE_ERROR_FAILED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_CONFIG_ERROR) {
+		switch (error->code) {
+		case ZIF_CONFIG_ERROR_FAILED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_DOWNLOAD_ERROR) {
+		switch (error->code) {
+		case ZIF_DOWNLOAD_ERROR_FAILED:
+		case ZIF_DOWNLOAD_ERROR_PERMISSION_DENIED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_MD_ERROR) {
+		switch (error->code) {
+		case ZIF_MD_ERROR_NO_SUPPORT:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_MD_ERROR_FAILED_AS_OFFLINE:
+			error_code = PK_ERROR_ENUM_NO_NETWORK;
+			break;
+		case ZIF_MD_ERROR_FAILED_DOWNLOAD:
+			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
+			break;
+		case ZIF_MD_ERROR_BAD_SQL:
+		case ZIF_MD_ERROR_FAILED_TO_LOAD:
+		case ZIF_MD_ERROR_FILE_TOO_OLD:
+		case ZIF_MD_ERROR_FAILED:
+		case ZIF_MD_ERROR_NO_FILENAME:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	} else if (error->domain == ZIF_RELEASE_ERROR) {
+		switch (error->code) {
+		case ZIF_RELEASE_ERROR_DOWNLOAD_FAILED:
+			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
+			break;
+		case ZIF_RELEASE_ERROR_FILE_INVALID:
+			error_code = PK_ERROR_ENUM_FAILED_CONFIG_PARSING;
+			break;
+		case ZIF_RELEASE_ERROR_LOW_DISKSPACE:
+			error_code = PK_ERROR_ENUM_NO_SPACE_ON_DEVICE;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_FOUND:
+			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_SUPPORTED:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_RELEASE_ERROR_NO_UUID_FOR_ROOT:
+		case ZIF_RELEASE_ERROR_SETUP_INVALID:
+		case ZIF_RELEASE_ERROR_SPAWN_FAILED:
+		case ZIF_RELEASE_ERROR_WRITE_FAILED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+	}
+	if (error_code == PK_ERROR_ENUM_INTERNAL_ERROR) {
+		g_warning ("failed to match error: %s:%i: %s",
+			   g_quark_to_string (error->domain),
+			   error->code,
+			   error->message);
+	}
+	return error_code;
+}
+
+/**
  * pk_backend_transaction_start:
  */
 void
@@ -192,7 +336,7 @@ pk_backend_transaction_start (PkBackend *backend)
 					  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to set prefix: %s",
 				       error->message);
 		g_error_free (error);
@@ -237,6 +381,9 @@ pk_backend_transaction_start (PkBackend *backend)
 	/* setup state */
 	zif_state_reset (priv->state);
 
+	/* allow cancelling again */
+	g_cancellable_reset (priv->cancellable);
+
 	/* start with a new transaction */
 	zif_transaction_reset (priv->transaction);
 out:
@@ -965,7 +1112,7 @@ pk_backend_search_thread (PkBackend *backend)
 							     &error);
 	if (store_array == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -990,7 +1137,7 @@ pk_backend_search_thread (PkBackend *backend)
 		array = zif_store_array_get_packages (store_array, state_local, &error);
 		if (array == NULL) {
 			pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get packages: %s", error->message);
 			g_error_free (error);
 			goto out;
@@ -1030,7 +1177,7 @@ pk_backend_search_thread (PkBackend *backend)
 				array = pk_backend_search_newest (store_array, state_local, recent, &error);
 				if (array == NULL) {
 					pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get packages: %s", error->message);
 					g_error_free (error);
 					goto out;
@@ -1039,7 +1186,7 @@ pk_backend_search_thread (PkBackend *backend)
 				array = pk_backend_search_collections (store_array, state_local, &error);
 				if (array == NULL) {
 					pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get packages: %s", error->message);
 					g_error_free (error);
 					goto out;
@@ -1061,7 +1208,7 @@ pk_backend_search_thread (PkBackend *backend)
 		}
 		if (array == NULL) {
 			pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to search: %s", error->message);
 			g_error_free (error);
 			goto out;
@@ -1370,6 +1517,7 @@ pk_backend_initialize (PkBackend *backend)
 
 	/* ZifState */
 	priv->state = zif_state_new ();
+	zif_state_set_cancellable (priv->state, priv->cancellable);
 	g_signal_connect (priv->state, "percentage-changed",
 			  G_CALLBACK (pk_backend_state_percentage_changed_cb),
 			  backend);
@@ -1558,6 +1706,7 @@ void
 pk_backend_cancel (PkBackend *backend)
 {
 	/* try to cancel the thread */
+	g_debug ("cancelling transaction");
 	g_cancellable_cancel (priv->cancellable);
 }
 
@@ -1599,7 +1748,7 @@ pk_backend_download_packages_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -1822,7 +1971,7 @@ pk_backend_get_depends_thread (PkBackend *backend)
 							     &error);
 	if (store_array == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get stores: %s", error->message);
 		g_error_free (error);
 		goto out;
@@ -2032,7 +2181,7 @@ pk_backend_get_requires_thread (PkBackend *backend)
 							     &error);
 	if (store_array == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get stores: %s", error->message);
 		g_error_free (error);
 		goto out;
@@ -2247,7 +2396,7 @@ pk_backend_get_details_thread (PkBackend *backend)
 							     &error);
 	if (store_array == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -2536,7 +2685,7 @@ pk_backend_get_files_thread (PkBackend *backend)
 							     &error);
 	if (store_array == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get stores: %s", error->message);
 		g_error_free (error);
 		goto out;
@@ -2599,7 +2748,7 @@ pk_backend_get_files_thread (PkBackend *backend)
 		files = zif_package_get_files (package, state_tmp, &error);
 		if (files == NULL) {
 			pk_backend_error_code (backend,
-					       PK_ERROR_ENUM_INTERNAL_ERROR,
+					       pk_backend_convert_error (error),
 					       "no files for %s: %s",
 					       package_ids[i],
 					       error->message);
@@ -2695,7 +2844,7 @@ pk_backend_get_updates_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -2762,7 +2911,7 @@ pk_backend_get_updates_thread (PkBackend *backend)
 	updates = zif_store_array_resolve (store_array, search, state_local, &error);
 	if (updates == NULL) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to get updates: %s", error->message);
 		g_error_free (error);
 		goto out;
@@ -3018,7 +3167,7 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -3390,7 +3539,7 @@ pk_backend_run_transaction (PkBackend *backend, ZifState *state)
 				      &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to commit transaction: %s",
 				       error->message);
 		g_error_free (error);
@@ -3557,7 +3706,7 @@ pk_backend_update_packages_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -3694,7 +3843,7 @@ pk_backend_install_packages_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -3830,7 +3979,7 @@ pk_backend_install_files_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -3968,7 +4117,7 @@ pk_backend_refresh_cache_thread (PkBackend *backend)
 						  &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to add enabled stores: %s",
 				       error->message);
 		g_error_free (error);
@@ -3992,7 +4141,7 @@ pk_backend_refresh_cache_thread (PkBackend *backend)
 	ret = zif_store_array_clean (store_array, state_local, &error);
 	if (!ret) {
 		pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       pk_backend_convert_error (error),
 				       "failed to clean: %s", error->message);
 		g_error_free (error);
 		goto out;
@@ -4358,7 +4507,6 @@ pk_backend_upgrade_system_thread (PkBackend *backend)
 	gchar **distro_id_split = NULL;
 	guint version;
 	gboolean ret;
-	PkErrorEnum error_code;
 	GError *error = NULL;
 	ZifReleaseUpgradeKind upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_DEFAULT;
 	PkUpgradeKindEnum upgrade_kind = pk_backend_get_uint (backend, "upgrade_kind");
@@ -4397,33 +4545,8 @@ pk_backend_upgrade_system_thread (PkBackend *backend)
 					   &error);
 	if (!ret) {
 		/* convert the ZifRelease error code into a PK error enum */
-		switch (error->code) {
-		case ZIF_RELEASE_ERROR_DOWNLOAD_FAILED:
-			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
-			break;
-		case ZIF_RELEASE_ERROR_FILE_INVALID:
-			error_code = PK_ERROR_ENUM_FAILED_CONFIG_PARSING;
-			break;
-		case ZIF_RELEASE_ERROR_LOW_DISKSPACE:
-			error_code = PK_ERROR_ENUM_NO_SPACE_ON_DEVICE;
-			break;
-		case ZIF_RELEASE_ERROR_NOT_FOUND:
-			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
-			break;
-		case ZIF_RELEASE_ERROR_NOT_SUPPORTED:
-			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
-			break;
-		case ZIF_RELEASE_ERROR_NO_UUID_FOR_ROOT:
-		case ZIF_RELEASE_ERROR_SETUP_INVALID:
-		case ZIF_RELEASE_ERROR_SPAWN_FAILED:
-		case ZIF_RELEASE_ERROR_WRITE_FAILED:
-			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
-			break;
-		default:
-			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
-		}
 		pk_backend_error_code (backend,
-				       error_code,
+				       pk_backend_convert_error (error),
 				       "failed to upgrade: %s",
 				       error->message);
 		g_error_free (error);
commit a7c7729279dd86c68784e08aaf98d23a5c3e9340
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Dec 2 16:50:55 2010 -0200

    aptcc: Use the new PK_ERROR_ENUM_CANNOT_GET_LOCK

diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index a7e5d6d..ae17807 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -774,7 +774,7 @@ pk_backend_refresh_cache_thread (PkBackend *backend)
 	OpTextProgress Prog(*_config);
 	if (Cache.BuildCaches(&Prog, true) == false) {
 		if (_error->PendingError() == true) {
-			show_errors(backend, PK_ERROR_ENUM_CANNOT_GET_LOCK);
+			show_errors(backend, PK_ERROR_ENUM_CANNOT_FETCH_SOURCES);
 		}
 		delete m_apt;
 		pk_backend_finished (backend);
commit 47834d1be5a940ffa7aac1cdf0c0cbeca0e1536b
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Dec 2 16:48:48 2010 -0200

    Added PK_ERROR_ENUM_CANNOT_FETCH_SOURCES so when refreshing cache fails to reach some source we have a proper message

diff --git a/lib/packagekit-glib2/pk-enum.c b/lib/packagekit-glib2/pk-enum.c
index 7369372..29f1e1f 100644
--- a/lib/packagekit-glib2/pk-enum.c
+++ b/lib/packagekit-glib2/pk-enum.c
@@ -193,6 +193,7 @@ static const PkEnumMatch enum_error[] = {
 	{PK_ERROR_ENUM_PACKAGE_DATABASE_CHANGED, "package-database-changed"},
 	{PK_ERROR_ENUM_PROVIDE_TYPE_NOT_SUPPORTED, "provide-type-not-supported"},
 	{PK_ERROR_ENUM_INSTALL_ROOT_INVALID,	"install-root-invalid"},
+	{PK_ERROR_ENUM_CANNOT_FETCH_SOURCES,	"cannot-fetch-sources"},
 	{0, NULL}
 };
 
diff --git a/lib/packagekit-glib2/pk-enum.h b/lib/packagekit-glib2/pk-enum.h
index 6181635..1902757 100644
--- a/lib/packagekit-glib2/pk-enum.h
+++ b/lib/packagekit-glib2/pk-enum.h
@@ -363,6 +363,7 @@ typedef enum {
 	PK_ERROR_ENUM_PACKAGE_DATABASE_CHANGED,
 	PK_ERROR_ENUM_PROVIDE_TYPE_NOT_SUPPORTED,
 	PK_ERROR_ENUM_INSTALL_ROOT_INVALID,
+	PK_ERROR_ENUM_CANNOT_FETCH_SOURCES,
 	PK_ERROR_ENUM_LAST
 } PkErrorEnum;
 
diff --git a/lib/packagekit-qt/src/enum.h b/lib/packagekit-qt/src/enum.h
index b2d6fb5..4a54bf4 100644
--- a/lib/packagekit-qt/src/enum.h
+++ b/lib/packagekit-qt/src/enum.h
@@ -323,6 +323,7 @@ public:
         ErrorPackageDatabaseChanged,
         ErrorProvideTypeNotSupported,
         ErrorInstallRootInvalid,
+        ErrorCannotFetchSources,
         /* this always has to be at the end of the list */
         LastError
     } Error;
commit e20ace7007b51c9f5f7a63d47e83ba9daf46ba73
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Dec 2 16:39:57 2010 -0200

    packagekit-qt: Updated enums and converted tabs to spaces

diff --git a/lib/packagekit-qt/src/enum.h b/lib/packagekit-qt/src/enum.h
index 095e744..b2d6fb5 100644
--- a/lib/packagekit-qt/src/enum.h
+++ b/lib/packagekit-qt/src/enum.h
@@ -1,7 +1,7 @@
 /*
  * This file is part of the QPackageKit project
  * Copyright (C) 2008 Adrien Bustany <madcat at mymadcat.com>
- * Copyright (C) 2009 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
+ * Copyright (C) 2009-2010 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -28,584 +28,588 @@
 namespace PackageKit {
 
 /**
- * \class Enum enum.h Enum
- * \author Adrien Bustany <madcat at mymadcat.com>
- *
- * \brief Represents a PackageKit's enums
- *
- * This class represents a PackageKit enums.
- *
- */
+* \class Enum enum.h Enum
+* \author Adrien Bustany <madcat at mymadcat.com>
+*
+* \brief Represents a PackageKit's enums
+*
+* This class represents a PackageKit enums.
+*
+*/
 class Enum : public QObject
 {
-	Q_OBJECT
-	Q_ENUMS(Role)
-	Q_ENUMS(Status)
-	Q_ENUMS(Exit)
-	Q_ENUMS(Network)
-	Q_ENUMS(Filter)
-	Q_ENUMS(Restart)
-	Q_ENUMS(Message)
-	Q_ENUMS(Error)
-	Q_ENUMS(Group)
-	Q_ENUMS(UpdateState)
-	Q_ENUMS(Info)
-	Q_ENUMS(DistroUpgrade)
-	Q_ENUMS(SigType)
-	Q_ENUMS(Provides)
-	Q_ENUMS(License)
-	Q_ENUMS(MediaType)
-	Q_ENUMS(Authorize)
+    Q_OBJECT
+    Q_ENUMS(Role)
+    Q_ENUMS(Status)
+    Q_ENUMS(Exit)
+    Q_ENUMS(Network)
+    Q_ENUMS(Filter)
+    Q_ENUMS(Restart)
+    Q_ENUMS(Message)
+    Q_ENUMS(Error)
+    Q_ENUMS(Group)
+    Q_ENUMS(UpdateState)
+    Q_ENUMS(Info)
+    Q_ENUMS(DistroUpgrade)
+    Q_ENUMS(SigType)
+    Q_ENUMS(Provides)
+    Q_ENUMS(License)
+    Q_ENUMS(MediaType)
+    Q_ENUMS(Authorize)
 public:
-	/**
-	 * Lists all the available actions
-	 * \sa getActions
-	 */
-	typedef enum {
-		UnknownRole,
-		RoleCancel,
-		RoleGetDepends,
-		RoleGetDetails,
-		RoleGetFiles,
-		RoleGetPackages,
-		RoleGetRepoList,
-		RoleGetRequires,
-		RoleGetUpdateDetail,
-		RoleGetUpdates,
-		RoleInstallFiles,
-		RoleInstallPackages,
-		RoleInstallSignature,
-		RoleRefreshCache,
-		RoleRemovePackages,
-		RoleRepoEnable,
-		RoleRepoSetData,
-		RoleResolve,
-		RoleRollback,
-		RoleSearchDetails,
-		RoleSearchFile,
-		RoleSearchGroup,
-		RoleSearchName,
-		RoleUpdatePackages,
-		RoleUpdateSystem,
-		RoleWhatProvides,
-		RoleAcceptEula,
-		RoleDownloadPackages,
-		RoleGetDistroUpgrades,
-		RoleGetCategories,
-		RoleGetOldTransactions,
-		RoleSimulateInstallFiles,
-		RoleSimulateInstallPackages,
-		RoleSimulateRemovePackages,
-		RoleSimulateUpdatePackages,
-		/* this always has to be at the end of the list */
-		LastRole
-	} Role;
-	typedef Bitfield Roles;
+    /**
+    * Lists all the available actions
+    * \sa getActions
+    */
+    typedef enum {
+        UnknownRole,
+        RoleCancel,
+        RoleGetDepends,
+        RoleGetDetails,
+        RoleGetFiles,
+        RoleGetPackages,
+        RoleGetRepoList,
+        RoleGetRequires,
+        RoleGetUpdateDetail,
+        RoleGetUpdates,
+        RoleInstallFiles,
+        RoleInstallPackages,
+        RoleInstallSignature,
+        RoleRefreshCache,
+        RoleRemovePackages,
+        RoleRepoEnable,
+        RoleRepoSetData,
+        RoleResolve,
+        RoleRollback,
+        RoleSearchDetails,
+        RoleSearchFile,
+        RoleSearchGroup,
+        RoleSearchName,
+        RoleUpdatePackages,
+        RoleUpdateSystem,
+        RoleWhatProvides,
+        RoleAcceptEula,
+        RoleDownloadPackages,
+        RoleGetDistroUpgrades,
+        RoleGetCategories,
+        RoleGetOldTransactions,
+        RoleSimulateInstallFiles,
+        RoleSimulateInstallPackages,
+        RoleSimulateRemovePackages,
+        RoleSimulateUpdatePackages,
+        RoleUpgradeSystem, // Since 0.6.11
+        /* this always has to be at the end of the list */
+        LastRole
+    } Role;
+    typedef Bitfield Roles;
 
-	/**
-	 * Describes the current state of the transaction
-	 */
-	typedef enum {
-		UnknownStatus,
-		StatusWait,
-		StatusSetup,
-		StatusRunning,
-		StatusQuery,
-		StatusInfo,
-		StatusRemove,
-		StatusRefreshCache,
-		StatusDownload,
-		StatusInstall,
-		StatusUpdate,
-		StatusCleanup,
-		StatusObsolete,
-		StatusDepResolve,
-		StatusSigCheck,
-		StatusRollback,
-		StatusTestCommit,
-		StatusCommit,
-		StatusRequest,
-		StatusFinished,
-		StatusCancel,
-		StatusDownloadRepository,
-		StatusDownloadPackagelist,
-		StatusDownloadFilelist,
-		StatusDownloadChangelog,
-		StatusDownloadGroup,
-		StatusDownloadUpdateinfo,
-		StatusRepackaging,
-		StatusLoadingCache,
-		StatusScanApplications,
-		StatusGeneratePackageList,
-		StatusWaitingForLock,
-		StatusWaitingForAuth,
-		StatusScanProcessList,
-		StatusCheckExecutableFiles,
-		StatusCheckLibraries,
-		StatusCopyFiles,
-		/* this always has to be at the end of the list */
-		LastStatus
-	} Status;
+    /**
+    * Describes the current state of the transaction
+    */
+    typedef enum {
+        UnknownStatus,
+        StatusWait,
+        StatusSetup,
+        StatusRunning,
+        StatusQuery,
+        StatusInfo,
+        StatusRemove,
+        StatusRefreshCache,
+        StatusDownload,
+        StatusInstall,
+        StatusUpdate,
+        StatusCleanup,
+        StatusObsolete,
+        StatusDepResolve,
+        StatusSigCheck,
+        StatusRollback,
+        StatusTestCommit,
+        StatusCommit,
+        StatusRequest,
+        StatusFinished,
+        StatusCancel,
+        StatusDownloadRepository,
+        StatusDownloadPackagelist,
+        StatusDownloadFilelist,
+        StatusDownloadChangelog,
+        StatusDownloadGroup,
+        StatusDownloadUpdateinfo,
+        StatusRepackaging,
+        StatusLoadingCache,
+        StatusScanApplications,
+        StatusGeneratePackageList,
+        StatusWaitingForLock,
+        StatusWaitingForAuth,
+        StatusScanProcessList,
+        StatusCheckExecutableFiles,
+        StatusCheckLibraries,
+        StatusCopyFiles,
+        /* this always has to be at the end of the list */
+        LastStatus
+    } Status;
 
-	/**
-	 * Describes how the transaction finished
-	 * \sa Transaction::finished()
-	 */
-	typedef enum {
-		UnknownExit,
-		ExitSuccess,
-		ExitFailed,
-		ExitCancelled,
-		ExitKeyRequired,
-		ExitEulaRequired,
-		ExitKilled, /* when we forced the cancel, but had to sigkill */
-		ExitMediaChangeRequired,
-		ExitNeedUntrusted,
-		/* this always has to be at the end of the list */
-		LastExit
-	} Exit;
+    /**
+    * Describes how the transaction finished
+    * \sa Transaction::finished()
+    */
+    typedef enum {
+        UnknownExit,
+        ExitSuccess,
+        ExitFailed,
+        ExitCancelled,
+        ExitKeyRequired,
+        ExitEulaRequired,
+        ExitKilled, /* when we forced the cancel, but had to sigkill */
+        ExitMediaChangeRequired,
+        ExitNeedUntrusted,
+        /* this always has to be at the end of the list */
+        LastExit
+    } Exit;
 
-	/**
-	 * Describes the current network state
-	 */
-	typedef enum {
-		UnknownNetwork,
-		NetworkOffline,
-		NetworkOnline,
-		NetworkWired,
-		NetworkWifi,
-		NetworkMobile,
-		/* this always has to be at the end of the list */
-		LastNetwork
-	} Network;
+    /**
+    * Describes the current network state
+    */
+    typedef enum {
+        UnknownNetwork,
+        NetworkOffline,
+        NetworkOnline,
+        NetworkWired,
+        NetworkWifi,
+        NetworkMobile,
+        /* this always has to be at the end of the list */
+        LastNetwork
+    } Network;
 
-		/**
-	 * Describes the different filters
-	 */
-	typedef enum {
-		UnknownFilter		 = 0x0000001,
-		NoFilter		 = 0x0000002,
-		FilterInstalled		 = 0x0000004,
-		FilterNotInstalled	 = 0x0000008,
-		FilterDevelopment	 = 0x0000010,
-		FilterNotDevelopment	 = 0x0000020,
-		FilterGui		 = 0x0000040,
-		FilterNotGui		 = 0x0000080,
-		FilterFree		 = 0x0000100,
-		FilterNotFree		 = 0x0000200,
-		FilterVisible		 = 0x0000400,
-		FilterNotVisible	 = 0x0000800,
-		FilterSupported		 = 0x0001000,
-		FilterNotSupported	 = 0x0002000,
-		FilterBasename		 = 0x0004000,
-		FilterNotBasename	 = 0x0008000,
-		FilterNewest		 = 0x0010000,
-		FilterNotNewest		 = 0x0020000,
-		FilterArch		 = 0x0040000,
-		FilterNotArch		 = 0x0080000,
-		FilterSource		 = 0x0100000,
-		FilterNotSource		 = 0x0200000,
-		FilterCollections	 = 0x0400000,
-		FilterNotCollections	 = 0x0800000,
-		FilterApplication	 = 0x1000000,
-		FilterNotApplication	 = 0x2000000,
-		/* this always has to be at the end of the list */
-		FilterLast		 = 0x4000000
-	} Filter;
-	Q_DECLARE_FLAGS(Filters, Filter)
+        /**
+    * Describes the different filters
+    */
+    typedef enum {
+        UnknownFilter        = 0x0000001,
+        NoFilter             = 0x0000002,
+        FilterInstalled      = 0x0000004,
+        FilterNotInstalled   = 0x0000008,
+        FilterDevelopment    = 0x0000010,
+        FilterNotDevelopment = 0x0000020,
+        FilterGui            = 0x0000040,
+        FilterNotGui         = 0x0000080,
+        FilterFree           = 0x0000100,
+        FilterNotFree        = 0x0000200,
+        FilterVisible        = 0x0000400,
+        FilterNotVisible     = 0x0000800,
+        FilterSupported      = 0x0001000,
+        FilterNotSupported   = 0x0002000,
+        FilterBasename       = 0x0004000,
+        FilterNotBasename    = 0x0008000,
+        FilterNewest         = 0x0010000,
+        FilterNotNewest      = 0x0020000,
+        FilterArch           = 0x0040000,
+        FilterNotArch        = 0x0080000,
+        FilterSource         = 0x0100000,
+        FilterNotSource      = 0x0200000,
+        FilterCollections    = 0x0400000,
+        FilterNotCollections = 0x0800000,
+        FilterApplication    = 0x1000000,
+        FilterNotApplication = 0x2000000,
+        /* this always has to be at the end of the list */
+        FilterLast           = 0x4000000
+    } Filter;
+    Q_DECLARE_FLAGS(Filters, Filter)
 
-	/**
-	 * Describes a restart type
-	 */
-	typedef enum {
-		UnknownRestart,
-		RestartNone,
-		RestartApplication,
-		RestartSession,
-		RestartSystem,
-		RestartSecuritySession,
-		RestartSecuritySystem,
-		/* this always has to be at the end of the list */
-		LastRestart
-	} Restart;
+    /**
+    * Describes a restart type
+    */
+    typedef enum {
+        UnknownRestart,
+        RestartNone,
+        RestartApplication,
+        RestartSession,
+        RestartSystem,
+        RestartSecuritySession,
+        RestartSecuritySystem,
+        /* this always has to be at the end of the list */
+        LastRestart
+    } Restart;
 
-	/**
-	 * Describes a message's type
-	 */
-	typedef enum {
-		UnknownMessage,
-		MessageBrokenMirror,
-		MessageConnectionRefused,
-		MessageParameterInvalid,
-		MessagePriorityInvalid,
-		MessageBackendError,
-		MessageDaemonError,
-		MessageCacheBeingRebuilt,
-		MessageUntrustedPackage,
-		MessageNewerPackageExists,
-		MessageCouldNotFindPackage,
-		MessageConfigFilesChanged,
-		MessagePackageAlreadyInstalled,
-		MessageAutoremoveIgnored,
-		MessageRepoMetadataDownloadFailed,
-		MessageRepoForDevelopersOnly,
-		/* this always has to be at the end of the list */
-		LastMessage
-	} Message;
+    /**
+    * Describes a message's type
+    */
+    typedef enum {
+        UnknownMessage,
+        MessageBrokenMirror,
+        MessageConnectionRefused,
+        MessageParameterInvalid,
+        MessagePriorityInvalid,
+        MessageBackendError,
+        MessageDaemonError,
+        MessageCacheBeingRebuilt,
+        MessageUntrustedPackage,
+        MessageNewerPackageExists,
+        MessageCouldNotFindPackage,
+        MessageConfigFilesChanged,
+        MessagePackageAlreadyInstalled,
+        MessageAutoremoveIgnored,
+        MessageRepoMetadataDownloadFailed,
+        MessageRepoForDevelopersOnly,
+        MessageOtherUpdatesHeldBack,
+        /* this always has to be at the end of the list */
+        LastMessage
+    } Message;
 
-	/**
-	 * Lists the different types of error
-	 */
-	typedef enum {
-		UnknownError,
-		ErrorOom,
-		ErrorNoNetwork,
-		ErrorNotSupported,
-		ErrorInternalError,
-		ErrorGpgFailure,
-		ErrorPackageIdInvalid,
-		ErrorPackageNotInstalled,
-		ErrorPackageNotFound,
-		ErrorPackageAlreadyInstalled,
-		ErrorPackageDownloadFailed,
-		ErrorGroupNotFound,
-		ErrorGroupListInvalid,
-		ErrorDepResolutionFailed,
-		ErrorFilterInvalid,
-		ErrorCreateThreadFailed,
-		ErrorTransactionError,
-		ErrorTransactionCancelled,
-		ErrorNoCache,
-		ErrorRepoNotFound,
-		ErrorCannotRemoveSystemPackage,
-		ErrorProcessKill,
-		ErrorFailedInitialization,
-		ErrorFailedFinalise,
-		ErrorFailedConfigParsing,
-		ErrorCannotCancel,
-		ErrorCannotGetLock,
-		ErrorNoPackagesToUpdate,
-		ErrorCannotWriteRepoConfig,
-		ErrorLocalInstallFailed,
-		ErrorBadGpgSignature,
-		ErrorMissingGpgSignature,
-		ErrorCannotInstallSourcePackage,
-		ErrorRepoConfigurationError,
-		ErrorNoLicenseAgreement,
-		ErrorFileConflicts,
-		ErrorPackageConflicts,
-		ErrorRepoNotAvailable,
-		ErrorInvalidPackageFile,
-		ErrorPackageInstallBlocked,
-		ErrorPackageCorrupt,
-		ErrorAllPackagesAlreadyInstalled,
-		ErrorFileNotFound,
-		ErrorNoMoreMirrorsToTry,
-		ErrorNoDistroUpgradeData,
-		ErrorIncompatibleArchitecture,
-		ErrorNoSpaceOnDevice,
-		ErrorMediaChangeRequired,
-		ErrorNotAuthorized,
-		ErrorUpdateNotFound,
-		ErrorCannotInstallRepoUnsigned,
-		ErrorCannotUpdateRepoUnsigned,
-		ErrorCannotGetFilelist,
-		ErrorCannotGetRequires,
-		ErrorCannotDisableRepository,
-		ErrorRestrictedDownload,
-		ErrorPackageFailedToConfigure,
-		ErrorPackageFailedToBuild,
-		ErrorPackageFailedToInstall,
-		ErrorPackageFailedToRemove,
-		ErrorUpdateFailedDueToRunningProcess,
-		ErrorPackageDatabaseChanged,
-		/* this always has to be at the end of the list */
-		LastError
-	} Error;
+    /**
+    * Lists the different types of error
+    */
+    typedef enum {
+        UnknownError,
+        ErrorOom,
+        ErrorNoNetwork,
+        ErrorNotSupported,
+        ErrorInternalError,
+        ErrorGpgFailure,
+        ErrorPackageIdInvalid,
+        ErrorPackageNotInstalled,
+        ErrorPackageNotFound,
+        ErrorPackageAlreadyInstalled,
+        ErrorPackageDownloadFailed,
+        ErrorGroupNotFound,
+        ErrorGroupListInvalid,
+        ErrorDepResolutionFailed,
+        ErrorFilterInvalid,
+        ErrorCreateThreadFailed,
+        ErrorTransactionError,
+        ErrorTransactionCancelled,
+        ErrorNoCache,
+        ErrorRepoNotFound,
+        ErrorCannotRemoveSystemPackage,
+        ErrorProcessKill,
+        ErrorFailedInitialization,
+        ErrorFailedFinalise,
+        ErrorFailedConfigParsing,
+        ErrorCannotCancel,
+        ErrorCannotGetLock,
+        ErrorNoPackagesToUpdate,
+        ErrorCannotWriteRepoConfig,
+        ErrorLocalInstallFailed,
+        ErrorBadGpgSignature,
+        ErrorMissingGpgSignature,
+        ErrorCannotInstallSourcePackage,
+        ErrorRepoConfigurationError,
+        ErrorNoLicenseAgreement,
+        ErrorFileConflicts,
+        ErrorPackageConflicts,
+        ErrorRepoNotAvailable,
+        ErrorInvalidPackageFile,
+        ErrorPackageInstallBlocked,
+        ErrorPackageCorrupt,
+        ErrorAllPackagesAlreadyInstalled,
+        ErrorFileNotFound,
+        ErrorNoMoreMirrorsToTry,
+        ErrorNoDistroUpgradeData,
+        ErrorIncompatibleArchitecture,
+        ErrorNoSpaceOnDevice,
+        ErrorMediaChangeRequired,
+        ErrorNotAuthorized,
+        ErrorUpdateNotFound,
+        ErrorCannotInstallRepoUnsigned,
+        ErrorCannotUpdateRepoUnsigned,
+        ErrorCannotGetFilelist,
+        ErrorCannotGetRequires,
+        ErrorCannotDisableRepository,
+        ErrorRestrictedDownload,
+        ErrorPackageFailedToConfigure,
+        ErrorPackageFailedToBuild,
+        ErrorPackageFailedToInstall,
+        ErrorPackageFailedToRemove,
+        ErrorUpdateFailedDueToRunningProcess,
+        ErrorPackageDatabaseChanged,
+        ErrorProvideTypeNotSupported,
+        ErrorInstallRootInvalid,
+        /* this always has to be at the end of the list */
+        LastError
+    } Error;
 
-	/**
-	 * Describes the different groups
-	 */
-	typedef enum {
-		UnknownGroup,
-		GroupAccessibility,
-		GroupAccessories,
-		GroupAdminTools,
-		GroupCommunication,
-		GroupDesktopGnome,
-		GroupDesktopKde,
-		GroupDesktopOther,
-		GroupDesktopXfce,
-		GroupEducation,
-		GroupFonts,
-		GroupGames,
-		GroupGraphics,
-		GroupInternet,
-		GroupLegacy,
-		GroupLocalization,
-		GroupMaps,
-		GroupMultimedia,
-		GroupNetwork,
-		GroupOffice,
-		GroupOther,
-		GroupPowerManagement,
-		GroupProgramming,
-		GroupPublishing,
-		GroupRepos,
-		GroupSecurity,
-		GroupServers,
-		GroupSystem,
-		GroupVirtualization,
-		GroupScience,
-		GroupDocumentation,
-		GroupElectronics,
-		GroupCollections,
-		GroupVendor,
-		GroupNewest,
-		/* this always has to be at the end of the list */
-		LastGroup
-	} Group;
-	typedef QSet<Group> Groups;
+    /**
+    * Describes the different groups
+    */
+    typedef enum {
+        UnknownGroup,
+        GroupAccessibility,
+        GroupAccessories,
+        GroupAdminTools,
+        GroupCommunication,
+        GroupDesktopGnome,
+        GroupDesktopKde,
+        GroupDesktopOther,
+        GroupDesktopXfce,
+        GroupEducation,
+        GroupFonts,
+        GroupGames,
+        GroupGraphics,
+        GroupInternet,
+        GroupLegacy,
+        GroupLocalization,
+        GroupMaps,
+        GroupMultimedia,
+        GroupNetwork,
+        GroupOffice,
+        GroupOther,
+        GroupPowerManagement,
+        GroupProgramming,
+        GroupPublishing,
+        GroupRepos,
+        GroupSecurity,
+        GroupServers,
+        GroupSystem,
+        GroupVirtualization,
+        GroupScience,
+        GroupDocumentation,
+        GroupElectronics,
+        GroupCollections,
+        GroupVendor,
+        GroupNewest,
+        /* this always has to be at the end of the list */
+        LastGroup
+    } Group;
+    typedef QSet<Group> Groups;
 
-	/**
-	 * Describes an update's state
-	 */
-	typedef enum {
-		UnknownUpdateState,
-		UpdateStateStable,
-		UpdateStateUnstable,
-		UpdateStateTesting,
-		/* this always has to be at the end of the list */
-		LastUpdateState
-	} UpdateState;
+    /**
+    * Describes an update's state
+    */
+    typedef enum {
+        UnknownUpdateState,
+        UpdateStateStable,
+        UpdateStateUnstable,
+        UpdateStateTesting,
+        /* this always has to be at the end of the list */
+        LastUpdateState
+    } UpdateState;
 
-	/**
-	 * Describes the state of a package
-	 */
-	typedef enum {
-		UnknownInfo,
-		InfoInstalled,
-		InfoAvailable,
-		InfoLow,
-		InfoEnhancement,
-		InfoNormal,
-		InfoBugfix,
-		InfoImportant,
-		InfoSecurity,
-		InfoBlocked,
-		InfoDownloading,
-		InfoUpdating,
-		InfoInstalling,
-		InfoRemoving,
-		InfoCleanup,
-		InfoObsoleting,
-		InfoCollectionInstalled,
-		InfoCollectionAvailable,
-		InfoFinished,
-		InfoReinstalling,
-		InfoDowngrading,
-		InfoPreparing,
-		InfoDecompressing,
-		/* this always has to be at the end of the list */
-		LastInfo
-	} Info;
+    /**
+    * Describes the state of a package
+    */
+    typedef enum {
+        UnknownInfo,
+        InfoInstalled,
+        InfoAvailable,
+        InfoLow,
+        InfoEnhancement,
+        InfoNormal,
+        InfoBugfix,
+        InfoImportant,
+        InfoSecurity,
+        InfoBlocked,
+        InfoDownloading,
+        InfoUpdating,
+        InfoInstalling,
+        InfoRemoving,
+        InfoCleanup,
+        InfoObsoleting,
+        InfoCollectionInstalled,
+        InfoCollectionAvailable,
+        InfoFinished,
+        InfoReinstalling,
+        InfoDowngrading,
+        InfoPreparing,
+        InfoDecompressing,
+        /* this always has to be at the end of the list */
+        LastInfo
+    } Info;
 
-	/**
-	 * Describes an distro upgrade state
-	 */
-	typedef enum {
-		UnknownDistroUpgrade,
-		DistroUpgradeStable,
-		DistroUpgradeUnstable,
-		/* this always has to be at the end of the list */
-		LastDistroUpgrade
-	} DistroUpgrade;
+    /**
+    * Describes an distro upgrade state
+    */
+    typedef enum {
+        UnknownDistroUpgrade,
+        DistroUpgradeStable,
+        DistroUpgradeUnstable,
+        /* this always has to be at the end of the list */
+        LastDistroUpgrade
+    } DistroUpgrade;
 
-	/**
-	 * Describes a signature type
-	 */
-	typedef enum {
-		UnknownSigType,
-		SigTypeGpg,
-		/* this always has to be at the end of the list */
-		LastSigType
-	} SigType;
+    /**
+    * Describes a signature type
+    */
+    typedef enum {
+        UnknownSigType,
+        SigTypeGpg,
+        /* this always has to be at the end of the list */
+        LastSigType
+    } SigType;
 
 
-	/**
-	 * Enum used to describe a "provides" request
-	 * \sa whatProvides
-	 */
-	typedef enum {
-		UnknownProvides,
-		ProvidesAny,
-		ProvidesModalias,
-		ProvidesCodec,
-		ProvidesMimetype,
-		ProvidesFont,
-		ProvidesHardwareDriver,
-		ProvidesPostscriptDriver,
-		/* this always has to be at the end of the list */
-		LastProvides
-	} Provides;
+    /**
+    * Enum used to describe a "provides" request
+    * \sa whatProvides
+    */
+    typedef enum {
+        UnknownProvides,
+        ProvidesAny,
+        ProvidesModalias,
+        ProvidesCodec,
+        ProvidesMimetype,
+        ProvidesFont,
+        ProvidesHardwareDriver,
+        ProvidesPostscriptDriver,
+        /* this always has to be at the end of the list */
+        LastProvides
+    } Provides;
 
-	/**
-	 * Describes a package's license
-	 */
-	typedef enum {
-		UnknownLicense,
-		LicenseGlide,
-		LicenseAfl,
-		LicenseAmpasBsd,
-		LicenseAmazonDsl,
-		LicenseAdobe,
-		LicenseAgplv1,
-		LicenseAgplv3,
-		LicenseAsl1Dot0,
-		LicenseAsl1Dot1,
-		LicenseAsl2Dot0,
-		LicenseApsl2Dot0,
-		LicenseArtisticClarified,
-		LicenseArtistic2Dot0,
-		LicenseArl,
-		LicenseBittorrent,
-		LicenseBoost,
-		LicenseBsdWithAdvertising,
-		LicenseBsd,
-		LicenseCecill,
-		LicenseCddl,
-		LicenseCpl,
-		LicenseCondor,
-		LicenseCopyrightOnly,
-		LicenseCryptix,
-		LicenseCrystalStacker,
-		LicenseDoc,
-		LicenseWtfpl,
-		LicenseEpl,
-		LicenseEcos,
-		LicenseEfl2Dot0,
-		LicenseEu_datagrid,
-		LicenseLgplv2WithExceptions,
-		LicenseFtl,
-		LicenseGiftware,
-		LicenseGplv2,
-		LicenseGplv2WithExceptions,
-		LicenseGplv2PlusWithExceptions,
-		LicenseGplv3,
-		LicenseGplv3WithExceptions,
-		LicenseGplv3PlusWithExceptions,
-		LicenseLgplv2,
-		LicenseLgplv3,
-		LicenseGnuplot,
-		LicenseIbm,
-		LicenseImatix,
-		LicenseImagemagick,
-		LicenseImlib2,
-		LicenseIjg,
-		LicenseIntel_acpi,
-		LicenseInterbase,
-		LicenseIsc,
-		LicenseJabber,
-		LicenseJasper,
-		LicenseLppl,
-		LicenseLibtiff,
-		LicenseLpl,
-		LicenseMecabIpadic,
-		LicenseMit,
-		LicenseMitWithAdvertising,
-		LicenseMplv1Dot0,
-		LicenseMplv1Dot1,
-		LicenseNcsa,
-		LicenseNgpl,
-		LicenseNosl,
-		LicenseNetcdf,
-		LicenseNetscape,
-		LicenseNokia,
-		LicenseOpenldap,
-		LicenseOpenpbs,
-		LicenseOsl1Dot0,
-		LicenseOsl1Dot1,
-		LicenseOsl2Dot0,
-		LicenseOsl3Dot0,
-		LicenseOpenssl,
-		LicenseOreilly,
-		LicensePhorum,
-		LicensePhp,
-		LicensePublicDomain,
-		LicensePython,
-		LicenseQpl,
-		LicenseRpsl,
-		LicenseRuby,
-		LicenseSendmail,
-		LicenseSleepycat,
-		LicenseSlib,
-		LicenseSissl,
-		LicenseSpl,
-		LicenseTcl,
-		LicenseUcd,
-		LicenseVim,
-		LicenseVnlsl,
-		LicenseVsl,
-		LicenseW3c,
-		LicenseWxwidgets,
-		LicenseXinetd,
-		LicenseZend,
-		LicenseZplv1Dot0,
-		LicenseZplv2Dot0,
-		LicenseZplv2Dot1,
-		LicenseZlib,
-		LicenseZlibWithAck,
-		LicenseCdl,
-		LicenseFbsddl,
-		LicenseGfdl,
-		LicenseIeee,
-		LicenseOfsfdl,
-		LicenseOpenPublication,
-		LicenseCcBy,
-		LicenseCcBySa,
-		LicenseCcByNd,
-		LicenseDsl,
-		LicenseFreeArt,
-		LicenseOfl,
-		LicenseUtopia,
-		LicenseArphic,
-		LicenseBaekmuk,
-		LicenseBitstreamVera,
-		LicenseLucida,
-		LicenseMplus,
-		LicenseStix,
-		LicenseXano,
-		LicenseVostrom,
-		LicenseXerox,
-		LicenseRicebsd,
-		LicenseQhull,
-		/* this always has to be at the end of the list */
-		LastLicense
-	} License;
+    /**
+    * Describes a package's license
+    */
+    typedef enum {
+        UnknownLicense,
+        LicenseGlide,
+        LicenseAfl,
+        LicenseAmpasBsd,
+        LicenseAmazonDsl,
+        LicenseAdobe,
+        LicenseAgplv1,
+        LicenseAgplv3,
+        LicenseAsl1Dot0,
+        LicenseAsl1Dot1,
+        LicenseAsl2Dot0,
+        LicenseApsl2Dot0,
+        LicenseArtisticClarified,
+        LicenseArtistic2Dot0,
+        LicenseArl,
+        LicenseBittorrent,
+        LicenseBoost,
+        LicenseBsdWithAdvertising,
+        LicenseBsd,
+        LicenseCecill,
+        LicenseCddl,
+        LicenseCpl,
+        LicenseCondor,
+        LicenseCopyrightOnly,
+        LicenseCryptix,
+        LicenseCrystalStacker,
+        LicenseDoc,
+        LicenseWtfpl,
+        LicenseEpl,
+        LicenseEcos,
+        LicenseEfl2Dot0,
+        LicenseEu_datagrid,
+        LicenseLgplv2WithExceptions,
+        LicenseFtl,
+        LicenseGiftware,
+        LicenseGplv2,
+        LicenseGplv2WithExceptions,
+        LicenseGplv2PlusWithExceptions,
+        LicenseGplv3,
+        LicenseGplv3WithExceptions,
+        LicenseGplv3PlusWithExceptions,
+        LicenseLgplv2,
+        LicenseLgplv3,
+        LicenseGnuplot,
+        LicenseIbm,
+        LicenseImatix,
+        LicenseImagemagick,
+        LicenseImlib2,
+        LicenseIjg,
+        LicenseIntel_acpi,
+        LicenseInterbase,
+        LicenseIsc,
+        LicenseJabber,
+        LicenseJasper,
+        LicenseLppl,
+        LicenseLibtiff,
+        LicenseLpl,
+        LicenseMecabIpadic,
+        LicenseMit,
+        LicenseMitWithAdvertising,
+        LicenseMplv1Dot0,
+        LicenseMplv1Dot1,
+        LicenseNcsa,
+        LicenseNgpl,
+        LicenseNosl,
+        LicenseNetcdf,
+        LicenseNetscape,
+        LicenseNokia,
+        LicenseOpenldap,
+        LicenseOpenpbs,
+        LicenseOsl1Dot0,
+        LicenseOsl1Dot1,
+        LicenseOsl2Dot0,
+        LicenseOsl3Dot0,
+        LicenseOpenssl,
+        LicenseOreilly,
+        LicensePhorum,
+        LicensePhp,
+        LicensePublicDomain,
+        LicensePython,
+        LicenseQpl,
+        LicenseRpsl,
+        LicenseRuby,
+        LicenseSendmail,
+        LicenseSleepycat,
+        LicenseSlib,
+        LicenseSissl,
+        LicenseSpl,
+        LicenseTcl,
+        LicenseUcd,
+        LicenseVim,
+        LicenseVnlsl,
+        LicenseVsl,
+        LicenseW3c,
+        LicenseWxwidgets,
+        LicenseXinetd,
+        LicenseZend,
+        LicenseZplv1Dot0,
+        LicenseZplv2Dot0,
+        LicenseZplv2Dot1,
+        LicenseZlib,
+        LicenseZlibWithAck,
+        LicenseCdl,
+        LicenseFbsddl,
+        LicenseGfdl,
+        LicenseIeee,
+        LicenseOfsfdl,
+        LicenseOpenPublication,
+        LicenseCcBy,
+        LicenseCcBySa,
+        LicenseCcByNd,
+        LicenseDsl,
+        LicenseFreeArt,
+        LicenseOfl,
+        LicenseUtopia,
+        LicenseArphic,
+        LicenseBaekmuk,
+        LicenseBitstreamVera,
+        LicenseLucida,
+        LicenseMplus,
+        LicenseStix,
+        LicenseXano,
+        LicenseVostrom,
+        LicenseXerox,
+        LicenseRicebsd,
+        LicenseQhull,
+        /* this always has to be at the end of the list */
+        LastLicense
+    } License;
 
-	/**
-	 * Describes what kind of media is required
-	 */
-	typedef enum {
-		UnknownMediaType,
-		MediaTypeCd,
-		MediaTypeDvd,
-		MediaTypeDisc,
-		/* this always has to be at the end of the list */
-		LastMediaType
-	} MediaType;
+    /**
+    * Describes what kind of media is required
+    */
+    typedef enum {
+        UnknownMediaType,
+        MediaTypeCd,
+        MediaTypeDvd,
+        MediaTypeDisc,
+        /* this always has to be at the end of the list */
+        LastMediaType
+    } MediaType;
 
-	/**
-	 * Describes the authorization result
-	 */
-	typedef enum {
-		UnknownAuthorize,
-		AuthorizeYes,
-		AuthorizeNo,
-		AuthorizeInteractive,
-		/* this always has to be at the end of the list */
-		LastAuthorize
-	} Authorize;
+    /**
+    * Describes the authorization result
+    */
+    typedef enum {
+        UnknownAuthorize,
+        AuthorizeYes,
+        AuthorizeNo,
+        AuthorizeInteractive,
+        /* this always has to be at the end of the list */
+        LastAuthorize
+    } Authorize;
 };
 Q_DECLARE_OPERATORS_FOR_FLAGS(Enum::Filters)
 
commit 18e7d80d5299be17c8baaf23f210332f9aa30180
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Thu Dec 2 17:48:14 2010 +0800

    zypp:fix a logic error in refresh cache
    
    without this patch, zypp backend only refresh one repo. This patch fix
    this issue, and continue refresh other repo if one repo refresh fail.

diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index a5ce2d3..6c9e3ab 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -1162,8 +1162,7 @@ zypp_refresh_cache (PkBackend *backend, gboolean force)
 			// Refreshing metadata
 			g_free (_repoName);
 			_repoName = g_strdup (repo.alias ().c_str ());
-			if (zypp_refresh_meta_and_cache (manager, repo, force))
-				break;
+			zypp_refresh_meta_and_cache (manager, repo, force);
 		} catch (const zypp::Exception &ex) {
 			if (repo_messages == NULL) {
 				repo_messages = g_strdup_printf ("%s: %s%s", repo.alias ().c_str (), ex.asUserString ().c_str (), "\n");
commit 49a16fce832687d0ff61eb26b20b819ba72dd3cc
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Dec 1 17:00:05 2010 +0000

    yum: allow a cache refresh when offline to deal with networkless setups

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 2abfa32..9a5e044 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -612,13 +612,6 @@ pk_backend_install_signature (PkBackend *backend, PkSigTypeEnum type,
 void
 pk_backend_refresh_cache (PkBackend *backend, gboolean force)
 {
-	/* check network state */
-	if (!pk_backend_is_online (backend)) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot refresh cache whilst offline");
-		pk_backend_finished (backend);
-		return;
-	}
-
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "refresh-cache", pk_backend_bool_to_string (force), NULL);
 }
 
commit 029fe0ae43b15de4f59b98d45218733feeddc458
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Dec 1 09:58:10 2010 +0000

    zif: don't emit a ZifState warning if an update does not have update details

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index f2d1756..d7c718d 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -3091,6 +3091,18 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 						  "No description available",
 						  PK_UPDATE_STATE_ENUM_UNKNOWN,
 						  NULL, NULL);
+
+			/* ensure we manually clear the state, as we're
+			 * carrying on */
+			ret = zif_state_finished (state_tmp, &error);
+			if (!ret) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+						       "cancelled: %s",
+						       error->message);
+				g_error_free (error);
+				goto out;
+			}
 		} else {
 			gchar *changelog_text = NULL;
 			GPtrArray *array;
commit 012f0920f633bf96e33e2ca310c263772db17fc9
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 30 21:30:47 2010 +0000

    zif: get the update vendor string and send to the daemon

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index da56d1a..f2d1756 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -3097,20 +3097,27 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 			GPtrArray *changesets;
 			GString *string_cve;
 			GString *string_bugzilla;
+			GString *string_vendor;
 			ZifUpdateInfo *info;
 			array = zif_update_get_update_infos (update);
 			string_cve = g_string_new (NULL);
 			string_bugzilla = g_string_new (NULL);
+			string_vendor = g_string_new (NULL);
 			for (j=0; j<array->len; j++) {
 				info = g_ptr_array_index (array, j);
 				switch (zif_update_info_get_kind (info)) {
 				case ZIF_UPDATE_INFO_KIND_CVE:
-					g_string_append_printf (string_cve, "%s\t%s\t",
+					g_string_append_printf (string_cve, "%s;%s;",
 								zif_update_info_get_title (info),
 								zif_update_info_get_url (info));
 					break;
 				case ZIF_UPDATE_INFO_KIND_BUGZILLA:
-					g_string_append_printf (string_bugzilla, "%s\t%s\t",
+					g_string_append_printf (string_bugzilla, "%s;%s;",
+								zif_update_info_get_title (info),
+								zif_update_info_get_url (info));
+					break;
+				case ZIF_UPDATE_INFO_KIND_VENDOR:
+					g_string_append_printf (string_vendor, "%s;%s;",
 								zif_update_info_get_title (info),
 								zif_update_info_get_url (info));
 					break;
@@ -3119,6 +3126,14 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 				}
 			}
 
+			/* remove trailing ';' */
+			if (string_cve->len > 0)
+				g_string_set_size (string_cve, string_cve->len - 1);
+			if (string_bugzilla->len > 0)
+				g_string_set_size (string_bugzilla, string_bugzilla->len - 1);
+			if (string_vendor->len > 0)
+				g_string_set_size (string_vendor, string_vendor->len - 1);
+
 			/* format changelog */
 			changesets = zif_update_get_changelog (update);
 			if (changesets != NULL)
@@ -3126,7 +3141,7 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 			pk_backend_update_detail (backend, package_ids[i],
 						  NULL, //updates,
 						  NULL, //obsoletes,
-						  NULL, //vendor_url,
+						  string_vendor->str,
 						  string_bugzilla->str,
 						  string_cve->str,
 						  PK_RESTART_ENUM_NONE,
commit 46a0483236916a77c7ea47e21c24c2898e2b806e
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 30 20:25:25 2010 +0000

    zif: for updates without updateinfo, do not put '<none>' in the translated display

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index 93f9f53..da56d1a 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -3087,7 +3087,7 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 			pk_backend_update_detail (backend, package_ids[i],
 						  NULL, NULL, NULL, NULL, NULL,
 						  PK_RESTART_ENUM_NONE,
-						  "<none>",
+						  "",
 						  "No description available",
 						  PK_UPDATE_STATE_ENUM_UNKNOWN,
 						  NULL, NULL);
commit 0bd3a00a16c42cba319abf8705c69e31b607252f
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 30 20:24:35 2010 +0000

    zif: fix changelog generation when there is no changeset version available

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index e804c93..93f9f53 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -2947,11 +2947,12 @@ out:
 static gchar *
 pk_backend_get_changelog_text (GPtrArray *changesets)
 {
-	guint i;
-	ZifChangeset *changeset;
-	GString *text;
+	const gchar *version;
 	gchar date_str[128];
 	GDate *date;
+	GString *text;
+	guint i;
+	ZifChangeset *changeset;
 
 	/* create output string */
 	text = g_string_new ("");
@@ -2964,11 +2965,19 @@ pk_backend_get_changelog_text (GPtrArray *changesets)
 		/* format the indervidual changeset */
 		g_date_set_time_t (date, zif_changeset_get_date (changeset));
 		g_date_strftime (date_str, 128, "%F", date);
-		g_string_append_printf (text, "**%s** %s - %s\n%s\n\n",
-					date_str,
-					zif_changeset_get_author (changeset),
-					zif_changeset_get_version (changeset),
-					zif_changeset_get_description (changeset));
+		version = zif_changeset_get_version (changeset);
+		if (version != NULL) {
+			g_string_append_printf (text, "**%s** %s - %s\n%s\n\n",
+						date_str,
+						zif_changeset_get_author (changeset),
+						version,
+						zif_changeset_get_description (changeset));
+		} else {
+			g_string_append_printf (text, "**%s** %s\n%s\n\n",
+						date_str,
+						zif_changeset_get_author (changeset),
+						zif_changeset_get_description (changeset));
+		}
 	}
 	g_date_free (date);
 	return g_string_free (text, FALSE);
commit 20e96291969c2f759d863a2ae3b95bc352952ce0
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 30 20:16:56 2010 +0000

    zif: If we are running in background mode, depsolve the update lists
    
    This ensures the filelists are retrieved and the deps checked before the user clicks
    on the interactive dialog. It feels a lot snappier this way too.

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index 071f29e..e804c93 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -1381,7 +1381,7 @@ pk_backend_initialize (PkBackend *backend)
 			  backend);
 
 	/* we don't want to enable this for normal runtime */
-	zif_state_set_enable_profile (priv->state, TRUE);
+	//zif_state_set_enable_profile (priv->state, TRUE);
 
 	/* ZifConfig */
 	priv->config = zif_config_new ();
@@ -2642,6 +2642,7 @@ static gboolean
 pk_backend_get_updates_thread (PkBackend *backend)
 {
 	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	gboolean background;
 	gboolean ret;
 	gchar **search = NULL;
 	GError *error = NULL;
@@ -2663,14 +2664,27 @@ pk_backend_get_updates_thread (PkBackend *backend)
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
 	/* set steps */
-	ret = zif_state_set_steps (priv->state,
-				   NULL,
-				   1, /* get remote stores */
-				   1, /* get installed packages */
-				   3, /* filter newest */
-				   45, /* look in remote stores */
-				   50, /* get updateinfo */
-				   -1);
+	background = zif_config_get_boolean (priv->config, "background", NULL);
+	if (!background) {
+		ret = zif_state_set_steps (priv->state,
+					   NULL,
+					   1, /* get remote stores */
+					   1, /* get installed packages */
+					   3, /* filter newest */
+					   45, /* look in remote stores */
+					   50, /* get updateinfo */
+					   -1);
+	} else {
+		ret = zif_state_set_steps (priv->state,
+					   NULL,
+					   1, /* get remote stores */
+					   1, /* get installed packages */
+					   3, /* filter newest */
+					   25, /* look in remote stores */
+					   20, /* get updateinfo */
+					   50, /* depsolve */
+					   -1);
+	}
 	g_assert (ret);
 
 	/* get a store_array of remote stores */
@@ -2855,6 +2869,53 @@ pk_backend_get_updates_thread (PkBackend *backend)
 		goto out;
 	}
 
+	/* if the transaction is done in the background, then depsolve
+	 * the updates transaction so we have all the file lists up to
+	 * date, and the depends data calculated so the UI is snappy */
+	if (background) {
+		/* use these stores for the transaction */
+		zif_transaction_set_stores_remote (priv->transaction, store_array);
+
+		for (i=0; i<updates_available->len; i++) {
+			package = g_ptr_array_index (updates_available, i);
+			ret = zif_transaction_add_install_as_update (priv->transaction,
+								     package,
+								     &error);
+			if (!ret) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+						       "cannot add update: %s",
+						       error->message);
+				g_error_free (error);
+				goto out;
+			}
+		}
+
+		/* resolve this, which will take some time, as it's a
+		 * background action and thus throttled */
+		state_local = zif_state_get_child (priv->state);
+		ret = zif_transaction_resolve (priv->transaction, state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_DEP_RESOLUTION_FAILED,
+					       "cannot resolve transaction: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (priv->state, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
 	/* filter */
 	result = pk_backend_filter_package_array (updates_available, filters);
 
commit 050341d7000375a09d5fe9b8ea20c2d003403bb3
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 30 20:15:47 2010 +0000

    Do not disable background mode if we are marked as interactive, as the two are orthognal to one another

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 3a5e449..151689d 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -2413,10 +2413,6 @@ pk_backend_use_background (PkBackend *backend)
 {
 	gboolean ret;
 
-	/* we're watching the GUI, do as fast as possible */
-	if (backend->priv->interactive == PK_HINT_ENUM_TRUE)
-		return FALSE;
-
 	/* check we are allowed */
 	ret = pk_conf_get_bool (backend->priv->conf, "UseIdleBandwidth");
 	if (!ret)
commit baf39274cb4295289439cdb55ec249fdc7c57a31
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 15:50:04 2010 +0000

    Ensure we emit PK_STATUS_ENUM_WAIT when a transaction is in the 'ready' state

diff --git a/src/pk-transaction-list.c b/src/pk-transaction-list.c
index 116c2cf..8db34ce 100644
--- a/src/pk-transaction-list.c
+++ b/src/pk-transaction-list.c
@@ -584,7 +584,8 @@ pk_transaction_list_commit (PkTransactionList *tlist, const gchar *tid)
 	}
 
 	g_debug ("marking transaction %s as committed", item->tid);
-	ret = pk_transaction_set_state (item->transaction, PK_TRANSACTION_STATE_COMMITTED);
+	ret = pk_transaction_set_state (item->transaction,
+					PK_TRANSACTION_STATE_COMMITTED);
 	if (!ret) {
 		g_warning ("could not mark as committed");
 		return FALSE;
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 2fc5921..ac77e84 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -791,6 +791,8 @@ pk_transaction_state_to_string (PkTransactionState state)
 {
 	if (state == PK_TRANSACTION_STATE_NEW)
 		return "new";
+	if (state == PK_TRANSACTION_STATE_WAITING_FOR_AUTH)
+		return "waiting-for-auth";
 	if (state == PK_TRANSACTION_STATE_COMMITTED)
 		return "committed";
 	if (state == PK_TRANSACTION_STATE_READY)
@@ -809,10 +811,11 @@ pk_transaction_state_to_string (PkTransactionState state)
  * Typically, these states will be:
  *
  * 1. 'new'
- * 2. 'committed'  <--- when the client sets the role
- * 3. 'ready'      <--- when the transaction is ready to be run
- * 4. 'running'    <--- where PkBackend gets used
- * 5. 'finished'
+ * 2. 'waiting for auth'  <--- waiting for PolicyKit (optional)
+ * 3. 'committed'         <--- when the client sets the role
+ * 4. 'ready'             <--- when the transaction is ready to be run
+ * 5. 'running'           <--- where PkBackend gets used
+ * 6. 'finished'
  *
  **/
 gboolean
@@ -833,6 +836,24 @@ pk_transaction_set_state (PkTransaction *transaction, PkTransactionState state)
 	g_debug ("transaction now %s", pk_transaction_state_to_string (state));
 	transaction->priv->state = state;
 
+	/* update GUI */
+	if (state == PK_TRANSACTION_STATE_WAITING_FOR_AUTH) {
+		pk_transaction_status_changed_emit (transaction,
+						    PK_STATUS_ENUM_WAITING_FOR_AUTH);
+		pk_transaction_progress_changed_emit (transaction,
+						      PK_BACKEND_PERCENTAGE_INVALID,
+						      PK_BACKEND_PERCENTAGE_INVALID,
+						      0, 0);
+
+	} else if (state == PK_TRANSACTION_STATE_READY) {
+		pk_transaction_status_changed_emit (transaction,
+						    PK_STATUS_ENUM_WAIT);
+		pk_transaction_progress_changed_emit (transaction,
+						      PK_BACKEND_PERCENTAGE_INVALID,
+						      PK_BACKEND_PERCENTAGE_INVALID,
+						      0, 0);
+	}
+
 	/* we have no actions to perform here, so go straight to running */
 	if (state == PK_TRANSACTION_STATE_COMMITTED) {
 		/* TODO: do some things before we change states */
@@ -2537,9 +2558,9 @@ pk_transaction_obtain_authorization (PkTransaction *transaction, gboolean only_t
 	/* log */
 	pk_syslog_add (priv->syslog, PK_SYSLOG_TYPE_AUTH, "uid %i is trying to obtain %s auth (only_trusted:%i)", priv->uid, action_id, only_trusted);
 
-	/* emit status for GUIs */
-	pk_transaction_status_changed_emit (transaction, PK_STATUS_ENUM_WAITING_FOR_AUTH);
-	pk_transaction_progress_changed_emit (transaction, PK_BACKEND_PERCENTAGE_INVALID, PK_BACKEND_PERCENTAGE_INVALID, 0, 0);
+	/* set transaction state */
+	pk_transaction_set_state (transaction,
+				  PK_TRANSACTION_STATE_WAITING_FOR_AUTH);
 
 	/* check subject */
 	priv->waiting_for_auth = TRUE;
diff --git a/src/pk-transaction.h b/src/pk-transaction.h
index 99b271f..07a21c4 100644
--- a/src/pk-transaction.h
+++ b/src/pk-transaction.h
@@ -80,6 +80,7 @@ typedef enum
 /* these have to be kept in order */
 typedef enum {
 	PK_TRANSACTION_STATE_NEW,
+	PK_TRANSACTION_STATE_WAITING_FOR_AUTH,
 	PK_TRANSACTION_STATE_COMMITTED,
 	PK_TRANSACTION_STATE_READY,
 	PK_TRANSACTION_STATE_RUNNING,
commit bf7bd5fca467c043d10f48002895df9119d9f90c
Merge: 75c99ee... e16913c...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Nov 29 12:05:55 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 75c99ee525bcf8c3d3c7ffbc12216db64d32d280
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Nov 29 12:04:18 2010 -0200

    packagekit-qt: use QDBusServiceWatcher instead of watching for serviceOwnerChanged()

diff --git a/lib/packagekit-qt/src/client.cpp b/lib/packagekit-qt/src/client.cpp
index 2dffc82..c0c15ef 100644
--- a/lib/packagekit-qt/src/client.cpp
+++ b/lib/packagekit-qt/src/client.cpp
@@ -83,9 +83,6 @@ Client::Client(QObject* parent) : QObject(parent), d_ptr(new ClientPrivate(this)
 	if (!db.open()) {
 		qDebug() << "Failed to initialize the desktop files database";
 	}
-
-	// Set up a watch on DBus so that we know if the daemon disappears
-	connect (QDBusConnection::systemBus ().interface (), SIGNAL(serviceOwnerChanged (const QString&, const QString&, const QString&)), d, SLOT (serviceOwnerChanged (const QString&, const QString&, const QString&)));
 }
 
 Client::~Client()
diff --git a/lib/packagekit-qt/src/clientprivate.cpp b/lib/packagekit-qt/src/clientprivate.cpp
index 5c18863..ed1fce8 100644
--- a/lib/packagekit-qt/src/clientprivate.cpp
+++ b/lib/packagekit-qt/src/clientprivate.cpp
@@ -23,12 +23,20 @@
 #include "transactionprivate.h"
 #include "common.h"
 
+#include <QDBusConnection>
+
 using namespace PackageKit;
 
 ClientPrivate::ClientPrivate(Client* parent)
  : QObject(parent),
    c(parent)
 {
+    m_watcher = new QDBusServiceWatcher(PK_NAME,
+                                        QDBusConnection::systemBus(),
+                                        QDBusServiceWatcher::WatchForUnregistration,
+                                        this);
+    connect(m_watcher, SIGNAL(serviceUnregistered(const QString &)),
+            this, SLOT(serviceUnregistered()));
 }
 
 ClientPrivate::~ClientPrivate()
@@ -58,21 +66,8 @@ void ClientPrivate::transactionListChanged(const QStringList& tids)
 	c->transactionListChanged(transactions(tids, Client::instance()));
 }
 
-void ClientPrivate::serviceOwnerChanged (const QString& name, const QString& oldOnwer, const QString& newOwner)
+void ClientPrivate::serviceUnregistered()
 {
-    if (name != PK_NAME){
-        return;
-    }
-
-    // next time a transaction need to be created
-    // we start the Daemon, we have to find a way
-    // to avoid DBus error that sericeHasNoOwner
-    startDaemon = newOwner.isEmpty();
-
-    if (!newOwner.isEmpty()){
-        return;
-    }
-
     error = Client::ErrorDaemonUnreachable;
     c->error(error);
 
diff --git a/lib/packagekit-qt/src/clientprivate.h b/lib/packagekit-qt/src/clientprivate.h
index f71b9e9..c867dc8 100644
--- a/lib/packagekit-qt/src/clientprivate.h
+++ b/lib/packagekit-qt/src/clientprivate.h
@@ -1,6 +1,7 @@
 /*
  * This file is part of the QPackageKit project
  * Copyright (C) 2008 Adrien Bustany <madcat at mymadcat.com>
+ * Copyright (C) 2010 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -22,6 +23,7 @@
 #define CLIENTPRIVATE_H
 
 #include <QtCore>
+#include <QDBusServiceWatcher>
 #include "client.h"
 
 class DaemonProxy;
@@ -32,28 +34,29 @@ class Transaction;
 
 class ClientPrivate : public QObject
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	~ClientPrivate();
+    ~ClientPrivate();
 
-	::DaemonProxy* daemon;
-	Client* c;
-	QStringList hints;
-	QHash<QString, Transaction*> runningTransactions;
-	Client::DaemonError error;
+    ::DaemonProxy* daemon;
+    Client* c;
+    QStringList hints;
+    QHash<QString, Transaction*> runningTransactions;
+    Client::DaemonError error;
 
-    QList<Transaction*> transactions(const QStringList& tids, QObject *parent);
-	void destroyTransaction(const QString &tid);
+    QList<Transaction*> transactions(const QStringList &tids, QObject *parent);
+    void destroyTransaction(const QString &tid);
 
 public Q_SLOTS:
-	void transactionListChanged(const QStringList& tids);
-	void serviceOwnerChanged(const QString&, const QString&, const QString&);
+    void transactionListChanged(const QStringList &tids);
+    void serviceUnregistered();
 
 private:
     friend class Client;
-    bool startDaemon;
     ClientPrivate(Client* parent);
+
+    QDBusServiceWatcher *m_watcher;
 };
 
 } // End namespace PackageKit
commit e16913c86183551a2404ed689b0c1d748733f449
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 12:58:30 2010 +0000

    trivial: update the fedora reference spec file

diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index 619fc64..88cd55f 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -68,6 +68,15 @@ Requires: %{name} = %{version}-%{release}
 %description yum
 A backend for PackageKit to enable yum functionality.
 
+%package zif
+Summary: PackageKit Zif backend
+Group: System Environment/Libraries
+Requires: zif >= 0.1.3
+Requires: %{name} = %{version}-%{release}
+
+%description zif
+A backend for PackageKit to enable Zif functionality.
+
 %if 0%{?rhel} == 0
 %package smart
 Summary: PackageKit SMART backend
@@ -360,6 +369,12 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %dir %{_datadir}/PackageKit/helpers/yum
 %{_datadir}/PackageKit/helpers/yum/*
 
+%files zif
+%defattr(-,root,root,-)
+%{_libdir}/packagekit-backend/libpk_backend_zif.so
+%dir %{_datadir}/PackageKit/helpers/zif
+%{_datadir}/PackageKit/helpers/zif/*
+
 %files yum-plugin
 %defattr(-, root, root)
 %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/refresh-packagekit.conf
commit f1e14657d354f9ebb9304fb3b0de53007f43c17f
Merge: 24c06f4... 763b500...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Nov 29 10:38:06 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 24c06f49760cf56b97a7e844e356cb8c2fe8342a
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Nov 29 10:36:59 2010 -0200

    packagekit-qt: fix order of initialization

diff --git a/lib/packagekit-qt/src/transactionprivate.cpp b/lib/packagekit-qt/src/transactionprivate.cpp
index 9432cb2..1adcd88 100644
--- a/lib/packagekit-qt/src/transactionprivate.cpp
+++ b/lib/packagekit-qt/src/transactionprivate.cpp
@@ -27,8 +27,8 @@ using namespace PackageKit;
 
 TransactionPrivate::TransactionPrivate(Transaction* parent)
  : QObject(parent),
-   t(parent),
    p(0),
+   t(parent),
    destroyed(false)
 {
 }
commit 763b500a2a5fc10e8cc91c9d421af5f304ff97ef
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 12:23:17 2010 +0000

    zif: fix a few trivial bugs spotted by clang

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index dfd6f95..071f29e 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -141,7 +141,7 @@ pk_backend_transaction_start (PkBackend *backend)
 	guint i;
 	guint lock_delay;
 	guint lock_retries;
-	guint pid;
+	guint pid = 0;
 
 	/* only try a finite number of times */
 	lock_retries = zif_config_get_uint (priv->config, "lock_retries", NULL);
@@ -637,7 +637,6 @@ pk_backend_search_collections (GPtrArray *store_array,
 			       GError **error)
 {
 	gboolean ret;
-	gchar *package_id;
 	GError *error_local = NULL;
 	GPtrArray *array = NULL;
 	GPtrArray *array_tmp;
@@ -691,7 +690,7 @@ pk_backend_search_collections (GPtrArray *store_array,
 			g_ptr_array_add (array, g_object_ref (package));
 		} else {
 			g_warning ("failed to add id %s: %s",
-				   package_id,
+				   zif_category_get_id (cat),
 				   error_local->message);
 			g_clear_error (&error_local);
 		}
@@ -828,6 +827,8 @@ pk_backend_resolve_groups (GPtrArray *store_array,
 					   error_local->message);
 				g_clear_error (&error_local);
 				ret = zif_state_finished (state_loop, error);
+				if (!ret)
+					goto out;
 			}
 		}
 
@@ -904,7 +905,6 @@ pk_backend_what_provides_helper (GPtrArray *store_array,
 					       depend_array,
 					       state_local,
 					       error);
-	g_object_unref (depend);
 	if (array == NULL)
 		goto out;
 
@@ -1577,13 +1577,11 @@ pk_backend_download_packages_thread (PkBackend *backend)
 	GPtrArray *packages = NULL;
 	GPtrArray *store_array = NULL;
 	guint i;
-	guint len;
 	ZifPackage *package;
 	ZifState *state_local;
 	ZifState *state_loop;
 	ZifState *state_tmp;
 
-	len = g_strv_length (package_ids);
 	ret = zif_state_set_steps (priv->state,
 				   NULL,
 				   2, /* get default stores */
@@ -1790,24 +1788,21 @@ out:
 static gboolean
 pk_backend_get_depends_thread (PkBackend *backend)
 {
+	const gchar *id;
 	gboolean ret;
 	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *provides;
+	GPtrArray *requires;
+	GPtrArray *result;
 	GPtrArray *store_array = NULL;
+	guint i, j;
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
 	ZifPackage *package;
 	ZifPackage *package_provide;
 	ZifState *state_local;
 	ZifState *state_loop;
-	const gchar *id;
-	guint i, j;
-	guint len;
-	GError *error = NULL;
-	GPtrArray *array = NULL;
-	GPtrArray *result;
-	GPtrArray *requires;
-	GPtrArray *provides;
-
-	len = g_strv_length (package_ids);
 
 	/* set steps */
 	ret = zif_state_set_steps (priv->state,
@@ -1918,7 +1913,7 @@ pk_backend_get_depends_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 						       "failed to find provide for %s: %s",
-						       zif_depend_get_name (g_ptr_array_index (provides, 0)),
+						       zif_depend_get_name (g_ptr_array_index (requires, 0)),
 						       error->message);
 			g_error_free (error);
 			goto out;
@@ -2003,24 +1998,21 @@ out:
 static gboolean
 pk_backend_get_requires_thread (PkBackend *backend)
 {
+	const gchar *id;
 	gboolean ret;
 	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *provides;
+	GPtrArray *requires;
+	GPtrArray *result;
 	GPtrArray *store_array = NULL;
+	guint i, j;
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
 	ZifPackage *package;
 	ZifPackage *package_provide;
 	ZifState *state_local;
 	ZifState *state_loop;
-	const gchar *id;
-	guint i, j;
-	guint len;
-	GError *error = NULL;
-	GPtrArray *array = NULL;
-	GPtrArray *result;
-	GPtrArray *requires;
-	GPtrArray *provides;
-
-	len = g_strv_length (package_ids);
 
 	/* set steps */
 	ret = zif_state_set_steps (priv->state,
@@ -2134,7 +2126,7 @@ pk_backend_get_requires_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to find provide for %s: %s",
-					       zif_depend_get_name (g_ptr_array_index (provides, 0)),
+					       zif_depend_get_name (g_ptr_array_index (requires, 0)),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -2230,7 +2222,6 @@ pk_backend_get_details_thread (PkBackend *backend)
 	GPtrArray *store_array = NULL;
 	guint64 size;
 	guint i;
-	guint len;
 	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
 	PkGroupEnum group;
 	ZifPackage *package;
@@ -2238,8 +2229,6 @@ pk_backend_get_details_thread (PkBackend *backend)
 	ZifState *state_loop;
 	ZifState *state_tmp;
 
-	len = g_strv_length (package_ids);
-
 	/* set steps */
 	ret = zif_state_set_steps (priv->state,
 				   NULL,
@@ -2523,15 +2512,12 @@ pk_backend_get_files_thread (PkBackend *backend)
 	GPtrArray *store_array = NULL;
 	GString *files_str;
 	guint i, j;
-	guint len;
 	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
 	ZifPackage *package;
 	ZifState *state_local;
 	ZifState *state_loop;
 	ZifState *state_tmp;
 
-	len = g_strv_length (package_ids);
-
 	/* set steps */
 	ret = zif_state_set_steps (priv->state,
 				   NULL,
@@ -2824,6 +2810,14 @@ pk_backend_get_updates_thread (PkBackend *backend)
 			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
 			g_clear_error (&error);
 			ret = zif_state_finished (state_loop, NULL);
+			if (!ret) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+						       "cancelled: %s",
+						       error->message);
+				g_error_free (error);
+				goto out;
+			}
 		} else {
 			update_kind = zif_update_get_kind (update);
 			if (update_kind == ZIF_UPDATE_KIND_BUGFIX)
@@ -2842,9 +2836,9 @@ pk_backend_get_updates_thread (PkBackend *backend)
 		ret = zif_state_done (state_local, &error);
 		if (!ret) {
 			pk_backend_error_code (backend,
-				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
-				       "cancelled: %s",
-				       error->message);
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
 			g_error_free (error);
 			goto out;
 		}
commit 6e4e816753c987d40be6ac1068aa3483e7d5624a
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 12:17:52 2010 +0000

    dummy: fix a potential NULL dereference spotted by clang

diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index 89d898f..a9f4135 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -1046,7 +1046,7 @@ pk_backend_socket_has_data_cb (GSocket *socket, GIOCondition condition, PkBacken
 	/* the helper process exited */
 	if ((condition & G_IO_HUP) > 0) {
 		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR,
-				       "socket was disconnected: %s", error->message);
+				       "socket was disconnected");
 		pk_backend_finished (backend);
 		ret = FALSE;
 		goto out;
commit 537f4b2305bea757f35bf34d1463f3d502a2a994
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 12:05:56 2010 +0000

    zif: Use zif_package_get_printable() to get easier to understand error messages

diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
index 311cab6..dfd6f95 100644
--- a/backends/zif/pk-backend-zif.c
+++ b/backends/zif/pk-backend-zif.c
@@ -274,10 +274,7 @@ out:
 static gboolean
 pk_backend_filter_package_array_newest (GPtrArray *array)
 {
-	const gchar *package_id;
-	gboolean installed;
 	gchar *key;
-	gchar **split;
 	GHashTable *hash;
 	gint retval;
 	guint i;
@@ -292,18 +289,12 @@ pk_backend_filter_package_array_newest (GPtrArray *array)
 
 	for (i=0; i<array->len; i++) {
 
-		/* get the current package */
-		package = g_ptr_array_index (array, i);
-		package_id = zif_package_get_id (package);
-		installed = zif_package_is_installed (package);
-
 		/* generate enough data to be specific */
-		split = pk_package_id_split (package_id);
+		package = g_ptr_array_index (array, i);
 		key = g_strdup_printf ("%s-%s-%i",
-				       split[PK_PACKAGE_ID_NAME],
-				       split[PK_PACKAGE_ID_ARCH],
-				       installed);
-		g_strfreev (split);
+				       zif_package_get_name (package),
+				       zif_package_get_arch (package),
+				       zif_package_is_installed (package));
 
 		/* we've not already come across this package */
 		found = g_hash_table_lookup (hash, key);
@@ -1700,7 +1691,7 @@ pk_backend_download_packages_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
 					       "failed to get filename for %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -3004,7 +2995,7 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to find package %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -3283,7 +3274,7 @@ pk_backend_run_transaction (PkBackend *backend, ZifState *state)
 				pk_backend_error_code (backend,
 						       PK_ERROR_ENUM_NOT_AUTHORIZED,
 						       "package %s is untrusted",
-						       zif_package_get_id (package));
+						       zif_package_get_printable (package));
 				g_error_free (error);
 				goto out;
 			}
@@ -3388,7 +3379,7 @@ pk_backend_remove_packages_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to add package %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -3525,7 +3516,7 @@ pk_backend_update_packages_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to add package %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -3662,7 +3653,7 @@ pk_backend_install_packages_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to add package %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
@@ -3797,7 +3788,7 @@ pk_backend_install_files_thread (PkBackend *backend)
 			pk_backend_error_code (backend,
 					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 					       "failed to add package %s: %s",
-					       zif_package_get_id (package),
+					       zif_package_get_printable (package),
 					       error->message);
 			g_error_free (error);
 			goto out;
commit 2cb08f0c9aa3127a11b8985049f813ea01e4745b
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 29 11:35:43 2010 +0000

    zif: Add a new backend, which uses Zif to interface with the rpmdb and the Fedora metadata
    
    This new backend should be considered experimental, and should not be used
    in production environments. It is often an order of magnitude quicker then
    the 'yum' backend as there is no need to spawn a process in python and
    certainly no need to check the metadata on every access.
    
    There will be bugs, so please test carefully. More information is at
    https://github.com/hughsie/zif/raw/master/README.PackageKit for how
    to switch to the new backend from yum.

diff --git a/backends/.gitignore b/backends/.gitignore
index 9c5d2d0..8b13789 100644
--- a/backends/.gitignore
+++ b/backends/.gitignore
@@ -1,2 +1 @@
-zif
 
diff --git a/backends/Makefile.am b/backends/Makefile.am
index 37d7059..3d53950 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -64,6 +64,10 @@ if BACKEND_TYPE_ZYPP
 SUBDIRS += zypp
 endif
 
+if BACKEND_TYPE_ZIF
+SUBDIRS += zif
+endif
+
 if BACKEND_TYPE_POLDEK
 SUBDIRS += poldek
 endif
diff --git a/backends/yum/Makefile.am b/backends/yum/Makefile.am
index aae70f7..21883b6 100644
--- a/backends/yum/Makefile.am
+++ b/backends/yum/Makefile.am
@@ -10,7 +10,6 @@ INCLUDES = \
 	-DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE	\
 	-DG_LOG_DOMAIN=\"PackageKit-Yum\"			\
 	-DPK_COMPILATION					\
-	$(ZIF_CFLAGS)						\
 	-DSYSCONFDIR=\""$(sysconfdir)"\"
 
 plugindir = $(PK_PLUGIN_DIR)
@@ -20,10 +19,6 @@ libpk_backend_yum_la_LIBADD = $(PK_PLUGIN_LIBS)
 libpk_backend_yum_la_LDFLAGS = -module -avoid-version
 libpk_backend_yum_la_CFLAGS = $(PK_PLUGIN_CFLAGS) $(WARNINGFLAGS_C)
 
-libpk_backend_yum_la_LIBADD +=					\
-	$(ZIF_LIBS)						\
-	$(NULL)
-
 confdir = $(PK_CONF_DIR)
 conf_DATA = Yum.conf
 
diff --git a/backends/yum/Yum.conf b/backends/yum/Yum.conf
index 258979e..9281631 100644
--- a/backends/yum/Yum.conf
+++ b/backends/yum/Yum.conf
@@ -36,20 +36,3 @@ SystemPackages=yum;rpm;glibc;PackageKit
 #
 # default=PackageKit;yum;rpm;gnome-packagekit;kpackagekit;selinux-policy
 InfrastructurePackages=PackageKit;yum;rpm;gnome-packagekit;kpackagekit
-
-# Yum is slow, and we can use Zif to accelerate some simple transactions
-#
-# Yum is written in python, and we have to execute a new process and
-# communicate with it. This is much slower than just acessing the repo files
-# and rpmdb in a thread. Zif is a pretty new project, and is not well tested
-# at this time. It is however up to an order of magnitude faster in some
-# benchmark tests.
-#
-# Zif probably still has bugs. This key provides a way for the admin
-# to still use the awesomeness of Zif for some operations, but not others.
-#
-# For a nice speed boost, try:
-# UseZif=get-repo-list;repo-enable;resolve;search-file;search-name;search-details;search-group;get-categories;get-details;get-distro-upgrades
-#
-# default=repo-list;repo-enable
-UseZif=get-repo-list;repo-enable
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 3d87b33..2abfa32 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -26,10 +26,6 @@
 #include <string.h>
 #include <packagekit-glib2/pk-debug.h>
 
-#ifdef HAVE_ZIF
-#include <zif.h>
-#endif
-
 #define PREUPGRADE_BINARY			"/usr/bin/preupgrade"
 #define YUM_REPOS_DIRECTORY			"/etc/yum.repos.d"
 #define YUM_BACKEND_LOCKING_RETRIES		10
@@ -40,18 +36,8 @@ typedef struct {
 	PkBackendSpawn	*spawn;
 	GFileMonitor	*monitor;
 	GCancellable	*cancellable;
-	PkBitfield	 use_zif;
 	guint		 signal_finished;
 	guint		 signal_status;
-#ifdef HAVE_ZIF
-	ZifConfig	*config;
-	ZifStore	*store_local;
-	ZifRepos	*repos;
-	ZifGroups	*groups;
-	ZifState	*state;
-	ZifLock		*lock;
-	ZifRelease	*release;
-#endif
 	GTimer		*timer;
 	GVolumeMonitor	*volume_monitor;
 } PkBackendYumPrivate;
@@ -64,7 +50,7 @@ static PkBackendYumPrivate *priv;
 gchar *
 pk_backend_get_description (PkBackend *backend)
 {
-	return g_strdup ("YUM (and optionally ZIF)");
+	return g_strdup ("YUM");
 }
 
 /**
@@ -121,926 +107,12 @@ out:
 	g_free (filename);
 }
 
-#ifdef HAVE_ZIF
-
-static void
-pk_backend_state_percentage_changed_cb (ZifState *state, guint percentage, PkBackend *backend)
-{
-	pk_backend_set_percentage (backend, percentage);
-}
-
-static void
-pk_backend_state_subpercentage_changed_cb (ZifState *state, guint subpercentage, PkBackend *backend)
-{
-	pk_backend_set_sub_percentage (backend, subpercentage);
-}
-
-/**
- * pk_backend_profile:
- */
-static void
-pk_backend_profile (const gchar *title)
-{
-	gdouble elapsed;
-
-	/* just reset?  */
-	if (title == NULL)
-		goto out;
-	elapsed = g_timer_elapsed (priv->timer, NULL);
-	g_debug ("PROFILE: %ims\t%s", (guint) (elapsed * 1000.0f), title);
-out:
-	g_timer_reset (priv->timer);
-}
-
-/**
- * pk_backend_is_all_installed:
- */
-static gboolean
-pk_backend_is_all_installed (gchar **package_ids)
-{
-	guint i;
-	gboolean ret = TRUE;
-
-	/* check if we can use zif */
-	for (i=0; package_ids[i] != NULL; i++) {
-		if (!g_str_has_suffix (package_ids[i], ";installed")) {
-			ret = FALSE;
-			break;
-		}
-	}
-	return ret;
-}
-#endif
-
-/**
- * pk_backend_transaction_start:
- */
-void
-pk_backend_transaction_start (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret = FALSE;
-	GError *error = NULL;
-	const gchar *root;
-	guint i;
-	guint pid;
-	guint cache_age;
-	gchar *http_proxy = NULL;
-
-	/* quit the spawned backend rather than waiting for it to time out */
-	pk_backend_spawn_exit (priv->spawn);
-
-	/* only try a finite number of times */
-	for (i=0; i<YUM_BACKEND_LOCKING_RETRIES; i++) {
-
-		/* try to lock */
-		ret = zif_lock_set_locked (priv->lock, &pid, &error);
-		if (ret)
-			break;
-
-		/* we're now waiting */
-		pk_backend_set_status (backend, PK_STATUS_ENUM_WAITING_FOR_LOCK);
-
-		/* now wait */
-		g_debug ("Failed to lock on try %i of %i, already locked by PID %i (sleeping for %i seconds): %s\n",
-			   i+1, YUM_BACKEND_LOCKING_RETRIES, pid, YUM_BACKEND_LOCKING_DELAY, error->message);
-		g_clear_error (&error);
-		g_usleep (YUM_BACKEND_LOCKING_DELAY * G_USEC_PER_SEC);
-	}
-
-	/* we failed to lock */
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_CANNOT_GET_LOCK, "failed to get lock, held by PID: %i", pid);
-		goto out;
-	}
-
-	/* this backend does not support a relocatable root... yet */
-	root = pk_backend_get_root (backend);
-	if (g_strcmp0 (root, "/") != 0) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INSTALL_ROOT_INVALID, "backend does not support this root: '%s'", root);
-		goto out;
-	}
-
-	/* try to set, or re-set install root */
-	ret = zif_store_local_set_prefix (ZIF_STORE_LOCAL (priv->store_local), root, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to set prefix: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* get network state */
-	ret = pk_backend_is_online (backend);
-	if (!ret) {
-		zif_config_set_boolean (priv->config, "network", FALSE, NULL);
-		goto out;
-	}
-
-	/* tell ZifConfig it's okay to contact the network */
-	zif_config_set_boolean (priv->config, "network", TRUE, NULL);
-
-	/* set cache age */
-	cache_age = pk_backend_get_cache_age (backend);
-	if (cache_age > 0)
-		zif_config_set_uint (priv->config, "max-age", cache_age, NULL);
-
-	/* set the proxy */
-	http_proxy = pk_backend_get_proxy_http (backend);
-	zif_config_set_string (priv->config, "http_proxy", http_proxy, NULL);
-
-	/* setup state */
-	zif_state_reset (priv->state);
-out:
-	g_free (http_proxy);
-#endif
-	return;
-}
-
-/**
- * pk_backend_transaction_stop:
- */
-void
-pk_backend_transaction_stop (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	GError *error = NULL;
-
-	/* try to unlock */
-	ret = zif_lock_set_unlocked (priv->lock, &error);
-	if (!ret) {
-		g_warning ("failed to unlock: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-#endif
-	return;
-}
-
-#ifdef HAVE_ZIF
-/**
- * pk_backend_filter_package_array_newest:
- *
- * This function needs to scale well, and be fast to process 50,000 packages in
- * less than one second. If it looks overcomplicated, it's because it needs to
- * be O(n) not O(n*n).
- **/
-static gboolean
-pk_backend_filter_package_array_newest (GPtrArray *array)
-{
-	gchar **split;
-	const gchar *package_id;
-	gboolean installed;
-	gchar *key;
-	GHashTable *hash;
-	gint retval;
-	guint i;
-	ZifPackage *found;
-	ZifPackage *package;
-
-	/* as an indexed hash table for speed */
-	hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-
-	for (i=0; i<array->len; i++) {
-
-		/* get the current package */
-		package = g_ptr_array_index (array, i);
-		package_id = zif_package_get_id (package);
-		installed = zif_package_is_installed (package);
-
-		/* generate enough data to be specific */
-		split = pk_package_id_split (package_id);
-		key = g_strdup_printf ("%s-%s-%i", split[PK_PACKAGE_ID_NAME], split[PK_PACKAGE_ID_ARCH], installed);
-		g_strfreev (split);
-
-		/* we've not already come across this package */
-		found = g_hash_table_lookup (hash, key);
-		if (found == NULL) {
-			g_hash_table_insert (hash, key, g_object_ref (package));
-			continue;
-		}
-
-		/* compare one package vs the other package */
-		retval = zif_package_compare (package, found);
-
-		/* the package is older than the one we have stored */
-		if (retval <= 0) {
-			g_free (key);
-			g_ptr_array_remove (array, package);
-			continue;
-		}
-
-		/* the package is newer than what we have stored, delete the old store, and add this one */
-		g_hash_table_remove (hash, found);
-		g_hash_table_insert (hash, key, g_object_ref (package));
-	}
-
-	g_hash_table_unref (hash);
-	return TRUE;
-}
-
-/**
- * pk_backend_filter_package_array:
- **/
-static GPtrArray *
-pk_backend_filter_package_array (GPtrArray *array, PkBitfield filters)
-{
-	guint i;
-	ZifPackage *package;
-	GPtrArray *result = NULL;
-
-	result = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-
-	/* pre-result */
-	for (i=0;i<array->len;i++) {
-		package = g_ptr_array_index (array, i);
-
-		/* installed */
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
-			if (!zif_package_is_installed (package))
-				continue;
-		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
-			if (zif_package_is_installed (package))
-				continue;
-		}
-
-		/* development */
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT)) {
-			if (!zif_package_is_devel (package))
-				continue;
-		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
-			if (zif_package_is_devel (package))
-				continue;
-		}
-
-		/* gui */
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI)) {
-			if (!zif_package_is_gui (package))
-				continue;
-		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_GUI)) {
-			if (zif_package_is_gui (package))
-				continue;
-		}
-
-		/* free */
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_FREE)) {
-			if (!zif_package_is_free (package))
-				continue;
-		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_FREE)) {
-			if (zif_package_is_free (package))
-				continue;
-		}
-
-		/* arch */
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_ARCH)) {
-			if (!zif_package_is_native (package))
-				continue;
-		} else if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_ARCH)) {
-			if (zif_package_is_native (package))
-				continue;
-		}
-
-		/* add to array so we can post process */
-		g_ptr_array_add (result, g_object_ref (package));
-	}
-
-	/* do newest filtering */
-	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
-		pk_backend_filter_package_array_newest (result);
-
-	return result;
-}
-
-/**
- * pk_backend_emit_package_array:
- **/
-static gboolean
-pk_backend_emit_package_array (PkBackend *backend, GPtrArray *array, ZifState *state)
-{
-	guint i;
-	gboolean installed;
-	PkInfoEnum info;
-	const gchar *info_hint;
-	const gchar *package_id;
-	const gchar *summary;
-	ZifPackage *package;
-
-	g_return_val_if_fail (array != NULL, FALSE);
-
-	for (i=0; i<array->len; i++) {
-		package = g_ptr_array_index (array, i);
-		installed = zif_package_is_installed (package);
-		package_id = zif_package_get_package_id (package);
-
-		/* FIXME: should be okay as shouldn't be doing any action */
-		zif_state_reset (state);
-		summary = zif_package_get_summary (package, state, NULL);
-
-		/* if we set a hint, use that, otherwise just get the installed status correct */
-		info_hint = (const gchar *)g_object_get_data (G_OBJECT(package), "kind");
-		if (info_hint == NULL) {
-			info = installed ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE;
-		} else {
-			info = pk_info_enum_from_string (info_hint);
-		}
-
-		pk_backend_package (backend, info, package_id, summary);
-	}
-	return TRUE;
-}
-
-/**
- * pk_backend_error_handler_cb:
- */
-static gboolean
-pk_backend_error_handler_cb (const GError *error, PkBackend *backend)
-{
-	/* if we try to do a comps search on a local store */
-	if (error->domain == ZIF_STORE_ERROR &&
-	    error->code == ZIF_STORE_ERROR_NO_SUPPORT) {
-		g_debug ("ignoring operation on PkStoreLocal: %s", error->message);
-		return TRUE;
-	}
-	/* emit a warning, this isn't fatal */
-	pk_backend_message (backend, PK_MESSAGE_ENUM_BROKEN_MIRROR, "%s", error->message);
-	return TRUE;
-}
-
-/**
- * pk_backend_get_default_store_array_for_filter:
- */
-static GPtrArray *
-pk_backend_get_default_store_array_for_filter (PkBackend *backend, PkBitfield filters, ZifState *state, GError **error)
-{
-	GPtrArray *store_array;
-	ZifStore *store;
-	GPtrArray *array;
-	GError *error_local = NULL;
-
-	store_array = zif_store_array_new ();
-
-	/* add local packages to the store_array */
-	if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
-		store = zif_store_local_new ();
-		zif_store_array_add_store (store_array, store);
-		g_object_unref (store);
-	}
-
-	/* add remote packages to the store_array */
-	if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
-		array = zif_repos_get_stores_enabled (priv->repos, state, &error_local);
-		if (array == NULL) {
-			g_set_error (error, 1, 0, "failed to get enabled stores: %s", error_local->message);
-			g_error_free (error_local);
-			g_ptr_array_unref (store_array);
-			store_array = NULL;
-			goto out;
-		}
-		zif_store_array_add_stores (store_array, array);
-		g_ptr_array_unref (array);
-	}
-out:
-	return store_array;
-}
-
-/**
- * pk_backend_search_newest:
- */
-static GPtrArray *
-pk_backend_search_newest (GPtrArray *store_array, ZifState *state, guint recent, GError **error)
-{
-	GPtrArray *array = NULL;
-	GPtrArray *array_tmp;
-	GTimeVal timeval_now;
-	guint diff_secs = recent * 24 * 60 * 60;
-	guint i;
-	ZifPackage *package;
-
-	/* get all the packages */
-	array_tmp = zif_store_array_get_packages (store_array, state, error);
-	if (array_tmp == NULL)
-		goto out;
-
-	/* only add elements to the array that are new enough */
-	g_get_current_time (&timeval_now);
-	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	for (i=0; i<array_tmp->len; i++) {
-		package = g_ptr_array_index (array_tmp, i);
-		if (timeval_now.tv_sec - zif_package_get_time_file (package) < diff_secs)
-			g_ptr_array_add (array, g_object_ref (package));
-	}
-	g_debug ("added %i newest packages", array->len);
-out:
-	if (array_tmp != NULL)
-		g_ptr_array_unref (array_tmp);
-	return array;
-}
-
-/**
- * pk_backend_create_meta_package_for_category:
- */
-static ZifPackage *
-pk_backend_create_meta_package_for_category (GPtrArray *store_array, ZifCategory *cat, ZifState *state, GError **error)
-{
-	ZifPackage *package = NULL;
-	ZifPackage *package_tmp;
-	GPtrArray *array_packages;
-	gchar *package_id = NULL;
-	gboolean ret;
-	ZifString *string;
-	guint j;
-	const gchar *to_array[] = { NULL, NULL };
-	PkInfoEnum info = PK_INFO_ENUM_COLLECTION_INSTALLED;
-
-	/* are all the packages in this group installed? */
-	to_array[0] = zif_category_get_id (cat);
-	array_packages = zif_store_array_search_category (store_array, (gchar**)to_array, state, error);
-	if (array_packages == NULL)
-		goto out;
-
-	/* if any are not installed, then this is not installed */
-	for (j=0; j<array_packages->len; j++) {
-		package_tmp = g_ptr_array_index (array_packages, j);
-		if (!zif_package_is_installed (package_tmp)) {
-			info = PK_INFO_ENUM_COLLECTION_AVAILABLE;
-			g_debug ("%s is not installed, so marking as not installed %s collection",
-				 zif_package_get_id (package_tmp),
-				 zif_category_get_id (cat));
-			break;
-		}
-	}
-
-	/* fake something */
-	package_id = g_strdup_printf ("%s;;;meta",
-				      zif_category_get_id (cat));
-	package = zif_package_new ();
-	ret = zif_package_set_id (package, package_id, NULL);
-	if (!ret) {
-		g_object_unref (package);
-		package = NULL;
-		goto out;
-	}
-
-	/* set summary */
-	string = zif_string_new (zif_category_get_name (cat));
-	zif_package_set_summary (package, string);
-	zif_string_unref (string);
-
-	/* map to simple binary installed value */
-	zif_package_set_installed (package, (info == PK_INFO_ENUM_COLLECTION_INSTALLED));
-
-	/* add to results */
-	/* TODO: make a proper property */
-	g_object_set_data (G_OBJECT(package), "kind", (gpointer)pk_info_enum_to_string (info));
-out:
-	if (array_packages != NULL)
-		g_ptr_array_unref (array_packages);
-	g_free (package_id);
-	return package;
-}
-
-/**
- * pk_backend_search_collections:
- */
-static GPtrArray *
-pk_backend_search_collections (GPtrArray *store_array, ZifState *state, GError **error)
-{
-	gboolean ret;
-	gchar *package_id;
-	GPtrArray *array = NULL;
-	GPtrArray *array_tmp;
-	GError *error_local = NULL;
-	ZifCategory *cat;
-	guint i;
-	ZifPackage *package;
-	ZifState *state_local;
-	ZifState *state_loop;
-
-	/* set steps */
-	zif_state_set_number_steps (state, 2);
-
-	/* get sorted list of unique categories */
-	state_local = zif_state_get_child (state);
-	array_tmp = zif_store_array_get_categories (store_array, state_local, error);
-	if (array_tmp == NULL)
-		goto out;
-
-	/* done */
-	ret = zif_state_done (state, error);
-	if (!ret)
-		goto out;
-
-	/* set steps */
-	state_local = zif_state_get_child (state);
-	zif_state_set_number_steps (state_local, array_tmp->len);
-
-	/* generate fake packages */
-	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	for (i=0; i<array_tmp->len; i++) {
-		cat = g_ptr_array_index (array_tmp, i);
-
-		/* ignore top level categories */
-		if (zif_category_get_parent_id (cat) == NULL)
-			continue;
-
-		/* fake something here */
-		state_loop = zif_state_get_child (state_local);
-		package = pk_backend_create_meta_package_for_category (store_array, cat, state_loop, &error_local);
-		if (package != NULL) {
-			g_ptr_array_add (array, g_object_ref (package));
-		} else {
-			g_warning ("failed to add id %s: %s", package_id, error_local->message);
-			g_clear_error (&error_local);
-		}
-
-		/* done */
-		ret = zif_state_done (state_local, error);
-		if (!ret)
-			goto out;
-
-		g_object_unref (package);
-	}
-
-	/* done */
-	ret = zif_state_done (state, error);
-	if (!ret)
-		goto out;
-out:
-	if (array_tmp != NULL)
-		g_ptr_array_unref (array_tmp);
-	return array;
-}
-
-/**
- * pk_backend_get_cat_for_id:
- */
-static ZifCategory *
-pk_backend_get_cat_for_id (GPtrArray *store_array, const gchar *id, ZifState *state, GError **error)
-{
-	GPtrArray *array = NULL;
-	ZifCategory *cat = NULL;
-	ZifCategory *cat_tmp;
-	guint i;
-
-	/* get all cats */
-	array = zif_store_array_get_categories (store_array, state, error);
-	if (array == NULL)
-		goto out;
-
-	/* find one that matches */
-	for (i=0; i<array->len; i++) {
-		cat_tmp = g_ptr_array_index (array, i);
-		if (g_strcmp0 (zif_category_get_id (cat_tmp), id) == 0) {
-			cat = g_object_ref (cat_tmp);
-			break;
-		}
-	}
-
-	/* nothing found, so set error */
-	if (cat == NULL)
-		g_set_error (error, 1, 0, "no category %s found", id);
-out:
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	return cat;
-}
-
-/**
- * pk_backend_resolve_groups:
- */
-static GPtrArray *
-pk_backend_resolve_groups (GPtrArray *store_array, gchar **search, ZifState *state, GError **error)
-{
-	gboolean ret;
-	GError *error_local = NULL;
-	GPtrArray *array = NULL;
-	GPtrArray *array_retval = NULL;
-	guint i;
-	ZifCategory *cat;
-	ZifPackage *package;
-	ZifState *state_local;
-	ZifState *state_loop;
-
-	/* set steps */
-	zif_state_set_number_steps (state, g_strv_length (search));
-
-	/* resolve all the groups */
-	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	for (i=0; search[i] != NULL; i++) {
-		state_local = zif_state_get_child (state);
-
-		/* set steps */
-		zif_state_set_number_steps (state_local, 2);
-
-		/* get the category */
-		state_loop = zif_state_get_child (state_local);
-		cat = pk_backend_get_cat_for_id (store_array, search[i]+1, state_loop, &error_local);
-		if (cat == NULL) {
-			g_debug ("group %s not found: %s", search[i], error_local->message);
-			g_clear_error (&error_local);
-
-			/* this part done */
-			ret = zif_state_finished (state_loop, error);
-			if (!ret)
-				goto out;
-			ret = zif_state_done (state_local, error);
-			if (!ret)
-				goto out;
-		} else {
-			ret = zif_state_done (state_local, error);
-			if (!ret)
-				goto out;
-
-			/* fake something here */
-			state_loop = zif_state_get_child (state_local);
-			package = pk_backend_create_meta_package_for_category (store_array, cat, state_loop, &error_local);
-			if (package != NULL) {
-				g_ptr_array_add (array, package);
-			} else {
-				g_warning ("failed to add id %s: %s",
-					   zif_category_get_id (cat),
-					   error_local->message);
-				g_clear_error (&error_local);
-				ret = zif_state_finished (state_loop, error);
-			}
-		}
-
-		/* this part done */
-		ret = zif_state_done (state_local, error);
-		if (!ret)
-			goto out;
-		ret = zif_state_done (state, error);
-		if (!ret)
-			goto out;
-	}
-
-	/* success */
-	array_retval = g_ptr_array_ref (array);
-out:
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	return array_retval;
-}
-
-/**
- * pk_backend_what_provides_helper:
- */
-static GPtrArray *
-pk_backend_what_provides_helper (GPtrArray *store_array, gchar **search, ZifState *state, GError **error)
-{
-	gboolean ret;
-	GPtrArray *array = NULL;
-	GPtrArray *array_retval = NULL;
-	GPtrArray *array_tmp;
-	guint i, j;
-	ZifDepend *depend;
-	ZifPackage *package;
-	ZifState *state_local;
-
-	/* set steps */
-	zif_state_set_number_steps (state, g_strv_length (search));
-
-	/* resolve all the groups */
-	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	for (i=0; search[i] != NULL; i++) {
-		state_local = zif_state_get_child (state);
-
-		/* parse this depend */
-		depend = zif_depend_new ();
-		ret = zif_depend_parse_description (depend, search[i], error);
-		if (!ret)
-			goto out;
-
-		/* find what provides this depend */
-		array_tmp = zif_store_array_what_provides (store_array, depend, state_local, error);
-		g_object_unref (depend);
-		if (array_tmp == NULL)
-			goto out;
-
-		/* add each result */
-		for (j=0; j<array_tmp->len; j++) {
-			package = g_ptr_array_index (array_tmp, i);
-			g_ptr_array_add (array, g_object_ref (package));
-		}
-		g_ptr_array_unref (array_tmp);
-
-		/* set steps */
-		zif_state_set_number_steps (state_local, 2);
-
-		/* this part done */
-		ret = zif_state_done (state, error);
-		if (!ret)
-			goto out;
-	}
-
-	/* success */
-	array_retval = g_ptr_array_ref (array);
-out:
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	return array_retval;
-}
-#endif
-
-/**
- * pk_backend_search_thread:
- */
-static gboolean
-pk_backend_search_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	GPtrArray *store_array = NULL;
-	GPtrArray *array = NULL;
-	GPtrArray *result;
-	PkBitfield filters;
-	PkRoleEnum role;
-	ZifState *state_local;
-	GError *error = NULL;
-	gchar **search;
-	guint recent;
-	guint i;
-
-	filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
-	role = pk_backend_get_role (backend);
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	pk_backend_set_percentage (backend, 0);
-
-	zif_state_set_number_steps (priv->state, 4);
-
-	/* get default store_array */
-	state_local = zif_state_get_child (priv->state);
-	store_array = pk_backend_get_default_store_array_for_filter (backend, filters, state_local, &error);
-	if (store_array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
-
-	/* do get action */
-	if (role == PK_ROLE_ENUM_GET_PACKAGES) {
-		state_local = zif_state_get_child (priv->state);
-		array = zif_store_array_get_packages (store_array, state_local, &error);
-		if (array == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get packages: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	} else {
-		/* treat these all the same */
-		search = pk_backend_get_strv (backend, "search");
-		if (search == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR,
-					       "failed to get 'search' for %s", pk_role_enum_to_string (role));
-			goto out;
-		}
-		array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-
-		/* do OR search */
-		state_local = zif_state_get_child (priv->state);
-		if (role == PK_ROLE_ENUM_SEARCH_NAME) {
-			array = zif_store_array_search_name (store_array, search, state_local, &error);
-		} else if (role == PK_ROLE_ENUM_SEARCH_DETAILS) {
-			array = zif_store_array_search_details (store_array, search, state_local, &error);
-		} else if (role == PK_ROLE_ENUM_SEARCH_GROUP) {
-			gchar **search_stripped;
-			guint search_entries;
-
-			/* if the search temp is prefixed with '@' then it is a
-			 * category search, and we have to strip it */
-			if (search[0][0] == '@') {
-				search_entries = g_strv_length (search);
-				search_stripped = g_new0 (gchar *, search_entries + 1);
-				for (i=0; i < search_entries; i++)
-					search_stripped[i] = g_strdup (&search[i][1]);
-				array = zif_store_array_search_category (store_array, search_stripped, state_local, &error);
-				g_strfreev (search_stripped);
-			} else if (g_strcmp0 (search[0], "newest") == 0) {
-				recent = zif_config_get_uint (priv->config, "recent", &error);
-				array = pk_backend_search_newest (store_array, state_local, recent, &error);
-				if (array == NULL) {
-					pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get packages: %s", error->message);
-					g_error_free (error);
-					goto out;
-				}
-			} else if (g_strcmp0 (search[0], "collections") == 0) {
-				array = pk_backend_search_collections (store_array, state_local, &error);
-				if (array == NULL) {
-					pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get packages: %s", error->message);
-					g_error_free (error);
-					goto out;
-				}
-			} else {
-				array = zif_store_array_search_group (store_array, search, state_local, &error);
-			}
-		} else if (role == PK_ROLE_ENUM_SEARCH_FILE) {
-			array = zif_store_array_search_file (store_array, search, state_local, &error);
-		} else if (role == PK_ROLE_ENUM_RESOLVE) {
-			if (search[0][0] == '@') {
-				/* this is a group */
-				array = pk_backend_resolve_groups (store_array, search, state_local, &error);
-			} else {
-				array = zif_store_array_resolve (store_array, search, state_local, &error);
-			}
-		} else if (role == PK_ROLE_ENUM_WHAT_PROVIDES) {
-			array = pk_backend_what_provides_helper (store_array, search, state_local, &error);
-		}
-		if (array == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to search: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* filter */
-	result = pk_backend_filter_package_array (array, filters);
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* done */
-	pk_backend_set_percentage (backend, 100);
-
-	/* emit */
-	state_local = zif_state_get_child (priv->state);
-	pk_backend_emit_package_array (backend, result, state_local);
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	pk_backend_finished (backend);
-#endif
-	return TRUE;
-}
-
 /**
  * pk_backend_enable_media_repo:
  */
 static void
 pk_backend_enable_media_repo (gboolean enabled)
 {
-#ifdef HAVE_ZIF
-	ZifStoreRemote *repo = NULL;
-	gboolean ret;
-	GError *error = NULL;
-	ZifState *state;
-
-	/* find the right repo */
-	state = zif_state_new ();
-	zif_state_set_cancellable (state, zif_state_get_cancellable (priv->state));
-	repo = zif_repos_get_store (priv->repos, "InstallMedia", state, &error);
-	if (repo == NULL) {
-		g_debug ("failed to find install-media repo: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* set the state */
-	ret = zif_store_remote_set_enabled (repo, enabled, &error);
-	if (!ret) {
-		g_debug ("failed to set enable: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-	g_debug ("%s InstallMedia", enabled ? "enabled" : "disabled");
-out:
-	g_object_unref (state);
-	if (repo != NULL)
-		g_object_unref (repo);
-#else
 	GKeyFile *keyfile;
 	gboolean ret;
 	gchar *data = NULL;
@@ -1078,7 +150,6 @@ out:
 out:
 	g_free (data);
 	g_key_file_free (keyfile);
-#endif
 }
 
 /**
@@ -1145,49 +216,6 @@ pk_backend_status_changed_cb (PkBackend *backend, PkStatusEnum status, gpointer
 	pk_backend_enable_media_repo (TRUE);
 }
 
-#ifdef HAVE_ZIF
-/**
- * pk_backend_state_action_changed_cb:
- **/
-static void
-pk_backend_state_action_changed_cb (ZifState *state, ZifStateAction action, const gchar *action_hint, PkBackend *backend)
-{
-	PkStatusEnum status = PK_STATUS_ENUM_UNKNOWN;
-
-	/* ignore this */
-	if (action == ZIF_STATE_ACTION_UNKNOWN)
-		goto out;
-
-	/* try to map the ZifStateAction to a PkStatusEnum */
-	if (action == ZIF_STATE_ACTION_DOWNLOADING) {
-		if (g_strrstr (action_hint, "repomd") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_REPOSITORY;
-		else if (g_strrstr (action_hint, "primary") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_PACKAGELIST;
-		else if (g_strrstr (action_hint, "filelist") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_FILELIST;
-		else if (g_strrstr (action_hint, "changelog") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_CHANGELOG;
-		else if (g_strrstr (action_hint, "comps") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_GROUP;
-		else if (g_strrstr (action_hint, "updatinfo") != NULL)
-			status = PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO;
-		goto out;
-	}
-
-	/* general cache loading */
-	if (action == ZIF_STATE_ACTION_CHECKING ||
-	    action == ZIF_STATE_ACTION_LOADING_REPOS ||
-	    action == ZIF_STATE_ACTION_DECOMPRESSING) {
-		status = PK_STATUS_ENUM_LOADING_CACHE;
-		goto out;
-	}
-out:
-	if (status != PK_STATUS_ENUM_UNKNOWN)
-		pk_backend_set_status (backend, status);
-}
-#endif
-
 /**
  * pk_backend_initialize:
  * This should only be run once per backend load, i.e. not every transaction
@@ -1201,11 +229,10 @@ pk_backend_initialize (PkBackend *backend)
 	GKeyFile *key_file = NULL;
 	gchar *config_file = NULL;
 	GList *mounts;
-	gchar *use_zif = NULL;
 
 	/* use logging */
 	pk_debug_add_log_domain (G_LOG_DOMAIN);
-	pk_debug_add_log_domain ("Zif");
+	pk_debug_add_log_domain ("Yum");
 
 	/* create private area */
 	priv = g_new0 (PkBackendYumPrivate, 1);
@@ -1252,91 +279,7 @@ pk_backend_initialize (PkBackend *backend)
 		g_error_free (error);
 		goto out;
 	}
-
-	#ifdef HAVE_ZIF
-	/* it seems some people are not ready for the awesomeness */
-	use_zif = g_key_file_get_string (key_file, "Backend", "UseZif", NULL);
-	if (use_zif != NULL) {
-		priv->use_zif = pk_role_bitfield_from_string (use_zif);
-		if (priv->use_zif == 0)
-			g_warning ("failed to parse UseZif '%s'", use_zif);
-	}
-	g_debug ("UseZif=%s (%i)", use_zif, (gint)priv->use_zif);
-
-	/* use a timer for profiling */
-	priv->timer = g_timer_new ();
-
-	/* init rpm */
-	zif_init ();
-
-	/* profile */
-	pk_backend_profile ("zif init");
-
-	/* TODO: hook up errors */
-	priv->cancellable = g_cancellable_new ();
-
-	/* ZifState */
-	priv->state = zif_state_new ();
-	g_signal_connect (priv->state, "percentage-changed", G_CALLBACK (pk_backend_state_percentage_changed_cb), backend);
-	g_signal_connect (priv->state, "subpercentage-changed", G_CALLBACK (pk_backend_state_subpercentage_changed_cb), backend);
-	g_signal_connect (priv->state, "action-changed", G_CALLBACK (pk_backend_state_action_changed_cb), backend);
-
-	/* ZifConfig */
-	priv->config = zif_config_new ();
-	ret = zif_config_set_filename (priv->config, "/etc/yum.conf", &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING, "failed to set config: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("read config_file");
-
-	/* ZifLock */
-	priv->lock = zif_lock_new ();
-
-	/* ZifRelease */
-	priv->release = zif_release_new ();
-	zif_release_set_boot_dir (priv->release, "/boot/upgrade");
-	zif_release_set_cache_dir (priv->release, "/var/cache/PackageKit");
-	zif_release_set_repo_dir (priv->release, "/var/cache/yum/preupgrade");
-	zif_release_set_uri (priv->release, "http://mirrors.fedoraproject.org/releases.txt");
-
-	/* ZifStoreLocal */
-	priv->store_local = zif_store_local_new ();
-
-	/* profile */
-	pk_backend_profile ("read local store");
-
-	/* ZifRepos */
-	priv->repos = zif_repos_new ();
-	ret = zif_repos_set_repos_dir (priv->repos, "/etc/yum.repos.d", &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_CONFIGURATION_ERROR, "failed to set repos dir: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("read repos");
-
-	/* ZifGroups */
-	priv->groups = zif_groups_new ();
-	ret = zif_groups_set_mapping_file (priv->groups, "/usr/share/PackageKit/helpers/yum/yum-comps-groups.conf", &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_GROUP_LIST_INVALID, "failed to set mapping file: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("read groups");
-#else
-	priv->use_zif = FALSE;
-#endif
 out:
-	g_free (use_zif);
 	g_free (config_file);
 	if (key_file != NULL)
 		g_key_file_free (key_file);
@@ -1357,24 +300,6 @@ pk_backend_destroy (PkBackend *backend)
 		g_object_unref (priv->monitor);
 	g_signal_handler_disconnect (backend, priv->signal_finished);
 	g_signal_handler_disconnect (backend, priv->signal_status);
-#ifdef HAVE_ZIF
-	if (priv->config != NULL)
-		g_object_unref (priv->config);
-	if (priv->release != NULL)
-		g_object_unref (priv->release);
-	if (priv->state != NULL)
-		g_object_unref (priv->state);
-	if (priv->repos != NULL)
-		g_object_unref (priv->repos);
-	if (priv->groups != NULL)
-		g_object_unref (priv->groups);
-	if (priv->store_local != NULL)
-		g_object_unref (priv->store_local);
-	if (priv->lock != NULL)
-		g_object_unref (priv->lock);
-	if (priv->timer != NULL)
-		g_timer_destroy (priv->timer);
-#endif
 	if (priv->volume_monitor != NULL)
 		g_object_unref (priv->volume_monitor);
 	g_free (priv);
@@ -1386,17 +311,7 @@ pk_backend_destroy (PkBackend *backend)
 PkBitfield
 pk_backend_get_groups (PkBackend *backend)
 {
-#ifdef HAVE_ZIF
-	GError *error = NULL;
-	GPtrArray *array = NULL;
-	guint i;
-	const gchar *group_str;
-#endif
-	PkBitfield groups = 0;
-
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, PK_ROLE_ENUM_GET_CATEGORIES)) {
-		groups = pk_bitfield_from_enums (
+	return pk_bitfield_from_enums (
 			PK_GROUP_ENUM_COLLECTIONS,
 			PK_GROUP_ENUM_NEWEST,
 			PK_GROUP_ENUM_ADMIN_TOOLS,
@@ -1420,30 +335,6 @@ pk_backend_get_groups (PkBackend *backend)
 			PK_GROUP_ENUM_SYSTEM,
 			PK_GROUP_ENUM_VIRTUALIZATION,
 			-1);
-		goto out;
-	}
-
-#ifdef HAVE_ZIF
-	/* get the dynamic group list */
-	array = zif_groups_get_groups (priv->groups, &error);
-	if (array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_GROUP_LIST_INVALID, "failed to get the list of groups: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* convert to a bitfield */
-	for (i=0; i<array->len; i++) {
-		group_str = g_ptr_array_index (array, i);
-		pk_bitfield_add (groups, pk_group_enum_from_string (group_str));
-	}
-#endif
-
-	/* add the virtual groups */
-	pk_bitfield_add (groups, PK_GROUP_ENUM_COLLECTIONS);
-	pk_bitfield_add (groups, PK_GROUP_ENUM_NEWEST);
-out:
-	return groups;
 }
 
 /**
@@ -1502,14 +393,9 @@ pk_backend_get_roles (PkBackend *backend)
 		PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES,
 		-1);
 
-#ifdef HAVE_ZIF
-	pk_bitfield_add (roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES);
-	pk_bitfield_add (roles, PK_ROLE_ENUM_UPGRADE_SYSTEM);
-#else
 	/* only add GetDistroUpgrades if the binary is present */
 	if (g_file_test (PREUPGRADE_BINARY, G_FILE_TEST_EXISTS))
 		pk_bitfield_add (roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES);
-#endif
 
 	return roles;
 }
@@ -1529,329 +415,22 @@ pk_backend_get_mime_types (PkBackend *backend)
 void
 pk_backend_cancel (PkBackend *backend)
 {
-#ifdef HAVE_ZIF
-	/* try to cancel the thread first */
-	g_cancellable_cancel (priv->cancellable);
-#endif
 	/* this feels bad... */
 	pk_backend_spawn_kill (priv->spawn);
 }
 
 /**
- * pk_backend_download_packages_thread:
- */
-static gboolean
-pk_backend_download_packages_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	const gchar *directory = pk_backend_get_string (backend, "directory");
-	GPtrArray *store_array = NULL;
-	ZifPackage *package;
-	ZifState *state_local;
-	GPtrArray *packages = NULL;
-	const gchar *id;
-	guint i;
-	guint len;
-	gboolean ret;
-	GError *error = NULL;
-	const gchar *filename;
-	gchar *basename;
-	gchar *path;
-
-	len = g_strv_length (package_ids);
-	zif_state_set_number_steps (priv->state, (len * 4) + 1);
-
-	/* find all the packages */
-	packages = g_ptr_array_new ();
-	state_local = zif_state_get_child (priv->state);
-	store_array = pk_backend_get_default_store_array_for_filter (backend, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), state_local, &error);
-	if (store_array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	for (i=0; package_ids[i] != NULL; i++) {
-		id = package_ids[i];
-		state_local = zif_state_get_child (priv->state);
-		package = zif_store_array_find_package (store_array, id, state_local, &error);
-		if (package == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "failed to find %s: %s", package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		g_ptr_array_add (packages, g_object_ref (package));
-		g_object_unref (package);
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* download list */
-	pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD);
-	for (i=0; i<packages->len; i++) {
-		package = g_ptr_array_index (packages, i);
-
-		/* get filename */
-		state_local = zif_state_get_child (priv->state);
-		filename = zif_package_get_filename (package, state_local, &error);
-		if (filename == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
-					       "failed to get filename for %s: %s", zif_package_get_id (package), error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* download */
-		state_local = zif_state_get_child (priv->state);
-		ret = zif_package_remote_download (ZIF_PACKAGE_REMOTE (package), directory, state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
-					       "failed to download %s: %s", filename, error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* send a signal for the daemon so the file is copied */
-		basename = g_path_get_basename (filename);
-		path = g_build_filename (directory, basename, NULL);
-		pk_backend_files (backend, zif_package_get_id (package), path);
-		g_free (basename);
-		g_free (path);
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-out:
-	pk_backend_finished (backend);
-	if (packages != NULL)
-		g_ptr_array_unref (packages);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-	return TRUE;
-}
-
-/**
  * pk_backend_download_packages:
  */
 void
 pk_backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *package_ids_temp;
-
-		/* send the complete list as stdin */
-		package_ids_temp = pk_package_ids_to_string (package_ids);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "download-packages", directory, package_ids_temp, NULL);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_download_packages_thread);
-}
-
-/**
- * pk_backend_get_depends_thread:
- */
-static gboolean
-pk_backend_get_depends_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
-	GPtrArray *store_array = NULL;
-	ZifPackage *package;
-	ZifPackage *package_provide;
-	ZifState *state_local;
-	ZifState *state_loop;
-	ZifState *state_loop_inner;
-	ZifDepend *require;
-	const gchar *id;
-	guint i, j, k;
-	guint len;
-	GError *error = NULL;
-	GPtrArray *array = NULL;
-	GPtrArray *result;
-	GPtrArray *requires;
-	GPtrArray *provides;
-
-	len = g_strv_length (package_ids);
-
-	zif_state_set_number_steps (priv->state, len + 3);
-
-	/* find all the packages */
-	state_local = zif_state_get_child (priv->state);
-	store_array = pk_backend_get_default_store_array_for_filter (backend, 0, state_local, &error);
-	if (store_array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* new output array */
-	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	for (i=0; package_ids[i] != NULL; i++) {
-		id = package_ids[i];
-
-		/* set up state */
-		state_local = zif_state_get_child (priv->state);
-		zif_state_set_number_steps (state_local, 2);
-
-		/* find package */
-		state_loop = zif_state_get_child (state_local);
-		package = zif_store_array_find_package (store_array, id, state_loop, &error);
-		if (package == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "failed to find %s: %s", package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get requires */
-		state_loop = zif_state_get_child (state_local);
-		requires = zif_package_get_requires (package, state_loop, &error);
-		if (requires == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
-					       "failed to get requires for %s: %s",
-					       package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* match a package to each require */
-		state_loop = zif_state_get_child (state_local);
-		zif_state_set_number_steps (state_loop, requires->len);
-		for (k=0; k<requires->len; k++) {
-
-			/* setup deeper state */
-			state_loop_inner = zif_state_get_child (state_loop);
-
-			require = g_ptr_array_index (requires, k);
-
-			/* find the package providing the depend */
-			provides = zif_store_array_what_provides (store_array, require, state_loop_inner, &error);
-			if (provides == NULL) {
-				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
-						       "failed to find provide for %s: %s",
-						       zif_depend_get_name (require), error->message);
-				g_error_free (error);
-				goto out;
-			}
-
-			/* print all of them */
-			for (j=0;j<provides->len;j++) {
-				package_provide = g_ptr_array_index (provides, j);
-				g_ptr_array_add (array, g_object_ref (package_provide));
-			}
-			g_ptr_array_unref (provides);
-
-			/* this section done */
-			ret = zif_state_done (state_loop, &error);
-			if (!ret)
-				goto out;
-		}
-
-		/* free */
-		g_object_unref (package);
-	}
-
-	/* filter */
-	result = pk_backend_filter_package_array (array, filters);
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* done */
-	pk_backend_set_percentage (backend, 100);
-
-	/* emit */
-	state_local = zif_state_get_child (priv->state);
-	pk_backend_emit_package_array (backend, result, state_local);
+	gchar *package_ids_temp;
 
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	pk_backend_finished (backend);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-	return TRUE;
+	/* send the complete list as stdin */
+	package_ids_temp = pk_package_ids_to_string (package_ids);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "download-packages", directory, package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -1860,186 +439,13 @@ out:
 void
 pk_backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *package_ids_temp;
-		package_ids_temp = pk_package_ids_to_string (package_ids);
-		filters_text = pk_filter_bitfield_to_string (filters);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-depends", filters_text, package_ids_temp, pk_backend_bool_to_string (recursive), NULL);
-		g_free (filters_text);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_depends_thread);
-}
-
-/**
- * pk_backend_get_details_thread:
- */
-static gboolean
-pk_backend_get_details_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	GPtrArray *store_array = NULL;
-	ZifPackage *package;
-	ZifState *state_local;
-	ZifState *state_loop;
-	const gchar *id;
-	guint i;
-	guint len;
-	GError *error = NULL;
-	const gchar *license;
-	const gchar *description;
-	const gchar *url;
-	const gchar *group_str;
-	PkGroupEnum group;
-	guint64 size;
-	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
-
-	len = g_strv_length (package_ids);
-
-	zif_state_set_number_steps (priv->state, len + 1);
-
-	/* find all the packages */
-	state_local = zif_state_get_child (priv->state);
-	if (pk_backend_is_all_installed (package_ids))
-		pk_bitfield_add (filters, PK_FILTER_ENUM_INSTALLED);
-	store_array = pk_backend_get_default_store_array_for_filter (backend, filters, state_local, &error);
-	if (store_array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	for (i=0; package_ids[i] != NULL; i++) {
-		id = package_ids[i];
-
-		/* set up state */
-		state_local = zif_state_get_child (priv->state);
-		zif_state_set_number_steps (state_local, 6);
-
-		/* find package */
-		state_loop = zif_state_get_child (state_local);
-		package = zif_store_array_find_package (store_array, id, state_loop, &error);
-		if (package == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "failed to find %s: %s", package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get license */
-		state_loop = zif_state_get_child (state_local);
-		license = zif_package_get_license (package, state_loop, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get group */
-		state_loop = zif_state_get_child (state_local);
-		group_str = zif_package_get_group (package, state_loop, &error);
-
-		/* not being in a group is non-fatal */
-		if (group_str == NULL) {
-			g_warning ("failed to get group: %s", error->message);
-			g_clear_error (&error);
-		}
-		group = pk_group_enum_from_text (group_str);
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get description */
-		state_loop = zif_state_get_child (state_local);
-		description = zif_package_get_description (package, state_loop, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get url */
-		state_loop = zif_state_get_child (state_local);
-		url = zif_package_get_url (package, state_loop, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get size */
-		state_loop = zif_state_get_child (state_local);
-		size = zif_package_get_size (package, state_loop, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* emit */
-		pk_backend_details (backend,
-				    package_ids[i],
-				    license,
-				    group,
-				    description,
-				    url,
-				    (gulong) size);
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* free */
-		g_object_unref (package);
-	}
-out:
-	pk_backend_finished (backend);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-	return TRUE;
+	gchar *filters_text;
+	gchar *package_ids_temp;
+	package_ids_temp = pk_package_ids_to_string (package_ids);
+	filters_text = pk_filter_bitfield_to_string (filters);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-depends", filters_text, package_ids_temp, pk_backend_bool_to_string (recursive), NULL);
+	g_free (filters_text);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -2048,70 +454,10 @@ out:
 void
 pk_backend_get_details (PkBackend *backend, gchar **package_ids)
 {
-	/* check if we can use zif */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *package_ids_temp;
-		package_ids_temp = pk_package_ids_to_string (package_ids);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-details", package_ids_temp, NULL);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_details_thread);
-}
-
-/**
-  * pk_backend_get_distro_upgrades_thread:
-  */
-static gboolean
-pk_backend_get_distro_upgrades_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gchar *distro_id;
-	GError *error = NULL;
-	GPtrArray *array = NULL;
-	guint i;
-	guint version;
-	ZifUpgrade *upgrade;
-
-	/* one shot */
-	zif_state_reset (priv->state);
-
-	/* get the current version */
-	version = zif_config_get_uint (priv->config, "releasever", NULL);
-	if (version == G_MAXUINT) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
-				       "could not get distro present version");
-		goto out;
-	}
-
-	/* get the upgrades */
-	array = zif_release_get_upgrades_new (priv->release, version, priv->state, &error);
-	if (array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
-				       "could not get latest distro data : %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* emit the results */
-	for (i=0; i<array->len; i++) {
-		upgrade = g_ptr_array_index (array, i);
-		if (!zif_upgrade_get_enabled (upgrade))
-			continue;
-		distro_id = g_strdup_printf ("fedora-%i", zif_upgrade_get_version (upgrade));
-		pk_backend_distro_upgrade (backend,
-					   zif_upgrade_get_stable (upgrade) ? PK_DISTRO_UPGRADE_ENUM_STABLE :
-									      PK_DISTRO_UPGRADE_ENUM_UNSTABLE,
-					   distro_id,
-					   zif_upgrade_get_id (upgrade));
-		g_free (distro_id);
-	}
-out:
-	pk_backend_finished (backend);
-	if (array != NULL)
-		g_ptr_array_unref (array);
-#endif
-	return TRUE;
+	gchar *package_ids_temp;
+	package_ids_temp = pk_package_ids_to_string (package_ids);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-details", package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -2120,126 +466,7 @@ out:
 void
 pk_backend_get_distro_upgrades (PkBackend *backend)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-distro-upgrades", NULL);
-		return;
-	}
-
-	pk_backend_thread_create (backend, pk_backend_get_distro_upgrades_thread);
-}
-
-/**
- * pk_backend_get_files_thread:
- */
-static gboolean
-pk_backend_get_files_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
-	GPtrArray *store_array = NULL;
-	ZifPackage *package;
-	GPtrArray *files;
-	ZifState *state_local;
-	const gchar *id;
-	guint i, j;
-	guint len;
-	GError *error = NULL;
-	const gchar *file;
-	GString *files_str;
-	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
-
-	/* reset */
-	pk_backend_profile (NULL);
-
-	len = g_strv_length (package_ids);
-
-	zif_state_set_number_steps (priv->state, (len * 2) + 1);
-
-	/* find all the packages */
-	state_local = zif_state_get_child (priv->state);
-	if (pk_backend_is_all_installed (package_ids))
-		pk_bitfield_add (filters, PK_FILTER_ENUM_INSTALLED);
-	store_array = pk_backend_get_default_store_array_for_filter (backend, filters, state_local, &error);
-	if (store_array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("add local");
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	for (i=0; package_ids[i] != NULL; i++) {
-		id = package_ids[i];
-		state_local = zif_state_get_child (priv->state);
-		package = zif_store_array_find_package (store_array, id, state_local, &error);
-		if (package == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "failed to find %s: %s", package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* profile */
-		pk_backend_profile ("find package");
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get files */
-		state_local = zif_state_get_child (priv->state);
-		files = zif_package_get_files (package, state_local, &error);
-		if (files == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "no files for %s: %s", package_ids[i], error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* profile */
-		pk_backend_profile ("get files");
-
-		files_str = g_string_new ("");
-		for (j=0; j<files->len; j++) {
-			file = g_ptr_array_index (files, j);
-			g_string_append_printf (files_str, "%s\n", file);
-		}
-		pk_backend_files (backend, package_ids[i], files_str->str);
-
-		/* profile */
-		pk_backend_profile ("emit files");
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		g_string_free (files_str, TRUE);
-		g_object_unref (package);
-	}
-out:
-	pk_backend_finished (backend);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-	return TRUE;
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-distro-upgrades", NULL);
 }
 
 /**
@@ -2249,15 +476,9 @@ void
 pk_backend_get_files (PkBackend *backend, gchar **package_ids)
 {
 	gchar *package_ids_temp;
-
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		package_ids_temp = pk_package_ids_to_string (package_ids);
-		pk_backend_spawn_helper (priv->spawn,  "yumBackend.py", "get-files", package_ids_temp, NULL);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_files_thread);
+	package_ids_temp = pk_package_ids_to_string (package_ids);
+	pk_backend_spawn_helper (priv->spawn,  "yumBackend.py", "get-files", package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -2276,206 +497,15 @@ pk_backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package
 }
 
 /**
- * pk_backend_get_updates_thread:
- */
-static gboolean
-pk_backend_get_updates_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-#if 0
-	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
-	GPtrArray *store_array = NULL;
-	ZifState *state_local;
-	ZifState *state_loop;
-	GPtrArray *array = NULL;
-	GPtrArray *result = NULL;
-	GPtrArray *packages = NULL;
-	gboolean ret;
-	GError *error = NULL;
-	ZifUpdate *update;
-	ZifPackage *package;
-	PkInfoEnum info;
-	ZifUpdateKind update_kind;
-	guint i;
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-
-	/* reset */
-	pk_backend_profile (NULL);
-
-	zif_state_set_number_steps (priv->state, 5);
-
-	/* get a store_array of remote stores */
-	store_array = zif_store_array_new ();
-	state_local = zif_state_get_child (priv->state);
-	ret = zif_store_array_add_remote_enabled (store_array, state_local, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to add enabled stores: %s\n", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("get remote stores");
-
-	/* get all the installed packages */
-	state_local = zif_state_get_child (priv->state);
-	packages = zif_store_get_packages (priv->store_local, state_local, &error);
-	if (packages == NULL) {
-		g_print ("failed to get local store: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-	g_debug ("searching for updates with %i packages", packages->len);
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("get installed packages");
-
-	/* remove any packages that are not newest (think kernel) */
-	zif_package_array_filter_newest (packages);
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("filter installed newest");
-
-	/* get updates */
-	state_local = zif_state_get_child (priv->state);
-	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
-	array = zif_store_array_get_updates (store_array, packages, state_local, &error);
-	if (array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to get updates: %s\n", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("get updates of packages");
-
-	/* setup steps on updatinfo state */
-	state_local = zif_state_get_child (priv->state);
-	if (array->len > 0)
-		zif_state_set_number_steps (state_local, array->len);
-
-	/* get update info */
-	for (i=0; i<array->len; i++) {
-		package = g_ptr_array_index (array, i);
-		state_loop = zif_state_get_child (state_local);
-
-		/* updates without updatinfo */
-		info = PK_INFO_ENUM_NORMAL;
-
-		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package), state_loop, &error);
-		if (update == NULL) {
-			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
-			g_clear_error (&error);
-			ret = zif_state_finished (state_loop, NULL);
-		} else {
-			update_kind = zif_update_get_kind (update);
-			if (update_kind == ZIF_UPDATE_KIND_BUGFIX)
-				info = PK_INFO_ENUM_BUGFIX;
-			else if (update_kind == ZIF_UPDATE_KIND_SECURITY)
-				info = PK_INFO_ENUM_SECURITY;
-			else if (update_kind == ZIF_UPDATE_KIND_ENHANCEMENT)
-				info = PK_INFO_ENUM_ENHANCEMENT;
-			g_object_unref (update);
-		}
-
-		/* set new severity */
-		g_object_set_data (G_OBJECT(package), "kind", (gpointer)pk_info_enum_to_string (info));
-
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* profile */
-	pk_backend_profile ("get updateinfo");
-
-	/* filter */
-	result = pk_backend_filter_package_array (array, filters);
-
-	/* done */
-	pk_backend_set_percentage (backend, 100);
-
-	/* emit */
-	state_local = zif_state_get_child (priv->state);
-	pk_backend_emit_package_array (backend, result, state_local);
-
-	/* profile */
-	pk_backend_profile ("filter and emit");
-
-out:
-	pk_backend_finished (backend);
-	if (packages != NULL)
-		g_ptr_array_unref (packages);
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	if (result != NULL)
-		g_ptr_array_unref (result);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-#endif
-	return TRUE;
-}
-
-/**
  * pk_backend_get_updates:
  */
 void
 pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		pk_backend_spawn_helper (priv->spawn,  "yumBackend.py", "get-updates", filters_text, NULL);
-		g_free (filters_text);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_updates_thread);
+	gchar *filters_text;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	pk_backend_spawn_helper (priv->spawn,  "yumBackend.py", "get-updates", filters_text, NULL);
+	g_free (filters_text);
 }
 
 /**
@@ -2484,158 +514,10 @@ pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
 void
 pk_backend_get_packages (PkBackend *backend, PkBitfield filters)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-packages", filters_text, NULL);
-		g_free (filters_text);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_search_thread);
-}
-
-#ifdef HAVE_ZIF
-/**
- * pk_backend_get_changelog_text:
- */
-static gchar *
-pk_backend_get_changelog_text (GPtrArray *changesets)
-{
-	guint i;
-	ZifChangeset *changeset;
-	GString *text;
-	gchar date_str[128];
-	GDate *date;
-
-	/* create output string */
-	text = g_string_new ("");
-	date = g_date_new ();
-
-	/* go through each one */
-	for (i=0; i<changesets->len; i++) {
-		changeset = g_ptr_array_index (changesets, i);
-
-		/* format the indervidual changeset */
-		g_date_set_time_t (date, zif_changeset_get_date (changeset));
-		g_date_strftime (date_str, 128, "%F", date);
-		g_string_append_printf (text, "**%s** %s - %s\n%s\n\n",
-					date_str,
-					zif_changeset_get_author (changeset),
-					zif_changeset_get_version (changeset),
-					zif_changeset_get_description (changeset));
-	}
-	g_date_free (date);
-	return g_string_free (text, FALSE);
-}
-#endif
-
-/**
- * pk_backend_get_update_detail_thread:
- */
-static gboolean
-pk_backend_get_update_detail_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gchar **package_ids;
-	guint i;
-	guint j;
-	gboolean ret;
-	ZifUpdate *update;
-	ZifState *state_local;
-	ZifPackage *package;
-	GError *error = NULL;
-
-	/* reset */
-	pk_backend_profile (NULL);
-
-	/* get the data */
-	package_ids = pk_backend_get_strv (backend, "package_ids");
-	zif_state_set_number_steps (priv->state, g_strv_length (package_ids));
-
-	/* get the update info */
-	for (i=0; package_ids[i] != NULL; i++) {
-
-		package = zif_package_new ();
-		ret = zif_package_set_id (package, package_ids[i], &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_ERROR,
-					       "failed to set id: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		state_local = zif_state_get_child (priv->state);
-		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package), state_local, &error);
-		if (update == NULL) {
-			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
-			g_clear_error (&error);
-		} else {
-			gchar *changelog_text = NULL;
-			GPtrArray *array;
-			GPtrArray *changesets;
-			GString *string_cve;
-			GString *string_bugzilla;
-			ZifUpdateInfo *info;
-			array = zif_update_get_update_infos (update);
-			string_cve = g_string_new (NULL);
-			string_bugzilla = g_string_new (NULL);
-			for (j=0; j<array->len; j++) {
-				info = g_ptr_array_index (array, j);
-				switch (zif_update_info_get_kind (info)) {
-				case ZIF_UPDATE_INFO_KIND_CVE:
-					g_string_append_printf (string_cve, "%s\t%s\t",
-								zif_update_info_get_title (info),
-								zif_update_info_get_url (info));
-					break;
-				case ZIF_UPDATE_INFO_KIND_BUGZILLA:
-					g_string_append_printf (string_bugzilla, "%s\t%s\t",
-								zif_update_info_get_title (info),
-								zif_update_info_get_url (info));
-					break;
-				default:
-					break;
-				}
-			}
-
-			/* format changelog */
-			changesets = zif_update_get_changelog (update);
-			if (changesets != NULL)
-				changelog_text = pk_backend_get_changelog_text (changesets);
-			pk_backend_update_detail (backend, package_ids[i],
-						  NULL, //updates,
-						  NULL, //obsoletes,
-						  NULL, //vendor_url,
-						  string_bugzilla->str,
-						  string_cve->str,
-						  PK_RESTART_ENUM_NONE,
-						  zif_update_get_description (update),
-						  changelog_text,
-						  zif_update_get_state (update),
-						  zif_update_get_issued (update),
-						  NULL);
-			if (changesets != NULL)
-				g_ptr_array_unref (changesets);
-			g_ptr_array_unref (array);
-			g_string_free (string_cve, TRUE);
-			g_string_free (string_bugzilla, TRUE);
-			g_free (changelog_text);
-		}
-
-		g_object_unref (package);
-
-		/* this section done */
-		ret = zif_state_done (priv->state, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-out:
-	pk_backend_finished (backend);
-#endif
-	return TRUE;
+	gchar *filters_text;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-packages", filters_text, NULL);
+	g_free (filters_text);
 }
 
 /**
@@ -2644,17 +526,13 @@ out:
 void
 pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *package_ids_temp;
-		package_ids_temp = pk_package_ids_to_string (package_ids);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-update-detail", package_ids_temp, NULL);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_update_detail_thread);
+	gchar *package_ids_temp;
+	package_ids_temp = pk_package_ids_to_string (package_ids);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-update-detail", package_ids_temp, NULL);
+	g_free (package_ids_temp);
 }
 
+
 /**
  * pk_backend_install_packages:
  */
@@ -2662,8 +540,6 @@ void
 pk_backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "install-packages", pk_backend_bool_to_string (only_trusted), package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2676,8 +552,6 @@ void
 pk_backend_simulate_remove_packages (PkBackend *backend, gchar **package_ids, gboolean autoremove)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "simulate-remove-packages", package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2690,8 +564,6 @@ void
 pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "simulate-update-packages", package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2704,8 +576,6 @@ void
 pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "simulate-install-packages", package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2718,8 +588,6 @@ void
 pk_backend_install_files (PkBackend *backend, gboolean only_trusted, gchar **full_paths)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = g_strjoinv (PK_BACKEND_SPAWN_FILENAME_DELIM, full_paths);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "install-files", pk_backend_bool_to_string (only_trusted), package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2739,65 +607,6 @@ pk_backend_install_signature (PkBackend *backend, PkSigTypeEnum type,
 }
 
 /**
- * pk_backend_refresh_cache_thread:
- */
-static gboolean
-pk_backend_refresh_cache_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	GPtrArray *store_array = NULL;
-	gboolean ret;
-	GError *error = NULL;
-	ZifState *state_local;
-	gboolean force = pk_backend_get_bool (backend, "force");
-
-	zif_state_set_number_steps (priv->state, 2);
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	pk_backend_set_percentage (backend, 0);
-
-	/* don't nuke the metadata */
-	if (!force) {
-		g_debug ("not supported yet");
-		goto out;
-	}
-
-	/* get a store_array of remote stores */
-	store_array = zif_store_array_new ();
-	state_local = zif_state_get_child (priv->state);
-	ret = zif_store_array_add_remote_enabled (store_array, state_local, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to add enabled stores: %s\n", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* clean all the repos */
-	state_local = zif_state_get_child (priv->state);
-	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
-	ret = zif_store_array_clean (store_array, state_local, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to clean: %s\n", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	pk_backend_finished (backend);
-	if (store_array != NULL)
-		g_ptr_array_unref (store_array);
-#endif
-	return TRUE;
-}
-
-/**
  * pk_backend_refresh_cache:
  */
 void
@@ -2810,12 +619,7 @@ pk_backend_refresh_cache (PkBackend *backend, gboolean force)
 		return;
 	}
 
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "refresh-cache", pk_backend_bool_to_string (force), NULL);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_refresh_cache_thread);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "refresh-cache", pk_backend_bool_to_string (force), NULL);
 }
 
 /**
@@ -2825,8 +629,6 @@ void
 pk_backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "remove-packages", pk_backend_bool_to_string (allow_deps), pk_backend_bool_to_string (autoremove), package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2838,18 +640,13 @@ pk_backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean al
 void
 pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *search;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		search = g_strjoinv ("&", values);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-details", filters_text, search, NULL);
-		g_free (filters_text);
-		g_free (search);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_search_thread);
+	gchar *filters_text;
+	gchar *search;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&", values);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-details", filters_text, search, NULL);
+	g_free (filters_text);
+	g_free (search);
 }
 
 /**
@@ -2858,18 +655,13 @@ pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **value
 void
 pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *search;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		search = g_strjoinv ("&", values);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-file", filters_text, search, NULL);
-		g_free (filters_text);
-		g_free (search);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_search_thread);
+	gchar *filters_text;
+	gchar *search;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&", values);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-file", filters_text, search, NULL);
+	g_free (filters_text);
+	g_free (search);
 }
 
 /**
@@ -2878,18 +670,13 @@ pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 void
 pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *search;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		search = g_strjoinv ("&", values);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-group", filters_text, search, NULL);
-		g_free (filters_text);
-		g_free (search);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_search_thread);
+	gchar *filters_text;
+	gchar *search;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&", values);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-group", filters_text, search, NULL);
+	g_free (filters_text);
+	g_free (search);
 }
 
 /**
@@ -2898,18 +685,13 @@ pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values
 void
 pk_backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *search;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		search = g_strjoinv ("&", values);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-name", filters_text, search, NULL);
-		g_free (filters_text);
-		g_free (search);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_search_thread);
+	gchar *filters_text;
+	gchar *search;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search = g_strjoinv ("&", values);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "search-name", filters_text, search, NULL);
+	g_free (filters_text);
+	g_free (search);
 }
 
 /**
@@ -2919,8 +701,6 @@ void
 pk_backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	gchar *package_ids_temp;
-
-	/* send the complete list as stdin */
 	package_ids_temp = pk_package_ids_to_string (package_ids);
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "update-packages", pk_backend_bool_to_string (only_trusted), package_ids_temp, NULL);
 	g_free (package_ids_temp);
@@ -2941,150 +721,13 @@ pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
 void
 pk_backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		gchar *package_ids_temp;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		package_ids_temp = pk_package_ids_to_string (packages);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "resolve", filters_text, package_ids_temp, NULL);
-		g_free (filters_text);
-		g_free (package_ids_temp);
-		return;
-	}
-	pk_backend_set_strv (backend, "search", packages);
-	pk_backend_thread_create (backend, pk_backend_search_thread);
-}
-
-/**
- * pk_backend_get_repo_list_thread:
- */
-static gboolean
-pk_backend_get_repo_list_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
-	guint i;
-	GPtrArray *array = NULL;
-	ZifStoreRemote *store;
-	ZifState *state_local;
-	ZifState *state_loop;
-	ZifState *state_tmp;
-	const gchar *repo_id;
-	const gchar *name;
-	gboolean enabled;
-	gboolean devel;
-	GError *error = NULL;
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	pk_backend_set_percentage (backend, 0);
-
-	zif_state_set_number_steps (priv->state, 2);
-
-	state_local = zif_state_get_child (priv->state);
-	array = zif_repos_get_stores (priv->repos, state_local, &error);
-	if (array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, "failed to find repos: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* none? */
-	if (array->len == 0) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, "failed to find any repos");
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* setup state */
-	state_local = zif_state_get_child (priv->state);
-	zif_state_set_number_steps (state_local, array->len);
-
-	/* looks at each store */
-	for (i=0; i<array->len; i++) {
-		store = g_ptr_array_index (array, i);
-
-		/* allow filtering on devel */
-		state_loop = zif_state_get_child (state_local);
-		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
-
-			/* devel, name, enabled */
-			zif_state_set_number_steps (state_loop, 3);
-
-			state_tmp = zif_state_get_child (state_loop);
-			devel = zif_store_remote_is_devel (store, state_tmp, NULL);
-			if (devel)
-				goto skip;
-
-			/* this section done */
-			ret = zif_state_done (state_loop, &error);
-			if (!ret) {
-				pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-				g_error_free (error);
-				goto out;
-			}
-		} else {
-			/* name, enabled */
-			zif_state_set_number_steps (state_loop, 2);
-		}
-
-		/* get name */
-		state_tmp = zif_state_get_child (state_loop);
-		name = zif_store_remote_get_name (store, state_tmp, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_loop, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		/* get state */
-		state_tmp = zif_state_get_child (state_loop);
-		enabled = zif_store_remote_get_enabled (store, state_tmp, NULL);
-
-		/* this section done */
-		ret = zif_state_done (state_loop, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-
-		repo_id = zif_store_get_id (ZIF_STORE (store));
-		pk_backend_repo_detail (backend, repo_id, name, enabled);
-skip:
-		/* this section done */
-		ret = zif_state_done (state_local, &error);
-		if (!ret) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	pk_backend_finished (backend);
-	if (array != NULL)
-		g_ptr_array_unref (array);
-#endif
-	return TRUE;
+	gchar *filters_text;
+	gchar *package_ids_temp;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	package_ids_temp = pk_package_ids_to_string (packages);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "resolve", filters_text, package_ids_temp, NULL);
+	g_free (filters_text);
+	g_free (package_ids_temp);
 }
 
 /**
@@ -3093,70 +736,10 @@ out:
 void
 pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		filters_text = pk_filter_bitfield_to_string (filters);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-repo-list", filters_text, NULL);
-		g_free (filters_text);
-		return;
-	}
-
-	pk_backend_thread_create (backend, pk_backend_get_repo_list_thread);
-}
-
-/**
- * pk_backend_repo_enable_thread:
- */
-static gboolean
-pk_backend_repo_enable_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	ZifStoreRemote *repo = NULL;
-	gboolean ret;
-	GError *error = NULL;
-	gchar *warning = NULL;
-	gboolean enabled = pk_backend_get_bool (backend, "enabled");
-	const gchar *repo_id = pk_backend_get_string (backend, "repo_id");
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	pk_backend_set_percentage (backend, 0);
-
-	/* find the right repo */
-	repo = zif_repos_get_store (priv->repos, repo_id, priv->state, &error);
-	if (repo == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_FOUND, "failed to find repo: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* set the state */
-	ret = zif_store_remote_set_enabled (repo, enabled, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_CANNOT_DISABLE_REPOSITORY, "failed to set enable: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* warn if rawhide */
-	if (g_strstr_len (repo_id, -1, "rawhide") != NULL) {
-		warning = g_strdup_printf ("These packages are untested and still under development."
-					   "This repository is used for development of new releases.\n\n"
-					   "This repository can see significant daily turnover and major "
-					   "functionality changes which cause unexpected problems with "
-					   "other development packages.\n"
-					   "Please use these packages if you want to work with the "
-					   "Fedora developers by testing these new development packages.\n\n"
-					   "If this is not correct, please disable the %s software source.", repo_id);
-		pk_backend_message (backend, PK_MESSAGE_ENUM_REPO_FOR_DEVELOPERS_ONLY, warning);
-	}
-out:
-	pk_backend_finished (backend);
-	g_free (warning);
-	if (repo != NULL)
-		g_object_unref (repo);
-#endif
-	return TRUE;
+	gchar *filters_text;
+	filters_text = pk_filter_bitfield_to_string (filters);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-repo-list", filters_text, NULL);
+	g_free (filters_text);
 }
 
 /**
@@ -3165,16 +748,11 @@ out:
 void
 pk_backend_repo_enable (PkBackend *backend, const gchar *repo_id, gboolean enabled)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		if (enabled == TRUE) {
-			pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "repo-enable", repo_id, "true", NULL);
-		} else {
-			pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "repo-enable", repo_id, "false", NULL);
-		}
-		return;
+	if (enabled == TRUE) {
+		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "repo-enable", repo_id, "true", NULL);
+	} else {
+		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "repo-enable", repo_id, "false", NULL);
 	}
-	pk_backend_thread_create (backend, pk_backend_repo_enable_thread);
 }
 
 /**
@@ -3183,148 +761,16 @@ pk_backend_repo_enable (PkBackend *backend, const gchar *repo_id, gboolean enabl
 void
 pk_backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provides, gchar **values)
 {
-	guint i;
-	guint len;
-	gchar **search = NULL;
-	GPtrArray *array = NULL;
 	gchar *search_tmp;
+	gchar *filters_text;
+	const gchar *provides_text;
 
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		gchar *filters_text;
-		const gchar *provides_text;
-		provides_text = pk_provides_enum_to_string (provides);
-		filters_text = pk_filter_bitfield_to_string (filters);
-		search_tmp = g_strjoinv ("&", values);
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "what-provides", filters_text, provides_text, search_tmp, NULL);
-		g_free (filters_text);
-		g_free (search_tmp);
-		return;
-	}
-
-	/* iter on each provide string, and wrap it with the fedora prefix */
-	len = g_strv_length (values);
-	array = g_ptr_array_new_with_free_func (g_free);
-	for (i=0; i<len; i++) {
-		/* compatibility with previous versions of GPK */
-		if (g_str_has_prefix (values[i], "gstreamer0.10(")) {
-			g_ptr_array_add (array, g_strdup (values[i]));
-		} else if (provides == PK_PROVIDES_ENUM_CODEC) {
-			g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i]));
-		} else if (provides == PK_PROVIDES_ENUM_FONT) {
-			g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i]));
-		} else if (provides == PK_PROVIDES_ENUM_MIMETYPE) {
-			g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i]));
-		} else if (provides == PK_PROVIDES_ENUM_POSTSCRIPT_DRIVER) {
-			g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i]));
-		} else if (provides == PK_PROVIDES_ENUM_ANY) {
-			g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i]));
-			g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i]));
-			g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i]));
-			g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i]));
-		} else {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PROVIDE_TYPE_NOT_SUPPORTED,
-					       "provide type %s not supported", pk_provides_enum_to_string (provides));
-		}
-	}
-
-	/* set the search terms and run */
-	search = pk_ptr_array_to_strv (array);
-	pk_backend_set_strv (backend, "search", search);
-	pk_backend_thread_create (backend, pk_backend_search_thread);
-	g_strfreev (search);
-	g_ptr_array_unref (array);
-}
-
-/**
- * pk_backend_get_categories_thread:
- */
-static gboolean
-pk_backend_get_categories_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gboolean ret;
-	guint i;
-	GPtrArray *array = NULL;
-	GPtrArray *stores = NULL;
-	ZifCategory *cat;
-	gchar *cat_id;
-
-	ZifState *state_local;
-	GError *error = NULL;
-
-	zif_state_set_number_steps (priv->state, 3);
-
-	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-	pk_backend_set_percentage (backend, 0);
-
-	/* get enabled repos */
-	state_local = zif_state_get_child (priv->state);
-	stores = zif_repos_get_stores_enabled (priv->repos, state_local, &error);
-	if (stores == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_CONFIGURATION_ERROR, "failed to add remote stores: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* get sorted list of unique categories */
-	state_local = zif_state_get_child (priv->state);
-	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
-	array = zif_store_array_get_categories (stores, state_local, &error);
-	if (array == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_GROUP_LIST_INVALID, "failed to add get categories: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* emit each cat obj */
-	for (i=0; i<array->len; i++) {
-		cat = g_ptr_array_index (array, i);
-		/* FIXME: in the yum backend, we signify a group with a '@' prefix */
-		if (zif_category_get_parent_id (cat) != NULL)
-			cat_id = g_strdup_printf ("@%s", zif_category_get_id (cat));
-		else
-			cat_id = g_strdup (zif_category_get_id (cat));
-		pk_backend_category (backend,
-				     zif_category_get_parent_id (cat),
-				     cat_id,
-				     zif_category_get_name (cat),
-				     zif_category_get_summary (cat),
-				     zif_category_get_icon (cat));
-		g_free (cat_id);
-	}
-
-	/* this section done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	pk_backend_finished (backend);
-	if (array != NULL)
-		g_ptr_array_unref (array);
-	if (stores != NULL)
-		g_ptr_array_unref (stores);
-#endif
-	return TRUE;
+	provides_text = pk_provides_enum_to_string (provides);
+	filters_text = pk_filter_bitfield_to_string (filters);
+	search_tmp = g_strjoinv ("&", values);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "what-provides", filters_text, provides_text, search_tmp, NULL);
+	g_free (filters_text);
+	g_free (search_tmp);
 }
 
 /**
@@ -3333,12 +779,7 @@ out:
 void
 pk_backend_get_categories (PkBackend *backend)
 {
-	/* it seems some people are not ready for the awesomeness */
-	if (!pk_bitfield_contain (priv->use_zif, pk_backend_get_role (backend))) {
-		pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-categories", NULL);
-		return;
-	}
-	pk_backend_thread_create (backend, pk_backend_get_categories_thread);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "get-categories", NULL);
 }
 
 /**
@@ -3356,93 +797,10 @@ pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
 }
 
 /**
-  * pk_backend_upgrade_system_thread:
-  */
-static gboolean
-pk_backend_upgrade_system_thread (PkBackend *backend)
-{
-#ifdef HAVE_ZIF
-	gchar **distro_id_split = NULL;
-	guint version;
-	gboolean ret;
-	PkErrorEnum error_code;
-	GError *error = NULL;
-	ZifReleaseUpgradeKind upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_DEFAULT;
-	PkUpgradeKindEnum upgrade_kind = pk_backend_get_uint (backend, "upgrade_kind");
-	const gchar *distro_id = pk_backend_get_string (backend, "distro_id");
-
-	/* check valid */
-	distro_id_split = g_strsplit (distro_id, "-", -1);
-	if (g_strv_length (distro_id_split) != 2) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
-				       "distribution id %s invalid", distro_id);
-		goto out;
-	}
-
-	/* check fedora */
-	if (g_strcmp0 (distro_id_split[0], "fedora") != 0) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
-				       "only 'fedora' is supported");
-		goto out;
-	}
-
-	/* map PK enum to Zif enumerated types */
-	if (upgrade_kind == PK_UPGRADE_KIND_ENUM_MINIMAL)
-		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_MINIMAL;
-	else if (upgrade_kind == PK_UPGRADE_KIND_ENUM_COMPLETE)
-		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_COMPLETE;
-
-	/* do the upgrade */
-	version = atoi (distro_id_split[1]);
-	ret = zif_release_upgrade_version (priv->release,
-					   version,
-					   upgrade_kind_zif,
-					   priv->state,
-					   &error);
-	if (!ret) {
-		/* convert the ZifRelease error code into a PK error enum */
-		switch (error->code) {
-		case ZIF_RELEASE_ERROR_DOWNLOAD_FAILED:
-			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
-			break;
-		case ZIF_RELEASE_ERROR_FILE_INVALID:
-			error_code = PK_ERROR_ENUM_FAILED_CONFIG_PARSING;
-			break;
-		case ZIF_RELEASE_ERROR_LOW_DISKSPACE:
-			error_code = PK_ERROR_ENUM_NO_SPACE_ON_DEVICE;
-			break;
-		case ZIF_RELEASE_ERROR_NOT_FOUND:
-			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
-			break;
-		case ZIF_RELEASE_ERROR_NOT_SUPPORTED:
-			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
-			break;
-		case ZIF_RELEASE_ERROR_NO_UUID_FOR_ROOT:
-		case ZIF_RELEASE_ERROR_SETUP_INVALID:
-		case ZIF_RELEASE_ERROR_SPAWN_FAILED:
-		case ZIF_RELEASE_ERROR_WRITE_FAILED:
-			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
-			break;
-		default:
-			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
-		}
-		pk_backend_error_code (backend, error_code,
-				       "failed to upgrade: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
-	pk_backend_finished (backend);
-	g_strfreev (distro_id_split);
-#endif
-	return TRUE;
-}
-
-/**
  * pk_backend_upgrade_system:
  */
 void
 pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
-	pk_backend_thread_create (backend, pk_backend_upgrade_system_thread);
+	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "update-system", NULL);
 }
diff --git a/backends/zif/.gitignore b/backends/zif/.gitignore
new file mode 100644
index 0000000..9c0e66e
--- /dev/null
+++ b/backends/zif/.gitignore
@@ -0,0 +1 @@
+.libs
diff --git a/backends/zif/Makefile.am b/backends/zif/Makefile.am
new file mode 100644
index 0000000..a19855f
--- /dev/null
+++ b/backends/zif/Makefile.am
@@ -0,0 +1,27 @@
+helperdir = $(datadir)/PackageKit/helpers/zif
+dist_helper_DATA = 			\
+	zif-comps-groups.conf		\
+	licenses.txt
+
+INCLUDES = \
+	-DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE	\
+	-DG_LOG_DOMAIN=\"PackageKit-Zif\"			\
+	-DPK_COMPILATION					\
+	$(ZIF_CFLAGS)						\
+	-DDATADIR=\"$(datadir)\"				\
+	-DSYSCONFDIR=\""$(sysconfdir)"\"
+
+plugindir = $(PK_PLUGIN_DIR)
+plugin_LTLIBRARIES = libpk_backend_zif.la
+libpk_backend_zif_la_SOURCES = pk-backend-zif.c
+libpk_backend_zif_la_LIBADD = $(PK_PLUGIN_LIBS)
+libpk_backend_zif_la_LDFLAGS = -module -avoid-version
+libpk_backend_zif_la_CFLAGS = $(PK_PLUGIN_CFLAGS) $(WARNINGFLAGS_C)
+libpk_backend_zif_la_LIBADD += $(ZIF_LIBS)
+
+EXTRA_DIST =							\
+	$(conf_DATA)
+
+clean-local:
+	rm -f *~
+
diff --git a/backends/zif/licenses.txt b/backends/zif/licenses.txt
new file mode 120000
index 0000000..7289e7e
--- /dev/null
+++ b/backends/zif/licenses.txt
@@ -0,0 +1 @@
+../yum/licenses.txt
\ No newline at end of file
diff --git a/backends/zif/pk-backend-zif.c b/backends/zif/pk-backend-zif.c
new file mode 100644
index 0000000..311cab6
--- /dev/null
+++ b/backends/zif/pk-backend-zif.c
@@ -0,0 +1,4662 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <config.h>
+#include <gio/gio.h>
+#include <pk-backend.h>
+#include <string.h>
+#include <packagekit-glib2/pk-debug.h>
+#include <zif.h>
+
+#define PACKAGE_MEDIA_REPO_FILENAME		"/etc/yum.repos.d/packagekit-media.repo"
+
+typedef struct {
+	GCancellable	*cancellable;
+	GFileMonitor	*monitor;
+	guint		 signal_finished;
+	guint		 signal_status;
+	GVolumeMonitor	*volume_monitor;
+	ZifConfig	*config;
+	ZifGroups	*groups;
+	ZifLock		*lock;
+	ZifRelease	*release;
+	ZifRepos	*repos;
+	ZifState	*state;
+	ZifStore	*store_local;
+	ZifTransaction	*transaction;
+} PkBackendYumPrivate;
+
+static PkBackendYumPrivate *priv;
+
+/**
+ * pk_backend_get_description:
+ */
+gchar *
+pk_backend_get_description (PkBackend *backend)
+{
+	return g_strdup ("Zif");
+}
+
+/**
+ * pk_backend_get_author:
+ */
+gchar *
+pk_backend_get_author (PkBackend *backend)
+{
+	return g_strdup ("Richard Hughes <richard at hughsie.com>");
+}
+
+/**
+ * pk_backend_yum_repos_changed_cb:
+ **/
+static void
+pk_backend_yum_repos_changed_cb (GFileMonitor *monitor_,
+				 GFile *file, GFile *other_file,
+				 GFileMonitorEvent event_type,
+				 PkBackend *backend)
+{
+	gchar *filename;
+
+	/* ignore the packagekit-media.repo file */
+	filename = g_file_get_path (file);
+	if (g_str_has_prefix (filename, PACKAGE_MEDIA_REPO_FILENAME))
+		goto out;
+
+	/* emit signal */
+	pk_backend_repo_list_changed (backend);
+out:
+	g_free (filename);
+}
+
+/**
+ * pk_backend_state_percentage_changed_cb:
+ */
+static void
+pk_backend_state_percentage_changed_cb (ZifState *state,
+					guint percentage,
+					PkBackend *backend)
+{
+	pk_backend_set_percentage (backend, percentage);
+}
+
+/**
+ * pk_backend_state_subpercentage_changed_cb:
+ */
+static void
+pk_backend_state_subpercentage_changed_cb (ZifState *state,
+					   guint subpercentage,
+					   PkBackend *backend)
+{
+	pk_backend_set_sub_percentage (backend, subpercentage);
+}
+
+/**
+ * pk_backend_is_all_installed:
+ */
+static gboolean
+pk_backend_is_all_installed (gchar **package_ids)
+{
+	guint i;
+	gboolean ret = TRUE;
+
+	/* check if we can use zif */
+	for (i=0; package_ids[i] != NULL; i++) {
+		if (!g_str_has_suffix (package_ids[i], ";installed")) {
+			ret = FALSE;
+			break;
+		}
+	}
+	return ret;
+}
+
+/**
+ * pk_backend_transaction_start:
+ */
+void
+pk_backend_transaction_start (PkBackend *backend)
+{
+	const gchar *root;
+	gboolean ret = FALSE;
+	gchar *http_proxy = NULL;
+	GError *error = NULL;
+	guint cache_age;
+	guint i;
+	guint lock_delay;
+	guint lock_retries;
+	guint pid;
+
+	/* only try a finite number of times */
+	lock_retries = zif_config_get_uint (priv->config, "lock_retries", NULL);
+	lock_delay = zif_config_get_uint (priv->config, "lock_delay", NULL);
+	for (i=0; i<lock_retries; i++) {
+
+		/* try to lock */
+		ret = zif_lock_set_locked (priv->lock, &pid, &error);
+		if (ret)
+			break;
+
+		/* we're now waiting */
+		pk_backend_set_status (backend, PK_STATUS_ENUM_WAITING_FOR_LOCK);
+
+		/* now wait */
+		g_debug ("Failed to lock on try %i of %i, already locked by PID %i "
+			 "(sleeping for %ims): %s\n",
+			   i+1, lock_retries,
+			   pid,
+			   lock_delay,
+			   error->message);
+		g_clear_error (&error);
+		g_usleep (lock_delay * 1000);
+	}
+
+	/* we failed to lock */
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_CANNOT_GET_LOCK,
+				       "failed to get lock, held by PID: %i",
+				       pid);
+		goto out;
+	}
+
+	/* this backend does not support a relocatable root... yet */
+	root = pk_backend_get_root (backend);
+	if (g_strcmp0 (root, "/") != 0) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INSTALL_ROOT_INVALID,
+				       "backend does not support this root: '%s'",
+				       root);
+		goto out;
+	}
+
+	/* try to set, or re-set install root */
+	ret = zif_store_local_set_prefix (ZIF_STORE_LOCAL (priv->store_local),
+					  root,
+					  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to set prefix: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* get network state */
+	ret = pk_backend_is_online (backend);
+	if (!ret) {
+		zif_config_set_boolean (priv->config, "network",
+					FALSE, NULL);
+		goto out;
+	}
+
+	/* tell ZifConfig it's okay to contact the network */
+	zif_config_set_boolean (priv->config, "network",
+				TRUE, NULL);
+
+	/* set cache age */
+	cache_age = pk_backend_get_cache_age (backend);
+	if (cache_age > 0)
+		zif_config_set_uint (priv->config, "max-age",
+				     cache_age, NULL);
+
+	/* set the proxy */
+	http_proxy = pk_backend_get_proxy_http (backend);
+	zif_config_set_string (priv->config, "http_proxy",
+			       http_proxy, NULL);
+
+	/* packages we can't remove */
+	zif_config_set_string (priv->config, "protected_packages",
+			       "PackageKit,zif,rpm,glibc", NULL);
+
+	/* always skip broken transactions */
+	zif_config_set_boolean (priv->config, "skip_broken",
+				TRUE, NULL);
+
+	/* set background mode */
+	zif_config_set_boolean (priv->config, "background",
+				pk_backend_use_background (backend), NULL);
+
+	/* setup state */
+	zif_state_reset (priv->state);
+
+	/* start with a new transaction */
+	zif_transaction_reset (priv->transaction);
+out:
+	g_free (http_proxy);
+	return;
+}
+
+/**
+ * pk_backend_transaction_stop:
+ */
+void
+pk_backend_transaction_stop (PkBackend *backend)
+{
+	gboolean ret;
+	GError *error = NULL;
+
+	/* try to unlock */
+	ret = zif_lock_set_unlocked (priv->lock, &error);
+	if (!ret) {
+		g_warning ("failed to unlock: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	return;
+}
+
+/**
+ * pk_backend_filter_package_array_newest:
+ *
+ * This function needs to scale well, and be fast to process 50,000
+ * packages in less than one second. If it looks overcomplicated, it's
+ * because it needs to be O(n) not O(n*n).
+ **/
+static gboolean
+pk_backend_filter_package_array_newest (GPtrArray *array)
+{
+	const gchar *package_id;
+	gboolean installed;
+	gchar *key;
+	gchar **split;
+	GHashTable *hash;
+	gint retval;
+	guint i;
+	ZifPackage *found;
+	ZifPackage *package;
+
+	/* as an indexed hash table for speed */
+	hash = g_hash_table_new_full (g_str_hash,
+				      g_str_equal,
+				      g_free,
+				      g_object_unref);
+
+	for (i=0; i<array->len; i++) {
+
+		/* get the current package */
+		package = g_ptr_array_index (array, i);
+		package_id = zif_package_get_id (package);
+		installed = zif_package_is_installed (package);
+
+		/* generate enough data to be specific */
+		split = pk_package_id_split (package_id);
+		key = g_strdup_printf ("%s-%s-%i",
+				       split[PK_PACKAGE_ID_NAME],
+				       split[PK_PACKAGE_ID_ARCH],
+				       installed);
+		g_strfreev (split);
+
+		/* we've not already come across this package */
+		found = g_hash_table_lookup (hash, key);
+		if (found == NULL) {
+			g_hash_table_insert (hash, key, g_object_ref (package));
+			continue;
+		}
+
+		/* compare one package vs the other package */
+		retval = zif_package_compare (package, found);
+
+		/* the package is older than the one we have stored */
+		if (retval <= 0) {
+			g_free (key);
+			g_ptr_array_remove (array, package);
+			continue;
+		}
+
+		/* the package is newer than what we have stored,
+		 * delete the old store, and add this one */
+		g_hash_table_remove (hash, found);
+		g_hash_table_insert (hash, key, g_object_ref (package));
+	}
+
+	g_hash_table_unref (hash);
+	return TRUE;
+}
+
+/**
+ * pk_backend_filter_package_array:
+ **/
+static GPtrArray *
+pk_backend_filter_package_array (GPtrArray *array, PkBitfield filters)
+{
+	GPtrArray *result = NULL;
+	guint i;
+	ZifPackage *package;
+
+	result = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+
+	/* pre-result */
+	for (i=0;i<array->len;i++) {
+		package = g_ptr_array_index (array, i);
+
+		/* installed */
+		if (pk_bitfield_contain (filters,
+					 PK_FILTER_ENUM_INSTALLED)) {
+			if (!zif_package_is_installed (package))
+				continue;
+		} else if (pk_bitfield_contain (filters,
+						PK_FILTER_ENUM_NOT_INSTALLED)) {
+			if (zif_package_is_installed (package))
+				continue;
+		}
+
+		/* development */
+		if (pk_bitfield_contain (filters,
+					 PK_FILTER_ENUM_DEVELOPMENT)) {
+			if (!zif_package_is_devel (package))
+				continue;
+		} else if (pk_bitfield_contain (filters,
+						PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
+			if (zif_package_is_devel (package))
+				continue;
+		}
+
+		/* gui */
+		if (pk_bitfield_contain (filters,
+					 PK_FILTER_ENUM_GUI)) {
+			if (!zif_package_is_gui (package))
+				continue;
+		} else if (pk_bitfield_contain (filters,
+						PK_FILTER_ENUM_NOT_GUI)) {
+			if (zif_package_is_gui (package))
+				continue;
+		}
+
+		/* free */
+		if (pk_bitfield_contain (filters,
+					 PK_FILTER_ENUM_FREE)) {
+			if (!zif_package_is_free (package))
+				continue;
+		} else if (pk_bitfield_contain (filters,
+						PK_FILTER_ENUM_NOT_FREE)) {
+			if (zif_package_is_free (package))
+				continue;
+		}
+
+		/* arch */
+		if (pk_bitfield_contain (filters,
+					 PK_FILTER_ENUM_ARCH)) {
+			if (!zif_package_is_native (package))
+				continue;
+		} else if (pk_bitfield_contain (filters,
+						PK_FILTER_ENUM_NOT_ARCH)) {
+			if (zif_package_is_native (package))
+				continue;
+		}
+
+		/* add to array so we can post process */
+		g_ptr_array_add (result, g_object_ref (package));
+	}
+
+	/* do newest filtering */
+	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST))
+		pk_backend_filter_package_array_newest (result);
+
+	return result;
+}
+
+/**
+ * pk_backend_emit_package_array:
+ **/
+static gboolean
+pk_backend_emit_package_array (PkBackend *backend,
+			       GPtrArray *array,
+			       ZifState *state)
+{
+	const gchar *info_hint;
+	const gchar *package_id;
+	const gchar *summary;
+	gboolean installed;
+	gboolean ret = TRUE;
+	guint i;
+	PkInfoEnum info;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	g_return_val_if_fail (array != NULL, FALSE);
+
+	state_local = zif_state_get_child (state);
+	if (array->len > 0)
+		zif_state_set_number_steps (state_local, array->len);
+	for (i=0; i<array->len; i++) {
+		package = g_ptr_array_index (array, i);
+		installed = zif_package_is_installed (package);
+		package_id = zif_package_get_package_id (package);
+
+		/* should be quick as shouldn't be doing any action */
+		state_loop = zif_state_get_child (state_local);
+		summary = zif_package_get_summary (package, state_loop, NULL);
+
+		/* if we set a hint, use that, otherwise just get the installed status correct */
+		info_hint = (const gchar *)g_object_get_data (G_OBJECT(package), "kind");
+		if (info_hint == NULL) {
+			info = installed ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE;
+		} else {
+			info = pk_info_enum_from_string (info_hint);
+		}
+
+		pk_backend_package (backend, info, package_id, summary);
+
+		/* done */
+		ret = zif_state_done (state_local, NULL);
+		if (!ret)
+			goto out;
+	}
+out:
+	return ret;
+}
+
+/**
+ * pk_backend_error_handler_cb:
+ */
+static gboolean
+pk_backend_error_handler_cb (const GError *error, PkBackend *backend)
+{
+	/* if we try to do a comps search on a local store */
+	if (error->domain == ZIF_STORE_ERROR &&
+	    error->code == ZIF_STORE_ERROR_NO_SUPPORT) {
+		g_debug ("ignoring operation on PkStoreLocal: %s",
+			 error->message);
+		return TRUE;
+	}
+
+	/* emit a warning, this isn't fatal */
+	pk_backend_message (backend,
+			    PK_MESSAGE_ENUM_BROKEN_MIRROR,
+			    "%s",
+			    error->message);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_store_array_for_filter:
+ */
+static GPtrArray *
+pk_backend_get_store_array_for_filter (PkBackend *backend,
+				       PkBitfield filters,
+				       ZifState *state,
+				       GError **error)
+{
+	GPtrArray *store_array;
+	ZifStore *store;
+	GPtrArray *array;
+	GError *error_local = NULL;
+
+	store_array = zif_store_array_new ();
+
+	/* add local packages to the store_array */
+	if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+		store = zif_store_local_new ();
+		zif_store_array_add_store (store_array, store);
+		g_object_unref (store);
+	}
+
+	/* add remote packages to the store_array */
+	if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
+		array = zif_repos_get_stores_enabled (priv->repos,
+						      state,
+						      &error_local);
+		if (array == NULL) {
+			g_set_error (error, 1, 0,
+				     "failed to get enabled stores: %s",
+				     error_local->message);
+			g_error_free (error_local);
+			g_ptr_array_unref (store_array);
+			store_array = NULL;
+			goto out;
+		}
+		zif_store_array_add_stores (store_array, array);
+		g_ptr_array_unref (array);
+	}
+out:
+	return store_array;
+}
+
+/**
+ * pk_backend_search_newest:
+ */
+static GPtrArray *
+pk_backend_search_newest (GPtrArray *store_array,
+			  ZifState *state,
+			  guint recent,
+			  GError **error)
+{
+	GPtrArray *array = NULL;
+	GPtrArray *array_tmp;
+	GTimeVal timeval_now;
+	guint diff_secs = recent * 24 * 60 * 60;
+	guint i;
+	ZifPackage *package;
+
+	/* get all the packages */
+	array_tmp = zif_store_array_get_packages (store_array, state, error);
+	if (array_tmp == NULL)
+		goto out;
+
+	/* only add elements to the array that are new enough */
+	g_get_current_time (&timeval_now);
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; i<array_tmp->len; i++) {
+		package = g_ptr_array_index (array_tmp, i);
+		if (timeval_now.tv_sec - zif_package_get_time_file (package) < diff_secs)
+			g_ptr_array_add (array, g_object_ref (package));
+	}
+	g_debug ("added %i newest packages", array->len);
+out:
+	if (array_tmp != NULL)
+		g_ptr_array_unref (array_tmp);
+	return array;
+}
+
+/**
+ * pk_backend_create_meta_package_for_category:
+ */
+static ZifPackage *
+pk_backend_create_meta_package_for_category (GPtrArray *store_array,
+					     ZifCategory *cat,
+					     ZifState *state,
+					     GError **error)
+{
+	const gchar *to_array[] = { NULL, NULL };
+	gboolean ret;
+	gchar *package_id = NULL;
+	GPtrArray *array_packages;
+	guint j;
+	PkInfoEnum info = PK_INFO_ENUM_COLLECTION_INSTALLED;
+	ZifPackage *package = NULL;
+	ZifPackage *package_tmp;
+	ZifString *string;
+
+	/* are all the packages in this group installed? */
+	to_array[0] = zif_category_get_id (cat);
+	array_packages = zif_store_array_search_category (store_array,
+							  (gchar**)to_array,
+							  state,
+							  error);
+	if (array_packages == NULL)
+		goto out;
+
+	/* if any are not installed, then this is not installed */
+	for (j=0; j<array_packages->len; j++) {
+		package_tmp = g_ptr_array_index (array_packages, j);
+		if (!zif_package_is_installed (package_tmp)) {
+			info = PK_INFO_ENUM_COLLECTION_AVAILABLE;
+			g_debug ("%s is not installed, so marking as not installed %s collection",
+				 zif_package_get_id (package_tmp),
+				 zif_category_get_id (cat));
+			break;
+		}
+	}
+
+	/* fake something */
+	package_id = g_strdup_printf ("%s;;;meta",
+				      zif_category_get_id (cat));
+	package = zif_package_new ();
+	ret = zif_package_set_id (package, package_id, NULL);
+	if (!ret) {
+		g_object_unref (package);
+		package = NULL;
+		goto out;
+	}
+
+	/* set summary */
+	string = zif_string_new (zif_category_get_name (cat));
+	zif_package_set_summary (package, string);
+	zif_string_unref (string);
+
+	/* map to simple binary installed value */
+	zif_package_set_installed (package, (info == PK_INFO_ENUM_COLLECTION_INSTALLED));
+
+	/* add to results */
+	/* TODO: make a proper property */
+	g_object_set_data (G_OBJECT(package), "kind", (gpointer)pk_info_enum_to_string (info));
+out:
+	if (array_packages != NULL)
+		g_ptr_array_unref (array_packages);
+	g_free (package_id);
+	return package;
+}
+
+/**
+ * pk_backend_search_collections:
+ */
+static GPtrArray *
+pk_backend_search_collections (GPtrArray *store_array,
+			       ZifState *state,
+			       GError **error)
+{
+	gboolean ret;
+	gchar *package_id;
+	GError *error_local = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *array_tmp;
+	guint i;
+	ZifCategory *cat;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	/* set steps */
+	ret = zif_state_set_steps (state,
+				   NULL,
+				   50, /* get categories */
+				   50, /* generate fake packages */
+				   -1);
+	g_assert (ret);
+
+	/* get sorted list of unique categories */
+	state_local = zif_state_get_child (state);
+	array_tmp = zif_store_array_get_categories (store_array,
+						    state_local,
+						    error);
+	if (array_tmp == NULL)
+		goto out;
+
+	/* done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+
+	/* set steps */
+	state_local = zif_state_get_child (state);
+	zif_state_set_number_steps (state_local, array_tmp->len);
+
+	/* generate fake packages */
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; i<array_tmp->len; i++) {
+		cat = g_ptr_array_index (array_tmp, i);
+
+		/* ignore top level categories */
+		if (zif_category_get_parent_id (cat) == NULL)
+			continue;
+
+		/* fake something here */
+		state_loop = zif_state_get_child (state_local);
+		package = pk_backend_create_meta_package_for_category (store_array,
+								       cat,
+								       state_loop,
+								       &error_local);
+		if (package != NULL) {
+			g_ptr_array_add (array, g_object_ref (package));
+		} else {
+			g_warning ("failed to add id %s: %s",
+				   package_id,
+				   error_local->message);
+			g_clear_error (&error_local);
+		}
+
+		/* done */
+		ret = zif_state_done (state_local, error);
+		if (!ret)
+			goto out;
+
+		g_object_unref (package);
+	}
+
+	/* done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+out:
+	if (array_tmp != NULL)
+		g_ptr_array_unref (array_tmp);
+	return array;
+}
+
+/**
+ * pk_backend_get_cat_for_id:
+ */
+static ZifCategory *
+pk_backend_get_cat_for_id (GPtrArray *store_array,
+			   const gchar *id,
+			   ZifState *state,
+			   GError **error)
+{
+	GPtrArray *array = NULL;
+	ZifCategory *cat = NULL;
+	ZifCategory *cat_tmp;
+	guint i;
+
+	/* get all cats */
+	array = zif_store_array_get_categories (store_array,
+						state,
+						error);
+	if (array == NULL)
+		goto out;
+
+	/* find one that matches */
+	for (i=0; i<array->len; i++) {
+		cat_tmp = g_ptr_array_index (array, i);
+		if (g_strcmp0 (zif_category_get_id (cat_tmp), id) == 0) {
+			cat = g_object_ref (cat_tmp);
+			break;
+		}
+	}
+
+	/* nothing found, so set error */
+	if (cat == NULL)
+		g_set_error (error, 1, 0,
+			     "no category %s found",
+			     id);
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	return cat;
+}
+
+/**
+ * pk_backend_resolve_groups:
+ */
+static GPtrArray *
+pk_backend_resolve_groups (GPtrArray *store_array,
+			   gchar **search,
+			   ZifState *state,
+			   GError **error)
+{
+	gboolean ret;
+	GError *error_local = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *array_retval = NULL;
+	guint i;
+	ZifCategory *cat;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	/* set steps */
+	zif_state_set_number_steps (state, g_strv_length (search));
+
+	/* resolve all the groups */
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; search[i] != NULL; i++) {
+		state_local = zif_state_get_child (state);
+
+		/* set steps */
+		ret = zif_state_set_steps (state,
+					   NULL,
+					   50, /* get category */
+					   50, /* create metapackage */
+					   -1);
+		g_assert (ret);
+
+		/* get the category */
+		state_loop = zif_state_get_child (state_local);
+		cat = pk_backend_get_cat_for_id (store_array,
+						 search[i]+1,
+						 state_loop,
+						 &error_local);
+		if (cat == NULL) {
+			g_debug ("group %s not found: %s",
+				 search[i],
+				 error_local->message);
+			g_clear_error (&error_local);
+
+			/* this part done */
+			ret = zif_state_finished (state_loop, error);
+			if (!ret)
+				goto out;
+			ret = zif_state_done (state_local, error);
+			if (!ret)
+				goto out;
+		} else {
+			ret = zif_state_done (state_local, error);
+			if (!ret)
+				goto out;
+
+			/* fake something here */
+			state_loop = zif_state_get_child (state_local);
+			package = pk_backend_create_meta_package_for_category (store_array,
+									       cat,
+									       state_loop,
+									       &error_local);
+			if (package != NULL) {
+				g_ptr_array_add (array, package);
+			} else {
+				g_warning ("failed to add id %s: %s",
+					   zif_category_get_id (cat),
+					   error_local->message);
+				g_clear_error (&error_local);
+				ret = zif_state_finished (state_loop, error);
+			}
+		}
+
+		/* this part done */
+		ret = zif_state_done (state_local, error);
+		if (!ret)
+			goto out;
+		ret = zif_state_done (state, error);
+		if (!ret)
+			goto out;
+	}
+
+	/* success */
+	array_retval = g_ptr_array_ref (array);
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	return array_retval;
+}
+
+/**
+ * pk_backend_what_provides_helper:
+ */
+static GPtrArray *
+pk_backend_what_provides_helper (GPtrArray *store_array,
+				 gchar **search,
+				 ZifState *state,
+				 GError **error)
+{
+	gboolean ret;
+	GPtrArray *array = NULL;
+	GPtrArray *array_retval = NULL;
+	GPtrArray *depend_array = NULL;
+	guint i;
+	ZifDepend *depend;
+	ZifState *state_local;
+
+	/* set steps */
+	ret = zif_state_set_steps (state,
+				   NULL,
+				   50, /* parse depends */
+				   50, /* do the query */
+				   -1);
+	g_assert (ret);
+
+	/* resolve all the depends */
+	state_local = zif_state_get_child (state);
+	zif_state_set_number_steps (state_local, g_strv_length (search));
+	depend_array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; search[i] != NULL; i++) {
+		state_local = zif_state_get_child (state);
+
+		/* parse this depend */
+		depend = zif_depend_new ();
+		g_ptr_array_add (depend_array, depend);
+		ret = zif_depend_parse_description (depend, search[i], error);
+		if (!ret)
+			goto out;
+
+		/* this part done */
+		ret = zif_state_done (state_local, error);
+		if (!ret)
+			goto out;
+	}
+
+	/* this part done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+
+	/* find what provides this depend */
+	state_local = zif_state_get_child (state);
+	array = zif_store_array_what_provides (store_array,
+					       depend_array,
+					       state_local,
+					       error);
+	g_object_unref (depend);
+	if (array == NULL)
+		goto out;
+
+	/* this part done */
+	ret = zif_state_done (state, error);
+	if (!ret)
+		goto out;
+
+	/* success */
+	array_retval = g_ptr_array_ref (array);
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	if (depend_array != NULL)
+		g_ptr_array_unref (depend_array);
+	return array_retval;
+}
+
+/**
+ * pk_backend_search_thread:
+ */
+static gboolean
+pk_backend_search_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **search;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *result;
+	GPtrArray *store_array = NULL;
+	guint i;
+	guint recent;
+	PkBitfield filters;
+	PkRoleEnum role;
+	ZifState *state_local;
+
+	filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	role = pk_backend_get_role (backend);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get default stores */
+				   90, /* do the search */
+				   6, /* filter */
+				   2, /* emit */
+				   -1);
+	g_assert (ret);
+
+	/* get default store_array */
+	state_local = zif_state_get_child (priv->state);
+	store_array = pk_backend_get_store_array_for_filter (backend,
+							     filters,
+							     state_local,
+							     &error);
+	if (store_array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
+
+	/* do get action */
+	if (role == PK_ROLE_ENUM_GET_PACKAGES) {
+		state_local = zif_state_get_child (priv->state);
+		array = zif_store_array_get_packages (store_array, state_local, &error);
+		if (array == NULL) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get packages: %s", error->message);
+			g_error_free (error);
+			goto out;
+		}
+	} else {
+		/* treat these all the same */
+		search = pk_backend_get_strv (backend, "search");
+		if (search == NULL) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+					       "failed to get 'search' for %s", pk_role_enum_to_string (role));
+			goto out;
+		}
+		array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+
+		/* do OR search */
+		state_local = zif_state_get_child (priv->state);
+		if (role == PK_ROLE_ENUM_SEARCH_NAME) {
+			array = zif_store_array_search_name (store_array, search, state_local, &error);
+		} else if (role == PK_ROLE_ENUM_SEARCH_DETAILS) {
+			array = zif_store_array_search_details (store_array, search, state_local, &error);
+		} else if (role == PK_ROLE_ENUM_SEARCH_GROUP) {
+			gchar **search_stripped;
+			guint search_entries;
+
+			/* if the search temp is prefixed with '@' then it is a
+			 * category search, and we have to strip it */
+			if (search[0][0] == '@') {
+				search_entries = g_strv_length (search);
+				search_stripped = g_new0 (gchar *, search_entries + 1);
+				for (i=0; i < search_entries; i++)
+					search_stripped[i] = g_strdup (&search[i][1]);
+				array = zif_store_array_search_category (store_array, search_stripped, state_local, &error);
+				g_strfreev (search_stripped);
+			} else if (g_strcmp0 (search[0], "newest") == 0) {
+				recent = zif_config_get_uint (priv->config, "recent", &error);
+				array = pk_backend_search_newest (store_array, state_local, recent, &error);
+				if (array == NULL) {
+					pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get packages: %s", error->message);
+					g_error_free (error);
+					goto out;
+				}
+			} else if (g_strcmp0 (search[0], "collections") == 0) {
+				array = pk_backend_search_collections (store_array, state_local, &error);
+				if (array == NULL) {
+					pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get packages: %s", error->message);
+					g_error_free (error);
+					goto out;
+				}
+			} else {
+				array = zif_store_array_search_group (store_array, search, state_local, &error);
+			}
+		} else if (role == PK_ROLE_ENUM_SEARCH_FILE) {
+			array = zif_store_array_search_file (store_array, search, state_local, &error);
+		} else if (role == PK_ROLE_ENUM_RESOLVE) {
+			if (search[0][0] == '@') {
+				/* this is a group */
+				array = pk_backend_resolve_groups (store_array, search, state_local, &error);
+			} else {
+				array = zif_store_array_resolve (store_array, search, state_local, &error);
+			}
+		} else if (role == PK_ROLE_ENUM_WHAT_PROVIDES) {
+			array = pk_backend_what_provides_helper (store_array, search, state_local, &error);
+		}
+		if (array == NULL) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to search: %s", error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* filter */
+	result = pk_backend_filter_package_array (array, filters);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* done */
+	pk_backend_set_percentage (backend, 100);
+
+	/* emit */
+	state_local = zif_state_get_child (priv->state);
+	pk_backend_emit_package_array (backend, result, state_local);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	pk_backend_finished (backend);
+	return TRUE;
+}
+
+/**
+ * pk_backend_enable_media_repo:
+ */
+static void
+pk_backend_enable_media_repo (gboolean enabled)
+{
+	gboolean ret;
+	GError *error = NULL;
+	ZifState *state;
+	ZifStoreRemote *repo = NULL;
+
+	/* find the right repo */
+	state = zif_state_new ();
+	zif_state_set_cancellable (state, zif_state_get_cancellable (priv->state));
+	repo = zif_repos_get_store (priv->repos,
+				    "InstallMedia",
+				    state,
+				    &error);
+	if (repo == NULL) {
+		g_debug ("failed to find install-media repo: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* set the state */
+	ret = zif_store_remote_set_enabled (repo, enabled, &error);
+	if (!ret) {
+		g_debug ("failed to set enable: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+	g_debug ("%s InstallMedia", enabled ? "enabled" : "disabled");
+out:
+	g_object_unref (state);
+	if (repo != NULL)
+		g_object_unref (repo);
+}
+
+/**
+ * pk_backend_mount_add:
+ */
+static void
+pk_backend_mount_add (GMount *mount, gpointer user_data)
+{
+	GFile *root;
+	GFile *repo;
+	GFile *dest;
+	gchar *root_path;
+	gchar *repo_path;
+	gboolean ret;
+	GError *error = NULL;
+
+	/* check if any installed media is an install disk */
+	root = g_mount_get_root (mount);
+	root_path = g_file_get_path (root);
+	repo_path = g_build_filename (root_path, "media.repo", NULL);
+	repo = g_file_new_for_path (repo_path);
+	dest = g_file_new_for_path (PACKAGE_MEDIA_REPO_FILENAME);
+
+	/* media.repo exists */
+	ret = g_file_query_exists (repo, NULL);
+	g_debug ("checking for %s: %s", repo_path, ret ? "yes" : "no");
+	if (!ret)
+		goto out;
+
+	/* copy to the system repo dir */
+	ret = g_file_copy (repo, dest, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, &error);
+	if (!ret) {
+		g_warning ("failed to copy: %s", error->message);
+		g_error_free (error);
+	}
+out:
+	g_free (root_path);
+	g_free (repo_path);
+	g_object_unref (dest);
+	g_object_unref (root);
+	g_object_unref (repo);
+}
+
+/**
+ * pk_backend_finished_cb:
+ **/
+static void
+pk_backend_finished_cb (PkBackend *backend, PkExitEnum exit_enum, gpointer user_data)
+{
+	/* disable media repo */
+	pk_backend_enable_media_repo (FALSE);
+}
+
+/**
+ * pk_backend_status_changed_cb:
+ **/
+static void
+pk_backend_status_changed_cb (PkBackend *backend, PkStatusEnum status, gpointer user_data)
+{
+	if (status != PK_STATUS_ENUM_WAIT)
+		return;
+
+	/* enable media repo */
+	pk_backend_enable_media_repo (TRUE);
+}
+
+/**
+ * pk_backend_state_action_changed_cb:
+ **/
+static void
+pk_backend_state_action_changed_cb (ZifState *state, ZifStateAction action, const gchar *action_hint, PkBackend *backend)
+{
+	PkStatusEnum status = PK_STATUS_ENUM_UNKNOWN;
+
+	/* ignore this */
+	if (action == ZIF_STATE_ACTION_UNKNOWN)
+		goto out;
+
+	/* try to map the ZifStateAction to a PkStatusEnum */
+	if (action == ZIF_STATE_ACTION_DOWNLOADING) {
+		if (zif_package_id_check (action_hint)) {
+			status = PK_STATUS_ENUM_DOWNLOAD;
+			pk_backend_package (backend,
+					    PK_INFO_ENUM_DOWNLOADING,
+					    action_hint,
+					    "");
+			goto out;
+		}
+		if (g_strrstr (action_hint, "repomd") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_REPOSITORY;
+		else if (g_strrstr (action_hint, "primary") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_PACKAGELIST;
+		else if (g_strrstr (action_hint, "filelist") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_FILELIST;
+		else if (g_strrstr (action_hint, "changelog") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_CHANGELOG;
+		else if (g_strrstr (action_hint, "comps") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_GROUP;
+		else if (g_strrstr (action_hint, "updatinfo") != NULL)
+			status = PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO;
+		goto out;
+	}
+
+	/* general cache loading */
+	if (action == ZIF_STATE_ACTION_CHECKING ||
+	    action == ZIF_STATE_ACTION_LOADING_REPOS ||
+	    action == ZIF_STATE_ACTION_DECOMPRESSING) {
+		status = PK_STATUS_ENUM_LOADING_CACHE;
+		goto out;
+	}
+
+	/* package install */
+	if (action == ZIF_STATE_ACTION_INSTALLING) {
+		status = PK_STATUS_ENUM_INSTALL;
+		pk_backend_package (backend,
+				    PK_INFO_ENUM_INSTALLING,
+				    action_hint,
+				    "");
+		goto out;
+	}
+
+	/* package remove */
+	if (action == ZIF_STATE_ACTION_REMOVING) {
+		status = PK_STATUS_ENUM_REMOVE;
+		pk_backend_package (backend,
+				    PK_INFO_ENUM_REMOVING,
+				    action_hint,
+				    "");
+		goto out;
+	}
+
+	/* package update */
+	if (action == ZIF_STATE_ACTION_UPDATING) {
+		status = PK_STATUS_ENUM_UPDATE;
+		pk_backend_package (backend,
+				    PK_INFO_ENUM_UPDATING,
+				    action_hint,
+				    "");
+		goto out;
+	}
+
+	/* package update */
+	if (action == ZIF_STATE_ACTION_CLEANING) {
+		status = PK_STATUS_ENUM_CLEANUP;
+		pk_backend_package (backend,
+				    PK_INFO_ENUM_CLEANUP,
+				    action_hint,
+				    "");
+		goto out;
+	}
+
+	/* rpm test commit */
+	if (action == ZIF_STATE_ACTION_TEST_COMMIT) {
+		status = PK_STATUS_ENUM_TEST_COMMIT;
+		goto out;
+	}
+
+	/* depsolving */
+	if (action == ZIF_STATE_ACTION_DEPSOLVING_CONFLICTS ||
+	    action == ZIF_STATE_ACTION_DEPSOLVING_INSTALL ||
+	    action == ZIF_STATE_ACTION_DEPSOLVING_REMOVE ||
+	    action == ZIF_STATE_ACTION_DEPSOLVING_UPDATE) {
+		status = PK_STATUS_ENUM_DEP_RESOLVE;
+		goto out;
+	}
+
+out:
+	if (status != PK_STATUS_ENUM_UNKNOWN)
+		pk_backend_set_status (backend, status);
+}
+
+/**
+ * pk_backend_initialize:
+ * This should only be run once per backend load, i.e. not every transaction
+ */
+void
+pk_backend_initialize (PkBackend *backend)
+{
+	gboolean ret;
+	gchar *config_file = NULL;
+	gchar *reposdir = NULL;
+	GError *error = NULL;
+	GFile *file = NULL;
+	GList *mounts;
+
+	/* use logging */
+	pk_debug_add_log_domain (G_LOG_DOMAIN);
+	pk_debug_add_log_domain ("Zif");
+
+	/* create private area */
+	priv = g_new0 (PkBackendYumPrivate, 1);
+
+	/* connect to finished, so we can clean up */
+	priv->signal_finished =
+		g_signal_connect (backend, "finished",
+				  G_CALLBACK (pk_backend_finished_cb), NULL);
+	priv->signal_status =
+		g_signal_connect (backend, "status-changed",
+				  G_CALLBACK (pk_backend_status_changed_cb), NULL);
+
+	/* coldplug the mounts */
+	priv->volume_monitor = g_volume_monitor_get ();
+	mounts = g_volume_monitor_get_mounts (priv->volume_monitor);
+	g_list_foreach (mounts, (GFunc) pk_backend_mount_add, NULL);
+	g_list_foreach (mounts, (GFunc) g_object_unref, NULL);
+	g_list_free (mounts);
+
+	/* init rpm */
+	zif_init ();
+
+	/* TODO: hook up errors */
+	priv->cancellable = g_cancellable_new ();
+
+	/* ZifState */
+	priv->state = zif_state_new ();
+	g_signal_connect (priv->state, "percentage-changed",
+			  G_CALLBACK (pk_backend_state_percentage_changed_cb),
+			  backend);
+	g_signal_connect (priv->state, "subpercentage-changed",
+			  G_CALLBACK (pk_backend_state_subpercentage_changed_cb),
+			  backend);
+	g_signal_connect (priv->state, "action-changed",
+			  G_CALLBACK (pk_backend_state_action_changed_cb),
+			  backend);
+
+	/* we don't want to enable this for normal runtime */
+	zif_state_set_enable_profile (priv->state, TRUE);
+
+	/* ZifConfig */
+	priv->config = zif_config_new ();
+	ret = zif_config_set_filename (priv->config, NULL, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "failed to set config: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* setup a file monitor on the repos directory */
+	reposdir = zif_config_get_string (priv->config, "reposdir", NULL);
+	file = g_file_new_for_path (reposdir);
+	priv->monitor = g_file_monitor_directory (file,
+						  G_FILE_MONITOR_NONE,
+						  NULL,
+						  &error);
+	if (priv->monitor != NULL) {
+		g_signal_connect (priv->monitor, "changed",
+				  G_CALLBACK (pk_backend_yum_repos_changed_cb), backend);
+	} else {
+		g_warning ("failed to setup monitor: %s",
+			   error->message);
+		g_error_free (error);
+	}
+
+	/* ZifLock */
+	priv->lock = zif_lock_new ();
+
+	/* ZifRelease */
+	priv->release = zif_release_new ();
+
+	/* ZifStoreLocal */
+	priv->store_local = zif_store_local_new ();
+
+	/* ZifTransaction */
+	priv->transaction = zif_transaction_new ();
+	zif_transaction_set_store_local (priv->transaction, priv->store_local);
+
+	/* ZifRepos */
+	priv->repos = zif_repos_new ();
+	ret = zif_repos_set_repos_dir (priv->repos, NULL, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_CONFIGURATION_ERROR,
+				       "failed to set repos dir: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* ZifGroups: FIXME: add this to config */
+	priv->groups = zif_groups_new ();
+	ret = zif_groups_set_mapping_file (priv->groups,
+					   DATADIR "/PackageKit/helpers/zif/zif-comps-groups.conf",
+					   &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_GROUP_LIST_INVALID,
+				       "failed to set mapping file: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	g_free (reposdir);
+	g_free (config_file);
+	if (file != NULL)
+		g_object_unref (file);
+}
+
+/**
+ * pk_backend_destroy:
+ * This should only be run once per backend load, i.e. not every transaction
+ */
+void
+pk_backend_destroy (PkBackend *backend)
+{
+	if (priv->monitor != NULL)
+		g_object_unref (priv->monitor);
+	g_signal_handler_disconnect (backend, priv->signal_finished);
+	g_signal_handler_disconnect (backend, priv->signal_status);
+	if (priv->config != NULL)
+		g_object_unref (priv->config);
+	if (priv->release != NULL)
+		g_object_unref (priv->release);
+	if (priv->transaction != NULL)
+		g_object_unref (priv->transaction);
+	if (priv->state != NULL)
+		g_object_unref (priv->state);
+	if (priv->repos != NULL)
+		g_object_unref (priv->repos);
+	if (priv->groups != NULL)
+		g_object_unref (priv->groups);
+	if (priv->store_local != NULL)
+		g_object_unref (priv->store_local);
+	if (priv->lock != NULL)
+		g_object_unref (priv->lock);
+	if (priv->volume_monitor != NULL)
+		g_object_unref (priv->volume_monitor);
+	g_free (priv);
+}
+
+/**
+ * pk_backend_get_groups:
+ */
+PkBitfield
+pk_backend_get_groups (PkBackend *backend)
+{
+	const gchar *group_str;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	guint i;
+	PkBitfield groups = 0;
+
+	/* get the dynamic group list */
+	array = zif_groups_get_groups (priv->groups, &error);
+	if (array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_GROUP_LIST_INVALID,
+				       "failed to get the list of groups: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* convert to a bitfield */
+	for (i=0; i<array->len; i++) {
+		group_str = g_ptr_array_index (array, i);
+		pk_bitfield_add (groups,
+				 pk_group_enum_from_string (group_str));
+	}
+
+	/* add the virtual groups */
+	pk_bitfield_add (groups, PK_GROUP_ENUM_COLLECTIONS);
+	pk_bitfield_add (groups, PK_GROUP_ENUM_NEWEST);
+out:
+	return groups;
+}
+
+/**
+ * pk_backend_get_filters:
+ */
+PkBitfield
+pk_backend_get_filters (PkBackend *backend)
+{
+	return pk_bitfield_from_enums (
+		PK_FILTER_ENUM_GUI,
+		PK_FILTER_ENUM_INSTALLED,
+		PK_FILTER_ENUM_DEVELOPMENT,
+		PK_FILTER_ENUM_BASENAME,
+		PK_FILTER_ENUM_FREE,
+		PK_FILTER_ENUM_NEWEST,
+		PK_FILTER_ENUM_ARCH,
+		-1);
+}
+
+/**
+ * pk_backend_get_mime_types:
+ */
+gchar *
+pk_backend_get_mime_types (PkBackend *backend)
+{
+	return g_strdup ("application/x-rpm;application/x-servicepack");
+}
+
+/**
+ * pk_backend_cancel:
+ */
+void
+pk_backend_cancel (PkBackend *backend)
+{
+	/* try to cancel the thread */
+	g_cancellable_cancel (priv->cancellable);
+}
+
+/**
+ * pk_backend_download_packages_thread:
+ */
+static gboolean
+pk_backend_download_packages_thread (PkBackend *backend)
+{
+	const gchar *directory = pk_backend_get_string (backend, "directory");
+	const gchar *filename;
+	gboolean ret;
+	gchar *basename;
+	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	gchar *path;
+	GError *error = NULL;
+	GPtrArray *packages = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	guint len;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+
+	len = g_strv_length (package_ids);
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get default stores */
+				   8, /* find packages */
+				   90, /* download */
+				   -1);
+	g_assert (ret);
+
+	/* find all the packages */
+	packages = zif_object_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	store_array = zif_store_array_new ();
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* find */
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	for (i=0; package_ids[i] != NULL; i++) {
+
+		/* find packages */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_array_find_package (store_array,
+							package_ids[i],
+							state_loop,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		zif_object_array_add (packages, package);
+		g_object_unref (package);
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* download list */
+	pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD);
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, packages->len);
+	for (i=0; i<packages->len; i++) {
+		package = g_ptr_array_index (packages, i);
+
+		/* set steps */
+		state_loop = zif_state_get_child (state_local);
+		ret = zif_state_set_steps (state_loop,
+					   NULL,
+					   2, /* get filename */
+					   96, /* download */
+					   2, /* emit */
+					   -1);
+		g_assert (ret);
+
+		/* get filename */
+		state_tmp = zif_state_get_child (state_loop);
+		filename = zif_package_get_filename (package, state_tmp, &error);
+		if (filename == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
+					       "failed to get filename for %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* download */
+		state_tmp = zif_state_get_child (state_loop);
+		ret = zif_package_remote_download (ZIF_PACKAGE_REMOTE (package),
+						   directory,
+						   state_tmp,
+						   &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
+					       "failed to download %s: %s",
+					       filename,
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* send a signal for the daemon so the file is copied */
+		basename = g_path_get_basename (filename);
+		path = g_build_filename (directory, basename, NULL);
+		pk_backend_files (backend, zif_package_get_id (package), path);
+		g_free (basename);
+		g_free (path);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (packages != NULL)
+		g_ptr_array_unref (packages);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_depends_thread:
+ */
+static gboolean
+pk_backend_get_depends_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	GPtrArray *store_array = NULL;
+	ZifPackage *package;
+	ZifPackage *package_provide;
+	ZifState *state_local;
+	ZifState *state_loop;
+	const gchar *id;
+	guint i, j;
+	guint len;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *result;
+	GPtrArray *requires;
+	GPtrArray *provides;
+
+	len = g_strv_length (package_ids);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get stores */
+				   94, /* what requires + provides */
+				   2, /* filter */
+				   2, /* emit */
+				   -1);
+	g_assert (ret);
+
+	/* find all the packages */
+	state_local = zif_state_get_child (priv->state);
+	store_array = pk_backend_get_store_array_for_filter (backend,
+							     0,
+							     state_local,
+							     &error);
+	if (store_array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get stores: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* new output array */
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	for (i=0; package_ids[i] != NULL; i++) {
+		id = package_ids[i];
+
+		/* set up state */
+		state_local = zif_state_get_child (priv->state);
+		ret = zif_state_set_steps (state_local,
+					   NULL,
+					   50, /* find package */
+					   25, /* get requires */
+					   25, /* what provides */
+					   -1);
+		g_assert (ret);
+
+		/* find package */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_array_find_package (store_array,
+							id,
+							state_loop,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get requires */
+		state_loop = zif_state_get_child (state_local);
+		requires = zif_package_get_requires (package, state_loop, &error);
+		if (requires == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+						       "failed to get requires for %s: %s",
+						       package_ids[i], error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* match a package to each require */
+		state_loop = zif_state_get_child (state_local);
+		provides = zif_store_array_what_provides (store_array, requires, state_loop, &error);
+		if (provides == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+						       "failed to find provide for %s: %s",
+						       zif_depend_get_name (g_ptr_array_index (provides, 0)),
+						       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* print all of them */
+		for (j=0;j<provides->len;j++) {
+			package_provide = g_ptr_array_index (provides, j);
+			g_ptr_array_add (array, g_object_ref (package_provide));
+		}
+		g_ptr_array_unref (provides);
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* free */
+		g_object_unref (package);
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* filter */
+	result = pk_backend_filter_package_array (array, filters);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* done */
+	pk_backend_set_percentage (backend, 100);
+
+	/* emit */
+	state_local = zif_state_get_child (priv->state);
+	pk_backend_emit_package_array (backend, result, state_local);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_requires_thread:
+ */
+static gboolean
+pk_backend_get_requires_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	GPtrArray *store_array = NULL;
+	ZifPackage *package;
+	ZifPackage *package_provide;
+	ZifState *state_local;
+	ZifState *state_loop;
+	const gchar *id;
+	guint i, j;
+	guint len;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	GPtrArray *result;
+	GPtrArray *requires;
+	GPtrArray *provides;
+
+	len = g_strv_length (package_ids);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get stores */
+				   94, /* what depends + provides */
+				   2, /* filter */
+				   2, /* emit */
+				   -1);
+	g_assert (ret);
+
+	/* find all the packages */
+	state_local = zif_state_get_child (priv->state);
+	store_array = pk_backend_get_store_array_for_filter (backend,
+							     0,
+							     state_local,
+							     &error);
+	if (store_array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get stores: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* new output array */
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	for (i=0; package_ids[i] != NULL; i++) {
+		id = package_ids[i];
+
+		/* set up state */
+		state_local = zif_state_get_child (priv->state);
+		ret = zif_state_set_steps (state_local,
+					   NULL,
+					   50, /* find package */
+					   25, /* get requires */
+					   25, /* what provides */
+					   -1);
+		g_assert (ret);
+
+		/* find package */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_array_find_package (store_array,
+							id,
+							state_loop,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get requires */
+		state_loop = zif_state_get_child (state_local);
+		requires = zif_package_get_provides (package, state_loop, &error);
+		if (requires == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+						       "failed to get requires for %s: %s",
+						       package_ids[i], error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* match a package to each require */
+		state_loop = zif_state_get_child (state_local);
+		provides = zif_store_array_what_requires (store_array,
+							  requires,
+							  state_loop,
+							  &error);
+		if (provides == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find provide for %s: %s",
+					       zif_depend_get_name (g_ptr_array_index (provides, 0)),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* print all of them */
+		for (j=0;j<provides->len;j++) {
+			package_provide = g_ptr_array_index (provides, j);
+			g_ptr_array_add (array, g_object_ref (package_provide));
+		}
+		g_ptr_array_unref (provides);
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* free */
+		g_object_unref (package);
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* filter */
+	result = pk_backend_filter_package_array (array, filters);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* done */
+	pk_backend_set_percentage (backend, 100);
+
+	/* emit */
+	state_local = zif_state_get_child (priv->state);
+	pk_backend_emit_package_array (backend, result, state_local);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_details_thread:
+ */
+static gboolean
+pk_backend_get_details_thread (PkBackend *backend)
+{
+	const gchar *description;
+	const gchar *group_str;
+	const gchar *id;
+	const gchar *license;
+	const gchar *url;
+	gboolean ret;
+	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint64 size;
+	guint i;
+	guint len;
+	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
+	PkGroupEnum group;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+
+	len = g_strv_length (package_ids);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   4, /* get stores */
+				   96, /* get details */
+				   -1);
+	g_assert (ret);
+
+	/* find all the packages */
+	state_local = zif_state_get_child (priv->state);
+	if (pk_backend_is_all_installed (package_ids))
+		pk_bitfield_add (filters, PK_FILTER_ENUM_INSTALLED);
+	store_array = pk_backend_get_store_array_for_filter (backend,
+							     filters,
+							     state_local,
+							     &error);
+	if (store_array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local,
+				    g_strv_length (package_ids));
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	for (i=0; package_ids[i] != NULL; i++) {
+		id = package_ids[i];
+
+		/* set up state */
+		state_loop = zif_state_get_child (state_local);
+		ret = zif_state_set_steps (state_loop,
+					   NULL,
+					   80, /* find package */
+					   10, /* get licence */
+					   5, /* get group */
+					   1, /* get description */
+					   1, /* get url */
+					   1, /* get size */
+					   2, /* emit */
+					   -1);
+		g_assert (ret);
+
+		/* find package */
+		state_tmp = zif_state_get_child (state_loop);
+		package = zif_store_array_find_package (store_array,
+							id,
+							state_tmp,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get license */
+		state_tmp = zif_state_get_child (state_loop);
+		license = zif_package_get_license (package,
+						   state_tmp,
+						   NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get group */
+		state_tmp = zif_state_get_child (state_local);
+		group_str = zif_package_get_group (package, state_tmp, &error);
+
+		/* not being in a group is non-fatal */
+		if (group_str == NULL) {
+			g_warning ("failed to get group: %s",
+				   error->message);
+			g_clear_error (&error);
+		}
+		group = pk_group_enum_from_text (group_str);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get description */
+		state_tmp = zif_state_get_child (state_loop);
+		description = zif_package_get_description (package,
+							   state_tmp,
+							   NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get url */
+		state_tmp = zif_state_get_child (state_local);
+		url = zif_package_get_url (package, state_tmp, NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get size */
+		state_tmp = zif_state_get_child (state_local);
+		size = zif_package_get_size (package, state_tmp, NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* emit */
+		pk_backend_details (backend,
+				    package_ids[i],
+				    license,
+				    group,
+				    description,
+				    url,
+				    (gulong) size);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* free */
+		g_object_unref (package);
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+  * pk_backend_get_distro_upgrades_thread:
+  */
+static gboolean
+pk_backend_get_distro_upgrades_thread (PkBackend *backend)
+{
+	gchar *distro_id;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
+	guint i;
+	ZifUpgrade *upgrade;
+
+	/* one shot */
+	zif_state_reset (priv->state);
+
+	/* get the upgrades */
+	array = zif_release_get_upgrades_new (priv->release, priv->state, &error);
+	if (array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "could not get latest distro data : %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* emit the results */
+	for (i=0; i<array->len; i++) {
+		upgrade = g_ptr_array_index (array, i);
+		if (!zif_upgrade_get_enabled (upgrade))
+			continue;
+		distro_id = g_strdup_printf ("fedora-%i", zif_upgrade_get_version (upgrade));
+		pk_backend_distro_upgrade (backend,
+					   zif_upgrade_get_stable (upgrade) ? PK_DISTRO_UPGRADE_ENUM_STABLE :
+									      PK_DISTRO_UPGRADE_ENUM_UNSTABLE,
+					   distro_id,
+					   zif_upgrade_get_id (upgrade));
+		g_free (distro_id);
+	}
+out:
+	pk_backend_finished (backend);
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_files_thread:
+ */
+static gboolean
+pk_backend_get_files_thread (PkBackend *backend)
+{
+	const gchar *file;
+	const gchar *id;
+	gboolean ret;
+	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	GError *error = NULL;
+	GPtrArray *files;
+	GPtrArray *store_array = NULL;
+	GString *files_str;
+	guint i, j;
+	guint len;
+	PkBitfield filters = PK_FILTER_ENUM_UNKNOWN;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+
+	len = g_strv_length (package_ids);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get stores */
+				   98, /* get files */
+				   -1);
+	g_assert (ret);
+
+	/* find all the packages */
+	state_local = zif_state_get_child (priv->state);
+	if (pk_backend_is_all_installed (package_ids))
+		pk_bitfield_add (filters, PK_FILTER_ENUM_INSTALLED);
+	store_array = pk_backend_get_store_array_for_filter (backend,
+							     filters,
+							     state_local,
+							     &error);
+	if (store_array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get stores: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	for (i=0; package_ids[i] != NULL; i++) {
+		id = package_ids[i];
+		state_loop = zif_state_get_child (state_local);
+
+		/* set steps */
+		ret = zif_state_set_steps (state_loop,
+					   NULL,
+					   10, /* find package */
+					   90, /* get files & emit */
+					   -1);
+		g_assert (ret);
+
+		state_tmp = zif_state_get_child (state_loop);
+		package = zif_store_array_find_package (store_array,
+							id,
+							state_tmp,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get files */
+		state_tmp = zif_state_get_child (state_loop);
+		files = zif_package_get_files (package, state_tmp, &error);
+		if (files == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_INTERNAL_ERROR,
+					       "no files for %s: %s",
+					       package_ids[i],
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		files_str = g_string_new ("");
+		for (j=0; j<files->len; j++) {
+			file = g_ptr_array_index (files, j);
+			g_string_append_printf (files_str, "%s\n", file);
+		}
+		pk_backend_files (backend, package_ids[i], files_str->str);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		g_string_free (files_str, TRUE);
+		g_object_unref (package);
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_updates_thread:
+ */
+static gboolean
+pk_backend_get_updates_thread (PkBackend *backend)
+{
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	gboolean ret;
+	gchar **search = NULL;
+	GError *error = NULL;
+	gint val;
+	GPtrArray *array = NULL;
+	GPtrArray *result = NULL;
+	GPtrArray *store_array = NULL;
+	GPtrArray *updates_available = NULL;
+	GPtrArray *updates = NULL;
+	guint i, j;
+	PkInfoEnum info;
+	ZifPackage *package;
+	ZifPackage *package_update;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifUpdateKind update_kind;
+	ZifUpdate *update;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   1, /* get remote stores */
+				   1, /* get installed packages */
+				   3, /* filter newest */
+				   45, /* look in remote stores */
+				   50, /* get updateinfo */
+				   -1);
+	g_assert (ret);
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* get all the installed packages */
+	state_local = zif_state_get_child (priv->state);
+	array = zif_store_get_packages (priv->store_local, state_local, &error);
+	if (array == NULL) {
+		g_debug ("failed to get local store: %s",
+			 error->message);
+		g_error_free (error);
+		goto out;
+	}
+	g_debug ("searching for updates with %i packages", array->len);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* remove any packages that are not newest (think kernel) */
+	zif_package_array_filter_newest (array);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* get updates */
+	search = g_new0 (gchar *, array->len + 1);
+	for (i=0; i<array->len; i++) {
+		package = g_ptr_array_index (array, i);
+		search[i] = g_strdup (zif_package_get_name (package));
+	}
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_error_handler (priv->state,
+				     (ZifStateErrorHandlerCb) pk_backend_error_handler_cb,
+				     backend);
+	updates = zif_store_array_resolve (store_array, search, state_local, &error);
+	if (updates == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to get updates: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* some repos contain lots of versions of one package */
+	zif_package_array_filter_newest (updates);
+
+	/* find each one in a remote repo */
+	updates_available = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; i<array->len; i++) {
+		package = ZIF_PACKAGE (g_ptr_array_index (array, i));
+
+		/* find updates */
+		for (j=0; j<updates->len; j++) {
+			package_update = ZIF_PACKAGE (g_ptr_array_index (updates, j));
+
+			/* newer? */
+			val = zif_package_compare (package_update, package);
+			if (val == G_MAXINT)
+				continue;
+			if (val > 0) {
+				g_debug ("*** update %s from %s to %s",
+					 zif_package_get_name (package),
+					 zif_package_get_version (package),
+					 zif_package_get_version (package_update));
+				g_ptr_array_add (updates_available, g_object_ref (package_update));
+				break;
+			}
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* setup steps on updatinfo state */
+	state_local = zif_state_get_child (priv->state);
+	if (updates_available->len > 0)
+		zif_state_set_number_steps (state_local, updates_available->len);
+
+	/* get update info */
+	for (i=0; i<updates_available->len; i++) {
+		package = g_ptr_array_index (updates_available, i);
+		state_loop = zif_state_get_child (state_local);
+
+		/* updates without updatinfo */
+		info = PK_INFO_ENUM_NORMAL;
+
+		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package), state_loop, &error);
+		if (update == NULL) {
+			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
+			g_clear_error (&error);
+			ret = zif_state_finished (state_loop, NULL);
+		} else {
+			update_kind = zif_update_get_kind (update);
+			if (update_kind == ZIF_UPDATE_KIND_BUGFIX)
+				info = PK_INFO_ENUM_BUGFIX;
+			else if (update_kind == ZIF_UPDATE_KIND_SECURITY)
+				info = PK_INFO_ENUM_SECURITY;
+			else if (update_kind == ZIF_UPDATE_KIND_ENHANCEMENT)
+				info = PK_INFO_ENUM_ENHANCEMENT;
+			g_object_unref (update);
+		}
+
+		/* set new severity */
+		g_object_set_data (G_OBJECT(package), "kind", (gpointer)pk_info_enum_to_string (info));
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* filter */
+	result = pk_backend_filter_package_array (updates_available, filters);
+
+	/* done */
+	pk_backend_set_percentage (backend, 100);
+
+	/* emit */
+	state_local = zif_state_get_child (priv->state);
+	pk_backend_emit_package_array (backend, result, state_local);
+out:
+	pk_backend_finished (backend);
+	if (updates != NULL)
+		g_ptr_array_unref (updates);
+	if (updates_available != NULL)
+		g_ptr_array_unref (updates_available);
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	if (result != NULL)
+		g_ptr_array_unref (result);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	g_strfreev (search);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_changelog_text:
+ */
+static gchar *
+pk_backend_get_changelog_text (GPtrArray *changesets)
+{
+	guint i;
+	ZifChangeset *changeset;
+	GString *text;
+	gchar date_str[128];
+	GDate *date;
+
+	/* create output string */
+	text = g_string_new ("");
+	date = g_date_new ();
+
+	/* go through each one */
+	for (i=0; i<changesets->len; i++) {
+		changeset = g_ptr_array_index (changesets, i);
+
+		/* format the indervidual changeset */
+		g_date_set_time_t (date, zif_changeset_get_date (changeset));
+		g_date_strftime (date_str, 128, "%F", date);
+		g_string_append_printf (text, "**%s** %s - %s\n%s\n\n",
+					date_str,
+					zif_changeset_get_author (changeset),
+					zif_changeset_get_version (changeset),
+					zif_changeset_get_description (changeset));
+	}
+	g_date_free (date);
+	return g_string_free (text, FALSE);
+}
+
+/**
+ * pk_backend_get_update_detail_thread:
+ */
+static gboolean
+pk_backend_get_update_detail_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	guint j;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+	ZifUpdate *update;
+
+	/* get the data */
+	package_ids = pk_backend_get_strv (backend, "package_ids");
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   2, /* get stores */
+				   98, /* get update detail */
+				   -1);
+	g_assert (ret);
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* get the update info */
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	for (i=0; package_ids[i] != NULL; i++) {
+
+		state_loop = zif_state_get_child (state_local);
+		ret = zif_state_set_steps (state_loop,
+					   NULL,
+					   12, /* find package */
+					   88, /* get update detail */
+					   -1);
+		g_assert (ret);
+
+		/* need to get the packages from the find_id */
+		state_tmp = zif_state_get_child (state_loop);
+		package = zif_store_array_find_package (store_array,
+							package_ids[i],
+							state_tmp,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find package %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		state_tmp = zif_state_get_child (state_loop);
+		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package),
+							       state_tmp,
+							       &error);
+		if (update == NULL) {
+			g_debug ("failed to get updateinfo for %s",
+				 zif_package_get_id (package));
+			g_clear_error (&error);
+			pk_backend_update_detail (backend, package_ids[i],
+						  NULL, NULL, NULL, NULL, NULL,
+						  PK_RESTART_ENUM_NONE,
+						  "<none>",
+						  "No description available",
+						  PK_UPDATE_STATE_ENUM_UNKNOWN,
+						  NULL, NULL);
+		} else {
+			gchar *changelog_text = NULL;
+			GPtrArray *array;
+			GPtrArray *changesets;
+			GString *string_cve;
+			GString *string_bugzilla;
+			ZifUpdateInfo *info;
+			array = zif_update_get_update_infos (update);
+			string_cve = g_string_new (NULL);
+			string_bugzilla = g_string_new (NULL);
+			for (j=0; j<array->len; j++) {
+				info = g_ptr_array_index (array, j);
+				switch (zif_update_info_get_kind (info)) {
+				case ZIF_UPDATE_INFO_KIND_CVE:
+					g_string_append_printf (string_cve, "%s\t%s\t",
+								zif_update_info_get_title (info),
+								zif_update_info_get_url (info));
+					break;
+				case ZIF_UPDATE_INFO_KIND_BUGZILLA:
+					g_string_append_printf (string_bugzilla, "%s\t%s\t",
+								zif_update_info_get_title (info),
+								zif_update_info_get_url (info));
+					break;
+				default:
+					break;
+				}
+			}
+
+			/* format changelog */
+			changesets = zif_update_get_changelog (update);
+			if (changesets != NULL)
+				changelog_text = pk_backend_get_changelog_text (changesets);
+			pk_backend_update_detail (backend, package_ids[i],
+						  NULL, //updates,
+						  NULL, //obsoletes,
+						  NULL, //vendor_url,
+						  string_bugzilla->str,
+						  string_cve->str,
+						  PK_RESTART_ENUM_NONE,
+						  zif_update_get_description (update),
+						  changelog_text,
+						  zif_update_get_state (update),
+						  zif_update_get_issued (update),
+						  NULL);
+			if (changesets != NULL)
+				g_ptr_array_unref (changesets);
+			g_ptr_array_unref (array);
+			g_string_free (string_cve, TRUE);
+			g_string_free (string_bugzilla, TRUE);
+			g_free (changelog_text);
+		}
+
+		g_object_unref (package);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_convert_transaction_reason_to_info_enum:
+ */
+static PkInfoEnum
+pk_backend_convert_transaction_reason_to_info_enum (ZifTransactionReason reason)
+{
+	switch (reason) {
+	case ZIF_TRANSACTION_REASON_INSTALL_DEPEND:
+	case ZIF_TRANSACTION_REASON_INSTALL_FOR_UPDATE:
+	case ZIF_TRANSACTION_REASON_INSTALL_USER_ACTION:
+		return PK_INFO_ENUM_INSTALLING;
+	case ZIF_TRANSACTION_REASON_REMOVE_AS_ONLYN:
+	case ZIF_TRANSACTION_REASON_REMOVE_FOR_DEP:
+	case ZIF_TRANSACTION_REASON_REMOVE_FOR_UPDATE:
+	case ZIF_TRANSACTION_REASON_REMOVE_OBSOLETE:
+	case ZIF_TRANSACTION_REASON_REMOVE_USER_ACTION:
+		return PK_INFO_ENUM_REMOVING;
+	case ZIF_TRANSACTION_REASON_UPDATE_DEPEND:
+	case ZIF_TRANSACTION_REASON_UPDATE_FOR_CONFLICT:
+	case ZIF_TRANSACTION_REASON_UPDATE_USER_ACTION:
+		return PK_INFO_ENUM_UPDATING;
+	default:
+		return PK_INFO_ENUM_AVAILABLE;
+	}
+}
+
+/**
+ * pk_backend_run_transaction:
+ */
+static gboolean
+pk_backend_run_transaction (PkBackend *backend, ZifState *state)
+{
+	gboolean only_trusted;
+	gboolean ret;
+	gboolean simulate;
+	GError *error = NULL;
+	GPtrArray *array_tmp;
+	GPtrArray *install = NULL;
+	GPtrArray *simulate_array = NULL;
+	guint i, j;
+	PkInfoEnum info_enum;
+	ZifPackage *package;
+	ZifPackageTrustKind trust_kind;
+	ZifState *state_local;
+
+	/* set steps */
+	simulate = pk_backend_get_bool (backend, "hint:simulate");
+	if (simulate) {
+		ret = zif_state_set_steps (state,
+					   NULL,
+					   95, /* resolve */
+					   5, /* print packages */
+					   -1);
+	} else {
+		ret = zif_state_set_steps (state,
+					   NULL,
+					   30, /* resolve */
+					   30, /* prepare */
+					   40, /* commit */
+					   -1);
+	}
+	g_assert (ret);
+
+	/* resolve the transaction */
+	state_local = zif_state_get_child (state);
+	ret = zif_transaction_resolve (priv->transaction,
+				       state_local,
+				       &error);
+	if (!ret) {
+		if (error->domain == ZIF_TRANSACTION_ERROR &&
+		    error->code == ZIF_TRANSACTION_ERROR_NOTHING_TO_DO) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_ALL_PACKAGES_ALREADY_INSTALLED,
+					       error->message);
+		} else {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_DEP_RESOLUTION_FAILED,
+					       "failed to resolve transaction: %s",
+					       error->message);
+		}
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* list the packages in the transaction */
+	if (simulate) {
+		simulate_array = zif_object_array_new ();
+		for (i=0; i<ZIF_TRANSACTION_REASON_LAST; i++) {
+			if (i == ZIF_TRANSACTION_REASON_REMOVE_FOR_UPDATE)
+				continue;
+			info_enum = pk_backend_convert_transaction_reason_to_info_enum (i);
+			array_tmp = zif_transaction_get_array_for_reason (priv->transaction, i);
+			for (j=0; j<array_tmp->len; j++) {
+				package = g_ptr_array_index (array_tmp, j);
+				g_object_set_data (G_OBJECT(package),
+						   "kind",
+						   (gpointer)pk_info_enum_to_string (info_enum));
+				zif_object_array_add (simulate_array, package);
+			}
+			g_ptr_array_unref (array_tmp);
+		}
+		state_local = zif_state_get_child (state);
+		pk_backend_emit_package_array (backend, simulate_array, state_local);
+
+		/* this section done */
+		ret = zif_state_done (state, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+		goto out;
+	}
+
+	/* prepare the transaction */
+	state_local = zif_state_get_child (state);
+	ret = zif_transaction_prepare (priv->transaction,
+				       state_local,
+				       &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_DEP_RESOLUTION_FAILED,
+				       "failed to prepare transaction: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* check if any are not trusted */
+	only_trusted = pk_backend_get_bool (backend, "only_trusted");
+	if (only_trusted) {
+		install = zif_transaction_get_install (priv->transaction);
+		for (i=0; i<install->len; i++) {
+			package = g_ptr_array_index (install, i);
+			trust_kind = zif_package_get_trust_kind (package);
+			if (trust_kind != ZIF_PACKAGE_TRUST_KIND_PUBKEY) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_NOT_AUTHORIZED,
+						       "package %s is untrusted",
+						       zif_package_get_id (package));
+				g_error_free (error);
+				goto out;
+			}
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* commit the transaction */
+	state_local = zif_state_get_child (state);
+	ret = zif_transaction_commit (priv->transaction,
+				      state_local,
+				      &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to commit transaction: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	if (simulate_array != NULL)
+		g_ptr_array_unref (simulate_array);
+	if (install != NULL)
+		g_ptr_array_unref (install);
+	return ret;
+}
+
+/**
+ * pk_backend_remove_packages_thread:
+ */
+static gboolean
+pk_backend_remove_packages_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* setup steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   10, /* find packages */
+				   90, /* run transaction */
+				   -1);
+	g_assert (ret);
+
+	state_local = zif_state_get_child (priv->state);
+	package_ids = pk_backend_get_strv (backend, "package_ids");
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	for (i=0; package_ids[i] != NULL; i++) {
+
+		/* find package */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_find_package (priv->store_local,
+						  package_ids[i],
+						  state_loop,
+						  &error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find package: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* add it as a remove to the transaction */
+		ret = zif_transaction_add_remove (priv->transaction,
+						   package,
+						   &error);
+		g_object_unref (package);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to add package %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* run transaction */
+	state_local = zif_state_get_child (priv->state);
+	ret = pk_backend_run_transaction (backend, state_local);
+	if (!ret)
+		goto out;
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_update_packages_thread:
+ */
+static gboolean
+pk_backend_update_packages_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* setup steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   10, /* add remote */
+				   10, /* find packages */
+				   80, /* run transaction */
+				   -1);
+	g_assert (ret);
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* use these stores for the transaction */
+	zif_transaction_set_stores_remote (priv->transaction, store_array);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	state_local = zif_state_get_child (priv->state);
+	package_ids = pk_backend_get_strv (backend, "package_ids");
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	for (i=0; package_ids[i] != NULL; i++) {
+
+		/* find package */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_array_find_package (store_array,
+							package_ids[i],
+							state_loop,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find package: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* add it as an update to the transaction */
+		ret = zif_transaction_add_install_as_update (priv->transaction,
+							     package,
+							     &error);
+		g_object_unref (package);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to add package %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* run transaction */
+	state_local = zif_state_get_child (priv->state);
+	ret = pk_backend_run_transaction (backend, state_local);
+	if (!ret)
+		goto out;
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_install_packages_thread:
+ */
+static gboolean
+pk_backend_install_packages_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **package_ids;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	ZifPackage *package;
+	ZifState *state_local;
+	ZifState *state_loop;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* setup steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   10, /* add remote */
+				   10, /* find packages */
+				   80, /* run transaction */
+				   -1);
+	g_assert (ret);
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* use these stores for the transaction */
+	zif_transaction_set_stores_remote (priv->transaction, store_array);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	state_local = zif_state_get_child (priv->state);
+	package_ids = pk_backend_get_strv (backend, "package_ids");
+	zif_state_set_number_steps (state_local, g_strv_length (package_ids));
+	for (i=0; package_ids[i] != NULL; i++) {
+
+		/* find package */
+		state_loop = zif_state_get_child (state_local);
+		package = zif_store_array_find_package (store_array,
+							package_ids[i],
+							state_loop,
+							&error);
+		if (package == NULL) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to find package: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* add it as an install to the transaction */
+		ret = zif_transaction_add_install (priv->transaction,
+						   package,
+						   &error);
+		g_object_unref (package);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to add package %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* run transaction */
+	state_local = zif_state_get_child (priv->state);
+	ret = pk_backend_run_transaction (backend, state_local);
+	if (!ret)
+		goto out;
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_install_files_thread:
+ */
+static gboolean
+pk_backend_install_files_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar **full_paths;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	guint i;
+	ZifPackage *package;
+	ZifState *state_local;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* setup steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   10, /* add remote */
+				   10, /* find packages */
+				   80, /* run transaction */
+				   -1);
+	g_assert (ret);
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* use these stores for the transaction */
+	zif_transaction_set_stores_remote (priv->transaction, store_array);
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	state_local = zif_state_get_child (priv->state);
+	full_paths = pk_backend_get_strv (backend, "full_paths");
+	zif_state_set_number_steps (state_local, g_strv_length (full_paths));
+	for (i=0; full_paths[i] != NULL; i++) {
+
+		/* find package */
+		package = zif_package_local_new ();
+		ret = zif_package_local_set_from_filename (ZIF_PACKAGE_LOCAL (package),
+							   full_paths[i],
+							   &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to create package for %s: %s",
+					       full_paths[i], error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* add it as an install to the transaction */
+		ret = zif_transaction_add_install (priv->transaction,
+						   package,
+						   &error);
+		g_object_unref (package);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "failed to add package %s: %s",
+					       zif_package_get_id (package),
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* run transaction */
+	state_local = zif_state_get_child (priv->state);
+	ret = pk_backend_run_transaction (backend, state_local);
+	if (!ret)
+		goto out;
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_refresh_cache_thread:
+ */
+static gboolean
+pk_backend_refresh_cache_thread (PkBackend *backend)
+{
+	gboolean force = pk_backend_get_bool (backend, "force");
+	gboolean ret;
+	GError *error = NULL;
+	GPtrArray *store_array = NULL;
+	ZifState *state_local;
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   50, /* get stores */
+				   50, /* refresh them */
+				   -1);
+	g_assert (ret);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* don't nuke the metadata */
+	if (!force) {
+		g_debug ("not supported yet");
+		goto out;
+	}
+
+	/* get a store_array of remote stores */
+	store_array = zif_store_array_new ();
+	state_local = zif_state_get_child (priv->state);
+	ret = zif_store_array_add_remote_enabled (store_array,
+						  state_local,
+						  &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to add enabled stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* clean all the repos */
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_error_handler (priv->state, (ZifStateErrorHandlerCb) pk_backend_error_handler_cb, backend);
+	ret = zif_store_array_clean (store_array, state_local, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_INTERNAL_ERROR,
+				       "failed to clean: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (store_array != NULL)
+		g_ptr_array_unref (store_array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_repo_list_thread:
+ */
+static gboolean
+pk_backend_get_repo_list_thread (PkBackend *backend)
+{
+	gboolean ret;
+	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	guint i;
+	GPtrArray *array = NULL;
+	ZifStoreRemote *store;
+	ZifState *state_local;
+	ZifState *state_loop;
+	ZifState *state_tmp;
+	const gchar *repo_id;
+	const gchar *name;
+	gboolean enabled;
+	gboolean devel;
+	GError *error = NULL;
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   50, /* get stores */
+				   50, /* process and emit */
+				   -1);
+	g_assert (ret);
+
+	state_local = zif_state_get_child (priv->state);
+	array = zif_repos_get_stores (priv->repos, state_local, &error);
+	if (array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_NOT_FOUND,
+				       "failed to find repos: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* none? */
+	if (array->len == 0) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_NOT_FOUND,
+				       "failed to find any repos");
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* looks at each store */
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_number_steps (state_local, array->len);
+	for (i=0; i<array->len; i++) {
+		store = g_ptr_array_index (array, i);
+
+		/* allow filtering on devel */
+		state_loop = zif_state_get_child (state_local);
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT)) {
+
+			/* devel, name, enabled */
+			ret = zif_state_set_steps (state_loop,
+						   NULL,
+						   50, /* is store devel? */
+						   50, /* get name */
+						   50, /* get enabled */
+						   -1);
+			g_assert (ret);
+
+			state_tmp = zif_state_get_child (state_loop);
+			devel = zif_store_remote_is_devel (store, state_tmp, NULL);
+			if (devel)
+				goto skip;
+
+			/* this section done */
+			ret = zif_state_done (state_loop, &error);
+			if (!ret) {
+				pk_backend_error_code (backend,
+						       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+						       "cancelled: %s",
+						       error->message);
+				g_error_free (error);
+				goto out;
+			}
+		} else {
+			/* name, enabled */
+			ret = zif_state_set_steps (state_loop,
+						   NULL,
+						   50, /* get name */
+						   50, /* get enabled */
+						   -1);
+			g_assert (ret);
+		}
+
+		/* get name */
+		state_tmp = zif_state_get_child (state_loop);
+		name = zif_store_remote_get_name (store, state_tmp, NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		/* get state */
+		state_tmp = zif_state_get_child (state_loop);
+		enabled = zif_store_remote_get_enabled (store, state_tmp, NULL);
+
+		/* this section done */
+		ret = zif_state_done (state_loop, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+			g_error_free (error);
+			goto out;
+		}
+
+		repo_id = zif_store_get_id (ZIF_STORE (store));
+		pk_backend_repo_detail (backend, repo_id, name, enabled);
+skip:
+		/* this section done */
+		ret = zif_state_done (state_local, &error);
+		if (!ret) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+					       "cancelled: %s",
+					       error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	return TRUE;
+}
+
+/**
+ * pk_backend_repo_enable_thread:
+ */
+static gboolean
+pk_backend_repo_enable_thread (PkBackend *backend)
+{
+	ZifStoreRemote *repo = NULL;
+	gboolean ret;
+	GError *error = NULL;
+	gchar *warning = NULL;
+	gboolean enabled = pk_backend_get_bool (backend, "enabled");
+	const gchar *repo_id = pk_backend_get_string (backend, "repo_id");
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* find the right repo */
+	repo = zif_repos_get_store (priv->repos,
+				    repo_id, priv->state,
+				    &error);
+	if (repo == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_NOT_FOUND,
+				       "failed to find repo: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* set the state */
+	ret = zif_store_remote_set_enabled (repo, enabled, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_CANNOT_DISABLE_REPOSITORY,
+				       "failed to set enable: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* warn if rawhide */
+	if (g_strstr_len (repo_id, -1, "rawhide") != NULL) {
+		warning = g_strdup_printf ("These packages are untested and still under development."
+					   "This repository is used for development of new releases.\n\n"
+					   "This repository can see significant daily turnover and major "
+					   "functionality changes which cause unexpected problems with "
+					   "other development packages.\n"
+					   "Please use these packages if you want to work with the "
+					   "Fedora developers by testing these new development packages.\n\n"
+					   "If this is not correct, please disable the %s software source.",
+					   repo_id);
+		pk_backend_message (backend,
+				    PK_MESSAGE_ENUM_REPO_FOR_DEVELOPERS_ONLY,
+				    warning);
+	}
+out:
+	pk_backend_finished (backend);
+	g_free (warning);
+	if (repo != NULL)
+		g_object_unref (repo);
+	return TRUE;
+}
+
+/**
+ * pk_backend_get_categories_thread:
+ */
+static gboolean
+pk_backend_get_categories_thread (PkBackend *backend)
+{
+	gboolean ret;
+	gchar *cat_id;
+	GPtrArray *array = NULL;
+	GPtrArray *stores = NULL;
+	guint i;
+	ZifCategory *cat;
+
+	ZifState *state_local;
+	GError *error = NULL;
+
+	/* set steps */
+	ret = zif_state_set_steps (priv->state,
+				   NULL,
+				   25, /* get stores */
+				   60, /* get cats */
+				   15, /* emit */
+				   -1);
+	g_assert (ret);
+
+	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+	pk_backend_set_percentage (backend, 0);
+
+	/* get enabled repos */
+	state_local = zif_state_get_child (priv->state);
+	stores = zif_repos_get_stores_enabled (priv->repos,
+					       state_local,
+					       &error);
+	if (stores == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_REPO_CONFIGURATION_ERROR,
+				       "failed to add remote stores: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* get sorted list of unique categories */
+	state_local = zif_state_get_child (priv->state);
+	zif_state_set_error_handler (priv->state,
+				     (ZifStateErrorHandlerCb) pk_backend_error_handler_cb,
+				     backend);
+	array = zif_store_array_get_categories (stores, state_local, &error);
+	if (array == NULL) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_GROUP_LIST_INVALID,
+				       "failed to add get categories: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* emit each cat obj */
+	for (i=0; i<array->len; i++) {
+		cat = g_ptr_array_index (array, i);
+		/* in the yum backend, we signify a group with a '@' prefix */
+		if (zif_category_get_parent_id (cat) != NULL)
+			cat_id = g_strdup_printf ("@%s", zif_category_get_id (cat));
+		else
+			cat_id = g_strdup (zif_category_get_id (cat));
+		pk_backend_category (backend,
+				     zif_category_get_parent_id (cat),
+				     cat_id,
+				     zif_category_get_name (cat),
+				     zif_category_get_summary (cat),
+				     zif_category_get_icon (cat));
+		g_free (cat_id);
+	}
+
+	/* this section done */
+	ret = zif_state_done (priv->state, &error);
+	if (!ret) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_TRANSACTION_CANCELLED,
+				       "cancelled: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	if (stores != NULL)
+		g_ptr_array_unref (stores);
+	return TRUE;
+}
+
+/**
+  * pk_backend_upgrade_system_thread:
+  */
+static gboolean
+pk_backend_upgrade_system_thread (PkBackend *backend)
+{
+	gchar **distro_id_split = NULL;
+	guint version;
+	gboolean ret;
+	PkErrorEnum error_code;
+	GError *error = NULL;
+	ZifReleaseUpgradeKind upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_DEFAULT;
+	PkUpgradeKindEnum upgrade_kind = pk_backend_get_uint (backend, "upgrade_kind");
+	const gchar *distro_id = pk_backend_get_string (backend, "distro_id");
+
+	/* check valid */
+	distro_id_split = g_strsplit (distro_id, "-", -1);
+	if (g_strv_length (distro_id_split) != 2) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "distribution id %s invalid",
+				       distro_id);
+		goto out;
+	}
+
+	/* check fedora */
+	if (g_strcmp0 (distro_id_split[0], "fedora") != 0) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "only 'fedora' is supported");
+		goto out;
+	}
+
+	/* map PK enum to Zif enumerated types */
+	if (upgrade_kind == PK_UPGRADE_KIND_ENUM_MINIMAL)
+		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_MINIMAL;
+	else if (upgrade_kind == PK_UPGRADE_KIND_ENUM_COMPLETE)
+		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_COMPLETE;
+
+	/* do the upgrade */
+	version = atoi (distro_id_split[1]);
+	ret = zif_release_upgrade_version (priv->release,
+					   version,
+					   upgrade_kind_zif,
+					   priv->state,
+					   &error);
+	if (!ret) {
+		/* convert the ZifRelease error code into a PK error enum */
+		switch (error->code) {
+		case ZIF_RELEASE_ERROR_DOWNLOAD_FAILED:
+			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
+			break;
+		case ZIF_RELEASE_ERROR_FILE_INVALID:
+			error_code = PK_ERROR_ENUM_FAILED_CONFIG_PARSING;
+			break;
+		case ZIF_RELEASE_ERROR_LOW_DISKSPACE:
+			error_code = PK_ERROR_ENUM_NO_SPACE_ON_DEVICE;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_FOUND:
+			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_SUPPORTED:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_RELEASE_ERROR_NO_UUID_FOR_ROOT:
+		case ZIF_RELEASE_ERROR_SETUP_INVALID:
+		case ZIF_RELEASE_ERROR_SPAWN_FAILED:
+		case ZIF_RELEASE_ERROR_WRITE_FAILED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+		pk_backend_error_code (backend,
+				       error_code,
+				       "failed to upgrade: %s",
+				       error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	g_strfreev (distro_id_split);
+	return TRUE;
+}
+
+/**
+ * pk_backend_download_packages:
+ */
+void
+pk_backend_download_packages (PkBackend *backend, gchar **package_ids,
+			      const gchar *directory)
+{
+	pk_backend_thread_create (backend, pk_backend_download_packages_thread);
+}
+
+/**
+ * pk_backend_get_categories:
+ */
+void
+pk_backend_get_categories (PkBackend *backend)
+{
+	pk_backend_thread_create (backend, pk_backend_get_categories_thread);
+}
+
+/**
+ * pk_backend_get_depends:
+ */
+void
+pk_backend_get_depends (PkBackend *backend, PkBitfield filters,
+			gchar **package_ids, gboolean recursive)
+{
+	pk_backend_thread_create (backend, pk_backend_get_depends_thread);
+}
+
+/**
+ * pk_backend_get_details:
+ */
+void
+pk_backend_get_details (PkBackend *backend, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_get_details_thread);
+}
+
+/**
+ * pk_backend_get_distro_upgrades:
+ */
+void
+pk_backend_get_distro_upgrades (PkBackend *backend)
+{
+	pk_backend_thread_create (backend, pk_backend_get_distro_upgrades_thread);
+}
+
+/**
+ * pk_backend_get_files:
+ */
+void
+pk_backend_get_files (PkBackend *backend, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_get_files_thread);
+}
+
+/**
+ * pk_backend_get_packages:
+ */
+void
+pk_backend_get_packages (PkBackend *backend, PkBitfield filters)
+{
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_get_repo_list:
+ */
+void
+pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
+{
+	pk_backend_thread_create (backend, pk_backend_get_repo_list_thread);
+}
+
+/**
+ * pk_backend_get_requires:
+ */
+void
+pk_backend_get_requires (PkBackend *backend, PkBitfield filters,
+			 gchar **package_ids, gboolean recursive)
+{
+	pk_backend_thread_create (backend, pk_backend_get_requires_thread);
+}
+
+/**
+ * pk_backend_get_update_detail:
+ */
+void
+pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_get_update_detail_thread);
+}
+
+/**
+ * pk_backend_get_updates:
+ */
+void
+pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
+{
+	pk_backend_thread_create (backend, pk_backend_get_updates_thread);
+}
+
+/**
+ * pk_backend_install_files:
+ */
+void
+pk_backend_install_files (PkBackend *backend, gboolean only_trusted,
+			  gchar **full_paths)
+{
+	pk_backend_thread_create (backend, pk_backend_install_files_thread);
+}
+
+/**
+ * pk_backend_install_packages:
+ */
+void
+pk_backend_install_packages (PkBackend *backend, gboolean only_trusted,
+			     gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_install_packages_thread);
+}
+
+/**
+ * pk_backend_refresh_cache:
+ */
+void
+pk_backend_refresh_cache (PkBackend *backend, gboolean force)
+{
+	/* check network state */
+	if (!pk_backend_is_online (backend)) {
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_NO_NETWORK,
+				       "Cannot refresh cache whilst offline");
+		pk_backend_finished (backend);
+		return;
+	}
+	pk_backend_thread_create (backend, pk_backend_refresh_cache_thread);
+}
+
+/**
+ * pk_backend_remove_packages:
+ */
+void
+pk_backend_remove_packages (PkBackend *backend, gchar **package_ids,
+			    gboolean allow_deps, gboolean autoremove)
+{
+	pk_backend_thread_create (backend, pk_backend_remove_packages_thread);
+}
+
+/**
+ * pk_backend_repo_enable:
+ */
+void
+pk_backend_repo_enable (PkBackend *backend, const gchar *repo_id, gboolean enabled)
+{
+	pk_backend_thread_create (backend, pk_backend_repo_enable_thread);
+}
+
+/**
+ * pk_backend_resolve:
+ */
+void
+pk_backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
+{
+	pk_backend_set_strv (backend, "search", packages);
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_search_details:
+ */
+void
+pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
+{
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_search_files:
+ */
+void
+pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
+{
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_search_groups:
+ */
+void
+pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
+{
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_search_names:
+ */
+void
+pk_backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
+{
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+}
+
+/**
+ * pk_backend_simulate_install_files:
+ */
+void
+pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
+{
+	pk_backend_thread_create (backend, pk_backend_install_files_thread);
+}
+
+/**
+ * pk_backend_simulate_install_packages:
+ */
+void
+pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_install_packages_thread);
+}
+
+/**
+ * pk_backend_simulate_remove_packages:
+ */
+void
+pk_backend_simulate_remove_packages (PkBackend *backend, gchar **package_ids,
+				     gboolean autoremove)
+{
+	pk_backend_thread_create (backend, pk_backend_remove_packages_thread);
+}
+
+/**
+ * pk_backend_simulate_update_packages:
+ */
+void
+pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_update_packages_thread);
+}
+
+/**
+ * pk_backend_update_packages:
+ */
+void
+pk_backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
+{
+	pk_backend_thread_create (backend, pk_backend_update_packages_thread);
+}
+
+/**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend,
+			   const gchar *distro_id,
+			   PkUpgradeKindEnum upgrade_kind)
+{
+	pk_backend_thread_create (backend, pk_backend_upgrade_system_thread);
+}
+
+/**
+ * pk_backend_what_provides:
+ */
+void
+pk_backend_what_provides (PkBackend *backend, PkBitfield filters,
+			  PkProvidesEnum provides, gchar **values)
+{
+	guint i;
+	guint len;
+	gchar **search = NULL;
+	GPtrArray *array = NULL;
+
+	/* iter on each provide string, and wrap it with the fedora prefix */
+	len = g_strv_length (values);
+	array = g_ptr_array_new_with_free_func (g_free);
+	for (i=0; i<len; i++) {
+		/* compatibility with previous versions of GPK */
+		if (g_str_has_prefix (values[i], "gstreamer0.10(")) {
+			g_ptr_array_add (array, g_strdup (values[i]));
+		} else if (provides == PK_PROVIDES_ENUM_CODEC) {
+			g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i]));
+		} else if (provides == PK_PROVIDES_ENUM_FONT) {
+			g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i]));
+		} else if (provides == PK_PROVIDES_ENUM_MIMETYPE) {
+			g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i]));
+		} else if (provides == PK_PROVIDES_ENUM_POSTSCRIPT_DRIVER) {
+			g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i]));
+		} else if (provides == PK_PROVIDES_ENUM_ANY) {
+			g_ptr_array_add (array, g_strdup_printf ("gstreamer0.10(%s)", values[i]));
+			g_ptr_array_add (array, g_strdup_printf ("font(%s)", values[i]));
+			g_ptr_array_add (array, g_strdup_printf ("mimehandler(%s)", values[i]));
+			g_ptr_array_add (array, g_strdup_printf ("postscriptdriver(%s)", values[i]));
+		} else {
+			pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_PROVIDE_TYPE_NOT_SUPPORTED,
+					       "provide type %s not supported", pk_provides_enum_to_string (provides));
+		}
+	}
+
+	/* set the search terms and run */
+	search = pk_ptr_array_to_strv (array);
+	pk_backend_set_strv (backend, "search", search);
+	pk_backend_thread_create (backend, pk_backend_search_thread);
+	g_strfreev (search);
+	g_ptr_array_unref (array);
+}
diff --git a/backends/zif/zif-comps-groups.conf b/backends/zif/zif-comps-groups.conf
new file mode 120000
index 0000000..815b263
--- /dev/null
+++ b/backends/zif/zif-comps-groups.conf
@@ -0,0 +1 @@
+../yum/yum-comps-groups.conf
\ No newline at end of file
diff --git a/configure.ac b/configure.ac
index d044d05..bb4b1c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -497,6 +497,7 @@ AC_ARG_ENABLE(slapt, AS_HELP_STRING([--enable-slapt],[use the slapt backend]),en
 AC_ARG_ENABLE(smart, AS_HELP_STRING([--enable-smart],[use the SMART backend]),enable_smart=$enableval,enable_smart=no)
 AC_ARG_ENABLE(urpmi, AS_HELP_STRING([--enable-urpmi],[use the URPMI backend]),enable_urpmi=$enableval,enable_urpmi=no)
 AC_ARG_ENABLE(yum, AS_HELP_STRING([--enable-yum],[use the YUM backend]),enable_yum=$enableval,enable_yum=no)
+AC_ARG_ENABLE(zif, AS_HELP_STRING([--enable-zif],[use the Zif backend]),enable_zif=$enableval,enable_zif=no)
 AC_ARG_ENABLE(zypp, AS_HELP_STRING([--enable-zypp],[use the Zypp backend]),enable_zypp=$enableval,enable_zypp=no)
 
 # export to Makefile.am's
@@ -518,6 +519,7 @@ AM_CONDITIONAL(BACKEND_TYPE_SLAPT, [test x$enable_slapt = xyes])
 AM_CONDITIONAL(BACKEND_TYPE_SMART, [test x$enable_smart = xyes])
 AM_CONDITIONAL(BACKEND_TYPE_URPMI, [test x$enable_urpmi = xyes])
 AM_CONDITIONAL(BACKEND_TYPE_YUM, [test x$enable_yum = xyes])
+AM_CONDITIONAL(BACKEND_TYPE_ZIF, [test x$enable_zif = xyes])
 AM_CONDITIONAL(BACKEND_TYPE_ZYPP, [test x$enable_zypp = xyes])
 
 dnl ---------------------------------------------------------------------------
@@ -589,11 +591,13 @@ dnl ---------------------------------------------------------------------------
 AC_ARG_WITH([default_backend],
 	    AS_HELP_STRING([--with-default-backend=<option>],
 			   [Default backend to use
-                           alpm,apt,aptcc,box,conary,dummy,entropy,opkg,pisi,portage,ports,razor,slapt,smart,urpmi,yum,zypp (dummy)]))
+                           alpm,apt,aptcc,box,conary,dummy,entropy,opkg,pisi,portage,ports,razor,slapt,smart,urpmi,yum,zif,zypp (dummy)]))
 # default to a sane option for the installed tool
 if test x$with_default_backend = x; then
 	if test -f /usr/bin/yum ; then
 		with_default_backend=yum
+	elif test -f /usr/bin/zif; then
+		with_default_backend=zif
 	elif test -f /usr/lib/libalpm.so; then
 		with_default_backend=alpm
 	elif test -f /usr/bin/apt-get ; then
@@ -633,7 +637,7 @@ AC_DEFINE_UNQUOTED(DEFAULT_BACKEND, "$with_default_backend", [default backend pr
 AC_SUBST(DEFAULT_BACKEND, "$with_default_backend")
 
 build_zif=no
-if test x$enable_yum = xyes; then
+if test x$enable_zif = xyes; then
 	dnl ---------------------------------------------------------------------------
 	dnl - Zif is an experimental library for direct metadata access
 	dnl ---------------------------------------------------------------------------
@@ -801,6 +805,7 @@ backends/urpmi/helpers/perl_packagekit/Makefile
 backends/urpmi/helpers/urpmi_backend/Makefile
 backends/razor/Makefile
 backends/yum/Makefile
+backends/zif/Makefile
 backends/pisi/Makefile
 backends/poldek/Makefile
 backends/portage/Makefile
@@ -874,7 +879,7 @@ echo "
         SMART backend:             ${enable_smart}
         URPMI backend:             ${enable_urpmi}
         YUM backend:               ${enable_yum}
-          (with zif):              ${build_zif}
+        Zif backend:               ${enable_zif}
         Zypp backend:              ${enable_zypp}
         Default backend:           ${with_default_backend}
 "
diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index 28bb44b..619fc64 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -48,6 +48,7 @@ BuildRequires: pango-devel
 BuildRequires: pm-utils-devel
 BuildRequires: fontconfig-devel
 BuildRequires: gobject-introspection-devel
+BuildRequires: zif-devel >= 0.1.3
 
 # functionality moved to udev itself
 Obsoletes: PackageKit-udev-helper < %{version}-%{release}
@@ -238,6 +239,7 @@ user to restart the computer or remove and re-insert the device.
 %configure \
         --disable-static \
         --enable-yum \
+        --enable-zif \
 %if 0%{?rhel} == 0
         --enable-smart \
         --enable-introspection \
commit f55217c77383c3eaf1aa4bbf5cbae529dca2c32c
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Sun Nov 28 19:12:50 2010 +0100

    trivial: Point to Gitorious repo on download page
    
    Set the new Gitorious repos as place for PackageKit
    daemon development.

diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index aae23a9..e6547f4 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -178,11 +178,11 @@ Just make sure you install PackageKit before gnome-packagekit!
 <h2>Compiling the latest code</h2>
 <p>
 You can get the latest PackageKit daemon and GNOME frontend from the
-<a href="http://cgit.freedesktop.org/packagekit/">public git repositories</a>
-on <a href="http://www.freedesktop.org">freedesktop.org</a>:
+<a href="http://gitorious.org/packagekit/packagekit">public git repositories</a>
+on <a href="http://gitorious.org/">gitorious.org</a>:
 </p>
 <pre>
-git clone git://anongit.freedesktop.org/git/packagekit/PackageKit
+git clone git://gitorious.org/packagekit/packagekit.git
 git clone git://git.gnome.org/gnome-packagekit
 </pre>
 <p>
commit 3edf4f46e219372f8a73d572977565c443193c3e
Author: Jonathan Conder <jonno.conder at gmail.com>
Date:   Sat Nov 27 22:58:53 2010 +1300

    pacman: actually fix recursive logging

diff --git a/backends/pacman/backend-pacman.c b/backends/pacman/backend-pacman.c
index 6ed13a0..d22333e 100644
--- a/backends/pacman/backend-pacman.c
+++ b/backends/pacman/backend-pacman.c
@@ -42,23 +42,26 @@ pacman_message_cb (const gchar *domain, GLogLevelFlags level, const gchar *messa
 	g_return_if_fail (message != NULL);
 	g_return_if_fail (user_data != NULL);
 
+/* disable due to recursive logging, will fix via improving alpm backend */
+#if 0
 	/* report important output to PackageKit */
 	switch (level) {
 		case G_LOG_LEVEL_WARNING:
 		case G_LOG_LEVEL_MESSAGE:
-			/*g_warning ("pacman: %s", message);*/
+			g_warning ("pacman: %s", message);
 			backend_message ((PkBackend *) user_data, message);
 			break;
 
 		case G_LOG_LEVEL_INFO:
 		case G_LOG_LEVEL_DEBUG:
-			/*g_debug ("pacman: %s", message);*/
+			g_debug ("pacman: %s", message);
 			break;
 
 		default:
-			/*g_warning ("pacman: %s", message);*/
+			g_warning ("pacman: %s", message);
 			break;
 	}
+#endif
 }
 
 /**
commit f99d2b4dfe0e51b0eb9c3579e8ed7b54a49ddbcb
Author: Yuri Chornoivan <yurchor at ukr.net>
Date:   Fri Nov 26 13:51:07 2010 +0000

    l10n: Updated Ukrainian (uk) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/uk.po b/po/uk.po
index fdc263c..ee68575 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,128 +7,131 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-01 12:08+0000\n"
-"PO-Revision-Date: 2010-07-01 21:13+0300\n"
+"POT-Creation-Date: 2010-11-26 08:16+0000\n"
+"PO-Revision-Date: 2010-11-26 15:48+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
 "Language-Team: Ukrainian <translation at linux.org.ua>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Lokalize 1.1\n"
 
 #. TRANSLATORS: this is an atomic transaction
 #. TRANSLATORS: the role is the point of the transaction, e.g. update-system
-#: ../client/pk-console.c:176 ../client/pk-console.c:598
+#: ../client/pk-console.c:174
+#: ../client/pk-console.c:596
 msgid "Transaction"
 msgstr "Операція"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:178
+#: ../client/pk-console.c:176
 msgid "System time"
 msgstr "Системний час"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "Succeeded"
 msgstr "Успішне"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "True"
 msgstr "Так"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "False"
 msgstr "Ні"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:182 ../src/pk-polkit-action-lookup.c:332
+#: ../client/pk-console.c:180
+#: ../src/pk-polkit-action-lookup.c:332
 msgid "Role"
 msgstr "Роль"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "Duration"
 msgstr "Тривалість"
 
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "(seconds)"
 msgstr "(секунд)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:191 ../src/pk-polkit-action-lookup.c:346
+#: ../client/pk-console.c:189
+#: ../src/pk-polkit-action-lookup.c:346
 msgid "Command line"
 msgstr "Командний рядок"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:193
+#: ../client/pk-console.c:191
 msgid "User ID"
 msgstr "ІД користувача"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:200
+#: ../client/pk-console.c:198
 msgid "Username"
 msgstr "Користувач"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:204
+#: ../client/pk-console.c:202
 msgid "Real name"
 msgstr "Справжнє ім’я"
 
-#: ../client/pk-console.c:212
+#: ../client/pk-console.c:210
 msgid "Affected packages:"
 msgstr "Задіяні пакунки:"
 
-#: ../client/pk-console.c:214
+#: ../client/pk-console.c:212
 msgid "Affected packages: None"
 msgstr "Задіяні пакунки: Немає"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:249
+#: ../client/pk-console.c:247
 msgid "Distribution"
 msgstr "Дистрибутив"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:251
+#: ../client/pk-console.c:249
 msgid "Type"
 msgstr "Тип"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:253 ../client/pk-console.c:292
+#: ../client/pk-console.c:251
+#: ../client/pk-console.c:290
 msgid "Summary"
 msgstr "Резюме"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:281
+#: ../client/pk-console.c:279
 msgid "Category"
 msgstr "Категорія"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:283
+#: ../client/pk-console.c:281
 msgid "ID"
 msgstr "ІД"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:286
+#: ../client/pk-console.c:284
 msgid "Parent"
 msgstr "Батьківська"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:287
 msgid "Name"
 msgstr "Назва"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:295
+#: ../client/pk-console.c:293
 msgid "Icon"
 msgstr "Значок"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:341
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
 msgstr "Подробиці щодо оновлення:"
 
@@ -137,9 +140,10 @@ msgstr "Подробиці щодо оновлення:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:347 ../client/pk-console.c:617
-#: ../lib/packagekit-glib2/pk-task-text.c:126
-#: ../lib/packagekit-glib2/pk-task-text.c:208
+#: ../client/pk-console.c:345
+#: ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
 #: ../src/pk-polkit-action-lookup.c:357
 msgid "Package"
 msgid_plural "Packages"
@@ -148,204 +152,200 @@ msgstr[1] "Пакунки"
 msgstr[2] "Пакунки"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:350
+#: ../client/pk-console.c:348
 msgid "Updates"
 msgstr "Оновлює"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:354
+#: ../client/pk-console.c:352
 msgid "Obsoletes"
 msgstr "Робить застарілим"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:358 ../lib/packagekit-glib2/pk-task-text.c:211
+#: ../client/pk-console.c:356
+#: ../lib/packagekit-glib2/pk-task-text.c:209
 msgid "Vendor"
 msgstr "Постачальник"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:362
+#: ../client/pk-console.c:360
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:364
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:370
+#: ../client/pk-console.c:368
 msgid "Restart"
 msgstr "Перезапуск"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:374
+#: ../client/pk-console.c:372
 msgid "Update text"
 msgstr "Текст оновлення"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:378
+#: ../client/pk-console.c:376
 msgid "Changes"
 msgstr "Зміни"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:382
+#: ../client/pk-console.c:380
 msgid "State"
 msgstr "Стан"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:386
+#: ../client/pk-console.c:384
 msgid "Issued"
 msgstr "Випущено"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:390 ../lib/packagekit-glib2/pk-console-shared.c:517
+#: ../client/pk-console.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:515
 msgid "Updated"
 msgstr "Оновлено"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:426
+#: ../client/pk-console.c:424
 msgid "Enabled"
 msgstr "Увімкнено"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:429
+#: ../client/pk-console.c:427
 msgid "Disabled"
 msgstr "Вимкнено"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:461
+#: ../client/pk-console.c:459
 msgid "System restart required by:"
 msgstr "Перезавантаження системи потрібне для:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:464
+#: ../client/pk-console.c:462
 msgid "Session restart required:"
 msgstr "Перезапуск сеансу потрібен:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:467
+#: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
 msgstr "Потрібне перезавантаження системи (безпека) для:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:470
+#: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
 msgstr "Потрібен перезапуск сеансу (безпека):"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:473
+#: ../client/pk-console.c:471
 msgid "Application restart required by:"
 msgstr "Потрібен перезапуск програми для:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:508
+#: ../client/pk-console.c:506
 msgid "Package description"
 msgstr "Опис пакунка"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:539
+#: ../client/pk-console.c:537
 msgid "Message:"
 msgstr "Повідомлення:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:558
 msgid "No files"
 msgstr "Без файлів"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:565
+#: ../client/pk-console.c:563
 msgid "Package files"
 msgstr "Файли пакунка"
 
 #. TRANSLATORS: the percentage complete of the transaction
-#: ../client/pk-console.c:633
+#: ../client/pk-console.c:631
 msgid "Percentage"
 msgstr "Відсотки"
 
 #. TRANSLATORS: the status of the transaction (e.g. downloading)
-#: ../client/pk-console.c:651
+#: ../client/pk-console.c:649
 msgid "Status"
 msgstr "Стан"
 
 #. TRANSLATORS: the results from the transaction
-#: ../client/pk-console.c:680
+#: ../client/pk-console.c:678
 msgid "Results:"
 msgstr "Результат:"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:685
 msgid "Fatal error"
 msgstr "Критична помилка"
 
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "Пакунків для оновлення не виявлено."
+
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:696
-#: ../contrib/command-not-found/pk-command-not-found.c:454
-#: ../contrib/command-not-found/pk-command-not-found.c:634
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
 msgid "The transaction failed"
 msgstr "Спроба виконання операції зазнала невдачі"
 
 #. TRANSLATORS: print a message when there are no updates
-#: ../client/pk-console.c:727
+#: ../client/pk-console.c:733
 msgid "There are no updates available at this time."
 msgstr "На поточний момент оновлень не виявлено."
 
-#: ../client/pk-console.c:750
+#: ../client/pk-console.c:756
 msgid "There are no upgrades available at this time."
 msgstr "На поточний момент оновлень не виявлено."
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:817
+#: ../client/pk-console.c:823
 msgid "Please restart the computer to complete the update."
 msgstr "Щоб завершити оновлення, перезавантажте систему."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:820
+#: ../client/pk-console.c:826
 msgid "Please logout and login to complete the update."
 msgstr "Щоб завершити оновлення, вийдіть з облікового запису і увійдіть знову."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:823
-msgid ""
-"Please restart the computer to complete the update as important security "
-"updates have been installed."
-msgstr ""
-"перезавантажте систему, щоб завершити встановлення важливих оновлень безпеки."
+#: ../client/pk-console.c:829
+msgid "Please restart the computer to complete the update as important security updates have been installed."
+msgstr "перезавантажте систему, щоб завершити встановлення важливих оновлень безпеки."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:826
-msgid ""
-"Please logout and login to complete the update as important security updates "
-"have been installed."
-msgstr ""
-"Щоб завершити встановлення важливих оновлень безпеки вийдіть з облікового "
-"запису і увійдіть до нього знову."
+#: ../client/pk-console.c:832
+msgid "Please logout and login to complete the update as important security updates have been installed."
+msgstr "Щоб завершити встановлення важливих оновлень безпеки вийдіть з облікового запису і увійдіть до нього знову."
 
 #. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
-#: ../client/pk-console.c:852
+#: ../client/pk-console.c:858
 #, c-format
-msgid ""
-"Expected package name, actually got file. Try using 'pkcon install-local %s' "
-"instead."
-msgstr ""
-"Мало бути передано назву пакунка, передано файл. Спробуйте скористатися "
-"командою «pkcon install-local %s»."
+msgid "Expected package name, actually got file. Try using 'pkcon install-local %s' instead."
+msgstr "Мало бути передано назву пакунка, передано файл. Спробуйте скористатися командою «pkcon install-local %s»."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:860
+#: ../client/pk-console.c:866
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Програмі не вдалося знайти жодного доступного пакунка: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:888
+#: ../client/pk-console.c:894
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Програмі не вдалося знайти встановлений пакунок: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:916 ../client/pk-console.c:944
+#: ../client/pk-console.c:922
+#: ../client/pk-console.c:950
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Програмі не вдалося знайти пакунок: %s"
@@ -354,663 +354,680 @@ msgstr "Програмі не вдалося знайти пакунок: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:972 ../client/pk-console.c:1000
-#: ../client/pk-console.c:1028 ../client/pk-console.c:1056
-#: ../client/pk-console.c:1084
+#: ../client/pk-console.c:978
+#: ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034
+#: ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Програмі не вдалося знайти всі пакунки: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1113
+#: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
 msgstr "Аварійне завершення фонової служби під час операції!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1147
+#: ../client/pk-console.c:1153
 msgid "PackageKit Console Interface"
 msgstr "Консольний інтерфейс PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1149
+#: ../client/pk-console.c:1155
 msgid "Subcommands:"
 msgstr "Підкоманди:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:1228
+#: ../client/pk-console.c:1234
 msgid "Failed to get the time since this action was last completed"
 msgstr "Не вдалося визначити час, коли цю дію було виконано востаннє"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1268 ../client/pk-monitor.c:373
+#: ../client/pk-console.c:1275
+#: ../client/pk-monitor.c:371
 msgid "Show the program version and exit"
 msgstr "Показати версію програми і завершити роботу"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1271
+#: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
 msgstr "Встановити фільтр, наприклад, встановлені"
 
 #. TRANSLATORS: command line argument, use a non-standard install prefix
-#: ../client/pk-console.c:1274
+#: ../client/pk-console.c:1281
 msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
-msgstr ""
-"Встановити кореневий каталог встановлення, наприклад, '/' або '/mnt/ltsp'"
+msgstr "Встановити кореневий каталог встановлення, наприклад, '/' або '/mnt/ltsp'"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:1284
 msgid "Exit without waiting for actions to complete"
 msgstr "Завершити роботу, не чекаючи на завершення дії"
 
 #. command line argument, do we ask questions
-#: ../client/pk-console.c:1280
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
 msgid "Install the packages without asking for confirmation"
 msgstr "Встановити пакунки без запиту щодо підтвердження"
 
 #. TRANSLATORS: command line argument, this command is not a priority
-#: ../client/pk-console.c:1283
+#: ../client/pk-console.c:1290
 msgid "Run the command using idle network bandwidth and also using less power"
-msgstr ""
-"Виконати команду з мінімальним використанням мережевого каналу і меншою "
-"витратою ресурсів системи"
+msgstr "Виконати команду з мінімальним використанням мережевого каналу і меншою витратою ресурсів системи"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
-#: ../client/pk-console.c:1286
-msgid ""
-"Print to screen a machine readable output, rather than using animated widgets"
-msgstr ""
-"Вивести дані про поступ у простому текстовому форматі, без використання "
-"анімованих віджетів"
+#: ../client/pk-console.c:1293
+msgid "Print to screen a machine readable output, rather than using animated widgets"
+msgstr "Вивести дані про поступ у простому текстовому форматі, без використання анімованих віджетів"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr "Максимальна тривалість зберігання кешу метаданих. Значення -1 відповідає зняттю обмежень на тривалість."
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1308
+#: ../client/pk-console.c:1333
 msgid "Failed to contact PackageKit"
 msgstr "Не вдалося зв’язатися з PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1369
+#: ../client/pk-console.c:1381
 msgid "The proxy could not be set"
 msgstr "Не вдалося встановити параметри проксі-сервера"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1381
+#: ../client/pk-console.c:1393
 msgid "The install root could not be set"
 msgstr "Не вдалося призначити кореневий каталог встановлення"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1393
+#: ../client/pk-console.c:1405
 msgid "The filter specified was invalid"
 msgstr "Вказано некоректний фільтр"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1412
+#: ../client/pk-console.c:1424
 msgid "A search type is required, e.g. name"
 msgstr "Тип пошуку, якщо такий потрібен, наприклад, назва"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1419 ../client/pk-console.c:1431
-#: ../client/pk-console.c:1443 ../client/pk-console.c:1455
+#: ../client/pk-console.c:1431
+#: ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455
+#: ../client/pk-console.c:1467
 msgid "A search term is required"
 msgstr "Потрібен ключ пошуку"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1465
+#: ../client/pk-console.c:1477
 msgid "Invalid search type"
 msgstr "Некоректний тип пошуку"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1471
+#: ../client/pk-console.c:1483
 msgid "A package name to install is required"
 msgstr "Слід вказати назву пакунка, який слід встановити"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1480
+#: ../client/pk-console.c:1492
 msgid "A filename to install is required"
 msgstr "Слід вказати назву файла, який слід встановити"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1492
+#: ../client/pk-console.c:1503
 msgid "A type, key_id and package_id are required"
 msgstr "Слід вказати тип, ідентифікатор ключа і ідентифікатор пакунка"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1503
+#: ../client/pk-console.c:1514
 msgid "A package name to remove is required"
 msgstr "Слід вказати назву пакунка, який потрібно вилучити"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1512
+#: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
-msgstr ""
-"Слід вказати каталог призначення і назви пакунків, які потрібно звантажити"
+msgstr "Слід вказати каталог призначення і назви пакунків, які потрібно звантажити"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1519
+#: ../client/pk-console.c:1530
 msgid "Directory not found"
 msgstr "Каталог не знайдено"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1528
+#: ../client/pk-console.c:1539
 msgid "A licence identifier (eula-id) is required"
 msgstr "Слід вказати ідентифікатор ліцензії (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1539
+#: ../client/pk-console.c:1550
 msgid "A transaction identifier (tid) is required"
 msgstr "Слід вказати ідентифікатор операції (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1560
+#: ../client/pk-console.c:1571
 msgid "A package name to resolve is required"
 msgstr "Слід вказати назву пакунка для розв’язання конфлікту"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1571 ../client/pk-console.c:1582
+#: ../client/pk-console.c:1582
+#: ../client/pk-console.c:1593
 msgid "A repository name is required"
 msgstr "Слід вказати назву сховища"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1593
+#: ../client/pk-console.c:1604
 msgid "A repo name, parameter and value are required"
 msgstr "Слід вказати назву сховища, параметр і значення"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1610
+#: ../client/pk-console.c:1621
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Слід вказати дію, наприклад «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1617
+#: ../client/pk-console.c:1628
 msgid "A correct role is required"
 msgstr "Слід вказати належну роль"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1627 ../client/pk-console.c:1642
-#: ../client/pk-console.c:1651 ../client/pk-console.c:1671
-#: ../client/pk-console.c:1680 ../client/pk-generate-pack.c:316
+#: ../client/pk-console.c:1638
+#: ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661
+#: ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690
+#: ../client/pk-generate-pack.c:314
 msgid "A package name is required"
 msgstr "Слід вказати назву пакунка"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1660
+#: ../client/pk-console.c:1670
 msgid "A package provide string is required"
 msgstr "Слід вказати рядок вмісту"
 
+#. TRANSLATORS: The user did not provide a distro name
+#: ../client/pk-console.c:1714
+msgid "A distribution name is required"
+msgstr "Слід вказати назву дистрибутива"
+
+#. TRANSLATORS: The user did not provide an upgrade type
+#: ../client/pk-console.c:1720
+msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
+msgstr "Слід вказати тип оновлення, наприклад, «minimal», «default» або «complete»"
+
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1741
+#: ../client/pk-console.c:1770
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Підтримки параметра «%s» не передбачено"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1751
+#: ../client/pk-console.c:1780
 msgid "Command failed"
 msgstr "Спроба виконання команди зазнала невдачі"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:255
+#: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Вкажіть назви файлів залежностей, які слід виключити"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:258
+#: ../client/pk-generate-pack.c:256
 msgid "The output file or directory (the current directory is used if omitted)"
-msgstr ""
-"Файл або каталог виведення даних (якщо пропустити, буде використано поточний "
-"каталог)"
+msgstr "Файл або каталог виведення даних (якщо пропустити, буде використано поточний каталог)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:259
 msgid "The package to be put into the service pack"
 msgstr "Пакунок, призначений для створення пакунка обслуговування"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:262
 msgid "Put all updates available in the service pack"
 msgstr "Додати всі можливі оновлення до пакунка з обслуговування"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:300
+#: ../client/pk-generate-pack.c:298
 msgid "Neither --package or --updates option selected."
 msgstr "Не обрано ні параметра --package, ні параметра --updates."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:308
+#: ../client/pk-generate-pack.c:306
 msgid "Both options selected."
 msgstr "Обрано обидва параметра."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:324
+#: ../client/pk-generate-pack.c:322
 msgid "A output directory or file name is required"
 msgstr "Слід вказати каталог або файл для виведення даних"
 
 #. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:340
 msgid "The daemon failed to startup"
 msgstr "Не вдалося запустити фонову службу"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:353 ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:351
+#: ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
 msgstr "Керування пакунками не може виконувати дії цього типу."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:366
-msgid ""
-"Service packs cannot be created as PackageKit was not built with libarchive "
-"support."
-msgstr ""
-"Створення пакунків з обслуговування неможливе, оскільки PackageKit було "
-"зібрано без підтримки libarchive."
+#: ../client/pk-generate-pack.c:364
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
+msgstr "Створення пакунків з обслуговування неможливе, оскільки PackageKit було зібрано без підтримки libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:377
+#: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Якщо вказано файл, назва пакунка з обслуговування має завершуватися на"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:393
+#: ../client/pk-generate-pack.c:391
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Вже існує пакунок з тією самою назвою, бажаєте перезаписати його?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:396
+#: ../client/pk-generate-pack.c:394
 msgid "The pack was not overwritten."
 msgstr "Пакунок не було перезаписано."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:409
+#: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "Спроба створення каталогу завершилася невдало:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:421
+#: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
 msgstr "Не вдалося відкрити список пакунків."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:430
+#: ../client/pk-generate-pack.c:428
 msgid "Finding package name."
 msgstr "Пошук назви пакунка."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:434
+#: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Не вдалося знайти пакунок «%s»: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:442
+#: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
 msgstr "Створення пакунка з обслуговування..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:457
+#: ../client/pk-generate-pack.c:455
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Створено пакунок з обслуговування «%s»"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:462
+#: ../client/pk-generate-pack.c:460
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Не вдалося створити «%s»: %s"
 
-#: ../client/pk-monitor.c:286
+#: ../client/pk-monitor.c:284
 msgid "Failed to get daemon state"
 msgstr "Спроба визначення стану фонової служби завершилася невдало"
 
-#: ../client/pk-monitor.c:351
+#: ../client/pk-monitor.c:349
 msgid "Failed to get properties"
 msgstr "Не вдалося звантажити дані щодо властивостей"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:389
+#: ../client/pk-monitor.c:387
 msgid "PackageKit Monitor"
 msgstr "Монітор PackageKit"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:497
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
 msgid "Getting package information..."
 msgstr "Отримання даних щодо пакунка..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:503
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
 #, c-format
 msgid "Run %s"
 msgstr "Виконати %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:509
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
 msgid "Installed version"
 msgstr "Встановлена версія"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
 #, c-format
 msgid "Run version %s now"
 msgstr "Виконати версію %s"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:523
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
 msgid "Run now"
 msgstr "Виконати зараз"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:529
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
 #, c-format
 msgid "Update to version %s"
 msgstr "Оновити до версії %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:535
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
 #, c-format
 msgid "Install %s now"
 msgstr "Встановити %s"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:538
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
 msgid "Version"
 msgstr "Версія"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:543
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
 msgid "No packages found for your system"
 msgstr "Для вашої системи пакунків не знайдено"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:548
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
 msgid "Installing..."
 msgstr "Встановлення..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:367
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Downloading details about the software sources."
 msgstr "Звантаження даних щодо джерел програмного забезпечення."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:371
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Downloading filelists (this may take some time to complete)."
-msgstr ""
-"Звантаження списків файлів (виконання цієї дії може бути досить тривалим)."
+msgstr "Звантаження списків файлів (виконання цієї дії може бути досить тривалим)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:375
+#: ../contrib/command-not-found/pk-command-not-found.c:374
 msgid "Waiting for package manager lock."
 msgstr "Очікування на зняття блокування керування пакунками."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:379
+#: ../contrib/command-not-found/pk-command-not-found.c:378
 msgid "Loading list of packages."
 msgstr "Завантаження списку пакунків."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:445
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Не вдалося виконати пошук файла"
 
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "Спроба отримання списку файлів зазнала невдачі"
+
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:597
+#: ../contrib/command-not-found/pk-command-not-found.c:602
 msgid "Failed to launch:"
 msgstr "Не вдалося запустити:"
 
 #. TRANSLATORS: we failed to install the package
-#: ../contrib/command-not-found/pk-command-not-found.c:625
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "Failed to install packages"
 msgstr "Не вдалося встановити пакунки"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:701
+#: ../contrib/command-not-found/pk-command-not-found.c:706
 msgid "PackageKit Command Not Found"
 msgstr "Команди PackageKit не знайдено"
 
-#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:727
-msgid "Command not found."
-msgstr "Команду не знайдено."
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "команду не знайдено"
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:745
+#: ../contrib/command-not-found/pk-command-not-found.c:757
 msgid "Similar command is:"
 msgstr "Подібною командою є:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:755
+#: ../contrib/command-not-found/pk-command-not-found.c:771
 msgid "Run similar command:"
 msgstr "Виконати подібну команду:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:769
-#: ../contrib/command-not-found/pk-command-not-found.c:778
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
 msgid "Similar commands are:"
 msgstr "Подібними командами є:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:801
 msgid "Please choose a command to run"
 msgstr "Будь ласка, оберіть команду, яку слід виконати"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:803
+#: ../contrib/command-not-found/pk-command-not-found.c:819
 msgid "The package providing this file is:"
 msgstr "Пакунком, що містити цей файл є:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:808
+#: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "Встановити пакунок «%s», щоб забезпечити виконання команди «%s»?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:832
+#: ../contrib/command-not-found/pk-command-not-found.c:853
 msgid "Packages providing this file are:"
 msgstr "Серед пакунків, що містять цей файл:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:842
+#: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
 msgstr "Відповідними пакунками є:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:851
+#: ../contrib/command-not-found/pk-command-not-found.c:872
 msgid "Please choose a package to install"
 msgstr "Будь ласка, оберіть пакунок, який слід встановити"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:197
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "Розпочинаємо встановлення"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:409
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "Не вдалося знайти пакунок %s або пакунок вже встановлено: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
-msgid ""
-"Don't actually install any packages, only simulate what would be installed"
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
+msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "Не встановлювати пакунків, лише імітувати їх встановлення"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:521
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
 msgstr "Не встановлювати залежностей основних пакунків"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
 msgid "Do not display information or progress"
 msgstr "Не показувати повідомлень та даних про поступ"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:542
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 msgid "PackageKit Debuginfo Installer"
 msgstr "Встановлення даних для зневаджування PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "ПОМИЛКА: вкажіть назви пакунків, які слід встановити."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:592
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
 #, c-format
 msgid "Getting sources list"
 msgstr "Отримання списку джерел"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:602
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:677
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:805
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:872
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:916
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 msgid "FAILED."
 msgstr "НЕВДАЛО."
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:617
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:692
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:776
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:820
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
 #, c-format
 msgid "OK."
 msgstr "Гаразд."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:620
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Знайдено %i увімкнених і %i вимкнених джерела."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:627
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Пошук джерел даних для усування вад"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:660
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Знайдено %i вимкнених сховища даних для усування вад."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:667
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Вмикання джерел даних для усування вад"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:695
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Увімкнено %i джерел даних для усування вад."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:702
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Пошук пакунків для усування вад"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:714
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Не вдалося знайти пакунок %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Не вдалося знайти пакунок з даними для усування вад %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:765
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
 #, c-format
 msgid "Found no packages to install."
 msgstr "Не знайдено жодного пакунка для встановлення."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:779
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
 #, c-format
 msgid "Found %i packages:"
 msgstr "Знайдено %i пакунків:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:795
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Пошук пакунків, які залежать від цих пакунків"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "Не вдалося знайти залежних пакунків: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:824
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Знайдено %i додаткових пакунків."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
 #, c-format
 msgid "No extra packages required."
 msgstr "Потреби у додаткових пакунках немає."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:837
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Знайдено %i пакунків для встановлення:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:850
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "Не встановлювати пакунки у режимі імітації"
 
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:862
-#: ../lib/packagekit-glib2/pk-console-shared.c:289
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
 #, c-format
 msgid "Installing packages"
 msgstr "Встановлення пакунків"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:875
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "Не вдалося встановити пакунки: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Вимикання раніше увімкнених джерел"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:919
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "Не вдалося вимкнути джерела для усування вад: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:934
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Вимкнено %i джерел для усування вад."
@@ -1117,605 +1134,617 @@ msgstr "Список пакунків PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Пакунок з обслуговування PackageKit"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:65
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Будь ласка, введіть число від 1 до %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:191
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
 msgid "More than one package matches:"
 msgstr "З ключем пошуку збігається декілька пакунків:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:202
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
 msgid "Please choose the correct package: "
 msgstr "Будь ласка, оберіть належний пакунок:"
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:257
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
 msgid "Unknown state"
 msgstr "Невідомий стан"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:261
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
 msgid "Starting"
 msgstr "Запуск"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:265
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
 msgid "Waiting in queue"
 msgstr "Очікування у черзі"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:269
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
 msgid "Running"
 msgstr "Виконання"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:273
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
 msgid "Querying"
 msgstr "Виконання запиту"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:277
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
 msgid "Getting information"
 msgstr "Отримання інформації"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:281
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
 msgid "Removing packages"
 msgstr "Вилучення пакунків"
 
 #. TRANSLATORS: transaction state, downloading package files
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:285
-#: ../lib/packagekit-glib2/pk-console-shared.c:663
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
 msgid "Downloading packages"
 msgstr "Звантаження пакунків"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:293
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
 msgid "Refreshing software list"
 msgstr "Освіження списку програм"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:297
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
 msgid "Installing updates"
 msgstr "Встановлення оновлень"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:301
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
 msgid "Cleaning up packages"
 msgstr "Вилучення зайвих пакунків"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:305
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
 msgid "Obsoleting packages"
 msgstr "Вилучення застарілих пакунків"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:309
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
 msgid "Resolving dependencies"
 msgstr "Розв’язання залежностей"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:313
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
 msgid "Checking signatures"
 msgstr "Перевірка підписів"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:317
-#: ../lib/packagekit-glib2/pk-console-shared.c:623
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
 msgid "Rolling back"
 msgstr "Повернення до попереднього"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:321
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
 msgid "Testing changes"
 msgstr "Випробування змін"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:325
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
 msgid "Committing changes"
 msgstr "Застосування змін"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:329
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
 msgid "Requesting data"
 msgstr "Запит щодо даних"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:333
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
 msgid "Finished"
 msgstr "Завершено"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:337
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
 msgid "Cancelling"
 msgstr "Скасування"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:341
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
 msgid "Downloading repository information"
 msgstr "Звантаження інформації про сховище"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:345
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
 msgid "Downloading list of packages"
 msgstr "Звантаження списку пакунків"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:349
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
 msgid "Downloading file lists"
 msgstr "Звантаження списків файлів"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:353
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
 msgid "Downloading lists of changes"
 msgstr "Звантаження списків змін"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:357
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
 msgid "Downloading groups"
 msgstr "Звантаження груп"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:361
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
 msgid "Downloading update information"
 msgstr "Звантаження інформації про оновлення"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:365
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
 msgid "Repackaging files"
 msgstr "Перепакування файлів"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:369
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
 msgid "Loading cache"
 msgstr "Завантаження кешу"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:373
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
 msgid "Scanning applications"
 msgstr "Пошук програм"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:377
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
 msgid "Generating package lists"
 msgstr "Створення списків пакунків"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:381
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
 msgid "Waiting for package manager lock"
 msgstr "Очікування на зняття блокування керування пакунками"
 
 #. TRANSLATORS: transaction state, waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:385
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
 msgid "Waiting for authentication"
 msgstr "Очікування на завершення розпізнавання"
 
 #. TRANSLATORS: transaction state, we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:389
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
 msgid "Updating running applications"
 msgstr "Оновлення списку запущенний програм"
 
 #. TRANSLATORS: transaction state, we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:393
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
 msgid "Checking applications in use"
 msgstr "Виявлення програм, що використовуються"
 
 #. TRANSLATORS: transaction state, we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:397
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
 msgid "Checking libraries in use"
 msgstr "Виявлення бібліотек, що використовуються"
 
 #. TRANSLATORS: transaction state, we are copying package files before or after the transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
 msgid "Copying files"
 msgstr "Копіювання файлів"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:419
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
 msgid "Trivial"
 msgstr "Незначне"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:423
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
 msgid "Normal"
 msgstr "Звичайне"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:427
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
 msgid "Important"
 msgstr "Важливе"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:431
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
 msgid "Security"
 msgstr "Безпека"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:435
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
 msgid "Bug fix "
 msgstr "Виправлення вад"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:439
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
 msgid "Enhancement"
 msgstr "Покращення"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:443
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
 msgid "Blocked"
 msgstr "Заблоковане"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
-#: ../lib/packagekit-glib2/pk-console-shared.c:521
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
 msgid "Installed"
 msgstr "Встановлене"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:453
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
 msgid "Available"
 msgstr "Доступний"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:471
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
 msgid "Downloading"
 msgstr "Звантаження"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:475
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
 msgid "Updating"
 msgstr "Оновлення"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:479
-#: ../lib/packagekit-glib2/pk-console-shared.c:599
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
 msgid "Installing"
 msgstr "Встановлення"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:483
-#: ../lib/packagekit-glib2/pk-console-shared.c:595
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
 msgid "Removing"
 msgstr "Вилучення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:487
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
 msgid "Cleaning up"
 msgstr "Очищення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:491
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
 msgid "Obsoleting"
 msgstr "Робить застарілим"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:495
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
 msgid "Reinstalling"
 msgstr "Перевстановлення"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:513
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
 msgid "Downloaded"
 msgstr "Звантажено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:525
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
 msgid "Removed"
 msgstr "Вилучено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:529
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
 msgid "Cleaned up"
 msgstr "Очищено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:533
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
 msgid "Obsoleted"
 msgstr "Став застарілим"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:537
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
 msgid "Reinstalled"
 msgstr "Перевстановлено"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:555
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
 msgid "Unknown role type"
 msgstr "Невідомий тип"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:559
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
 msgid "Getting dependencies"
 msgstr "Отримання залежностей"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:563
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
 msgid "Getting update details"
 msgstr "Отримання подробиць оновлення"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:567
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
 msgid "Getting details"
 msgstr "Отримання подробиць"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:571
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
 msgid "Getting requires"
 msgstr "Отримання даних про вимоги"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:575
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
 msgid "Getting updates"
 msgstr "Отримання оновлень"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:579
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
 msgid "Searching by details"
 msgstr "Пошук за подробицями"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:583
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
 msgid "Searching by file"
 msgstr "Пошук за файлом"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:587
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
 msgid "Searching groups"
 msgstr "Пошук груп"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:591
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
 msgid "Searching by name"
 msgstr "Пошук за назвою"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:603
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
 msgid "Installing files"
 msgstr "Встановлення файлів"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:607
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
 msgid "Refreshing cache"
 msgstr "Освіження кешу"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:611
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
 msgid "Updating packages"
 msgstr "Оновлення пакунків"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:615
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
 msgid "Updating system"
 msgstr "Оновлення системи"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:619
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
 msgid "Canceling"
 msgstr "Скасування"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:627
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
 msgid "Getting repositories"
 msgstr "Отримання списку сховищ"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:631
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
 msgid "Enabling repository"
 msgstr "Увімкнення сховища"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:635
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
 msgid "Setting data"
 msgstr "Встановлення даних"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:639
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
 msgid "Resolving"
 msgstr "Розв’язання"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:643
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
 msgid "Getting file list"
 msgstr "Отримання списку файлів"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:647
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
 msgid "Getting provides"
 msgstr "Отримання даних про вміст"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:651
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
 msgid "Installing signature"
 msgstr "Встановлення підпису"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:655
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
 msgid "Getting packages"
 msgstr "Отримання списку пакунків"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:659
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
 msgid "Accepting EULA"
 msgstr "Згода з EULA"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:667
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
 msgid "Getting upgrades"
 msgstr "Отримання оновлень"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:671
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
 msgid "Getting categories"
 msgstr "Отримання категорій"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:675
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
 msgid "Getting transactions"
 msgstr "Отримання списку дій"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:679
-#: ../lib/packagekit-glib2/pk-console-shared.c:683
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
 msgid "Simulating install"
 msgstr "Імітація встановлення"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:687
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
 msgid "Simulating remove"
 msgstr "Імітація вилучення"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:691
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
 msgid "Simulating update"
 msgstr "Імітація оновлення"
 
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "Показувати діагностичні дані для всіх файлів"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "Параметри діагностики"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "Показувати параметри діагностики"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
-#: ../lib/packagekit-glib2/pk-task-text.c:69
+#: ../lib/packagekit-glib2/pk-task-text.c:67
 msgid "Do you want to allow installing of unsigned software?"
 msgstr "Бажаєте дозволити встановлення непідписаного програмного забезпечення?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:74
+#: ../lib/packagekit-glib2/pk-task-text.c:72
 msgid "The unsigned software will not be installed."
 msgstr "Непідписане програмне забезпечення встановлено не буде."
 
 #. TRANSLATORS: the package repository is signed by a key that is not recognised
-#: ../lib/packagekit-glib2/pk-task-text.c:123
+#: ../lib/packagekit-glib2/pk-task-text.c:121
 msgid "Software source signature required"
 msgstr "Потрібен підпис джерела програмного забезпечення"
 
 #. TRANSLATORS: the package repository name
-#: ../lib/packagekit-glib2/pk-task-text.c:129
+#: ../lib/packagekit-glib2/pk-task-text.c:127
 msgid "Software source name"
 msgstr "Назва джерела програмного забезпечення"
 
 #. TRANSLATORS: the key URL
-#: ../lib/packagekit-glib2/pk-task-text.c:132
+#: ../lib/packagekit-glib2/pk-task-text.c:130
 msgid "Key URL"
 msgstr "Адреса URL ключа"
 
 #. TRANSLATORS: the username of the key
-#: ../lib/packagekit-glib2/pk-task-text.c:135
+#: ../lib/packagekit-glib2/pk-task-text.c:133
 msgid "Key user"
 msgstr "Користувач ключа"
 
 #. TRANSLATORS: the key ID, usually a few hex digits
-#: ../lib/packagekit-glib2/pk-task-text.c:138
+#: ../lib/packagekit-glib2/pk-task-text.c:136
 msgid "Key ID"
 msgstr "Ідентифікатор ключа"
 
 #. TRANSLATORS: the key fingerprint, again, yet more hex
-#: ../lib/packagekit-glib2/pk-task-text.c:141
+#: ../lib/packagekit-glib2/pk-task-text.c:139
 msgid "Key fingerprint"
 msgstr "Відбиток ключа"
 
 #. TRANSLATORS: the timestamp (a bit like a machine readable time)
-#: ../lib/packagekit-glib2/pk-task-text.c:144
+#: ../lib/packagekit-glib2/pk-task-text.c:142
 msgid "Key Timestamp"
 msgstr "Часова позначка ключа"
 
 #. TRANSLATORS: ask the user if they want to import
-#: ../lib/packagekit-glib2/pk-task-text.c:157
+#: ../lib/packagekit-glib2/pk-task-text.c:155
 msgid "Do you accept this signature?"
 msgstr "Чи підтверджуєте ви цей підпис?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:162
+#: ../lib/packagekit-glib2/pk-task-text.c:160
 msgid "The signature was not accepted."
 msgstr "Підпис не було підтверджено."
 
 #. TRANSLATORS: this is another name for a software licence that has to be read before installing
-#: ../lib/packagekit-glib2/pk-task-text.c:205
+#: ../lib/packagekit-glib2/pk-task-text.c:203
 msgid "End user licence agreement required"
-msgstr ""
-"Потрібне підтвердження ліцензійної угоди з кінцевим користувачем (EULA)"
+msgstr "Потрібне підтвердження ліцензійної угоди з кінцевим користувачем (EULA)"
 
 #. TRANSLATORS: the EULA text itself (long and boring)
-#: ../lib/packagekit-glib2/pk-task-text.c:214
+#: ../lib/packagekit-glib2/pk-task-text.c:212
 msgid "Agreement"
 msgstr "Угода"
 
 #. TRANSLATORS: ask the user if they've read and accepted the EULA
-#: ../lib/packagekit-glib2/pk-task-text.c:223
+#: ../lib/packagekit-glib2/pk-task-text.c:221
 msgid "Do you accept this agreement?"
 msgstr "Чи згодвні ви дотримуватися цієї угоди?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:228
+#: ../lib/packagekit-glib2/pk-task-text.c:226
 msgid "The agreement was not accepted."
 msgstr "Угоду не було підтверджено."
 
 #. TRANSLATORS: the user needs to change media inserted into the computer
-#: ../lib/packagekit-glib2/pk-task-text.c:267
+#: ../lib/packagekit-glib2/pk-task-text.c:265
 msgid "Media change required"
 msgstr "Потрібна зміна носія"
 
 #. TRANSLATORS: the type, e.g. DVD, CD, etc
-#: ../lib/packagekit-glib2/pk-task-text.c:270
+#: ../lib/packagekit-glib2/pk-task-text.c:268
 msgid "Media type"
 msgstr "Тип носія"
 
 #. TRANSLATORS: the media label, usually like 'disk-1of3'
-#: ../lib/packagekit-glib2/pk-task-text.c:273
+#: ../lib/packagekit-glib2/pk-task-text.c:271
 msgid "Media label"
 msgstr "Мітка носія"
 
 #. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
-#: ../lib/packagekit-glib2/pk-task-text.c:276
+#: ../lib/packagekit-glib2/pk-task-text.c:274
 msgid "Text"
 msgstr "Текст"
 
 #. TRANSLATORS: ask the user to insert the media
-#: ../lib/packagekit-glib2/pk-task-text.c:282
+#: ../lib/packagekit-glib2/pk-task-text.c:280
 msgid "Please insert the correct media"
 msgstr "Будь ласка, вставте відповідний носій"
 
 #. TRANSLATORS: tell the user we've not done anything as they are lazy
-#: ../lib/packagekit-glib2/pk-task-text.c:287
+#: ../lib/packagekit-glib2/pk-task-text.c:285
 msgid "The correct media was not inserted."
 msgstr "Не було вставлено відповідного носія."
 
 #. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:302
+#: ../lib/packagekit-glib2/pk-task-text.c:300
 msgid "The following packages have to be removed:"
 msgstr "Наведені нижче пакунки буде вилучено:"
 
 #. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:307
+#: ../lib/packagekit-glib2/pk-task-text.c:305
 msgid "The following packages have to be installed:"
 msgstr "Слід встановити такі пакунки:"
 
 #. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:312
+#: ../lib/packagekit-glib2/pk-task-text.c:310
 msgid "The following packages have to be updated:"
 msgstr "Слід оновити такі пакунки:"
 
 #. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:317
+#: ../lib/packagekit-glib2/pk-task-text.c:315
 msgid "The following packages have to be reinstalled:"
 msgstr "Слід перевстановити такі пакунки:"
 
 #. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:322
+#: ../lib/packagekit-glib2/pk-task-text.c:320
 msgid "The following packages have to be downgraded:"
 msgstr "Слід встановити старіші версії таких пакунків:"
 
 #. TRANSLATORS: ask the user if the proposed changes are okay
-#: ../lib/packagekit-glib2/pk-task-text.c:382
+#: ../lib/packagekit-glib2/pk-task-text.c:380
 msgid "Proceed with changes?"
 msgstr "Внести зміни:"
 
 #. TRANSLATORS: tell the user we didn't do anything
-#: ../lib/packagekit-glib2/pk-task-text.c:387
+#: ../lib/packagekit-glib2/pk-task-text.c:385
 msgid "The transaction did not proceed."
 msgstr "Операцію не було продовжено."
 
@@ -1734,30 +1763,20 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Для підтвердження EULA слід виконати розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid ""
-"Authentication is required to cancel a task that was not started by yourself"
+msgid "Authentication is required to cancel a task that was not started by yourself"
 msgstr "Для скасування дії, започаткованої не вами, слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
-msgstr ""
-"Для зміни параметрів джерел програмного забезпечення слід пройти "
-"розпізнавання"
+msgstr "Для зміни параметрів джерел програмного забезпечення слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid ""
-"Authentication is required to change the location used to decompress packages"
-msgstr ""
-"Для визначення адреси каталогу, куди буде видобуто вміст пакунків, слід "
-"пройти розпізнавання"
+msgid "Authentication is required to change the location used to decompress packages"
+msgstr "Для визначення адреси каталогу, куди буде видобуто вміст пакунків, слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr ""
-"Для визнання ключа, використаного для підписування пакунків, як надійного "
-"слід пройти розпізнавання"
+msgid "Authentication is required to consider a key used for signing packages as trusted"
+msgstr "Для визнання ключа, використаного для підписування пакунків, як надійного слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Authentication is required to install a signed package"
@@ -1773,8 +1792,7 @@ msgstr "Для оновлення списку джерел системи сл
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to reload the device with a new driver"
-msgstr ""
-"Для перезавантаження пристрою з новим драйвером слід пройти розпізнавання"
+msgstr "Для перезавантаження пристрою з новим драйвером слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:17
 msgid "Authentication is required to remove packages"
@@ -1785,23 +1803,23 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "Для скасування дії слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr ""
-"Для визначення проксі-сервера, який буде використано для звантаження "
-"пакунків, слід пройти розпізнавання"
+msgid "Authentication is required to set the network proxy used for downloading packages"
+msgstr "Для визначення проксі-сервера, який буде використано для звантаження пакунків, слід пройти розпізнавання"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:20
 msgid "Authentication is required to update packages"
 msgstr "Для оновлення пакунків слід пройти розпізнавання"
 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Authentication is required to upgrade the operating system"
+msgstr "Для оновлення версії операційної системи слід пройти розпізнавання"
+
 #. SECURITY:
 #. - Normal users are allowed to cancel their own task without
 #. authentication, but a different user id needs the admin password
 #. to cancel another users task.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:26
+#: ../policy/org.freedesktop.packagekit.policy.in.h:27
 msgid "Cancel foreign task"
 msgstr "Скасування сторонніх завдань"
 
@@ -1811,7 +1829,7 @@ msgstr "Скасування сторонніх завдань"
 #. - This could be used to overwrite files not owned by the user using
 #. a carefully created package file.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:33
+#: ../policy/org.freedesktop.packagekit.policy.in.h:34
 msgid "Change location that packages are installed"
 msgstr "Змінити каталог, куди встановлюватимуться пакунки"
 
@@ -1820,7 +1838,7 @@ msgstr "Змінити каталог, куди встановлюватимут
 #. software sources as this can be used to enable new updates or
 #. install different versions of software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:39
+#: ../policy/org.freedesktop.packagekit.policy.in.h:40
 msgid "Change software source parameters"
 msgstr "Зміна параметрів джерела програм"
 
@@ -1830,7 +1848,7 @@ msgstr "Зміна параметрів джерела програм"
 #. - Paranoid users (or parents!) can change this to 'auth_admin' or
 #. 'auth_admin_keep'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:46
+#: ../policy/org.freedesktop.packagekit.policy.in.h:47
 msgid "Install signed package"
 msgstr "Встановлення підписаного пакунка"
 
@@ -1840,7 +1858,7 @@ msgstr "Встановлення підписаного пакунка"
 #. password would be a massive security hole.
 #. - This is not retained as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:53
+#: ../policy/org.freedesktop.packagekit.policy.in.h:54
 msgid "Install untrusted local file"
 msgstr "Встановлення ненадійного локального файла"
 
@@ -1848,7 +1866,7 @@ msgstr "Встановлення ненадійного локального ф
 #. - Normal users do not require admin authentication to refresh the
 #. cache, as this doesn't actually install or remove software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:58
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Refresh system sources"
 msgstr "Оновлення списків джерел системи"
 
@@ -1859,7 +1877,7 @@ msgstr "Оновлення списків джерел системи"
 #. try to rebind drivers in use, for instance security authentication
 #. devices.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:66
+#: ../policy/org.freedesktop.packagekit.policy.in.h:67
 msgid "Reload a device"
 msgstr "Перезавантаження пристрою"
 
@@ -1872,7 +1890,7 @@ msgstr "Перезавантаження пристрою"
 #. be removed. If this is not possible, change this authentication to
 #. 'auth_admin'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:76
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Remove package"
 msgstr "Вилучення пакунка"
 
@@ -1881,7 +1899,7 @@ msgstr "Вилучення пакунка"
 #. as this will change a large number of packages, and could expose the
 #. system to previously patched security vulnerabilities.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:82
+#: ../policy/org.freedesktop.packagekit.policy.in.h:83
 msgid "Rollback to a previous transaction"
 msgstr "Повернення до попередньої операції"
 
@@ -1889,7 +1907,7 @@ msgstr "Повернення до попередньої операції"
 #. - Normal users do not require admin authentication to set the proxy
 #. used for downloading packages.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:87
+#: ../policy/org.freedesktop.packagekit.policy.in.h:88
 msgid "Set network proxy"
 msgstr "Встановлення проксі-сервер"
 
@@ -1899,7 +1917,7 @@ msgstr "Встановлення проксі-сервер"
 #. without a secure authentication.
 #. - This is not kept as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:94
+#: ../policy/org.freedesktop.packagekit.policy.in.h:95
 msgid "Trust a key used for signing packages"
 msgstr "Визначення надійності ключа, яким підписано пакунки"
 
@@ -1910,15 +1928,23 @@ msgstr "Визначення надійності ключа, яким підп
 #. - Changing this to anything other than 'yes' will break unattended
 #. updates.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:102
+#: ../policy/org.freedesktop.packagekit.policy.in.h:103
 msgid "Update packages"
 msgstr "Оновлення пакунків"
 
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:109
+msgid "Upgrade System"
+msgstr "Оновлення системи"
+
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
-msgstr ""
-"Спроба запуску зазнала невдачі через обмеження безпеки на цьому комп’ютері."
+msgstr "Спроба запуску зазнала невдачі через обмеження безпеки на цьому комп’ютері."
 
 #. TRANSLATORS: only two ways this can fail...
 #: ../src/pk-main.c:89
@@ -1928,16 +1954,12 @@ msgstr "Таке може трапитися з двох причин:"
 #. TRANSLATORS: only allowed to be owned by root
 #: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
-msgstr ""
-"Виконуваний файл було запущено не тим користувачем (його мав запустити root)"
+msgstr "Виконуваний файл було запущено не тим користувачем (його мав запустити root)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
-msgstr ""
-"У системному каталозі файл org.freedesktop.PackageKit.conf не встановлено:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
+msgstr "У системному каталозі файл org.freedesktop.PackageKit.conf не встановлено:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
 #: ../src/pk-main.c:200
@@ -1980,25 +2002,23 @@ msgid "Cannot connect to the system bus"
 msgstr "Не вдалося з’єднатися з системною шиною"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:318
+#: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "Помилка під час спроби запуску:"
 
 #: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
-msgstr ""
-"Для встановлення пакунків для усування вад слід увімкнути додаткові джерела "
-"програмного забезпечення"
+msgstr "Для встановлення пакунків для усування вад слід увімкнути додаткові джерела програмного забезпечення"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
+#: ../src/pk-polkit-action-lookup.c:171
+#: ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "Програмне забезпечення надійшло з ненадійного джерела."
 
 #: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
-msgstr ""
-"Не оновлюйте цей пакунок, якщо не певні, що таке оновлення є безпечним."
+msgstr "Не оновлюйте цей пакунок, якщо не певні, що таке оновлення є безпечним."
 
 #: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
@@ -2006,13 +2026,11 @@ msgstr "Не оновлюйте ці пакунки, якщо не певні, 
 
 #: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
-msgstr ""
-"Не встановлюйте цей пакунок, якщо не певні, що таке встановлення є безпечним."
+msgstr "Не встановлюйте цей пакунок, якщо не певні, що таке встановлення є безпечним."
 
 #: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
-msgstr ""
-"Не встановлюйте ці пакунки, якщо не певні, що таке встановлення є безпечним."
+msgstr "Не встановлюйте ці пакунки, якщо не певні, що таке встановлення є безпечним."
 
 #. TRANSLATORS: too many packages to list each one
 #: ../src/pk-polkit-action-lookup.c:273
@@ -2024,173 +2042,107 @@ msgstr "Багато пакунків"
 msgid "Only trusted"
 msgstr "Лише надійні"
 
-#. TRANSLATORS: turn on all debugging
-#: ../src/egg-debug.c:388
-msgid "Show debugging information for all files"
-msgstr "Показувати діагностичні дані для всіх файлів"
-
-#. TRANSLATORS: a list of modules to debug
-#: ../src/egg-debug.c:458
-msgid "Debug these specific modules"
-msgstr "Діагностика вказаних модулів"
-
-#. TRANSLATORS: a list of functions to debug
-#: ../src/egg-debug.c:461
-msgid "Debug these specific functions"
-msgstr "Діагностика вказаних функцій"
-
-#. TRANSLATORS: save to a log
-#: ../src/egg-debug.c:464
-msgid "Log debugging data to a file"
-msgstr "Записати дані діагностики до файла"
-
-#: ../src/egg-debug.c:468
-msgid "Debugging Options"
-msgstr "Параметри діагностики"
-
-#: ../src/egg-debug.c:468
-msgid "Show debugging options"
-msgstr "Показувати параметри діагностики"
-
+#~ msgid "Debug these specific modules"
+#~ msgstr "Діагностика вказаних модулів"
+#~ msgid "Debug these specific functions"
+#~ msgstr "Діагностика вказаних функцій"
+#~ msgid "Log debugging data to a file"
+#~ msgstr "Записати дані діагностики до файла"
 #~ msgid "Malicious software can damage your computer or cause other harm."
 #~ msgstr ""
 #~ "Зловмисне програмне забезпечення може пошкодити ваш комп’ютер або завдати "
 #~ "інших неприємностей."
-
 #~ msgid "Transaction failed with no error"
 #~ msgstr "Спроба виконання операції зазнала невдачі, але помилок не було"
-
 #~ msgid "Failed to get transaction list"
 #~ msgstr "Спроба отримання списку операцій завершилася невдало"
-
 #~ msgid "Please restart the application as it is being used."
 #~ msgstr "Перезапустіть програму, оскільки вона зараз використовується."
-
 #~ msgid "The package %s is already installed"
 #~ msgstr "Пакунок %s вже встановлено"
-
 #~ msgid "The package %s could not be installed: %s"
 #~ msgstr "Не вдалося встановити пакунок %s: %s"
-
 #~ msgid "The package install was canceled!"
 #~ msgstr "Встановлення пакунка скасовано!"
-
 #~ msgid "This tool could not install the packages: %s"
 #~ msgstr "Програмі не вдалося встановити пакунки: %s"
-
 #~ msgid "This tool could not install the files: %s"
 #~ msgstr "Програмі не вдалося встановити файли: %s"
-
 #~ msgid "This tool could not remove %s: %s"
 #~ msgstr "Програмі не вдалося вилучити %s: %s"
-
 #~ msgid "This tool could not remove the packages: %s"
 #~ msgstr "Програмі не вдалося вилучити пакунки: %s"
-
 #~ msgid "Proceed with additional packages?"
 #~ msgstr "Вилучити додаткові пакунки?"
-
 #~ msgid "The package removal was canceled!"
 #~ msgstr "Вилучення пакунка скасовано!"
-
 #~ msgid "This tool could not download the package %s as it could not be found"
 #~ msgstr ""
 #~ "Програмі не вдалося звантажити пакунок %s, оскільки відповідний пакунок "
 #~ "не було знайдено"
-
 #~ msgid "This tool could not download the packages: %s"
 #~ msgstr "Програмі не вдалося звантажити пакунки: %s"
-
 #~ msgid "This tool could not update %s: %s"
 #~ msgstr "Програмі не вдалося оновити %s: %s"
-
 #~ msgid "The package update was canceled!"
 #~ msgstr "Оновлення пакунка скасовано!"
-
 #~ msgid "This tool could not get the requirements for %s: %s"
 #~ msgstr "Програмі не вдалося отримати список файлів для %s: %s"
-
 #~ msgid "This tool could not get the dependencies for %s: %s"
 #~ msgstr "Програмі не вдалося отримати залежності для %s: %s"
-
 #~ msgid "This tool could not get package details for %s: %s"
 #~ msgstr "Програмі не вдалося отримати параметри пакунка %s: %s"
-
 #~ msgid "This tool could not find the files for %s: %s"
 #~ msgstr "Програмі не вдалося знайти файли %s: %s"
-
 #~ msgid "This tool could not get the file list for %s: %s"
 #~ msgstr "Програмі не вдалося отримати список файлів %s: %s"
-
 #~ msgid "File already exists: %s"
 #~ msgstr "Файл вже існує: %s"
-
 #~ msgid "This tool could not get package list: %s"
 #~ msgstr "Програмі не вдалося отримати список пакунків: %s"
-
 #~ msgid "Failed to save to disk"
 #~ msgstr "Не вдалося зберегти на диск"
-
 #~ msgid "File does not exist: %s"
 #~ msgstr "Файла не існує: %s"
-
 #~ msgid "Packages to add"
 #~ msgstr "Пакунки, які буде додано"
-
 #~ msgid "Packages to remove"
 #~ msgstr "Пакунки, які буде вилучено"
-
 #~ msgid "No new packages need to be installed"
 #~ msgstr "У встановленні нових пакунків немає потреби"
-
 #~ msgid "not found."
 #~ msgstr "не знайдено."
-
 #~ msgid "No packages can be found to install"
 #~ msgstr "Пакунків для встановлення не знайдено"
-
 #~ msgid "This tool could not find the update details for %s: %s"
 #~ msgstr "Програмі не вдалося знайти параметри оновлення %s: %s"
-
 #~ msgid "This tool could not get the update details for %s: %s"
 #~ msgstr "Програмі не вдалося отримати параметри оновлення %s: %s"
-
 #~ msgid "Error:"
 #~ msgstr "Помилка:"
-
 #~ msgid "Repository signature required"
 #~ msgstr "Потрібен підпис сховища"
-
 #~ msgid "End user license agreement required"
 #~ msgstr ""
 #~ "Потрібне підтвердження ліцензійної угоди з кінцевим користувачем (EULA)"
-
 #~ msgid "Do you agree to this license?"
 #~ msgstr "Чи погоджуєтеся ви з цими умовами ліцензування?"
-
 #~ msgid "The license was refused."
 #~ msgstr "Умови ліцензування було відкинуто."
-
 #~ msgid "This tool could not connect to system DBUS."
 #~ msgstr "Цьому інструменту не вдалося з’єднатися з DBUS системи."
-
 #~ msgid "A package name or filename to install is required"
 #~ msgstr "Слід вказати назву пакунка або назву файла, який слід встановити"
-
 #~ msgid "A list file name to create is required"
 #~ msgstr "Слід вказати список назв файлів, які слід створити"
-
 #~ msgid "A list file to open is required"
 #~ msgstr "Слід вказати список файлів, які слід відкрити"
-
 #~ msgid "Incorrect privileges for this operation"
 #~ msgstr "Для цієї операції вказано неправильні права доступу"
-
 #~ msgid "Cannot show the list of transactions"
 #~ msgstr "Показ списку операції неможливий"
-
 #~ msgid "EULA ID"
 #~ msgstr "Ідентифікатор EULA"
-
 #~ msgid "Media ID"
 #~ msgstr "Ідентифікатор носія"
+
commit 3bbdfd61998e515672c7d27867708d859265e774
Author: assar <asiersar at yahoo.com>
Date:   Fri Nov 26 12:12:00 2010 +0000

    l10n: Updated Basque (eu) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/eu.po b/po/eu.po
index a5bf3da..9326aa0 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -1,11 +1,12 @@
 # Basque translation of PackageKit.
 # This file is distributed under the same license as the PackageKit package.
 # Asier Sarasua Garmendia <asiersar at yahoo.com>, 2010.
-#
+# 
 msgid ""
-msgstr "Project-Id-Version: packagekit\n"
+msgstr ""
+"Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-11-07 07:14+0000\n"
+"POT-Creation-Date: 2010-11-26 08:16+0000\n"
 "PO-Revision-Date: 2010-08-12 01:19+0100\n"
 "Last-Translator: Asier Sarasua Garmendia <asiersar at yahoo.com>\n"
 "Language-Team: Librezale <librezale at librezale.org>\n"
@@ -20,7 +21,8 @@ msgstr "Project-Id-Version: packagekit\n"
 msgid "Transaction"
 msgstr "Transakzioa"
 
-#. TRANSLATORS: this is the time the transaction was started in system timezone
+#. TRANSLATORS: this is the time the transaction was started in system
+#. timezone
 #: ../client/pk-console.c:176
 msgid "System time"
 msgstr "Sistemaren ordua"
@@ -142,12 +144,14 @@ msgid_plural "Packages"
 msgstr[0] "Paketea"
 msgstr[1] "Paketeak"
 
-#. TRANSLATORS: details about the update, any packages that this update updates
+#. TRANSLATORS: details about the update, any packages that this update
+#. updates
 #: ../client/pk-console.c:348
 msgid "Updates"
 msgstr "Eguneraketak"
 
-#. TRANSLATORS: details about the update, any packages that this update obsoletes
+#. TRANSLATORS: details about the update, any packages that this update
+#. obsoletes
 #: ../client/pk-console.c:352
 msgid "Obsoletes"
 msgstr "Zaharkituak"
@@ -219,12 +223,14 @@ msgstr "Sistema berrabiaraztea eskatu du honek:"
 msgid "Session restart required:"
 msgstr "Sistema berrabiaraztea eskatua:"
 
-#. TRANSLATORS: a package requires the system to be restarted due to a security update
+#. TRANSLATORS: a package requires the system to be restarted due to a
+#. security update
 #: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
 msgstr "Sistema berrabiaraztea (segurtasunagatik) eskatu du honek:"
 
-#. TRANSLATORS: a package requires the session to be restarted due to a security update
+#. TRANSLATORS: a package requires the session to be restarted due to a
+#. security update
 #: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
 msgstr "Sistema berrabiaraztea (seguratasunagatik) eskatua:"
@@ -239,7 +245,8 @@ msgstr "Aplikazioa berrabiaraztea eskatu du honek:"
 msgid "Package description"
 msgstr "Paketearen deskribapena"
 
-#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#. TRANSLATORS: This a message (like a little note that may be of interest)
+#. from the transaction
 #: ../client/pk-console.c:537
 msgid "Message:"
 msgstr "Mezua:"
@@ -274,7 +281,8 @@ msgstr "Emaitzak:"
 msgid "Fatal error"
 msgstr "Errore larria"
 
-#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#. TRANSLATORS: the user asked to update everything, but there is nothing that
+#. can be updated
 #: ../client/pk-console.c:701
 msgid "There are no packages to update."
 msgstr "Ez da paketerik eguneratu behar."
@@ -306,48 +314,50 @@ msgstr "Amaitu saioa eta hasi saioa eguneraketa osatzeko."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
 #: ../client/pk-console.c:829
-msgid ""
-"Please restart the computer to complete the update as important security "
-"updates have been installed."
+msgid "Please restart the computer to complete the update as important security updates have been installed."
 msgstr "Berrabiarazi ordenagailua eguneraketa osatzeko, segurtasun-eguneraketa garrantzitsuak instalatu baitira."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
 #: ../client/pk-console.c:832
-msgid ""
-"Please logout and login to complete the update as important security updates "
-"have been installed."
+msgid "Please logout and login to complete the update as important security updates have been installed."
 msgstr "Amaitu saioa eta hasi berriro saioa eguneraketa osatzeko, segurtasun-eguneraketa garrantzitsuak instalatu baitira."
 
-#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
+#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon
+#. install-local dave.rpm'
 #: ../client/pk-console.c:858
 #, c-format
-msgid ""
-"Expected package name, actually got file. Try using 'pkcon install-local %s' "
-"instead."
+msgid "Expected package name, actually got file. Try using 'pkcon install-local %s' instead."
 msgstr "Pakete-izena espero zen, fitxategia eskuratu da. Saiatu  'pkcon install-local %s' erabiltzen."
 
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the list of files for the package.
+#. The detailed error follows
 #: ../client/pk-console.c:866
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Tresna honek ez du aurkitu paketerik eskuragarri: %s"
 
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the list of files for the package.
+#. The detailed error follows
 #: ../client/pk-console.c:894
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Tresna honek ez du aurkitu instalatutako paketea: %s"
 
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the list of files for the package.
+#. The detailed error follows
 #: ../client/pk-console.c:922 ../client/pk-console.c:950
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Tresna honek ez du aurkitu paketea: %s"
 
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
+#. TRANSLATORS: There was an error getting the list of files for the package.
+#. The detailed error follows
+#. TRANSLATORS: There was an error getting the dependencies for the package.
+#. The detailed error follows
+#. TRANSLATORS: There was an error getting the details about the package. The
+#. detailed error follows
+#. TRANSLATORS: The package name was not found in any software sources. The
+#. detailed error follows
 #: ../client/pk-console.c:978 ../client/pk-console.c:1006
 #: ../client/pk-console.c:1034 ../client/pk-console.c:1062
 #: ../client/pk-console.c:1090
@@ -355,7 +365,8 @@ msgstr "Tresna honek ez du aurkitu paketea: %s"
 msgid "This tool could not find all the packages: %s"
 msgstr "Tresna honek ez du aurkitu pakete guztiak: %s"
 
-#. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
+#. TRANSLATORS: This is when the daemon crashed, and we are up shit creek
+#. without a paddle
 #: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
 msgstr "Deabruak huts egin du transakzioaren erdian!"
@@ -370,7 +381,8 @@ msgstr "PackageKit-en kontsola-interfazea"
 msgid "Subcommands:"
 msgstr "Azpikomandoak:"
 
-#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#. TRANSLATORS: we keep a database updated with the time that an action was
+#. last executed
 #: ../client/pk-console.c:1234
 msgid "Failed to get the time since this action was last completed"
 msgstr "Ezin izan da jakin ekintza hau azken aldiz egin zenetik igaro den denbora"
@@ -408,8 +420,7 @@ msgstr "Exekutatu komandoa banda-zabalera inaktiboa eta energia gutxiago erabili
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
 #: ../client/pk-console.c:1293
-msgid ""
-"Print to screen a machine readable output, rather than using animated widgets"
+msgid "Print to screen a machine readable output, rather than using animated widgets"
 msgstr "Idatzi pantailan makinak irakur dezakeen irteera, widget animatuak erabili ordez"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
@@ -473,7 +484,8 @@ msgstr "Mota bat, key_id bat eta package_id bat behar dira"
 msgid "A package name to remove is required"
 msgstr "Pakete-izen bat behar da kendua izateko"
 
-#. TRANSLATORS: the user did not specify anything about what to download or where
+#. TRANSLATORS: the user did not specify anything about what to download or
+#. where
 #: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
 msgstr "Helburu-direktorio bat eta pakete-izenak behar dira deskargarako"
@@ -526,7 +538,8 @@ msgstr "Eginkizun zuzena behar da"
 msgid "A package name is required"
 msgstr "Pakete-izen bat behar da"
 
-#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
+#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-
+#. decoder-mp3), the user didn't specify it
 #: ../client/pk-console.c:1670
 msgid "A package provide string is required"
 msgstr "Pakete-eskaintzaren kate bat behar da"
@@ -541,7 +554,8 @@ msgstr "Banaketa-izen bat behar da"
 msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
 msgstr "Bertsio-berritze mota bat behar da, adib. 'minimal', 'default' edo 'complete'"
 
-#. TRANSLATORS: The user tried to use an unsupported option on the command line
+#. TRANSLATORS: The user tried to use an unsupported option on the command
+#. line
 #: ../client/pk-console.c:1770
 #, c-format
 msgid "Option '%s' is not supported"
@@ -552,7 +566,8 @@ msgstr "'%s' aukera ez dago onartuta"
 msgid "Command failed"
 msgstr "Komandoak huts egin du"
 
-#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
+#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll
+#. exist on the target
 #: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Ezarri baztertuko diren mendekotasunen fitxategi-izena"
@@ -587,25 +602,28 @@ msgstr "Bi aukerak hautatu dira."
 msgid "A output directory or file name is required"
 msgstr "Irteerako direktorio edo fitxategi-izen bat behar da"
 
-#. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
+#. TRANSLATORS: This is when the daemon is not-installed/broken and fails to
+#. startup
 #: ../client/pk-generate-pack.c:340
 msgid "The daemon failed to startup"
 msgstr "Ezin izan da deabrua abiarazi"
 
-#. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
-#. TRANSLATORS: This is when the backend doesn't have the capability to download
+#. TRANSLATORS: This is when the backend doesn't have the capability to get-
+#. depends
+#. TRANSLATORS: This is when the backend doesn't have the capability to
+#. download
 #: ../client/pk-generate-pack.c:351 ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
 msgstr "Pakete-kudeatzaileak ezin du mota honetako eragiketarik egin."
 
-#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#. TRANSLATORS: This is when the distro didn't include libarchive support into
+#. PK
 #: ../client/pk-generate-pack.c:364
-msgid ""
-"Service packs cannot be created as PackageKit was not built with libarchive "
-"support."
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
 msgstr "Zerbitzu-paketeak ezin dira sortu, PackageKit ez baita eraiki libarchive-ren euskarriarekin."
 
-#. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
+#. TRANSLATORS: the user specified an absolute path, but didn't get the
+#. extension correct
 #: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Fitxategi bat adierazten bada, zerbitzu-paketearen izenaren amaiera honek izan behar du:"
@@ -620,12 +638,14 @@ msgstr "Jadanik existitzen da izen bera duen pakete bat, gainidatzi nahi al duzu
 msgid "The pack was not overwritten."
 msgstr "Paketea ez da gainidatzi."
 
-#. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
+#. TRANSLATORS: This is when the temporary directory cannot be created, the
+#. directory name follows
 #: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "Direktorioaren sorrerak huts egin du:"
 
-#. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
+#. TRANSLATORS: This is when the list of packages from the remote computer
+#. cannot be opened
 #: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
 msgstr "Ezin iza da pakete-zerrenda ireki."
@@ -635,13 +655,15 @@ msgstr "Ezin iza da pakete-zerrenda ireki."
 msgid "Finding package name."
 msgstr "Pakete-izena bilatzen."
 
-#. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
+#. TRANSLATORS: This is when the package cannot be found in any software
+#. source. The detailed error follows
 #: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Ezin izan da  '%s' paketea aurkitu: %s"
 
-#. TRANSLATORS: This is telling the user we are in the process of making the pack
+#. TRANSLATORS: This is telling the user we are in the process of making the
+#. pack
 #: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
 msgstr "Zerbitzu-paketea sortzen..."
@@ -804,7 +826,8 @@ msgstr "Hautatu exekutatuko den komandoa"
 msgid "The package providing this file is:"
 msgstr "Fitxategi honetaz hornitzen duen paketea hau da:"
 
-#. TRANSLATORS: as the user if we want to install a package to provide the command
+#. TRANSLATORS: as the user if we want to install a package to provide the
+#. command
 #: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
@@ -815,7 +838,8 @@ msgstr "Instalatu  '%s' paketea  '%s' komandoaz hornitzeko?"
 msgid "Packages providing this file are:"
 msgstr "Fitxategi honetaz hornitzen duten paketeak hauek dira:"
 
-#. TRANSLATORS: Show the user a list of packages that they can install to provide this command
+#. TRANSLATORS: Show the user a list of packages that they can install to
+#. provide this command
 #: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
 msgstr "Pakete egokiak hauek dira:"
@@ -837,13 +861,14 @@ msgstr "Instalazioa abiarazten"
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "Ez da %s paketea aurkitu, edo jadanik instalatuta dago: %s"
 
-#. command line argument, simulate what would be done, but don't actually do it
+#. command line argument, simulate what would be done, but don't actually do
+#. it
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
-msgid ""
-"Don't actually install any packages, only simulate what would be installed"
+msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "Ez instalatu paketerik, instalatuko dela simulatu soilik"
 
-#. command line argument, do we skip packages that depend on the ones specified
+#. command line argument, do we skip packages that depend on the ones
+#. specified
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
 msgstr "Ez instalatu oinarrizko paketeen mendekotasunak"
@@ -858,7 +883,8 @@ msgstr "Ez erakutsi ez informaziorik ez aurrerapenik"
 msgid "PackageKit Debuginfo Installer"
 msgstr "PackageKit-en arazketa-informazioko instalatzailea"
 
-#. TRANSLATORS: the use needs to specify a list of package names on the command line
+#. TRANSLATORS: the use needs to specify a list of package names on the
+#. command line
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
 #, c-format
 msgid "ERROR: Specify package names to install."
@@ -976,13 +1002,15 @@ msgstr "%i pakete gehigarri aurkitu dira."
 msgid "No extra packages required."
 msgstr "Ez da pakete gehigarririk behar."
 
-#. TRANSLATORS: tell the user we found some packages (and deps), and then list them
+#. TRANSLATORS: tell the user we found some packages (and deps), and then list
+#. them
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Instalatzeko %i pakete aurkitu dira:"
 
-#. TRANSLATORS: simulate mode is a testing mode where we quit before the action
+#. TRANSLATORS: simulate mode is a testing mode where we quit before the
+#. action
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Not installing packages in simulate mode"
@@ -1008,7 +1036,8 @@ msgstr "Ezin dira paketeak instalatu: %s"
 msgid "Disabling sources previously enabled"
 msgstr "Aurretiaz gaitutako jatorriak desgaitzen"
 
-#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
+#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed
+#. error follows
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
@@ -1065,7 +1094,8 @@ msgstr "Gailuaren bide-izena ez da zuzena"
 msgid "Show extra debugging information"
 msgstr "Erakutsi arazketa-informazio gehigarria"
 
-#. command line argument, simulate what would be done, but don't actually do it
+#. command line argument, simulate what would be done, but don't actually do
+#. it
 #: ../contrib/device-rebind/pk-device-rebind.c:297
 msgid "Don't actually touch the hardware, only simulate what would be done"
 msgstr "Ez ukitu hardwarea, soilik simulatu zer egingo litzatekeen"
@@ -1075,7 +1105,8 @@ msgstr "Ez ukitu hardwarea, soilik simulatu zer egingo litzatekeen"
 msgid "Device paths"
 msgstr "Gailuen bide-izenak"
 
-#. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
+#. TRANSLATORS: tool that gets called when the device needs reloading after
+#. installing firmware
 #: ../contrib/device-rebind/pk-device-rebind.c:315
 msgid "PackageKit Device Reloader"
 msgstr "PackageKit-en gailu-birkargatzailea"
@@ -1127,7 +1158,8 @@ msgstr "PackageKit zerbitzu-paketea"
 msgid "Please enter a number from 1 to %i: "
 msgstr "Sartu 1etik %i-(e)ra arteko zenbaki bat: "
 
-#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#. TRANSLATORS: more than one package could be found that matched, to follow
+#. is a list of possible packages
 #: ../lib/packagekit-glib2/pk-console-shared.c:189
 msgid "More than one package matches:"
 msgstr "Pakete bat baino gehiago dator bat:"
@@ -1147,7 +1179,8 @@ msgstr "Egoera ezezaguna"
 msgid "Starting"
 msgstr "Abiarazten"
 
-#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#. TRANSLATORS: transaction state, the transaction is waiting for another to
+#. complete
 #: ../lib/packagekit-glib2/pk-console-shared.c:263
 msgid "Waiting in queue"
 msgstr "Ilaran itxaroten"
@@ -1189,7 +1222,8 @@ msgstr "Software-zerrenda freskatzen"
 msgid "Installing updates"
 msgstr "Eguneraketak instalatzen"
 
-#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config
+#. files
 #: ../lib/packagekit-glib2/pk-console-shared.c:299
 msgid "Cleaning up packages"
 msgstr "Paketeak garbitzen"
@@ -1204,7 +1238,8 @@ msgstr "Paketeak zaharkitzen"
 msgid "Resolving dependencies"
 msgstr "Mendekotasunak ebazten"
 
-#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#. TRANSLATORS: transaction state, checking if we have all the security keys
+#. for the operation
 #: ../lib/packagekit-glib2/pk-console-shared.c:311
 msgid "Checking signatures"
 msgstr "Sinadurak egiaztatzen"
@@ -1221,7 +1256,8 @@ msgstr "Aurreko transakzio batera itzultzen"
 msgid "Testing changes"
 msgstr "Aldaketak probatzen"
 
-#. TRANSLATORS: transaction state, when we're writing to the system package database
+#. TRANSLATORS: transaction state, when we're writing to the system package
+#. database
 #: ../lib/packagekit-glib2/pk-console-shared.c:323
 msgid "Committing changes"
 msgstr "Aldaketak aplikatzen"
@@ -1286,12 +1322,14 @@ msgstr "Katxea kargatzen"
 msgid "Scanning applications"
 msgstr "Aplikazioak eskaneatzen"
 
-#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#. TRANSLATORS: transaction state, generating a list of packages installed on
+#. the system
 #: ../lib/packagekit-glib2/pk-console-shared.c:375
 msgid "Generating package lists"
 msgstr "Pakete-zerrenda sortzen"
 
-#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to
+#. exit
 #: ../lib/packagekit-glib2/pk-console-shared.c:379
 msgid "Waiting for package manager lock"
 msgstr "Pakete-kudeatzailearen blokeoa itxaroten"
@@ -1306,17 +1344,20 @@ msgstr "Autentifikaziorako itxaroten"
 msgid "Updating running applications"
 msgstr "Abioan dauden aplikazioak eguneratzen"
 
-#. TRANSLATORS: transaction state, we are checking executable files currently in use
+#. TRANSLATORS: transaction state, we are checking executable files currently
+#. in use
 #: ../lib/packagekit-glib2/pk-console-shared.c:391
 msgid "Checking applications in use"
 msgstr "Abioan dauden aplikazioak egiaztatzen"
 
-#. TRANSLATORS: transaction state, we are checking for libraries currently in use
+#. TRANSLATORS: transaction state, we are checking for libraries currently in
+#. use
 #: ../lib/packagekit-glib2/pk-console-shared.c:395
 msgid "Checking libraries in use"
 msgstr "Erabiltzen ari diren liburutegiak egiaztatzen"
 
-#. TRANSLATORS: transaction state, we are copying package files before or after the transaction
+#. TRANSLATORS: transaction state, we are copying package files before or
+#. after the transaction
 #: ../lib/packagekit-glib2/pk-console-shared.c:399
 msgid "Copying files"
 msgstr "Fitxategiak kopiatzen"
@@ -1596,7 +1637,8 @@ msgstr "Arazketa-aukerak"
 msgid "Show debugging options"
 msgstr "Erakutsi arazketa-aukerak"
 
-#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#. TRANSLATORS: ask the user if they are comfortable installing insecure
+#. packages
 #: ../lib/packagekit-glib2/pk-task-text.c:67
 msgid "Do you want to allow installing of unsigned software?"
 msgstr "Sinatu gabeko softwarea instala dadin baimendu nahi duzu?"
@@ -1606,7 +1648,8 @@ msgstr "Sinatu gabeko softwarea instala dadin baimendu nahi duzu?"
 msgid "The unsigned software will not be installed."
 msgstr "Sinatu gabeko softwarea ez da instalatuko."
 
-#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#. TRANSLATORS: the package repository is signed by a key that is not
+#. recognised
 #: ../lib/packagekit-glib2/pk-task-text.c:121
 msgid "Software source signature required"
 msgstr "Software-jatorriaren sinadura behar da"
@@ -1651,7 +1694,8 @@ msgstr "Onartzen al duzu sinadura hau?"
 msgid "The signature was not accepted."
 msgstr "Sinadura ez da onartu."
 
-#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#. TRANSLATORS: this is another name for a software licence that has to be
+#. read before installing
 #: ../lib/packagekit-glib2/pk-task-text.c:203
 msgid "End user licence agreement required"
 msgstr "Azken erabiltzailearen lizentzia-kontratua behar da"
@@ -1741,7 +1785,7 @@ msgstr "Transakzioa ez da burutu."
 #. licence agreements.
 #. - Change this to 'auth_admin' for environments where users should not
 #. be given the option to make legal decisions.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:7
 msgid "Accept EULA"
 msgstr "Onartu EULA"
@@ -1751,8 +1795,7 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Autentifikazioa behar da EULA bat onartzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid ""
-"Authentication is required to cancel a task that was not started by yourself"
+msgid "Authentication is required to cancel a task that was not started by yourself"
 msgstr "Autentifikazioa behar da zerorrek abiarazi ez duzun zeregin bat bertan behera uzteko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
@@ -1760,14 +1803,11 @@ msgid "Authentication is required to change software source parameters"
 msgstr "Autentifikazioa behar da software-jatorrien parametroak aldatzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid ""
-"Authentication is required to change the location used to decompress packages"
+msgid "Authentication is required to change the location used to decompress packages"
 msgstr "Autentifikazioa behar da paketeak destrinkotzeko erabiltzen den kokapena aldatzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
+msgid "Authentication is required to consider a key used for signing packages as trusted"
 msgstr "Autentifikazioa behar da paketeak sinatzeko erabilitako gakoa fidagarrizat hartzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
@@ -1795,9 +1835,7 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "Autentifikazioa behar da transakzio bat atzera botatzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
+msgid "Authentication is required to set the network proxy used for downloading packages"
 msgstr "Autentifikazioa behar da paketeak deskargatzeko erabiliko den sareko proxy-a ezartzeko"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:20
@@ -1812,7 +1850,7 @@ msgstr "Autentifikazioa behar da sistema eragilea bertsioz berritzeko"
 #. - Normal users are allowed to cancel their own task without
 #. authentication, but a different user id needs the admin password
 #. to cancel another users task.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:27
 msgid "Cancel foreign task"
 msgstr "Utzi zeregin arrotza"
@@ -1822,7 +1860,7 @@ msgstr "Utzi zeregin arrotza"
 #. instance to a LTSP image or a virtual machine.
 #. - This could be used to overwrite files not owned by the user using
 #. a carefully created package file.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:34
 msgid "Change location that packages are installed"
 msgstr "Aldatu paketeak instalatuko diren kokapena"
@@ -1831,7 +1869,7 @@ msgstr "Aldatu paketeak instalatuko diren kokapena"
 #. - Normal users require admin authentication to enable or disable
 #. software sources as this can be used to enable new updates or
 #. install different versions of software.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:40
 msgid "Change software source parameters"
 msgstr "Aldatu software-jatorrien parametroak"
@@ -1841,7 +1879,7 @@ msgstr "Aldatu software-jatorrien parametroak"
 #. from signed repositories, as this cannot exploit a system.
 #. - Paranoid users (or parents!) can change this to 'auth_admin' or
 #. 'auth_admin_keep'.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:47
 msgid "Install signed package"
 msgstr "Instalatu sinatutako paketea"
@@ -1851,7 +1889,7 @@ msgstr "Instalatu sinatutako paketea"
 #. unrecognised packages, as allowing users to do this without a
 #. password would be a massive security hole.
 #. - This is not retained as each package should be authenticated.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:54
 msgid "Install untrusted local file"
 msgstr "Instalatu fidagarria ez den fitxategi lokala"
@@ -1859,7 +1897,7 @@ msgstr "Instalatu fidagarria ez den fitxategi lokala"
 #. SECURITY:
 #. - Normal users do not require admin authentication to refresh the
 #. cache, as this doesn't actually install or remove software.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Refresh system sources"
 msgstr "Freskatu sistemaren jatorriak"
@@ -1870,17 +1908,21 @@ msgstr "Freskatu sistemaren jatorriak"
 #. - This should not be set to 'yes' as unprivileged users could then
 #. try to rebind drivers in use, for instance security authentication
 #. devices.
-#.
+#. 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:67
 msgid "Reload a device"
 msgstr "Birkargatu gailu bat"
 
 #. SECURITY:
-#. - Normal users require admin authentication to upgrade the disto as
+#. - Normal users require admin authentication to remove packages as
 #. this can make the system unbootable or stop other applications from
 #. working.
-#.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:73
+#. - Be sure to close the tool used to remove the packages after the
+#. admin authentication has been obtained, otherwise packages can still
+#. be removed. If this is not possible, change this authentication to
+#. 'auth_admin'.
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Remove package"
 msgstr "Kendu paketea"
 
@@ -1888,16 +1930,16 @@ msgstr "Kendu paketea"
 #. - Normal users require admin authentication to rollback system state
 #. as this will change a large number of packages, and could expose the
 #. system to previously patched security vulnerabilities.
-#.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:79
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:83
 msgid "Rollback to a previous transaction"
 msgstr "Itzuli aurreko transakzio batera"
 
 #. SECURITY:
 #. - Normal users do not require admin authentication to set the proxy
 #. used for downloading packages.
-#.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:84
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:88
 msgid "Set network proxy"
 msgstr "Ezarri sarearen proxy-a"
 
@@ -1906,8 +1948,8 @@ msgstr "Ezarri sarearen proxy-a"
 #. - This implies adding an explicit trust, and should not be granted
 #. without a secure authentication.
 #. - This is not kept as each package should be authenticated.
-#.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:91
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:95
 msgid "Trust a key used for signing packages"
 msgstr "Fidatu paketeak sinatzeko erabili den gako batetaz"
 
@@ -1917,11 +1959,20 @@ msgstr "Fidatu paketeak sinatzeko erabili den gako batetaz"
 #. to update the system when unattended.
 #. - Changing this to anything other than 'yes' will break unattended
 #. updates.
-#.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:99
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:103
 msgid "Update packages"
 msgstr "Eguneratu paketeak"
 
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#. 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:109
+msgid "Upgrade System"
+msgstr "Eguneratu sistema"
+
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
@@ -1939,9 +1990,7 @@ msgstr "Exekutagarria ez du erabiltzaile egokiak (normalean root) abiarazi"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
 msgstr "org.freedesktop.PackageKit.conf fitxategia ez dago instalatuta sistemaren direktorioan:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
@@ -1984,7 +2033,8 @@ msgstr "PackageKit zerbitzua"
 msgid "Cannot connect to the system bus"
 msgstr "Ezin izan da sistemaren busera konektatu"
 
-#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error
+#. follows
 #: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "Errorea abiaraztean:"
commit 277acffc2e5adca25a31365cf73f8243b91651a5
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Nov 25 16:51:15 2010 -0200

    aptcc: Make sure the package is valid before some operations

diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index 118c5df..a7e5d6d 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -552,6 +552,9 @@ backend_what_provides_thread (PkBackend *backend)
 			    break;
 			}
 			pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(i->c_str());
+            if (pkg.end() == true) {
+                continue;
+            }
 			pkgCache::VerIterator ver = m_apt->find_ver(pkg);
 			if (ver.end() == true) {
 				continue;
@@ -559,7 +562,7 @@ backend_what_provides_thread (PkBackend *backend)
 			output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
 		}
 
-		if (error) {
+		if (error && provides == PK_PROVIDES_ENUM_MIMETYPE) {
 			// check if app-install-data is installed
 			pkgCache::PkgIterator pkg;
 			pkg = m_apt->packageCache->FindPkg("app-install-data");
@@ -909,6 +912,9 @@ pk_backend_search_files_thread (PkBackend *backend)
 			    break;
 			}
 			pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(i->c_str());
+            if (pkg.end() == true) {
+                continue;
+            }
 			pkgCache::VerIterator ver = m_apt->find_ver(pkg);
 			if (ver.end() == true)
 			{
commit 2690c25e6a0ba51c7bd809a421f87ff98995d6b5
Author: assar <asiersar at yahoo.com>
Date:   Thu Nov 25 16:08:07 2010 +0000

    l10n: Updated Basque (eu) translation to 100%
    
    New status: 374 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/eu.po b/po/eu.po
index 25ca0ad..a5bf3da 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -3,8 +3,7 @@
 # Asier Sarasua Garmendia <asiersar at yahoo.com>, 2010.
 #
 msgid ""
-msgstr ""
-"Project-Id-Version: packagekit\n"
+msgstr "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-11-07 07:14+0000\n"
 "PO-Revision-Date: 2010-08-12 01:19+0100\n"
@@ -384,7 +383,7 @@ msgstr "Erakutsi programaren bertsioa eta irten"
 #. TRANSLATORS: command line argument, use a filter to narrow down results
 #: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
-msgstr "Ezarri iragazkia, adib. instalatua"
+msgstr "Ezarri iragazkia, adib. 'instalatua'"
 
 #. TRANSLATORS: command line argument, use a non-standard install prefix
 #: ../client/pk-console.c:1281
@@ -405,7 +404,7 @@ msgstr "Instalatu paketeak baieztapena eskatu gabe"
 #. TRANSLATORS: command line argument, this command is not a priority
 #: ../client/pk-console.c:1290
 msgid "Run the command using idle network bandwidth and also using less power"
-msgstr "Exekutatu komandoa banda-zabalera inaktiboa eta argindar gutxiago erabilita"
+msgstr "Exekutatu komandoa banda-zabalera inaktiboa eta energia gutxiago erabilita"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
 #: ../client/pk-console.c:1293
@@ -1203,7 +1202,7 @@ msgstr "Paketeak zaharkitzen"
 #. TRANSLATORS: transaction state, checking the transaction before we do it
 #: ../lib/packagekit-glib2/pk-console-shared.c:307
 msgid "Resolving dependencies"
-msgstr "Mendekotasunak konpontzen"
+msgstr "Mendekotasunak ebazten"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
 #: ../lib/packagekit-glib2/pk-console-shared.c:311
commit 200dd20cf1d90699f8180be60babc1d2329902c5
Author: assar <asiersar at yahoo.com>
Date:   Thu Nov 25 15:44:15 2010 +0000

    l10n: Basque translation added to PackageKit
    
    New status: 374 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..25ca0ad
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,2026 @@
+# Basque translation of PackageKit.
+# This file is distributed under the same license as the PackageKit package.
+# Asier Sarasua Garmendia <asiersar at yahoo.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: packagekit\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 07:14+0000\n"
+"PO-Revision-Date: 2010-08-12 01:19+0100\n"
+"Last-Translator: Asier Sarasua Garmendia <asiersar at yahoo.com>\n"
+"Language-Team: Librezale <librezale at librezale.org>\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"
+
+#. TRANSLATORS: this is an atomic transaction
+#. TRANSLATORS: the role is the point of the transaction, e.g. update-system
+#: ../client/pk-console.c:174 ../client/pk-console.c:596
+msgid "Transaction"
+msgstr "Transakzioa"
+
+#. TRANSLATORS: this is the time the transaction was started in system timezone
+#: ../client/pk-console.c:176
+msgid "System time"
+msgstr "Sistemaren ordua"
+
+#. TRANSLATORS: this is if the transaction succeeded or not
+#: ../client/pk-console.c:178
+msgid "Succeeded"
+msgstr "Arrakasta"
+
+#: ../client/pk-console.c:178
+msgid "True"
+msgstr "Egia"
+
+#: ../client/pk-console.c:178
+msgid "False"
+msgstr "Gezurra"
+
+#. TRANSLATORS: this is the transactions role, e.g. "update-system"
+#. TRANSLATORS: the trasaction role, e.g. update-system
+#: ../client/pk-console.c:180 ../src/pk-polkit-action-lookup.c:332
+msgid "Role"
+msgstr "Eginkizuna"
+
+#. TRANSLATORS: this is The duration of the transaction
+#: ../client/pk-console.c:185
+msgid "Duration"
+msgstr "Iraupena"
+
+#: ../client/pk-console.c:185
+msgid "(seconds)"
+msgstr "(segundo)"
+
+#. TRANSLATORS: this is The command line used to do the action
+#. TRANSLATORS: the command line of the thing that wants the authentication
+#: ../client/pk-console.c:189 ../src/pk-polkit-action-lookup.c:346
+msgid "Command line"
+msgstr "Komando-lerroa"
+
+#. TRANSLATORS: this is the user ID of the user that started the action
+#: ../client/pk-console.c:191
+msgid "User ID"
+msgstr "Erabiltzaile-IDa"
+
+#. TRANSLATORS: this is the username, e.g. hughsie
+#: ../client/pk-console.c:198
+msgid "Username"
+msgstr "Erabiltzaile-izena"
+
+#. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
+#: ../client/pk-console.c:202
+msgid "Real name"
+msgstr "Benetako izena"
+
+#: ../client/pk-console.c:210
+msgid "Affected packages:"
+msgstr "Aldatuko diren paketeak:"
+
+#: ../client/pk-console.c:212
+msgid "Affected packages: None"
+msgstr "Aldatuko diren paketeak: Bat ere ez"
+
+#. TRANSLATORS: this is the distro, e.g. Fedora 10
+#: ../client/pk-console.c:247
+msgid "Distribution"
+msgstr "Banaketa"
+
+#. TRANSLATORS: this is type of update, stable or testing
+#: ../client/pk-console.c:249
+msgid "Type"
+msgstr "Mota"
+
+#. TRANSLATORS: this is any summary text describing the upgrade
+#. TRANSLATORS: this is the summary of the group
+#: ../client/pk-console.c:251 ../client/pk-console.c:290
+msgid "Summary"
+msgstr "Laburpena"
+
+#. TRANSLATORS: this is the group category name
+#: ../client/pk-console.c:279
+msgid "Category"
+msgstr "Kategoria"
+
+#. TRANSLATORS: this is group identifier
+#: ../client/pk-console.c:281
+msgid "ID"
+msgstr "IDa"
+
+#. TRANSLATORS: this is the parent group
+#: ../client/pk-console.c:284
+msgid "Parent"
+msgstr "Gurasoa"
+
+#. TRANSLATORS: this is the name of the parent group
+#: ../client/pk-console.c:287
+msgid "Name"
+msgstr "Izena"
+
+#. TRANSLATORS: this is preferred icon for the group
+#: ../client/pk-console.c:293
+msgid "Icon"
+msgstr "Ikonoa"
+
+#. TRANSLATORS: this is a header for the package that can be updated
+#: ../client/pk-console.c:339
+msgid "Details about the update:"
+msgstr "Eguneraketari buruzko xehetasunak:"
+
+#. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is being processed
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
+#. TRANSLATORS: title, the names of the packages that the method is processing
+#: ../client/pk-console.c:345 ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
+#: ../src/pk-polkit-action-lookup.c:357
+msgid "Package"
+msgid_plural "Packages"
+msgstr[0] "Paketea"
+msgstr[1] "Paketeak"
+
+#. TRANSLATORS: details about the update, any packages that this update updates
+#: ../client/pk-console.c:348
+msgid "Updates"
+msgstr "Eguneraketak"
+
+#. TRANSLATORS: details about the update, any packages that this update obsoletes
+#: ../client/pk-console.c:352
+msgid "Obsoletes"
+msgstr "Zaharkituak"
+
+#. TRANSLATORS: details about the update, the vendor URLs
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:356 ../lib/packagekit-glib2/pk-task-text.c:209
+msgid "Vendor"
+msgstr "Hornitzailea"
+
+#. TRANSLATORS: details about the update, the bugzilla URLs
+#: ../client/pk-console.c:360
+msgid "Bugzilla"
+msgstr "Bugzilla"
+
+#. TRANSLATORS: details about the update, the CVE URLs
+#: ../client/pk-console.c:364
+msgid "CVE"
+msgstr "CVE"
+
+#. TRANSLATORS: details about the update, if the package requires a restart
+#: ../client/pk-console.c:368
+msgid "Restart"
+msgstr "Berrabiarazi"
+
+#. TRANSLATORS: details about the update, any description of the update
+#: ../client/pk-console.c:372
+msgid "Update text"
+msgstr "Eguneraketa-testua"
+
+#. TRANSLATORS: details about the update, the changelog for the package
+#: ../client/pk-console.c:376
+msgid "Changes"
+msgstr "Aldaketak"
+
+#. TRANSLATORS: details about the update, the ongoing state of the update
+#: ../client/pk-console.c:380
+msgid "State"
+msgstr "Egoera"
+
+#. TRANSLATORS: details about the update, date the update was issued
+#: ../client/pk-console.c:384
+msgid "Issued"
+msgstr "Igorria"
+
+#. TRANSLATORS: details about the update, date the update was updated
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:388 ../lib/packagekit-glib2/pk-console-shared.c:515
+msgid "Updated"
+msgstr "Eguneratua"
+
+#. TRANSLATORS: if the repo is enabled
+#: ../client/pk-console.c:424
+msgid "Enabled"
+msgstr "Gaitua"
+
+#. TRANSLATORS: if the repo is disabled
+#: ../client/pk-console.c:427
+msgid "Disabled"
+msgstr "Desgaitua"
+
+#. TRANSLATORS: a package requires the system to be restarted
+#: ../client/pk-console.c:459
+msgid "System restart required by:"
+msgstr "Sistema berrabiaraztea eskatu du honek:"
+
+#. TRANSLATORS: a package requires the session to be restarted
+#: ../client/pk-console.c:462
+msgid "Session restart required:"
+msgstr "Sistema berrabiaraztea eskatua:"
+
+#. TRANSLATORS: a package requires the system to be restarted due to a security update
+#: ../client/pk-console.c:465
+msgid "System restart (security) required by:"
+msgstr "Sistema berrabiaraztea (segurtasunagatik) eskatu du honek:"
+
+#. TRANSLATORS: a package requires the session to be restarted due to a security update
+#: ../client/pk-console.c:468
+msgid "Session restart (security) required:"
+msgstr "Sistema berrabiaraztea (seguratasunagatik) eskatua:"
+
+#. TRANSLATORS: a package requires the application to be restarted
+#: ../client/pk-console.c:471
+msgid "Application restart required by:"
+msgstr "Aplikazioa berrabiaraztea eskatu du honek:"
+
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:506
+msgid "Package description"
+msgstr "Paketearen deskribapena"
+
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:537
+msgid "Message:"
+msgstr "Mezua:"
+
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:558
+msgid "No files"
+msgstr "Fitxategirik ez"
+
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:563
+msgid "Package files"
+msgstr "Pakete-fitxategiak"
+
+#. TRANSLATORS: the percentage complete of the transaction
+#: ../client/pk-console.c:631
+msgid "Percentage"
+msgstr "Ehunekoa"
+
+#. TRANSLATORS: the status of the transaction (e.g. downloading)
+#: ../client/pk-console.c:649
+msgid "Status"
+msgstr "Egoera"
+
+#. TRANSLATORS: the results from the transaction
+#: ../client/pk-console.c:678
+msgid "Results:"
+msgstr "Emaitzak:"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:685
+msgid "Fatal error"
+msgstr "Errore larria"
+
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "Ez da paketerik eguneratu behar."
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
+msgid "The transaction failed"
+msgstr "Transakzioak huts egin du"
+
+#. TRANSLATORS: print a message when there are no updates
+#: ../client/pk-console.c:733
+msgid "There are no updates available at this time."
+msgstr "Ez dago eguneraketarik uneotan."
+
+#: ../client/pk-console.c:756
+msgid "There are no upgrades available at this time."
+msgstr "Ez dago bertsio-berritzerik uneotan."
+
+#. TRANSLATORS: a package needs to restart their system
+#: ../client/pk-console.c:823
+msgid "Please restart the computer to complete the update."
+msgstr "Berrabiarazi ordenagailua eguneraketa osatzeko."
+
+#. TRANSLATORS: a package needs to restart the session
+#: ../client/pk-console.c:826
+msgid "Please logout and login to complete the update."
+msgstr "Amaitu saioa eta hasi saioa eguneraketa osatzeko."
+
+#. TRANSLATORS: a package needs to restart their system (due to security)
+#: ../client/pk-console.c:829
+msgid ""
+"Please restart the computer to complete the update as important security "
+"updates have been installed."
+msgstr "Berrabiarazi ordenagailua eguneraketa osatzeko, segurtasun-eguneraketa garrantzitsuak instalatu baitira."
+
+#. TRANSLATORS: a package needs to restart the session (due to security)
+#: ../client/pk-console.c:832
+msgid ""
+"Please logout and login to complete the update as important security updates "
+"have been installed."
+msgstr "Amaitu saioa eta hasi berriro saioa eguneraketa osatzeko, segurtasun-eguneraketa garrantzitsuak instalatu baitira."
+
+#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
+#: ../client/pk-console.c:858
+#, c-format
+msgid ""
+"Expected package name, actually got file. Try using 'pkcon install-local %s' "
+"instead."
+msgstr "Pakete-izena espero zen, fitxategia eskuratu da. Saiatu  'pkcon install-local %s' erabiltzen."
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:866
+#, c-format
+msgid "This tool could not find any available package: %s"
+msgstr "Tresna honek ez du aurkitu paketerik eskuragarri: %s"
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:894
+#, c-format
+msgid "This tool could not find the installed package: %s"
+msgstr "Tresna honek ez du aurkitu instalatutako paketea: %s"
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:922 ../client/pk-console.c:950
+#, c-format
+msgid "This tool could not find the package: %s"
+msgstr "Tresna honek ez du aurkitu paketea: %s"
+
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
+#. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
+#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
+#: ../client/pk-console.c:978 ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034 ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
+#, c-format
+msgid "This tool could not find all the packages: %s"
+msgstr "Tresna honek ez du aurkitu pakete guztiak: %s"
+
+#. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
+#: ../client/pk-console.c:1119
+msgid "The daemon crashed mid-transaction!"
+msgstr "Deabruak huts egin du transakzioaren erdian!"
+
+#. TRANSLATORS: This is the header to the --help menu
+#: ../client/pk-console.c:1153
+msgid "PackageKit Console Interface"
+msgstr "PackageKit-en kontsola-interfazea"
+
+#. these are commands we can use with pkcon
+#: ../client/pk-console.c:1155
+msgid "Subcommands:"
+msgstr "Azpikomandoak:"
+
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:1234
+msgid "Failed to get the time since this action was last completed"
+msgstr "Ezin izan da jakin ekintza hau azken aldiz egin zenetik igaro den denbora"
+
+#. TRANSLATORS: command line argument, just show the version string
+#: ../client/pk-console.c:1275 ../client/pk-monitor.c:371
+msgid "Show the program version and exit"
+msgstr "Erakutsi programaren bertsioa eta irten"
+
+#. TRANSLATORS: command line argument, use a filter to narrow down results
+#: ../client/pk-console.c:1278
+msgid "Set the filter, e.g. installed"
+msgstr "Ezarri iragazkia, adib. instalatua"
+
+#. TRANSLATORS: command line argument, use a non-standard install prefix
+#: ../client/pk-console.c:1281
+msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
+msgstr "Ezarri instalazio-erroa, adib. '/' edo '/mnt/ltsp'"
+
+#. TRANSLATORS: command line argument, work asynchronously
+#: ../client/pk-console.c:1284
+msgid "Exit without waiting for actions to complete"
+msgstr "Irten ekintzak osatu daitezen itxaron gabe"
+
+#. command line argument, do we ask questions
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
+msgid "Install the packages without asking for confirmation"
+msgstr "Instalatu paketeak baieztapena eskatu gabe"
+
+#. TRANSLATORS: command line argument, this command is not a priority
+#: ../client/pk-console.c:1290
+msgid "Run the command using idle network bandwidth and also using less power"
+msgstr "Exekutatu komandoa banda-zabalera inaktiboa eta argindar gutxiago erabilita"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1293
+msgid ""
+"Print to screen a machine readable output, rather than using animated widgets"
+msgstr "Idatzi pantailan makinak irakur dezakeen irteera, widget animatuak erabili ordez"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr "Metadata-katxearen adin maximoa. Erabili -1 'inoiz ez' adierazteko."
+
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1333
+msgid "Failed to contact PackageKit"
+msgstr "Ezin izan da PackageKit-ekin kontaktatau"
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1381
+msgid "The proxy could not be set"
+msgstr "Ezin izan da proxy-a ezarri"
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1393
+msgid "The install root could not be set"
+msgstr "Ezin izan da instalazio-erroa ezarri"
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1405
+msgid "The filter specified was invalid"
+msgstr "Adierazitako iragazkia baliogabea da"
+
+#. TRANSLATORS: a search type can be name, details, file, etc
+#: ../client/pk-console.c:1424
+msgid "A search type is required, e.g. name"
+msgstr "Bilaketa-mota behar da, adib. izena"
+
+#. TRANSLATORS: the user needs to provide a search term
+#: ../client/pk-console.c:1431 ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455 ../client/pk-console.c:1467
+msgid "A search term is required"
+msgstr "Bilaketa-hitza behar da"
+
+#. TRANSLATORS: the search type was provided, but invalid
+#: ../client/pk-console.c:1477
+msgid "Invalid search type"
+msgstr "Bilaketa-mota baliogabea"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1483
+msgid "A package name to install is required"
+msgstr "Pakete-izen bat behar da instalaziorako"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1492
+msgid "A filename to install is required"
+msgstr "Fitxategi-izen bat behar da instalaziorako"
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1503
+msgid "A type, key_id and package_id are required"
+msgstr "Mota bat, key_id bat eta package_id bat behar dira"
+
+#. TRANSLATORS: the user did not specify what they wanted to remove
+#: ../client/pk-console.c:1514
+msgid "A package name to remove is required"
+msgstr "Pakete-izen bat behar da kendua izateko"
+
+#. TRANSLATORS: the user did not specify anything about what to download or where
+#: ../client/pk-console.c:1523
+msgid "A destination directory and the package names to download are required"
+msgstr "Helburu-direktorio bat eta pakete-izenak behar dira deskargarako"
+
+#. TRANSLATORS: the directory does not exist, so we can't continue
+#: ../client/pk-console.c:1530
+msgid "Directory not found"
+msgstr "Ez da direktorioa aurkitu"
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1539
+msgid "A licence identifier (eula-id) is required"
+msgstr "Lizentzia-identifikatzaile bat (eula-id) behar da"
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1550
+msgid "A transaction identifier (tid) is required"
+msgstr "Transakzio-identifikatzaile bat (tid) behar da"
+
+#. TRANSLATORS: The user did not specify a package name
+#: ../client/pk-console.c:1571
+msgid "A package name to resolve is required"
+msgstr "Pakete-izen bat behar da ebatzia izateko"
+
+#. TRANSLATORS: The user did not specify a repository (software source) name
+#: ../client/pk-console.c:1582 ../client/pk-console.c:1593
+msgid "A repository name is required"
+msgstr "Biltegi-izen bat behar da"
+
+#. TRANSLATORS: The user didn't provide any data
+#: ../client/pk-console.c:1604
+msgid "A repo name, parameter and value are required"
+msgstr "Biltegi-izen bat, parametro bat eta balio bat behar dira"
+
+#. TRANSLATORS: The user didn't specify what action to use
+#: ../client/pk-console.c:1621
+msgid "An action, e.g. 'update-system' is required"
+msgstr "Ekintza bat, adib. 'update-system', behar da"
+
+#. TRANSLATORS: The user specified an invalid action
+#: ../client/pk-console.c:1628
+msgid "A correct role is required"
+msgstr "Eginkizun zuzena behar da"
+
+#. TRANSLATORS: The user did not provide a package name
+#. TRANSLATORS: This is when the user fails to supply the package name
+#: ../client/pk-console.c:1638 ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661 ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690 ../client/pk-generate-pack.c:314
+msgid "A package name is required"
+msgstr "Pakete-izen bat behar da"
+
+#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
+#: ../client/pk-console.c:1670
+msgid "A package provide string is required"
+msgstr "Pakete-eskaintzaren kate bat behar da"
+
+#. TRANSLATORS: The user did not provide a distro name
+#: ../client/pk-console.c:1714
+msgid "A distribution name is required"
+msgstr "Banaketa-izen bat behar da"
+
+#. TRANSLATORS: The user did not provide an upgrade type
+#: ../client/pk-console.c:1720
+msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
+msgstr "Bertsio-berritze mota bat behar da, adib. 'minimal', 'default' edo 'complete'"
+
+#. TRANSLATORS: The user tried to use an unsupported option on the command line
+#: ../client/pk-console.c:1770
+#, c-format
+msgid "Option '%s' is not supported"
+msgstr "'%s' aukera ez dago onartuta"
+
+#. TRANSLATORS: Generic failure of what they asked to do
+#: ../client/pk-console.c:1780
+msgid "Command failed"
+msgstr "Komandoak huts egin du"
+
+#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
+#: ../client/pk-generate-pack.c:253
+msgid "Set the file name of dependencies to be excluded"
+msgstr "Ezarri baztertuko diren mendekotasunen fitxategi-izena"
+
+#. TRANSLATORS: the output location
+#: ../client/pk-generate-pack.c:256
+msgid "The output file or directory (the current directory is used if omitted)"
+msgstr "Irteera-fitxategia edo -direktorioa (uneko direktorioa erabiliko da ez bada ezer jartzen)"
+
+#. TRANSLATORS: put a list of packages in the pack
+#: ../client/pk-generate-pack.c:259
+msgid "The package to be put into the service pack"
+msgstr "Zerbitzu-paketean jarriko den paketea"
+
+#. TRANSLATORS: put all pending updates in the pack
+#: ../client/pk-generate-pack.c:262
+msgid "Put all updates available in the service pack"
+msgstr "Jarri eguneraketa guztiak eskuragarri zerbitzu-paketean"
+
+#. TRANSLATORS: This is when the user fails to supply the correct arguments
+#: ../client/pk-generate-pack.c:298
+msgid "Neither --package or --updates option selected."
+msgstr "Ez da ez --package ez --updates aukera hautatu."
+
+#. TRANSLATORS: This is when the user fails to supply just one argument
+#: ../client/pk-generate-pack.c:306
+msgid "Both options selected."
+msgstr "Bi aukerak hautatu dira."
+
+#. TRANSLATORS: This is when the user fails to supply the output
+#: ../client/pk-generate-pack.c:322
+msgid "A output directory or file name is required"
+msgstr "Irteerako direktorio edo fitxategi-izen bat behar da"
+
+#. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:340
+msgid "The daemon failed to startup"
+msgstr "Ezin izan da deabrua abiarazi"
+
+#. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
+#. TRANSLATORS: This is when the backend doesn't have the capability to download
+#: ../client/pk-generate-pack.c:351 ../client/pk-generate-pack.c:357
+msgid "The package manager cannot perform this type of operation."
+msgstr "Pakete-kudeatzaileak ezin du mota honetako eragiketarik egin."
+
+#. TRANSLATORS: This is when the distro didn't include libarchive support into PK
+#: ../client/pk-generate-pack.c:364
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr "Zerbitzu-paketeak ezin dira sortu, PackageKit ez baita eraiki libarchive-ren euskarriarekin."
+
+#. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
+#: ../client/pk-generate-pack.c:375
+msgid "If specifying a file, the service pack name must end with"
+msgstr "Fitxategi bat adierazten bada, zerbitzu-paketearen izenaren amaiera honek izan behar du:"
+
+#. TRANSLATORS: This is when file already exists
+#: ../client/pk-generate-pack.c:391
+msgid "A pack with the same name already exists, do you want to overwrite it?"
+msgstr "Jadanik existitzen da izen bera duen pakete bat, gainidatzi nahi al duzu?"
+
+#. TRANSLATORS: This is when the pack was not overwritten
+#: ../client/pk-generate-pack.c:394
+msgid "The pack was not overwritten."
+msgstr "Paketea ez da gainidatzi."
+
+#. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
+#: ../client/pk-generate-pack.c:407
+msgid "Failed to create directory:"
+msgstr "Direktorioaren sorrerak huts egin du:"
+
+#. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
+#: ../client/pk-generate-pack.c:419
+msgid "Failed to open package list."
+msgstr "Ezin iza da pakete-zerrenda ireki."
+
+#. TRANSLATORS: The package name is being matched up to available packages
+#: ../client/pk-generate-pack.c:428
+msgid "Finding package name."
+msgstr "Pakete-izena bilatzen."
+
+#. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
+#: ../client/pk-generate-pack.c:432
+#, c-format
+msgid "Failed to find package '%s': %s"
+msgstr "Ezin izan da  '%s' paketea aurkitu: %s"
+
+#. TRANSLATORS: This is telling the user we are in the process of making the pack
+#: ../client/pk-generate-pack.c:440
+msgid "Creating service pack..."
+msgstr "Zerbitzu-paketea sortzen..."
+
+#. TRANSLATORS: we succeeded in making the file
+#: ../client/pk-generate-pack.c:455
+#, c-format
+msgid "Service pack created '%s'"
+msgstr "'%s' zerbitzu-paketea sortu da"
+
+#. TRANSLATORS: we failed to make te file
+#: ../client/pk-generate-pack.c:460
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "Ezin izan da  '%s' sortu: %s"
+
+#: ../client/pk-monitor.c:284
+msgid "Failed to get daemon state"
+msgstr "Ezin izan da deabruaren egoera ezagutu"
+
+#: ../client/pk-monitor.c:349
+msgid "Failed to get properties"
+msgstr "Ezin izan da propietateak eskuratu"
+
+#. TRANSLATORS: this is a program that monitors PackageKit
+#: ../client/pk-monitor.c:387
+msgid "PackageKit Monitor"
+msgstr "PackageKit monitorea"
+
+#. TRANSLATORS: when we are getting data from the daemon
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
+msgid "Getting package information..."
+msgstr "Pakete-informazioa eskuratzen..."
+
+#. TRANSLATORS: run an applicaiton
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
+#, c-format
+msgid "Run %s"
+msgstr "Exekutatu %s"
+
+#. TRANSLATORS: show the installed version of a package
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
+msgid "Installed version"
+msgstr "Instalatutako bertsioa"
+
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
+#, c-format
+msgid "Run version %s now"
+msgstr "Exekutatu %s bertsioa orain"
+
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
+msgid "Run now"
+msgstr "Exekutatu orain"
+
+#. TRANSLATORS: update to a new version of the package
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
+#, c-format
+msgid "Update to version %s"
+msgstr "Eguneratu %s bertsiora"
+
+#. TRANSLATORS: To install a package
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
+#, c-format
+msgid "Install %s now"
+msgstr "Instalatu %s orain"
+
+#. TRANSLATORS: the version of the package
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
+msgid "Version"
+msgstr "Bertsioa"
+
+#. TRANSLATORS: noting found, so can't install
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
+msgid "No packages found for your system"
+msgstr "Ez da paketerik aurkitu zure sisteman"
+
+#. TRANSLATORS: package is being installed
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
+msgid "Installing..."
+msgstr "Instalatzen..."
+
+#. TRANSLATORS: downloading repo data so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:366
+msgid "Downloading details about the software sources."
+msgstr "Software-jatorriei buruzko xehetasunak deskargatzen."
+
+#. TRANSLATORS: downloading file lists so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:370
+msgid "Downloading filelists (this may take some time to complete)."
+msgstr "Fitxategi-zerrendak deskargatzen (honek denbora pixka bat behar izan dezake)."
+
+#. TRANSLATORS: waiting for native lock
+#: ../contrib/command-not-found/pk-command-not-found.c:374
+msgid "Waiting for package manager lock."
+msgstr "Itxaroten pakete-kudeatzailearen blokeoa."
+
+#. TRANSLATORS: loading package cache so we can search
+#: ../contrib/command-not-found/pk-command-not-found.c:378
+msgid "Loading list of packages."
+msgstr "Paketeen zerrenda kargatzen."
+
+#. TRANSLATORS: we failed to find the package, this shouldn't happen
+#: ../contrib/command-not-found/pk-command-not-found.c:444
+msgid "Failed to search for file"
+msgstr "Fitxategiaren bilaketak huts egin du"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "Huts egin duten fitxategien zerrenda eskuratzen"
+
+#. TRANSLATORS: we failed to launch the executable, the error follows
+#: ../contrib/command-not-found/pk-command-not-found.c:602
+msgid "Failed to launch:"
+msgstr "Abioak huts egin du:"
+
+#. TRANSLATORS: we failed to install the package
+#: ../contrib/command-not-found/pk-command-not-found.c:630
+msgid "Failed to install packages"
+msgstr "Paketeen instalazioak huts egin du"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/command-not-found/pk-command-not-found.c:706
+msgid "PackageKit Command Not Found"
+msgstr "Ez da aurkitu PackageKit komandoa"
+
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "ez da komandoa aurkitu"
+
+#. TRANSLATORS: tell the user what we think the command is
+#: ../contrib/command-not-found/pk-command-not-found.c:757
+msgid "Similar command is:"
+msgstr "Antzeko komandoa:"
+
+#. TRANSLATORS: Ask the user if we should run the similar command
+#: ../contrib/command-not-found/pk-command-not-found.c:771
+msgid "Run similar command:"
+msgstr "Exekutatu antzeko komandoa:"
+
+#. TRANSLATORS: show the user a list of commands that they could have meant
+#. TRANSLATORS: show the user a list of commands we could run
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
+msgid "Similar commands are:"
+msgstr "Antzeko komandoak:"
+
+#. TRANSLATORS: ask the user to choose a file to run
+#: ../contrib/command-not-found/pk-command-not-found.c:801
+msgid "Please choose a command to run"
+msgstr "Hautatu exekutatuko den komandoa"
+
+#. TRANSLATORS: tell the user what package provides the command
+#: ../contrib/command-not-found/pk-command-not-found.c:819
+msgid "The package providing this file is:"
+msgstr "Fitxategi honetaz hornitzen duen paketea hau da:"
+
+#. TRANSLATORS: as the user if we want to install a package to provide the command
+#: ../contrib/command-not-found/pk-command-not-found.c:826
+#, c-format
+msgid "Install package '%s' to provide command '%s'?"
+msgstr "Instalatu  '%s' paketea  '%s' komandoaz hornitzeko?"
+
+#. TRANSLATORS: Show the user a list of packages that provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:853
+msgid "Packages providing this file are:"
+msgstr "Fitxategi honetaz hornitzen duten paketeak hauek dira:"
+
+#. TRANSLATORS: Show the user a list of packages that they can install to provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:863
+msgid "Suitable packages are:"
+msgstr "Pakete egokiak hauek dira:"
+
+#. get selection
+#. TRANSLATORS: ask the user to choose a file to install
+#: ../contrib/command-not-found/pk-command-not-found.c:872
+msgid "Please choose a package to install"
+msgstr "Hautatu instalatuko den paketea"
+
+#. TRANSLATORS: we are starting to install the packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
+msgid "Starting install"
+msgstr "Instalazioa abiarazten"
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
+#, c-format
+msgid "Failed to find the package %s, or already installed: %s"
+msgstr "Ez da %s paketea aurkitu, edo jadanik instalatuta dago: %s"
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
+msgstr "Ez instalatu paketerik, instalatuko dela simulatu soilik"
+
+#. command line argument, do we skip packages that depend on the ones specified
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
+msgid "Do not install dependencies of the core packages"
+msgstr "Ez instalatu oinarrizko paketeen mendekotasunak"
+
+#. command line argument, do we operate quietly
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
+msgid "Do not display information or progress"
+msgstr "Ez erakutsi ez informaziorik ez aurrerapenik"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
+msgid "PackageKit Debuginfo Installer"
+msgstr "PackageKit-en arazketa-informazioko instalatzailea"
+
+#. TRANSLATORS: the use needs to specify a list of package names on the command line
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
+#, c-format
+msgid "ERROR: Specify package names to install."
+msgstr "ERROREA: Adierazi instalatuko diren paketeen izenak."
+
+#. TRANSLATORS: we are getting the list of repositories
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
+#, c-format
+msgid "Getting sources list"
+msgstr "Jatorri-zerrendak eskuratzen"
+
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
+msgid "FAILED."
+msgstr "HUTS EGIN DU."
+
+#. TRANSLATORS: all completed 100%
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
+#, c-format
+msgid "OK."
+msgstr "OK."
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
+#, c-format
+msgid "Found %i enabled and %i disabled sources."
+msgstr "Gaitutako %i eta desgaitutako %i jatorri aurkitu dira."
+
+#. TRANSLATORS: we're finding repositories that match out pattern
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
+#, c-format
+msgid "Finding debugging sources"
+msgstr "Arazketa-jatorriak bilatzen"
+
+#. TRANSLATORS: tell the user what we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
+#, c-format
+msgid "Found %i disabled debuginfo repos."
+msgstr "Desgaitutako %i arazketa-biltegi aurkitu dira."
+
+#. TRANSLATORS: we're now enabling all the debug sources we found
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
+#, c-format
+msgid "Enabling debugging sources"
+msgstr "Arazketa-jatorriak gaitzen"
+
+#. TRANSLATORS: tell the user how many we enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
+#, c-format
+msgid "Enabled %i debugging sources."
+msgstr "%i arazketa-jatorri gaitu da."
+
+#. TRANSLATORS: we're now finding packages that match in all the repos
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
+#, c-format
+msgid "Finding debugging packages"
+msgstr "Arazketa-paketeak bilatzen"
+
+#. TRANSLATORS: we couldn't find the package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
+#, c-format
+msgid "Failed to find the package %s: %s"
+msgstr "Ez da %s paketea aurkitu: %s"
+
+#. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
+#, c-format
+msgid "Failed to find the debuginfo package %s: %s"
+msgstr "Ez da %s arazketa-paketea aurkitu: %s"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
+#, c-format
+msgid "Found no packages to install."
+msgstr "Ez da instalatzeko paketerik aurkitu."
+
+#. TRANSLATORS: tell the user we found some packages, and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
+#, c-format
+msgid "Found %i packages:"
+msgstr "%i pakete aurkitu dira:"
+
+#. TRANSLATORS: tell the user we are searching for deps
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
+#, c-format
+msgid "Finding packages that depend on these packages"
+msgstr "Pakete hauen mendekoak diren paketeak bilatzen"
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
+#, c-format
+msgid "Could not find dependant packages: %s"
+msgstr "Ez da mendeko paketerik aurkitu: %s"
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
+#, c-format
+msgid "Found %i extra packages."
+msgstr "%i pakete gehigarri aurkitu dira."
+
+#. TRANSLATORS: tell the user we found some more packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
+#, c-format
+msgid "No extra packages required."
+msgstr "Ez da pakete gehigarririk behar."
+
+#. TRANSLATORS: tell the user we found some packages (and deps), and then list them
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
+#, c-format
+msgid "Found %i packages to install:"
+msgstr "Instalatzeko %i pakete aurkitu dira:"
+
+#. TRANSLATORS: simulate mode is a testing mode where we quit before the action
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
+#, c-format
+msgid "Not installing packages in simulate mode"
+msgstr "Paketeak ez instalatzen simulazio-moduan"
+
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
+#, c-format
+msgid "Installing packages"
+msgstr "Paketeak instalatzen"
+
+#. TRANSLATORS: could not install, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
+#, c-format
+msgid "Could not install packages: %s"
+msgstr "Ezin dira paketeak instalatu: %s"
+
+#. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
+#, c-format
+msgid "Disabling sources previously enabled"
+msgstr "Aurretiaz gaitutako jatorriak desgaitzen"
+
+#. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
+#, c-format
+msgid "Could not disable the debugging sources: %s"
+msgstr "Ezin dira arazketa-jatorriak desgaitu: %s"
+
+#. TRANSLATORS: we disabled all the debugging repos that we enabled before
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
+#, c-format
+msgid "Disabled %i debugging sources."
+msgstr "%i arazketa-jatorri desgaitu dira."
+
+#. TRANSLATORS: couldn't open device to write
+#: ../contrib/device-rebind/pk-device-rebind.c:62
+msgid "Failed to open file"
+msgstr "Ezin da fitxategia ireki"
+
+#. TRANSLATORS: could not write to the device
+#: ../contrib/device-rebind/pk-device-rebind.c:71
+msgid "Failed to write to the file"
+msgstr "Ezin da fitxategia idatzi"
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:111
+#: ../contrib/device-rebind/pk-device-rebind.c:148
+msgid "Failed to write to device"
+msgstr "Ezin da gailuan idatzi"
+
+#. TRANSLATORS: the device could not be found in sysfs
+#: ../contrib/device-rebind/pk-device-rebind.c:176
+msgid "Device could not be found"
+msgstr "Ezin da gailua aurkitu"
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:203
+msgid "Failed to unregister driver"
+msgstr "Ezin da kontrolagailuaren erregistroa ezabatu"
+
+#. TRANSLATORS: we failed to bind the old driver
+#: ../contrib/device-rebind/pk-device-rebind.c:212
+msgid "Failed to register driver"
+msgstr "Kontrolagailuaren erregistroak huts egin du"
+
+#. TRANSLATORS: user did not specify a device sysfs path that exists
+#: ../contrib/device-rebind/pk-device-rebind.c:261
+msgid "Device path not found"
+msgstr "Ez da aurkitu gailuaren bide-izena"
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:269
+msgid "Incorrect device path specified"
+msgstr "Gailuaren bide-izena ez da zuzena"
+
+#: ../contrib/device-rebind/pk-device-rebind.c:294
+msgid "Show extra debugging information"
+msgstr "Erakutsi arazketa-informazio gehigarria"
+
+#. command line argument, simulate what would be done, but don't actually do it
+#: ../contrib/device-rebind/pk-device-rebind.c:297
+msgid "Don't actually touch the hardware, only simulate what would be done"
+msgstr "Ez ukitu hardwarea, soilik simulatu zer egingo litzatekeen"
+
+#. TRANSLATORS: command line option: a list of files to install
+#: ../contrib/device-rebind/pk-device-rebind.c:300
+msgid "Device paths"
+msgstr "Gailuen bide-izenak"
+
+#. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
+#: ../contrib/device-rebind/pk-device-rebind.c:315
+msgid "PackageKit Device Reloader"
+msgstr "PackageKit-en gailu-birkargatzailea"
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:323
+msgid "You need to specify at least one valid device path"
+msgstr "Gutxienez gailu baten baliozko bide-izen bat adierazi behar duzu"
+
+#. TRANSLATORS: user did not specify a valid device sysfs path
+#: ../contrib/device-rebind/pk-device-rebind.c:333
+msgid "This script can only be used by the root user"
+msgstr "Script hau erro-erabiltzaileak soilik erabil dezake"
+
+#. TRANSLATORS: we're going to verify the path first
+#: ../contrib/device-rebind/pk-device-rebind.c:342
+msgid "Verifying device path"
+msgstr "Gailuaren bide-izena egiaztatzen"
+
+#. TRANSLATORS: user did not specify a device sysfs path that exists
+#: ../contrib/device-rebind/pk-device-rebind.c:347
+msgid "Failed to verify device path"
+msgstr "Ezin izan da gailuaren bide-izena egiaztatu"
+
+#. TRANSLATORS: we're going to try
+#: ../contrib/device-rebind/pk-device-rebind.c:361
+msgid "Attempting to rebind device"
+msgstr "Gailua berrezartzen saiatzen"
+
+#. TRANSLATORS: we failed to release the current driver
+#: ../contrib/device-rebind/pk-device-rebind.c:366
+msgid "Failed to rebind device"
+msgstr "Gailuaren berrezarpenak huts egin du"
+
+#: ../data/packagekit-catalog.xml.in.h:1
+msgid "PackageKit Catalog"
+msgstr "PackageKit katalogoa"
+
+#: ../data/packagekit-package-list.xml.in.h:1
+msgid "PackageKit Package List"
+msgstr "PackageKit pakete-zerrenda"
+
+#: ../data/packagekit-servicepack.xml.in.h:1
+msgid "PackageKit Service Pack"
+msgstr "PackageKit zerbitzu-paketea"
+
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "Sartu 1etik %i-(e)ra arteko zenbaki bat: "
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
+msgid "More than one package matches:"
+msgstr "Pakete bat baino gehiago dator bat:"
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
+msgid "Please choose the correct package: "
+msgstr "Hautatu pakete zuzena: "
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
+msgid "Unknown state"
+msgstr "Egoera ezezaguna"
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
+msgid "Starting"
+msgstr "Abiarazten"
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
+msgid "Waiting in queue"
+msgstr "Ilaran itxaroten"
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
+msgid "Running"
+msgstr "Exekutatzen"
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
+msgid "Querying"
+msgstr "Kontsultatzen"
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
+msgid "Getting information"
+msgstr "Informazioa eskuratzen"
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
+msgid "Removing packages"
+msgstr "Paketeak kentzen"
+
+#. TRANSLATORS: transaction state, downloading package files
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
+msgid "Downloading packages"
+msgstr "Paketeak deskargatzen"
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
+msgid "Refreshing software list"
+msgstr "Software-zerrenda freskatzen"
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
+msgid "Installing updates"
+msgstr "Eguneraketak instalatzen"
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
+msgid "Cleaning up packages"
+msgstr "Paketeak garbitzen"
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
+msgid "Obsoleting packages"
+msgstr "Paketeak zaharkitzen"
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
+msgid "Resolving dependencies"
+msgstr "Mendekotasunak konpontzen"
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
+msgid "Checking signatures"
+msgstr "Sinadurak egiaztatzen"
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
+msgid "Rolling back"
+msgstr "Aurreko transakzio batera itzultzen"
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
+msgid "Testing changes"
+msgstr "Aldaketak probatzen"
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
+msgid "Committing changes"
+msgstr "Aldaketak aplikatzen"
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
+msgid "Requesting data"
+msgstr "Datuak eskatzen"
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
+msgid "Finished"
+msgstr "Amaitua"
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
+msgid "Cancelling"
+msgstr "Uzten"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
+msgid "Downloading repository information"
+msgstr "Biltegi-informazioa deskargatzen"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
+msgid "Downloading list of packages"
+msgstr "Pakete-zerrenda deskargatzen"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
+msgid "Downloading file lists"
+msgstr "Fitxategi-zerrendak deskargatzen"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
+msgid "Downloading lists of changes"
+msgstr "Aldaketa-zerrenda deskargatzen"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
+msgid "Downloading groups"
+msgstr "Taldeak deskargatzen"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
+msgid "Downloading update information"
+msgstr "Eguneraketa-informazioa deskargatzen"
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
+msgid "Repackaging files"
+msgstr "Fitxategiak berriro paketatzen"
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
+msgid "Loading cache"
+msgstr "Katxea kargatzen"
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
+msgid "Scanning applications"
+msgstr "Aplikazioak eskaneatzen"
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
+msgid "Generating package lists"
+msgstr "Pakete-zerrenda sortzen"
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
+msgid "Waiting for package manager lock"
+msgstr "Pakete-kudeatzailearen blokeoa itxaroten"
+
+#. TRANSLATORS: transaction state, waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
+msgid "Waiting for authentication"
+msgstr "Autentifikaziorako itxaroten"
+
+#. TRANSLATORS: transaction state, we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
+msgid "Updating running applications"
+msgstr "Abioan dauden aplikazioak eguneratzen"
+
+#. TRANSLATORS: transaction state, we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
+msgid "Checking applications in use"
+msgstr "Abioan dauden aplikazioak egiaztatzen"
+
+#. TRANSLATORS: transaction state, we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
+msgid "Checking libraries in use"
+msgstr "Erabiltzen ari diren liburutegiak egiaztatzen"
+
+#. TRANSLATORS: transaction state, we are copying package files before or after the transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
+msgid "Copying files"
+msgstr "Fitxategiak kopiatzen"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
+msgid "Trivial"
+msgstr "Arina"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
+msgid "Normal"
+msgstr "Normala"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+msgid "Important"
+msgstr "Garrantzitsua"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
+msgid "Security"
+msgstr "Segurtasuna"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
+msgid "Bug fix "
+msgstr "Akats-konponketa "
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
+msgid "Enhancement"
+msgstr "Hobekuntza"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
+msgid "Blocked"
+msgstr "Blokeatua"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
+msgid "Installed"
+msgstr "Instalatua"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
+msgid "Available"
+msgstr "Eskuragarri"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
+msgid "Downloading"
+msgstr "Deskargatzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
+msgid "Updating"
+msgstr "Eguneratzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
+msgid "Installing"
+msgstr "Instalatzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
+msgid "Removing"
+msgstr "Kentzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
+msgid "Cleaning up"
+msgstr "Garbitzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
+msgid "Obsoleting"
+msgstr "Zaharkitutzat hartzen"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
+msgid "Reinstalling"
+msgstr "Berriro instalatzen"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
+msgid "Downloaded"
+msgstr "Deskargatua"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
+msgid "Removed"
+msgstr "Kendua"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
+msgid "Cleaned up"
+msgstr "Garbitua"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
+msgid "Obsoleted"
+msgstr "Zaharkitua"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
+msgid "Reinstalled"
+msgstr "Berrinstalatua"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
+msgid "Unknown role type"
+msgstr "Eginkizun-mota ezezaguna"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
+msgid "Getting dependencies"
+msgstr "Mendekotasunak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
+msgid "Getting update details"
+msgstr "Eguneraketa-xehetasunak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
+msgid "Getting details"
+msgstr "Xehetasunak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
+msgid "Getting requires"
+msgstr "Betebeharrak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
+msgid "Getting updates"
+msgstr "Eguneraketak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
+msgid "Searching by details"
+msgstr "Xehetasunen arabera bilatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
+msgid "Searching by file"
+msgstr "Fitxategien arabera bilatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
+msgid "Searching groups"
+msgstr "Taldeetan bilaketak egiten"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
+msgid "Searching by name"
+msgstr "Izenaren arabera bilatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
+msgid "Installing files"
+msgstr "Fitxategiak instalatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
+msgid "Refreshing cache"
+msgstr "Katxea freskatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
+msgid "Updating packages"
+msgstr "Paketeak eguneratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
+msgid "Updating system"
+msgstr "Sistema eguneratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
+msgid "Canceling"
+msgstr "Uzten"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
+msgid "Getting repositories"
+msgstr "Biltegiak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
+msgid "Enabling repository"
+msgstr "Biltegia gaitzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
+msgid "Setting data"
+msgstr "Data ezartzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
+msgid "Resolving"
+msgstr "Ebazten"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
+msgid "Getting file list"
+msgstr "Fitxategi-zerrenda eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
+msgid "Getting provides"
+msgstr "Hornitzaileak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
+msgid "Installing signature"
+msgstr "Sinadura instalatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
+msgid "Getting packages"
+msgstr "Paketeak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
+msgid "Accepting EULA"
+msgstr "EULA onartzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
+msgid "Getting upgrades"
+msgstr "Bertsio-berritzeak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
+msgid "Getting categories"
+msgstr "Kategoriak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
+msgid "Getting transactions"
+msgstr "Transakzioak eskuratzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
+msgid "Simulating install"
+msgstr "Instalazioa simulatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
+msgid "Simulating remove"
+msgstr "Kentzea simulatzen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
+msgid "Simulating update"
+msgstr "Eguneraketa simulatzen"
+
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "Erakutsi fitxategi guztien arazketa-informazioa"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "Arazketa-aukerak"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "Erakutsi arazketa-aukerak"
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:67
+msgid "Do you want to allow installing of unsigned software?"
+msgstr "Sinatu gabeko softwarea instala dadin baimendu nahi duzu?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:72
+msgid "The unsigned software will not be installed."
+msgstr "Sinatu gabeko softwarea ez da instalatuko."
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:121
+msgid "Software source signature required"
+msgstr "Software-jatorriaren sinadura behar da"
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:127
+msgid "Software source name"
+msgstr "Software-jatorriaren izena"
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:130
+msgid "Key URL"
+msgstr "Gako URLa"
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:133
+msgid "Key user"
+msgstr "Gako erabiltzailea"
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:136
+msgid "Key ID"
+msgstr "Gako IDa"
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:139
+msgid "Key fingerprint"
+msgstr "Gako hatz-marka"
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:142
+msgid "Key Timestamp"
+msgstr "Gako data-zigilua"
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:155
+msgid "Do you accept this signature?"
+msgstr "Onartzen al duzu sinadura hau?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:160
+msgid "The signature was not accepted."
+msgstr "Sinadura ez da onartu."
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:203
+msgid "End user licence agreement required"
+msgstr "Azken erabiltzailearen lizentzia-kontratua behar da"
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:212
+msgid "Agreement"
+msgstr "Lizentzia-kontratua"
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:221
+msgid "Do you accept this agreement?"
+msgstr "Onartzen al duzu kontratu hau?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:226
+msgid "The agreement was not accepted."
+msgstr "Kontratua ez da onartu."
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:265
+msgid "Media change required"
+msgstr "Euskarria aldatu behar da"
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:268
+msgid "Media type"
+msgstr "Euskarri-mota"
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:271
+msgid "Media label"
+msgstr "Euskarri-etiketa"
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:274
+msgid "Text"
+msgstr "Testua"
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:280
+msgid "Please insert the correct media"
+msgstr "Sartu euskarri zuzena"
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:285
+msgid "The correct media was not inserted."
+msgstr "Ez da euskarri zuzena sartu."
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:300
+msgid "The following packages have to be removed:"
+msgstr "Hurrengo paketeak kendu behar dira:"
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:305
+msgid "The following packages have to be installed:"
+msgstr "Hurrengo paketeak instalatu behar dira:"
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:310
+msgid "The following packages have to be updated:"
+msgstr "Hurrengo paketeak eguneratu behar dira:"
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:315
+msgid "The following packages have to be reinstalled:"
+msgstr "Hurrengo paketeak berriro instalatu behar dira:"
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:320
+msgid "The following packages have to be downgraded:"
+msgstr "Hurrengo paketeen bertsio zaharragoa instalatu behar da:"
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:380
+msgid "Proceed with changes?"
+msgstr "Aldaketekin jarraitu?"
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:385
+msgid "The transaction did not proceed."
+msgstr "Transakzioa ez da burutu."
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to accept new
+#. licence agreements.
+#. - Change this to 'auth_admin' for environments where users should not
+#. be given the option to make legal decisions.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:7
+msgid "Accept EULA"
+msgstr "Onartu EULA"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:8
+msgid "Authentication is required to accept a EULA"
+msgstr "Autentifikazioa behar da EULA bat onartzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:9
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr "Autentifikazioa behar da zerorrek abiarazi ez duzun zeregin bat bertan behera uzteko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:10
+msgid "Authentication is required to change software source parameters"
+msgstr "Autentifikazioa behar da software-jatorrien parametroak aldatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:11
+msgid ""
+"Authentication is required to change the location used to decompress packages"
+msgstr "Autentifikazioa behar da paketeak destrinkotzeko erabiltzen den kokapena aldatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:12
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
+msgstr "Autentifikazioa behar da paketeak sinatzeko erabilitako gakoa fidagarrizat hartzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:13
+msgid "Authentication is required to install a signed package"
+msgstr "Autentifikazioa behar da sinatutako pakete bat instalatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:14
+msgid "Authentication is required to install an untrusted package"
+msgstr "Autentifikazioa behar da fidagarria ez den pakete bat instalatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:15
+msgid "Authentication is required to refresh the system sources"
+msgstr "Autentifikazioa behar da sistemaren jatorriak freskatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:16
+msgid "Authentication is required to reload the device with a new driver"
+msgstr "Autentifikazioa behar da gailua kontrolagailu berri batekin birkargatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:17
+msgid "Authentication is required to remove packages"
+msgstr "Autentifikazioa behar da paketeak kentzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:18
+msgid "Authentication is required to rollback a transaction"
+msgstr "Autentifikazioa behar da transakzio bat atzera botatzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:19
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
+msgstr "Autentifikazioa behar da paketeak deskargatzeko erabiliko den sareko proxy-a ezartzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:20
+msgid "Authentication is required to update packages"
+msgstr "Autentifikazioa behar da paketeak eguneratzeko"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Authentication is required to upgrade the operating system"
+msgstr "Autentifikazioa behar da sistema eragilea bertsioz berritzeko"
+
+#. SECURITY:
+#. - Normal users are allowed to cancel their own task without
+#. authentication, but a different user id needs the admin password
+#. to cancel another users task.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:27
+msgid "Cancel foreign task"
+msgstr "Utzi zeregin arrotza"
+
+#. SECURITY:
+#. - This is used when users want to install to a different prefix, for
+#. instance to a LTSP image or a virtual machine.
+#. - This could be used to overwrite files not owned by the user using
+#. a carefully created package file.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:34
+msgid "Change location that packages are installed"
+msgstr "Aldatu paketeak instalatuko diren kokapena"
+
+#. SECURITY:
+#. - Normal users require admin authentication to enable or disable
+#. software sources as this can be used to enable new updates or
+#. install different versions of software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:40
+msgid "Change software source parameters"
+msgstr "Aldatu software-jatorrien parametroak"
+
+#. SECURITY:
+#. - Normal users do not need authentication to install signed packages
+#. from signed repositories, as this cannot exploit a system.
+#. - Paranoid users (or parents!) can change this to 'auth_admin' or
+#. 'auth_admin_keep'.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:47
+msgid "Install signed package"
+msgstr "Instalatu sinatutako paketea"
+
+#. SECURITY:
+#. - Normal users require admin authentication to install untrusted or
+#. unrecognised packages, as allowing users to do this without a
+#. password would be a massive security hole.
+#. - This is not retained as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:54
+msgid "Install untrusted local file"
+msgstr "Instalatu fidagarria ez den fitxategi lokala"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to refresh the
+#. cache, as this doesn't actually install or remove software.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
+msgid "Refresh system sources"
+msgstr "Freskatu sistemaren jatorriak"
+
+#. SECURITY:
+#. - Normal users require admin authentication to rebind a driver
+#. so that it works after we install firmware.
+#. - This should not be set to 'yes' as unprivileged users could then
+#. try to rebind drivers in use, for instance security authentication
+#. devices.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:67
+msgid "Reload a device"
+msgstr "Birkargatu gailu bat"
+
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:73
+msgid "Remove package"
+msgstr "Kendu paketea"
+
+#. SECURITY:
+#. - Normal users require admin authentication to rollback system state
+#. as this will change a large number of packages, and could expose the
+#. system to previously patched security vulnerabilities.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:79
+msgid "Rollback to a previous transaction"
+msgstr "Itzuli aurreko transakzio batera"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to set the proxy
+#. used for downloading packages.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:84
+msgid "Set network proxy"
+msgstr "Ezarri sarearen proxy-a"
+
+#. SECURITY:
+#. - Normal users require admin authentication to add signing keys.
+#. - This implies adding an explicit trust, and should not be granted
+#. without a secure authentication.
+#. - This is not kept as each package should be authenticated.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:91
+msgid "Trust a key used for signing packages"
+msgstr "Fidatu paketeak sinatzeko erabili den gako batetaz"
+
+#. SECURITY:
+#. - Normal users do not require admin authentication to update the
+#. system as the packages will be signed, and the action is required
+#. to update the system when unattended.
+#. - Changing this to anything other than 'yes' will break unattended
+#. updates.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:99
+msgid "Update packages"
+msgstr "Eguneratu paketeak"
+
+#. TRANSLATORS: failed due to DBus security
+#: ../src/pk-main.c:87
+msgid "Startup failed due to security policies on this machine."
+msgstr "Abioak huts egin du makina honetako segurtasun-politiken ondorioz"
+
+#. TRANSLATORS: only two ways this can fail...
+#: ../src/pk-main.c:89
+msgid "This can happen for two reasons:"
+msgstr "Bi arrazoi daude horretarako:"
+
+#. TRANSLATORS: only allowed to be owned by root
+#: ../src/pk-main.c:91
+msgid "The correct user is not launching the executable (usually root)"
+msgstr "Exekutagarria ez du erabiltzaile egokiak (normalean root) abiarazi"
+
+#. TRANSLATORS: or we are installed in a prefix
+#: ../src/pk-main.c:93
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr "org.freedesktop.PackageKit.conf fitxategia ez dago instalatuta sistemaren direktorioan:"
+
+#. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
+#: ../src/pk-main.c:200
+msgid "Packaging backend to use, e.g. dummy"
+msgstr "Erabiliko den paketatze-motorra, adib. dummy"
+
+#. TRANSLATORS: if we should run in the background
+#: ../src/pk-main.c:203
+msgid "Daemonize and detach from the terminal"
+msgstr "Deabrutu eta askatu terminaletik"
+
+#. TRANSLATORS: if we should not monitor how long we are inactive for
+#: ../src/pk-main.c:206
+msgid "Disable the idle timer"
+msgstr "Desgaitu inaktibitate-kronometroa"
+
+#. TRANSLATORS: show version
+#: ../src/pk-main.c:209
+msgid "Show version and exit"
+msgstr "Erakutsi bertsioa eta irten"
+
+#. TRANSLATORS: exit after we've started up, used for user profiling
+#: ../src/pk-main.c:212
+msgid "Exit after a small delay"
+msgstr "Irten atzerapen txiki baten ondoren"
+
+#. TRANSLATORS: exit straight away, used for automatic profiling
+#: ../src/pk-main.c:215
+msgid "Exit after the engine has loaded"
+msgstr "Irten motorra kargatu ondoren"
+
+#. TRANSLATORS: describing the service that is running
+#: ../src/pk-main.c:230
+msgid "PackageKit service"
+msgstr "PackageKit zerbitzua"
+
+#. TRANSLATORS: fatal error, dbus is not running
+#: ../src/pk-main.c:267
+msgid "Cannot connect to the system bus"
+msgstr "Ezin izan da sistemaren busera konektatu"
+
+#. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
+#: ../src/pk-main.c:316
+msgid "Error trying to start:"
+msgstr "Errorea abiaraztean:"
+
+#: ../src/pk-polkit-action-lookup.c:150
+msgid "To install debugging packages, extra sources need to be enabled"
+msgstr "Arazketa-paketeak instalatzeko beste jatorri batzuk gaitu behar dira"
+
+#. TRANSLATORS: is not GPG signed
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
+msgid "The software is not from a trusted source."
+msgstr "Softwarea ez da jatorri fidagarri batekoa."
+
+#: ../src/pk-polkit-action-lookup.c:176
+msgid "Do not update this package unless you are sure it is safe to do so."
+msgstr "Ez eguneratu pakete hau hori egitea segurua dela egiaztatu arte."
+
+#: ../src/pk-polkit-action-lookup.c:177
+msgid "Do not update these packages unless you are sure it is safe to do so."
+msgstr "Ez eguneratu pakete hauek hori egitea segurua dela egiaztatu arte."
+
+#: ../src/pk-polkit-action-lookup.c:195
+msgid "Do not install this package unless you are sure it is safe to do so."
+msgstr "Ez instalatu pakete hau hori egitea segurua dela egiaztatu arte."
+
+#: ../src/pk-polkit-action-lookup.c:196
+msgid "Do not install these packages unless you are sure it is safe to do so."
+msgstr "Ez instalatu pakete hauek hori egitea segurua dela egiaztatu arte."
+
+#. TRANSLATORS: too many packages to list each one
+#: ../src/pk-polkit-action-lookup.c:273
+msgid "Many packages"
+msgstr "Pakete asko"
+
+#. TRANSLATORS: if the transaction is forced to install only trusted packages
+#: ../src/pk-polkit-action-lookup.c:339
+msgid "Only trusted"
+msgstr "Soilik fidagarriak"
commit 9c90bac97926fb184bd8ecca5bf5ad5777746100
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 24 21:09:57 2010 -0200

    aptcc: Fix regex not to match "()(64bit)" as we don't support multiarch anyway

diff --git a/backends/aptcc/gstMatcher.cpp b/backends/aptcc/gstMatcher.cpp
index 2b27bf9..9f60581 100644
--- a/backends/aptcc/gstMatcher.cpp
+++ b/backends/aptcc/gstMatcher.cpp
@@ -20,6 +20,7 @@
 
 #include <regex.h>
 #include <gst/gst.h>
+#include <iostream>
 
 GstMatcher::GstMatcher(gchar **values)
 {
@@ -30,7 +31,7 @@ GstMatcher::GstMatcher(gchar **values)
     // gstreamer0.10(decoder-audio/x-wma)(wmaversion=3)
     const char *pkreg = "^gstreamer\\([0-9\\.]\\+\\)"
                 "(\\(encoder\\|decoder\\|urisource\\|urisink\\|element\\)-\\([^)]\\+\\))"
-                "\\((.*)\\)\\?";
+                "\\(([^\\(^\\)]*)\\)\\?";
 
     regex_t pkre;
     if(regcomp(&pkre, pkreg, 0) != 0) {
@@ -60,9 +61,6 @@ GstMatcher::GstMatcher(gchar **values)
             if (matches[4].rm_so != -1) {
                 // remove the '(' ')' that the regex matched
                 opt = string(value, matches[4].rm_so + 1, matches[4].rm_eo - matches[4].rm_so - 2);
-            } else {
-                // if the 4th element did not match match everything
-                opt = ".*";
             }
 
             if (type.compare("encoder") == 0) {
@@ -82,16 +80,25 @@ GstMatcher::GstMatcher(gchar **values)
 //             cout << opt << endl;
 
             gchar *capsString;
-            capsString = g_strdup_printf("%s, %s", data.c_str(), opt.c_str());
+            if (opt.empty()) {
+                capsString = g_strdup_printf("%s", data.c_str());
+            } else {
+                capsString = g_strdup_printf("%s, %s", data.c_str(), opt.c_str());
+            }
+            GstCaps *caps = gst_caps_from_string(capsString);
+            g_free(capsString);
+
+            if (caps == NULL) {
+                continue;
+            }
 
             values.version = version;
             values.type    = type;
             values.data    = data;
             values.opt     = opt;
-            values.caps    = gst_caps_from_string(capsString);
+            values.caps    = caps;
 
             m_matches.push_back(values);
-            g_free(capsString);
         } else {
             g_debug("Did not match: %s", value);
         }
@@ -123,6 +130,9 @@ bool GstMatcher::matches(string record)
 
                     GstCaps *caps;
                     caps = gst_caps_from_string(record.substr(found, endOfLine - found).c_str());
+                    if (caps == NULL) {
+                        continue;
+                    }
 
                     // if the record is capable of intersect them we found the package
                     bool provides = gst_caps_can_intersect(static_cast<GstCaps*>(i->caps), caps);
commit 9dd6ad17f476c4e5f5248db1e84e34b3cf46cb6c
Merge: 16170df... 79153b6...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 24 17:18:25 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 16170df05a733e665896128d1f7fc520a60b2e45
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 24 17:17:01 2010 -0200

    aptcc: Gstreamer search coded support finished

diff --git a/backends/aptcc/apt.cpp b/backends/aptcc/apt.cpp
index 89cbc63..082d093 100644
--- a/backends/aptcc/apt.cpp
+++ b/backends/aptcc/apt.cpp
@@ -22,6 +22,7 @@
 #include "apt.h"
 #include "apt-utils.h"
 #include "matcher.h"
+#include "gstMatcher.h"
 #include "aptcc_show_broken.h"
 #include "acqprogress.h"
 #include "pkg_acqfile.h"
@@ -369,8 +370,6 @@ void aptcc::emit_packages(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterat
 	}
 }
 
-
-
 void aptcc::emitUpdates(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator> > &output,
 			 PkBitfield filters)
 {
@@ -417,132 +416,46 @@ void aptcc::emitUpdates(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator
 	}
 }
 
-
 void aptcc::povidesCodec(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator> > &output,
-			 gchar **values)
+                         gchar **values)
 {
-	// The search term from PackageKit daemon:
-	// gstreamer0.10(urisource-foobar)
-	// gstreamer0.10(decoder-audio/x-wma)(wmaversion=3)
-
-	// The optional field is more complicated, it can have
-	// types, like int, float...
-	// TODO use some GST helper :/
- 	regex_t pkre;
-
-	const char *pkreg = "^gstreamer\\([0-9\\.]\\+\\)"
-			    "(\\(encoder\\|decoder\\|urisource\\|urisink\\|element\\)-\\([^)]\\+\\))"
-			    "\\((.*)\\)\\?";
-
-	if(regcomp(&pkre, pkreg, 0) != 0) {
-		g_debug("Regex compilation error: ", pkreg);
-		return;
-	}
-
-	gchar *value;
-	vector<pair<string, regex_t> > search;
-	for (uint i = 0; i < g_strv_length(values); i++) {
-		value = values[i];
-		regmatch_t matches[5];
-		if (regexec(&pkre, value, 5, matches, 0) == 0) {
-			string version, type, data, opt;
-			version = "\nGstreamer-Version: ";
-			version.append(string(value, matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so));
-			type = string(value, matches[2].rm_so, matches[2].rm_eo - matches[2].rm_so);
-			data = string(value, matches[3].rm_so, matches[3].rm_eo - matches[3].rm_so);
-			if (matches[4].rm_so != -1) {
-				// remove the '(' ')' that the regex matched
-				opt = string(value, matches[4].rm_so + 1, matches[4].rm_eo - matches[4].rm_so - 2);
-			} else {
-				// if the 4th element did not match match everything
-				opt = ".*";
-			}
-
-			if (type.compare("encoder") == 0) {
-				type = "Gstreamer-Encoders";
-			} else if (type.compare("decoder") == 0) {
-				type = "Gstreamer-Decoders";
-			} else if (type.compare("urisource") == 0) {
-				type = "Gstreamer-Uri-Sources";
-			} else if (type.compare("urisink") == 0) {
-				type = "Gstreamer-Uri-Sinks";
-			} else if (type.compare("element") == 0) {
-				type = "Gstreamer-Elements";
-			}
-			cout << version << endl;
-			cout << type << endl;
-			cout << data << endl;
-			cout << opt << endl;
-			regex_t sre;
-			gchar *itemreg;
-			itemreg = g_strdup_printf("^%s:.* %s\\(, %s\\(,.*\\|;.*\\|$\\)\\|;\\|$\\)",
-						  type.c_str(),
-						  data.c_str(),
-						  opt.c_str());
-			if(regcomp(&sre, itemreg, REG_NEWLINE | REG_NOSUB) == 0) {
-				search.push_back(pair<string, regex_t>(version, sre));
-			} else {
-				g_debug("Search regex compilation error: ", itemreg);
-			}
-			g_free(itemreg);
-		} else {
-			g_debug("Did not match: %s", value);
-		}
-	}
-	regfree(&pkre);
-
-	// If nothing matched just return
-	if (search.size() == 0) {
-		return;
-	}
+    GstMatcher *matcher = new GstMatcher(values);
+    if (!matcher->hasMatches()) {
+        return;
+    }
 
-	for (pkgCache::PkgIterator pkg = packageCache->PkgBegin(); !pkg.end(); ++pkg)
-	{
-		if (_cancel) {
-			break;
-		}
-		// Ignore packages that exist only due to dependencies.
-		if (pkg.VersionList().end() && pkg.ProvidesList().end()) {
-			continue;
-		}
+    for (pkgCache::PkgIterator pkg = packageCache->PkgBegin(); !pkg.end(); ++pkg)
+    {
+        if (_cancel) {
+            delete matcher;
+            break;
+        }
+        // Ignore packages that exist only due to dependencies.
+        if (pkg.VersionList().end() && pkg.ProvidesList().end()) {
+            continue;
+        }
 
-		// TODO search in updates packages
-		// Ignore virtual packages
-		pkgCache::VerIterator ver = find_ver(pkg);
-		if (ver.end() == true) {
-			ver = find_candidate_ver(pkg);
-			if (ver.end() == true) {
-				continue;
-			}
-		}
-		pkgCache::VerFileIterator vf = ver.FileList();
-		pkgRecords::Parser &rec = packageRecords->Lookup(vf);
-		const char *start, *stop;
-		rec.GetRec(start, stop);
-		string record(start, stop - start);
-		for (vector<pair<string, regex_t> >::iterator i=search.begin();
-		     i != search.end();
-		++i) {
-			if (_cancel) {
-				break;
-			}
+        // TODO search in updates packages
+        // Ignore virtual packages
+        pkgCache::VerIterator ver = find_ver(pkg);
+        if (ver.end() == true) {
+            ver = find_candidate_ver(pkg);
+            if (ver.end() == true) {
+                continue;
+            }
+        }
 
-			// if Gstreamer-version: xxx is found try to match the regex
-			if (record.find(i->first) != string::npos) {
-				if (regexec(&i->second, record.c_str(), 0, NULL, 0) == 0) {
-					cout << record << endl;
-					output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
-				}
-			}
-		}
-	}
+        pkgCache::VerFileIterator vf = ver.FileList();
+        pkgRecords::Parser &rec = packageRecords->Lookup(vf);
+        const char *start, *stop;
+        rec.GetRec(start, stop);
+        string record(start, stop - start);
+        if (matcher->matches(record)) {
+            output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
+        }
+    }
 
-	// frees ours regexs
-	for (vector<pair<string, regex_t> >::iterator i=search.begin();
-		     i != search.end();
-		++i) {
-		regfree(&i->second);
-	}
+    delete matcher;
 }
 
 // used to emit packages it collects all the needed info
@@ -1014,71 +927,6 @@ vector<string> searchMimeType (PkBackend *backend, gchar **values, bool &error,
 	return packageList;
 }
 
-// TODO this was replaced with data in the cache
-// used to return files it reads, using the info from the files in /var/lib/dpkg/info/
-// vector<string> searchCodec (PkBackend *backend, gchar **values, bool &error, bool &_cancel)
-// {
-// 	vector<string> packageList;
-// 	regex_t re;
-// 	gchar *value;
-// 	gchar *values_str;
-//
-// 	values_str = g_strjoinv("|", values);
-// 	value = g_strdup_printf("^X-AppInstall-Codecs=\\(.*;\\)\\?\\(%s\\)\\(;.*\\)\\?$",
-// 				values_str);
-// 	g_free(values_str);
-//
-// 	if(regcomp(&re, value, REG_NOSUB) != 0) {
-// 		g_debug("Regex compilation error");
-// 		g_free(value);
-// 		return vector<string>();
-// 	}
-// 	g_free(value);
-//
-// 	DIR *dp;
-// 	struct dirent *dirp;
-// 	if (!(dp = opendir("/usr/share/app-install/desktop/"))) {
-// 		g_debug ("Error opening /usr/share/app-install/desktop/\n");
-// 		regfree(&re);
-// 		error = true;
-// 		return vector<string>();
-// 	}
-//
-// 	string line;
-// 	while ((dirp = readdir(dp)) != NULL) {
-// 		if (_cancel) {
-// 			break;
-// 		}
-// 		if (ends_with(dirp->d_name, ".desktop")) {
-// 			string f = "/usr/share/app-install/desktop/" + string(dirp->d_name);
-// 			ifstream in(f.c_str());
-// 			if (!in != 0) {
-// 				continue;
-// 			}
-// 			bool getName = false;
-// 			while (!in.eof()) {
-// 				getline(in, line);
-// 				if (getName) {
-// 					if (starts_with(line, "X-AppInstall-Package=")) {
-// 						// Remove the X-AppInstall-Package=
-// 						packageList.push_back(line.substr(21));
-// 						break;
-// 					}
-// 				} else {
-// 				    if (regexec(&re, line.c_str(), (size_t)0, NULL, 0) == 0) {
-// 						in.seekg(ios_base::beg);
-// 						getName = true;
-// 					}
-// 				}
-// 			}
-// 		}
-// 	}
-//
-// 	closedir(dp);
-// 	regfree(&re);
-// 	return packageList;
-// }
-
 // used to emit files it reads the info directly from the files
 void emit_files (PkBackend *backend, const gchar *pi)
 {
diff --git a/backends/aptcc/gstMatcher.cpp b/backends/aptcc/gstMatcher.cpp
index eb0f77d..2b27bf9 100644
--- a/backends/aptcc/gstMatcher.cpp
+++ b/backends/aptcc/gstMatcher.cpp
@@ -1,7 +1,5 @@
-// apt.cc
 //
-//  Copyright 1999-2008 Daniel Burrows
-//  Copyright (C) 2009 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
+//  Copyright (C) 2010 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
 //
 //  This program is free software; you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
@@ -19,42 +17,46 @@
 //  Boston, MA 02111-1307, USA.
 
 #include "gstMatcher.h"
-#include <stdio.h>
-#include <iostream>
 
+#include <regex.h>
 #include <gst/gst.h>
 
-gstMatcher::gstMatcher(gchar **values)
+GstMatcher::GstMatcher(gchar **values)
 {
+    gst_init(NULL, NULL);
+
     // The search term from PackageKit daemon:
     // gstreamer0.10(urisource-foobar)
     // gstreamer0.10(decoder-audio/x-wma)(wmaversion=3)
-
-    // The optional field is more complicated, it can have
-    // types, like int, float...
-    // TODO use some GST helper :/
-    regex_t pkre;
-
     const char *pkreg = "^gstreamer\\([0-9\\.]\\+\\)"
                 "(\\(encoder\\|decoder\\|urisource\\|urisink\\|element\\)-\\([^)]\\+\\))"
                 "\\((.*)\\)\\?";
 
+    regex_t pkre;
     if(regcomp(&pkre, pkreg, 0) != 0) {
         g_debug("Regex compilation error: ", pkreg);
         return;
     }
 
     gchar *value;
-    vector<pair<string, regex_t> > search;
     for (uint i = 0; i < g_strv_length(values); i++) {
         value = values[i];
         regmatch_t matches[5];
         if (regexec(&pkre, value, 5, matches, 0) == 0) {
+            Match values;
             string version, type, data, opt;
+
+            // Appends the version "0.10"
             version = "\nGstreamer-Version: ";
             version.append(string(value, matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so));
+
+            // type (encode|decoder...)
             type = string(value, matches[2].rm_so, matches[2].rm_eo - matches[2].rm_so);
+
+            // data "audio/x-wma"
             data = string(value, matches[3].rm_so, matches[3].rm_eo - matches[3].rm_so);
+
+            // opt "wmaversion=3"
             if (matches[4].rm_so != -1) {
                 // remove the '(' ')' that the regex matched
                 opt = string(value, matches[4].rm_so + 1, matches[4].rm_eo - matches[4].rm_so - 2);
@@ -64,46 +66,79 @@ gstMatcher::gstMatcher(gchar **values)
             }
 
             if (type.compare("encoder") == 0) {
-                type = "Gstreamer-Encoders";
+                type = "Gstreamer-Encoders: ";
             } else if (type.compare("decoder") == 0) {
-                type = "Gstreamer-Decoders";
+                type = "Gstreamer-Decoders: ";
             } else if (type.compare("urisource") == 0) {
-                type = "Gstreamer-Uri-Sources";
+                type = "Gstreamer-Uri-Sources: ";
             } else if (type.compare("urisink") == 0) {
-                type = "Gstreamer-Uri-Sinks";
+                type = "Gstreamer-Uri-Sinks: ";
             } else if (type.compare("element") == 0) {
-                type = "Gstreamer-Elements";
-            }
-            cout << version << endl;
-            cout << type << endl;
-            cout << data << endl;
-            cout << opt << endl;
-            regex_t sre;
-            gchar *itemreg;
-            GstCaps *caps;
-            caps = gst_caps_new_simple(data.c_str(), opt.c_str());
-            itemreg = g_strdup_printf("^%s:.* %s\\(, %s\\(,.*\\|;.*\\|$\\)\\|;\\|$\\)",
-                          type.c_str(),
-                          data.c_str(),
-                          opt.c_str());
-            if(regcomp(&sre, itemreg, REG_NEWLINE | REG_NOSUB) == 0) {
-                search.push_back(pair<string, regex_t>(version, sre));
-            } else {
-                g_debug("Search regex compilation error: ", itemreg);
+                type = "Gstreamer-Elements: ";
             }
-            g_free(itemreg);
+//             cout << version << endl;
+//             cout << type << endl;
+//             cout << data << endl;
+//             cout << opt << endl;
+
+            gchar *capsString;
+            capsString = g_strdup_printf("%s, %s", data.c_str(), opt.c_str());
+
+            values.version = version;
+            values.type    = type;
+            values.data    = data;
+            values.opt     = opt;
+            values.caps    = gst_caps_from_string(capsString);
+
+            m_matches.push_back(values);
+            g_free(capsString);
         } else {
             g_debug("Did not match: %s", value);
         }
     }
     regfree(&pkre);
+}
 
-    // If nothing matched just return
-    if (search.size() == 0) {
-        return;
+GstMatcher::~GstMatcher()
+{
+    gst_deinit();
+
+    for (vector<Match>::iterator i = m_matches.begin(); i != m_matches.end(); ++i) {
+        gst_caps_unref(static_cast<GstCaps*>(i->caps));
     }
 }
 
-gstMatcher::~gstMatcher()
+bool GstMatcher::matches(string record)
 {
+    for (vector<Match>::iterator i = m_matches.begin(); i != m_matches.end(); ++i) {
+            // Tries to find "Gstreamer-version: xxx"
+            if (record.find(i->version) != string::npos) {
+                size_t found;
+                found = record.find(i->type);
+                // Tries to find the type "Gstreamer-Uri-Sinks: "
+                if (found != string::npos) {
+                    found += i->type.size(); // skips the "Gstreamer-Uri-Sinks: " string
+                    size_t endOfLine;
+                    endOfLine = record.find('\n', found);
+
+                    GstCaps *caps;
+                    caps = gst_caps_from_string(record.substr(found, endOfLine - found).c_str());
+
+                    // if the record is capable of intersect them we found the package
+                    bool provides = gst_caps_can_intersect(static_cast<GstCaps*>(i->caps), caps);
+                    gst_caps_unref(caps);
+
+                    if (provides) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+}
+
+bool GstMatcher::hasMatches() const
+{
+    return !m_matches.empty();
 }
+
diff --git a/backends/aptcc/gstMatcher.h b/backends/aptcc/gstMatcher.h
index 2645702..7f8ca7b 100644
--- a/backends/aptcc/gstMatcher.h
+++ b/backends/aptcc/gstMatcher.h
@@ -1,7 +1,5 @@
-// apt.h  -*-c++-*-
 //
-//  Copyright 1999-2002, 2004-2005, 2007-2008 Daniel Burrows
-//  Copyright (C) 2009 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
+//  Copyright (C) 2010 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
 //
 //  This program is free software; you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
@@ -22,22 +20,32 @@
 #ifndef GST_MATCHER_H
 #define GST_MATCHER_H
 
-#include <regex.h>
-
 #include <glib.h>
 
 #include <vector>
-#include <map>
 #include <string>
 
 using namespace std;
 
-class gstMatcher
+typedef struct {
+    string   version;
+    string   type;
+    string   data;
+    string   opt;
+    void    *caps;
+} Match;
+
+class GstMatcher
 {
 public:
-	gstMatcher(gchar **values);
-	~gstMatcher();
+    GstMatcher(gchar **values);
+    ~GstMatcher();
+
+    bool matches(string record);
+    bool hasMatches() const;
 
+private:
+    vector<Match> m_matches;
 };
 
 #endif
diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index 5ad5b00..118c5df 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -508,15 +508,13 @@ backend_what_provides_thread (PkBackend *backend)
 {
 	PkProvidesEnum provides;
 	PkBitfield filters;
-	const gchar *search;
 	const gchar *provides_text;
 	gchar **values;
 	bool error = false;
 
 	filters  = (PkBitfield)     pk_backend_get_uint (backend, "filters");
 	provides = (PkProvidesEnum) pk_backend_get_uint (backend, "provides");
-	search   = pk_backend_get_string (backend, "search");
-	values   = g_strsplit (search, "&", 0);
+	values   = pk_backend_get_strv (backend, "search");
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
@@ -587,7 +585,6 @@ backend_what_provides_thread (PkBackend *backend)
 				       provides_text);
 	}
 
-	g_strfreev (values);
 	pk_backend_finished (backend);
 	return true;
 }
commit 79153b6865ff806b58b7c5079fec2c2e7fbd5106
Author: Piotr DrÄ…g <piotrdrag at gmail.com>
Date:   Wed Nov 24 14:24:18 2010 +0000

    l10n: Updated Polish (pl) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/pl.po b/po/pl.po
index 1a06d8f..c61efc9 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,10 +5,11 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-02 14:59+0000\n"
-"PO-Revision-Date: 2010-07-02 21:54+0200\n"
+"POT-Creation-Date: 2010-11-24 12:48+0000\n"
+"PO-Revision-Date: 2010-11-24 15:17+0100\n"
 "Last-Translator: Piotr DrÄ…g <piotrdrag at gmail.com>\n"
 "Language-Team: Polish <trans-pl at lists.fedoraproject.org>\n"
+"Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -17,115 +18,115 @@ msgstr ""
 
 #. TRANSLATORS: this is an atomic transaction
 #. TRANSLATORS: the role is the point of the transaction, e.g. update-system
-#: ../client/pk-console.c:176 ../client/pk-console.c:598
+#: ../client/pk-console.c:174 ../client/pk-console.c:596
 msgid "Transaction"
 msgstr "Transakcja"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:178
+#: ../client/pk-console.c:176
 msgid "System time"
 msgstr "Czas systemowy"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "Succeeded"
 msgstr "Powodzenie"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "True"
 msgstr "Prawda"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "False"
 msgstr "Fałsz"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:182 ../src/pk-polkit-action-lookup.c:332
+#: ../client/pk-console.c:180 ../src/pk-polkit-action-lookup.c:332
 msgid "Role"
 msgstr "Rola"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "Duration"
 msgstr "Czas trwania"
 
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "(seconds)"
 msgstr "(sekundy)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:191 ../src/pk-polkit-action-lookup.c:346
+#: ../client/pk-console.c:189 ../src/pk-polkit-action-lookup.c:346
 msgid "Command line"
 msgstr "Wiersz poleceń"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:193
+#: ../client/pk-console.c:191
 msgid "User ID"
 msgstr "Identyfikator użytkownika"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:200
+#: ../client/pk-console.c:198
 msgid "Username"
 msgstr "Nazwa użytkownika"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:204
+#: ../client/pk-console.c:202
 msgid "Real name"
 msgstr "ImiÄ™ i nazwisko"
 
-#: ../client/pk-console.c:212
+#: ../client/pk-console.c:210
 msgid "Affected packages:"
 msgstr "Dotyczy pakietów:"
 
-#: ../client/pk-console.c:214
+#: ../client/pk-console.c:212
 msgid "Affected packages: None"
 msgstr "Dotyczy pakietów: żadnych"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:249
+#: ../client/pk-console.c:247
 msgid "Distribution"
 msgstr "Dystrybucja"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:251
+#: ../client/pk-console.c:249
 msgid "Type"
 msgstr "Typ"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:253 ../client/pk-console.c:292
+#: ../client/pk-console.c:251 ../client/pk-console.c:290
 msgid "Summary"
 msgstr "Podsumowanie"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:281
+#: ../client/pk-console.c:279
 msgid "Category"
 msgstr "Kategoria"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:283
+#: ../client/pk-console.c:281
 msgid "ID"
 msgstr "Identyfikator"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:286
+#: ../client/pk-console.c:284
 msgid "Parent"
 msgstr "Nadrzędna"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:287
 msgid "Name"
 msgstr "Nazwa"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:295
+#: ../client/pk-console.c:293
 msgid "Icon"
 msgstr "Ikona"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:341
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
 msgstr "Szczegóły aktualizacji:"
 
@@ -134,9 +135,9 @@ msgstr "Szczegóły aktualizacji:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:347 ../client/pk-console.c:617
-#: ../lib/packagekit-glib2/pk-task-text.c:126
-#: ../lib/packagekit-glib2/pk-task-text.c:208
+#: ../client/pk-console.c:345 ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
 #: ../src/pk-polkit-action-lookup.c:357
 msgid "Package"
 msgid_plural "Packages"
@@ -145,165 +146,169 @@ msgstr[1] "Pakiety"
 msgstr[2] "Pakietów"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:350
+#: ../client/pk-console.c:348
 msgid "Updates"
 msgstr "Aktualizuje"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:354
+#: ../client/pk-console.c:352
 msgid "Obsoletes"
 msgstr "Zastępuje"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:358 ../lib/packagekit-glib2/pk-task-text.c:211
+#: ../client/pk-console.c:356 ../lib/packagekit-glib2/pk-task-text.c:209
 msgid "Vendor"
 msgstr "Producent"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:362
+#: ../client/pk-console.c:360
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:364
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:370
+#: ../client/pk-console.c:368
 msgid "Restart"
 msgstr "Uruchom ponownie"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:374
+#: ../client/pk-console.c:372
 msgid "Update text"
 msgstr "Tekst aktualizacji"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:378
+#: ../client/pk-console.c:376
 msgid "Changes"
 msgstr "Zmiany"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:382
+#: ../client/pk-console.c:380
 msgid "State"
 msgstr "Stan"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:386
+#: ../client/pk-console.c:384
 msgid "Issued"
 msgstr "Wydano"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:390 ../lib/packagekit-glib2/pk-console-shared.c:517
+#: ../client/pk-console.c:388 ../lib/packagekit-glib2/pk-console-shared.c:515
 msgid "Updated"
 msgstr "Zaktualizowano"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:426
+#: ../client/pk-console.c:424
 msgid "Enabled"
 msgstr "WÅ‚Ä…czone"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:429
+#: ../client/pk-console.c:427
 msgid "Disabled"
 msgstr "Wyłączone"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:461
+#: ../client/pk-console.c:459
 msgid "System restart required by:"
 msgstr "Ponowne uruchomienie systemu jest wymagane przez:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:464
+#: ../client/pk-console.c:462
 msgid "Session restart required:"
 msgstr "Wymagane jest ponowne uruchomienie sesji:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:467
+#: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
 msgstr "Ponowne uruchomienie systemu jest wymagane przez:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:470
+#: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
 msgstr "Wymagane jest ponowne uruchomienie sesji (z powodu bezpieczeństwa):"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:473
+#: ../client/pk-console.c:471
 msgid "Application restart required by:"
 msgstr "Ponowne uruchomienie programu jest wymagane przez:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:508
+#: ../client/pk-console.c:506
 msgid "Package description"
 msgstr "Opis pakietu"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:539
+#: ../client/pk-console.c:537
 msgid "Message:"
 msgstr "Komunikat:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:558
 msgid "No files"
 msgstr "Brak plików"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:565
+#: ../client/pk-console.c:563
 msgid "Package files"
 msgstr "Pliki pakietu"
 
 #. TRANSLATORS: the percentage complete of the transaction
-#: ../client/pk-console.c:633
+#: ../client/pk-console.c:631
 msgid "Percentage"
 msgstr "Procentowo"
 
 #. TRANSLATORS: the status of the transaction (e.g. downloading)
-#: ../client/pk-console.c:651
+#: ../client/pk-console.c:649
 msgid "Status"
 msgstr "Stan"
 
 #. TRANSLATORS: the results from the transaction
-#: ../client/pk-console.c:680
+#: ../client/pk-console.c:678
 msgid "Results:"
 msgstr "Wyniki:"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:685
 msgid "Fatal error"
 msgstr "Krytyczny błąd"
 
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "Brak pakietów do zaktualizowania."
+
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:696
-#: ../contrib/command-not-found/pk-command-not-found.c:454
-#: ../contrib/command-not-found/pk-command-not-found.c:634
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
 msgid "The transaction failed"
 msgstr "Transakcja nie powiodła się"
 
 #. TRANSLATORS: print a message when there are no updates
-#: ../client/pk-console.c:727
+#: ../client/pk-console.c:733
 msgid "There are no updates available at this time."
 msgstr "Brak dostępnych aktualizacji w tej chwili."
 
-#: ../client/pk-console.c:750
+#: ../client/pk-console.c:756
 msgid "There are no upgrades available at this time."
 msgstr "Brak dostępnych aktualizacji w tej chwili."
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:817
+#: ../client/pk-console.c:823
 msgid "Please restart the computer to complete the update."
 msgstr "Proszę uruchomić ponownie komputer, aby zakończyć aktualizację."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:820
+#: ../client/pk-console.c:826
 msgid "Please logout and login to complete the update."
 msgstr "Proszę wylogować się i zalogować, aby zakończyć aktualizację."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:823
+#: ../client/pk-console.c:829
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -312,7 +317,7 @@ msgstr ""
 "zainstalowano aktualizacje bezpieczeństwa."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:826
+#: ../client/pk-console.c:832
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -321,7 +326,7 @@ msgstr ""
 "zainstalowano aktualizacje bezpieczeństwa."
 
 #. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
-#: ../client/pk-console.c:852
+#: ../client/pk-console.c:858
 #, c-format
 msgid ""
 "Expected package name, actually got file. Try using 'pkcon install-local %s' "
@@ -331,19 +336,19 @@ msgstr ""
 "wykonać polecenie \"pkcon install-local %s\"."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:860
+#: ../client/pk-console.c:866
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Te narzędzie nie może odnaleźć dostępnych pakietów: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:888
+#: ../client/pk-console.c:894
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Te narzędzie nie może odnaleźć zainstalowanego pakietu: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:916 ../client/pk-console.c:944
+#: ../client/pk-console.c:922 ../client/pk-console.c:950
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Te narzędzie nie może odnaleźć pakietu: %s"
@@ -352,250 +357,269 @@ msgstr "Te narzędzie nie może odnaleźć pakietu: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:972 ../client/pk-console.c:1000
-#: ../client/pk-console.c:1028 ../client/pk-console.c:1056
-#: ../client/pk-console.c:1084
+#: ../client/pk-console.c:978 ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034 ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Te narzędzie nie może odnaleźć wszystkich pakietów: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1113
+#: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
 msgstr "Demon zawiesił się w połowie transakcji!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1147
+#: ../client/pk-console.c:1153
 msgid "PackageKit Console Interface"
 msgstr "Interfejs konsoli PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1149
+#: ../client/pk-console.c:1155
 msgid "Subcommands:"
 msgstr "Podpolecenia:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:1228
+#: ../client/pk-console.c:1234
 msgid "Failed to get the time since this action was last completed"
 msgstr ""
 "Uzyskanie czasu od ostatniego zakończenia tego działania nie powiodło się"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1268 ../client/pk-monitor.c:373
+#: ../client/pk-console.c:1275 ../client/pk-monitor.c:371
 msgid "Show the program version and exit"
 msgstr "Wyświetla wersję programu i wyłącza"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1271
+#: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
 msgstr "Ustawia filtr, np. zainstalowane"
 
 #. TRANSLATORS: command line argument, use a non-standard install prefix
-#: ../client/pk-console.c:1274
+#: ../client/pk-console.c:1281
 msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
 msgstr "Ustawia główny katalog instalacji, np. \"/\" lub \"/mnt/ltsp\""
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:1284
 msgid "Exit without waiting for actions to complete"
 msgstr "Wyłącza bez oczekiwania na zakończenie działań"
 
 #. command line argument, do we ask questions
-#: ../client/pk-console.c:1280
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
 msgid "Install the packages without asking for confirmation"
 msgstr "Instaluje pakiety bez prośby o potwierdzenie"
 
 #. TRANSLATORS: command line argument, this command is not a priority
-#: ../client/pk-console.c:1283
+#: ../client/pk-console.c:1290
 msgid "Run the command using idle network bandwidth and also using less power"
 msgstr ""
 "Wykonuje polecenie używając bezczynnego połączenia sieciowego, a także "
 "zużywając mniej energii"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
-#: ../client/pk-console.c:1286
+#: ../client/pk-console.c:1293
 msgid ""
 "Print to screen a machine readable output, rather than using animated widgets"
 msgstr ""
 "Wyświetla wyjście czytelne dla komputera, zamiast używania animowanych "
-"widgetów"
+"widżetów"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr ""
+"Maksymalny czas przechowywania metadanych w pamięci podręcznej. Wartość -1 "
+"oznacza \"never\" (nigdy)."
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1308
+#: ../client/pk-console.c:1333
 msgid "Failed to contact PackageKit"
 msgstr "Skontaktowanie się z usługą PackageKit nie powiodło się"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1369
+#: ../client/pk-console.c:1381
 msgid "The proxy could not be set"
 msgstr "Nie można ustawić pośrednika"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1381
+#: ../client/pk-console.c:1393
 msgid "The install root could not be set"
 msgstr "Nie można ustawić głównego katalogu instalacji"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1393
+#: ../client/pk-console.c:1405
 msgid "The filter specified was invalid"
 msgstr "Podany filtr jest nieprawidłowy"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1412
+#: ../client/pk-console.c:1424
 msgid "A search type is required, e.g. name"
 msgstr "Wymagany jest typ wyszukiwania, np. nazwa"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1419 ../client/pk-console.c:1431
-#: ../client/pk-console.c:1443 ../client/pk-console.c:1455
+#: ../client/pk-console.c:1431 ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455 ../client/pk-console.c:1467
 msgid "A search term is required"
 msgstr "Wymagany jest wyszukiwany termin"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1465
+#: ../client/pk-console.c:1477
 msgid "Invalid search type"
 msgstr "Nieprawidłowy typ wyszukiwania"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1471
+#: ../client/pk-console.c:1483
 msgid "A package name to install is required"
 msgstr "Wymagana jest nazwa pakietu do zainstalowania"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1480
+#: ../client/pk-console.c:1492
 msgid "A filename to install is required"
 msgstr "Wymagana jest nazwa pliku do zainstalowania"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1492
+#: ../client/pk-console.c:1503
 msgid "A type, key_id and package_id are required"
 msgstr "Wymagany jest typ, key_id i package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1503
+#: ../client/pk-console.c:1514
 msgid "A package name to remove is required"
 msgstr "Wymagana jest nazwa pakietu do usunięcia"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1512
+#: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
 msgstr "Wymagany jest katalog docelowy i nazwy pakietów do pobrania"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1519
+#: ../client/pk-console.c:1530
 msgid "Directory not found"
 msgstr "Nie odnaleziono katalogu"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1528
+#: ../client/pk-console.c:1539
 msgid "A licence identifier (eula-id) is required"
 msgstr "Wymagany jest identyfikator licencji (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1539
+#: ../client/pk-console.c:1550
 msgid "A transaction identifier (tid) is required"
 msgstr "Wymagany jest identyfikator transakcji (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1560
+#: ../client/pk-console.c:1571
 msgid "A package name to resolve is required"
 msgstr "Wymagana jest nazwa pakietu do rozwiÄ…zania"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1571 ../client/pk-console.c:1582
+#: ../client/pk-console.c:1582 ../client/pk-console.c:1593
 msgid "A repository name is required"
 msgstr "Wymagana jest nazwa repozytorium"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1593
+#: ../client/pk-console.c:1604
 msgid "A repo name, parameter and value are required"
 msgstr "Wymagana jest nazwa, parametr i wartość repozytorium"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1610
+#: ../client/pk-console.c:1621
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Wymagane jest działanie, np. \"update-system\""
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1617
+#: ../client/pk-console.c:1628
 msgid "A correct role is required"
 msgstr "Wymagana jest bieżąca rola"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1627 ../client/pk-console.c:1642
-#: ../client/pk-console.c:1651 ../client/pk-console.c:1671
-#: ../client/pk-console.c:1680 ../client/pk-generate-pack.c:316
+#: ../client/pk-console.c:1638 ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661 ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690 ../client/pk-generate-pack.c:314
 msgid "A package name is required"
 msgstr "Wymagana jest nazwa pakietu"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1660
+#: ../client/pk-console.c:1670
 msgid "A package provide string is required"
 msgstr "Wymagany jest łańcuch dostarczania pakietu"
 
+#. TRANSLATORS: The user did not provide a distro name
+#: ../client/pk-console.c:1714
+msgid "A distribution name is required"
+msgstr "Wymagana jest nazwa dystrybucji"
+
+#. TRANSLATORS: The user did not provide an upgrade type
+#: ../client/pk-console.c:1720
+msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
+msgstr ""
+"Wymagany jest typ aktualizacji, np. \"minimal\" (minimalna), \"default\" "
+"(domyślna) lub \"complete\" (pełna)"
+
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1741
+#: ../client/pk-console.c:1770
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Opcja \"%s\" nie jest obsługiwana"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1751
+#: ../client/pk-console.c:1780
 msgid "Command failed"
 msgstr "Polecenie nie powiodło się"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:255
+#: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Proszę ustawić nazwy plików zależności do wykluczenia"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:258
+#: ../client/pk-generate-pack.c:256
 msgid "The output file or directory (the current directory is used if omitted)"
 msgstr ""
 "Plik lub katalog wyjściowy (użyty zostanie bieżący katalog, jeśli zostanie "
 "pominięte)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:259
 msgid "The package to be put into the service pack"
 msgstr "Pakiet do umieszczenia w pakiecie serwisowym"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:262
 msgid "Put all updates available in the service pack"
 msgstr "Wszystkie dostępne aktualizacje w pakiecie serwisowym"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:300
+#: ../client/pk-generate-pack.c:298
 msgid "Neither --package or --updates option selected."
 msgstr "Nie wybrano żadnej z opcji --package lub --updates."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:308
+#: ../client/pk-generate-pack.c:306
 msgid "Both options selected."
 msgstr "Wybrano obie opcje."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:324
+#: ../client/pk-generate-pack.c:322
 msgid "A output directory or file name is required"
 msgstr "Wymagany jest katalog lub nazwa pliku wyjściowego"
 
 #. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:340
 msgid "The daemon failed to startup"
 msgstr "Uruchomienie demona nie powiodło się"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:353 ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:351 ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
 msgstr "Menedżer pakietów nie może wykonać tego typu działania."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:366
+#: ../client/pk-generate-pack.c:364
 msgid ""
 "Service packs cannot be created as PackageKit was not built with libarchive "
 "support."
@@ -604,410 +628,417 @@ msgstr ""
 "zbudowano bez obsługi biblioteki libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:377
+#: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Jeśli podano plik, nazwa pakietu serwisowego musi kończyć się"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:393
+#: ../client/pk-generate-pack.c:391
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Pakiet serwisowy o tej samej nazwie już istnieje, zastąpić go?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:396
+#: ../client/pk-generate-pack.c:394
 msgid "The pack was not overwritten."
 msgstr "Pakiet nie został zastąpiony."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:409
+#: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "Utworzenie katalogu nie powiodło się:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:421
+#: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
 msgstr "Otwarcie listy pakietów nie powiodło się."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:430
+#: ../client/pk-generate-pack.c:428
 msgid "Finding package name."
 msgstr "Wyszukiwanie nazwy pakietu."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:434
+#: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Odnalezienie pakietu \"%s\" nie powiodło się: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:442
+#: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
 msgstr "Tworzenie pakietu serwisowego..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:457
+#: ../client/pk-generate-pack.c:455
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Utworzono pakiet serwisowy \"%s\""
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:462
+#: ../client/pk-generate-pack.c:460
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Utworzenie \"%s\" nie powiodło się: %s"
 
-#: ../client/pk-monitor.c:286
+#: ../client/pk-monitor.c:284
 msgid "Failed to get daemon state"
 msgstr "Uzyskanie stanu demona nie powiodło się"
 
-#: ../client/pk-monitor.c:351
+#: ../client/pk-monitor.c:349
 msgid "Failed to get properties"
 msgstr "Uzyskanie właściwości nie powiodło się"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:389
+#: ../client/pk-monitor.c:387
 msgid "PackageKit Monitor"
 msgstr "Monitor PackageKit"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:497
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
 msgid "Getting package information..."
 msgstr "Pobieranie informacji o pakiecie..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:503
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
 #, c-format
 msgid "Run %s"
 msgstr "Uruchom %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:509
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
 msgid "Installed version"
 msgstr "Zainstalowana wersja"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
 #, c-format
 msgid "Run version %s now"
 msgstr "Uruchom wersjÄ™ %s"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:523
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
 msgid "Run now"
 msgstr "Uruchom teraz"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:529
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
 #, c-format
 msgid "Update to version %s"
 msgstr "Zaktualizuj do wersji %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:535
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
 #, c-format
 msgid "Install %s now"
 msgstr "Zainstaluj %s"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:538
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
 msgid "Version"
 msgstr "Wersja"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:543
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
 msgid "No packages found for your system"
 msgstr "Nie odnaleziono pakietów dla systemu"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:548
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
 msgid "Installing..."
 msgstr "Instalowanie..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:367
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Downloading details about the software sources."
 msgstr "Pobieranie szczegółów o źródłach oprogramowania."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:371
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Downloading filelists (this may take some time to complete)."
 msgstr "Pobieranie list plików (może to zająć trochę czasu)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:375
+#: ../contrib/command-not-found/pk-command-not-found.c:374
 msgid "Waiting for package manager lock."
 msgstr "Oczekiwanie na blokadę menedżera pakietów."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:379
+#: ../contrib/command-not-found/pk-command-not-found.c:378
 msgid "Loading list of packages."
 msgstr "Wczytywanie listy pakietów."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:445
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Odnalezienie pliku nie powiodło się"
 
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "Pobranie listy plików nie powiodło się"
+
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:597
+#: ../contrib/command-not-found/pk-command-not-found.c:602
 msgid "Failed to launch:"
 msgstr "Uruchomienie nie powiodło się:"
 
 #. TRANSLATORS: we failed to install the package
-#: ../contrib/command-not-found/pk-command-not-found.c:625
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "Failed to install packages"
 msgstr "Zainstalowanie pakietów nie powiodło się"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:701
+#: ../contrib/command-not-found/pk-command-not-found.c:706
 msgid "PackageKit Command Not Found"
 msgstr "Nie odnaleziono polecenia PackageKit"
 
-#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:727
-msgid "Command not found."
-msgstr "Nie odnaleziono polecenia."
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "nie odnaleziono polecenia"
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:745
+#: ../contrib/command-not-found/pk-command-not-found.c:757
 msgid "Similar command is:"
 msgstr "Podobne polecenie:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:755
+#: ../contrib/command-not-found/pk-command-not-found.c:771
 msgid "Run similar command:"
 msgstr "Wykonaj podobne polecenie:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:769
-#: ../contrib/command-not-found/pk-command-not-found.c:778
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
 msgid "Similar commands are:"
 msgstr "Podobne polecenia:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:801
 msgid "Please choose a command to run"
 msgstr "Proszę wybrać polecenie do wykonania"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:803
+#: ../contrib/command-not-found/pk-command-not-found.c:819
 msgid "The package providing this file is:"
 msgstr "Pakiet dostarczajÄ…cy ten plik:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:808
+#: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "Zainstalować pakiet \"%s\", aby dostarczyć polecenie \"%s\"?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:832
+#: ../contrib/command-not-found/pk-command-not-found.c:853
 msgid "Packages providing this file are:"
 msgstr "Pakiety dostarczajÄ…ce ten plik:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:842
+#: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
 msgstr "Odpowiednie pakiety:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:851
+#: ../contrib/command-not-found/pk-command-not-found.c:872
 msgid "Please choose a package to install"
 msgstr "Proszę wybrać pakiet do zainstalowania"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:197
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "Rozpoczynanie instalacji"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:409
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr ""
 "Odnalezienie pakietu %s nie powiodło się lub jest już zainstalowany: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
 msgid ""
 "Don't actually install any packages, only simulate what would be installed"
 msgstr "Nie instaluje żadnych pakietów, tylko symuluje instalację"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:521
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
 msgstr "Nie instaluje zależności podstawowych pakietów"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
 msgid "Do not display information or progress"
 msgstr "Nie wyświetla informacji lub postępu"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:542
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 msgid "PackageKit Debuginfo Installer"
 msgstr "Instalator pakietów debugowania PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "BŁĄD: proszę podać nazwy pakietów do zainstalowania."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:592
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
 #, c-format
 msgid "Getting sources list"
 msgstr "Pobieranie listy źródeł"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:602
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:677
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:805
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:872
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:916
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 msgid "FAILED."
 msgstr "NIEUDANE."
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:617
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:692
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:776
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:820
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:620
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Odnaleziono %i włączone i %i wyłączone źródła."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:627
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Wyszukiwanie źródeł pakietów debugowania"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:660
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Odnaleziono %i wyłączone repozytoria pakietów debugowania."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:667
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Włączanie źródeł pakietów debugowania"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:695
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Włączono %i źródła pakietów debugowania."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:702
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Wyszukiwanie źródeł pakietów debugowania"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:714
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Odnalezienie pakietu %s nie powiodło się: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Odnalezienie pakietu debugowania %s nie powiodło się: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:765
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
 #, c-format
 msgid "Found no packages to install."
 msgstr "Nie odnaleziono pakietów do zainstalowania."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:779
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
 #, c-format
 msgid "Found %i packages:"
 msgstr "Odnaleziono %i pakiety:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:795
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Wyszukiwanie pakietów zależnych od tych pakietów"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "Nie można odnaleźć zależnych pakietów: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:824
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Odnaleziono %i dodatkowe pakiety."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
 #, c-format
 msgid "No extra packages required."
 msgstr "Dodatkowe pakiety nie sÄ… wymagane."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:837
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Odnaleziono %i pakiety do zainstalowania:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:850
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "Pakiety nie zostanÄ… zainstalowane w trybie symulacji"
 
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:862
-#: ../lib/packagekit-glib2/pk-console-shared.c:289
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
 #, c-format
 msgid "Installing packages"
 msgstr "Instalowanie pakietów"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:875
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "Nie można zainstalować pakietów: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Wyłączanie źródeł poprzednio włączonych"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:919
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "Nie można wyłączyć źródeł pakietów debugowania: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:934
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Wyłączono %i źródła pakietów debugowania."
@@ -1114,604 +1145,617 @@ msgstr "Lista pakietów PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Pakiet serwisowy PackageKit"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:65
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Proszę podać numer od 1 do %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:191
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
 msgid "More than one package matches:"
 msgstr "Pasuje więcej niż jeden pakiet:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:202
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
 msgid "Please choose the correct package: "
 msgstr "Proszę wybrać poprawny pakiet: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:257
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
 msgid "Unknown state"
 msgstr "Nieznany stan"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:261
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
 msgid "Starting"
 msgstr "Rozpoczynanie"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:265
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
 msgid "Waiting in queue"
 msgstr "Oczekiwanie w kolejce"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:269
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
 msgid "Running"
 msgstr "Wykonywanie"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:273
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
 msgid "Querying"
 msgstr "Odpytywanie"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:277
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
 msgid "Getting information"
 msgstr "Pobieranie informacji"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:281
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
 msgid "Removing packages"
 msgstr "Usuwanie pakietu"
 
 #. TRANSLATORS: transaction state, downloading package files
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:285
-#: ../lib/packagekit-glib2/pk-console-shared.c:663
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
 msgid "Downloading packages"
 msgstr "Pobieranie pakietów"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:293
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
 msgid "Refreshing software list"
 msgstr "Odświeżanie listy oprogramowania"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:297
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
 msgid "Installing updates"
 msgstr "Instalowanie aktualizacji"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:301
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
 msgid "Cleaning up packages"
 msgstr "Czyszczenie pakietów"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:305
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
 msgid "Obsoleting packages"
 msgstr "Zastępowanie pakietów"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:309
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
 msgid "Resolving dependencies"
 msgstr "Rozwiązywanie zależności"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:313
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
 msgid "Checking signatures"
 msgstr "Sprawdzanie podpisów"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:317
-#: ../lib/packagekit-glib2/pk-console-shared.c:623
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
 msgid "Rolling back"
 msgstr "Przywracanie"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:321
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
 msgid "Testing changes"
 msgstr "Testowanie zmian"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:325
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
 msgid "Committing changes"
 msgstr "Wprowadzanie zmian"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:329
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
 msgid "Requesting data"
 msgstr "Żądanie danych"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:333
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
 msgid "Finished"
 msgstr "Ukończono"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:337
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
 msgid "Cancelling"
 msgstr "Anulowanie"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:341
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
 msgid "Downloading repository information"
 msgstr "Pobieranie informacji o repozytorium"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:345
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
 msgid "Downloading list of packages"
 msgstr "Pobieranie listy pakietów"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:349
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
 msgid "Downloading file lists"
 msgstr "Pobieranie list plików"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:353
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
 msgid "Downloading lists of changes"
 msgstr "Pobieranie listy zmian"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:357
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
 msgid "Downloading groups"
 msgstr "Pobieranie grup"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:361
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
 msgid "Downloading update information"
 msgstr "Pobieranie informacji o aktualizacji"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:365
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
 msgid "Repackaging files"
 msgstr "Ponowne umieszczanie plików w pakietach"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:369
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
 msgid "Loading cache"
 msgstr "Wczytywanie pamięci podręcznej"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:373
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
 msgid "Scanning applications"
 msgstr "Skanowanie programów"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:377
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
 msgid "Generating package lists"
 msgstr "Tworzenie list pakietów"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:381
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
 msgid "Waiting for package manager lock"
 msgstr "Oczekiwanie na blokadę menedżera pakietów"
 
 #. TRANSLATORS: transaction state, waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:385
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
 msgid "Waiting for authentication"
 msgstr "Oczekiwanie na uwierzytelnienie"
 
 #. TRANSLATORS: transaction state, we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:389
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
 msgid "Updating running applications"
 msgstr "Aktualizowanie uruchomionych programów"
 
 #. TRANSLATORS: transaction state, we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:393
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
 msgid "Checking applications in use"
 msgstr "Sprawdzanie używanych programów"
 
 #. TRANSLATORS: transaction state, we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:397
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
 msgid "Checking libraries in use"
 msgstr "Sprawdzanie używanych bibliotek"
 
 #. TRANSLATORS: transaction state, we are copying package files before or after the transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
 msgid "Copying files"
 msgstr "Kopiowanie plików"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:419
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
 msgid "Trivial"
 msgstr "Drobna"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:423
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
 msgid "Normal"
 msgstr "Normalna"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:427
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
 msgid "Important"
 msgstr "Ważna"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:431
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
 msgid "Security"
 msgstr "Bezpieczeństwa"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:435
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
 msgid "Bug fix "
 msgstr "Naprawiająca błędy"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:439
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
 msgid "Enhancement"
 msgstr "Ulepszenie"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:443
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
 msgid "Blocked"
 msgstr "Zablokowana"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
-#: ../lib/packagekit-glib2/pk-console-shared.c:521
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
 msgid "Installed"
 msgstr "Zainstalowana"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:453
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
 msgid "Available"
 msgstr "Dostępna"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:471
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
 msgid "Downloading"
 msgstr "Pobieranie"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:475
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
 msgid "Updating"
 msgstr "Aktualizowanie"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:479
-#: ../lib/packagekit-glib2/pk-console-shared.c:599
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
 msgid "Installing"
 msgstr "Instalowanie"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:483
-#: ../lib/packagekit-glib2/pk-console-shared.c:595
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
 msgid "Removing"
 msgstr "Usuwanie"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:487
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
 msgid "Cleaning up"
 msgstr "Czyszczenie"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:491
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
 msgid "Obsoleting"
 msgstr "Zastępowanie"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:495
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
 msgid "Reinstalling"
 msgstr "Ponowne instalowanie"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:513
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
 msgid "Downloaded"
 msgstr "Pobierano"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:525
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
 msgid "Removed"
 msgstr "Usunięto"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:529
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
 msgid "Cleaned up"
 msgstr "Wyczyszczono"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:533
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
 msgid "Obsoleted"
 msgstr "ZastÄ…piono"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:537
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
 msgid "Reinstalled"
 msgstr "Zainstalowano ponownie"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:555
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
 msgid "Unknown role type"
 msgstr "Nieznany typ roli"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:559
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
 msgid "Getting dependencies"
 msgstr "Pobieranie zależności"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:563
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
 msgid "Getting update details"
 msgstr "Pobieranie szczegółów aktualizacji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:567
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
 msgid "Getting details"
 msgstr "Pobieranie szczegółów"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:571
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
 msgid "Getting requires"
 msgstr "Pobieranie wymagań"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:575
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
 msgid "Getting updates"
 msgstr "Pobieranie aktualizacji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:579
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
 msgid "Searching by details"
 msgstr "Wyszukiwanie według szczegółów"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:583
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
 msgid "Searching by file"
 msgstr "Wyszukiwanie według plików"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:587
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
 msgid "Searching groups"
 msgstr "Wyszukiwanie grup"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:591
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
 msgid "Searching by name"
 msgstr "Wyszukiwanie według nazw"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:603
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
 msgid "Installing files"
 msgstr "Instalowanie plików"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:607
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
 msgid "Refreshing cache"
 msgstr "Odświeżanie pamięci podręcznej"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:611
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
 msgid "Updating packages"
 msgstr "Aktualizowanie pakietów"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:615
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
 msgid "Updating system"
 msgstr "Aktualizowanie systemu"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:619
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
 msgid "Canceling"
 msgstr "Anulowanie"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:627
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
 msgid "Getting repositories"
 msgstr "Pobieranie repozytoriów"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:631
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
 msgid "Enabling repository"
 msgstr "WÅ‚Ä…czanie repozytorium"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:635
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
 msgid "Setting data"
 msgstr "Ustawianie danych"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:639
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
 msgid "Resolving"
 msgstr "RozwiÄ…zywanie"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:643
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
 msgid "Getting file list"
 msgstr "Pobieranie listy plików"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:647
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
 msgid "Getting provides"
 msgstr "Pobieranie dostarczanych"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:651
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
 msgid "Installing signature"
 msgstr "Instalowanie podpisu"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:655
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
 msgid "Getting packages"
 msgstr "Pobieranie pakietów"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:659
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
 msgid "Accepting EULA"
 msgstr "Akceptowanie licencji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:667
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
 msgid "Getting upgrades"
 msgstr "Pobieranie aktualizacji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:671
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
 msgid "Getting categories"
 msgstr "Pobieranie kategorii"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:675
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
 msgid "Getting transactions"
 msgstr "Pobieranie transakcji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:679
-#: ../lib/packagekit-glib2/pk-console-shared.c:683
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
 msgid "Simulating install"
 msgstr "Symulowanie instalacji"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:687
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
 msgid "Simulating remove"
 msgstr "Symulowanie usunięcia"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:691
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
 msgid "Simulating update"
 msgstr "Symulowanie aktualizacji"
 
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "Wyświetla informacje o debugowaniu dla wszystkich plików"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "Opcje debugowania"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "Wyświetla opcje debugowania"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
-#: ../lib/packagekit-glib2/pk-task-text.c:69
+#: ../lib/packagekit-glib2/pk-task-text.c:67
 msgid "Do you want to allow installing of unsigned software?"
 msgstr "Pozwolić na instalowanie niepodpisanego oprogramowania?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:74
+#: ../lib/packagekit-glib2/pk-task-text.c:72
 msgid "The unsigned software will not be installed."
 msgstr "Niepodpisane oprogramowanie nie zostanie zainstalowane."
 
 #. TRANSLATORS: the package repository is signed by a key that is not recognised
-#: ../lib/packagekit-glib2/pk-task-text.c:123
+#: ../lib/packagekit-glib2/pk-task-text.c:121
 msgid "Software source signature required"
 msgstr "Wymagany jest podpis źródła oprogramowania"
 
 #. TRANSLATORS: the package repository name
-#: ../lib/packagekit-glib2/pk-task-text.c:129
+#: ../lib/packagekit-glib2/pk-task-text.c:127
 msgid "Software source name"
 msgstr "Nazwa źródła oprogramowania"
 
 #. TRANSLATORS: the key URL
-#: ../lib/packagekit-glib2/pk-task-text.c:132
+#: ../lib/packagekit-glib2/pk-task-text.c:130
 msgid "Key URL"
 msgstr "Adres URL klucza"
 
 #. TRANSLATORS: the username of the key
-#: ../lib/packagekit-glib2/pk-task-text.c:135
+#: ../lib/packagekit-glib2/pk-task-text.c:133
 msgid "Key user"
 msgstr "Użytkownika klucza"
 
 #. TRANSLATORS: the key ID, usually a few hex digits
-#: ../lib/packagekit-glib2/pk-task-text.c:138
+#: ../lib/packagekit-glib2/pk-task-text.c:136
 msgid "Key ID"
 msgstr "Identyfikator klucza"
 
 #. TRANSLATORS: the key fingerprint, again, yet more hex
-#: ../lib/packagekit-glib2/pk-task-text.c:141
+#: ../lib/packagekit-glib2/pk-task-text.c:139
 msgid "Key fingerprint"
 msgstr "Odcisk klucza"
 
 #. TRANSLATORS: the timestamp (a bit like a machine readable time)
-#: ../lib/packagekit-glib2/pk-task-text.c:144
+#: ../lib/packagekit-glib2/pk-task-text.c:142
 msgid "Key Timestamp"
 msgstr "Czas klucza"
 
 #. TRANSLATORS: ask the user if they want to import
-#: ../lib/packagekit-glib2/pk-task-text.c:157
+#: ../lib/packagekit-glib2/pk-task-text.c:155
 msgid "Do you accept this signature?"
 msgstr "Zaakceptować ten podpis?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:162
+#: ../lib/packagekit-glib2/pk-task-text.c:160
 msgid "The signature was not accepted."
 msgstr "Podpis nie został zaakceptowany."
 
 #. TRANSLATORS: this is another name for a software licence that has to be read before installing
-#: ../lib/packagekit-glib2/pk-task-text.c:205
+#: ../lib/packagekit-glib2/pk-task-text.c:203
 msgid "End user licence agreement required"
 msgstr "Wymagana jest umowa licencyjna użytkownika końcowego"
 
 #. TRANSLATORS: the EULA text itself (long and boring)
-#: ../lib/packagekit-glib2/pk-task-text.c:214
+#: ../lib/packagekit-glib2/pk-task-text.c:212
 msgid "Agreement"
 msgstr "Umowa"
 
 #. TRANSLATORS: ask the user if they've read and accepted the EULA
-#: ../lib/packagekit-glib2/pk-task-text.c:223
+#: ../lib/packagekit-glib2/pk-task-text.c:221
 msgid "Do you accept this agreement?"
 msgstr "Zaakceptować tę umowę?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:228
+#: ../lib/packagekit-glib2/pk-task-text.c:226
 msgid "The agreement was not accepted."
 msgstr "Umowa nie została zaakceptowana."
 
 #. TRANSLATORS: the user needs to change media inserted into the computer
-#: ../lib/packagekit-glib2/pk-task-text.c:267
+#: ../lib/packagekit-glib2/pk-task-text.c:265
 msgid "Media change required"
 msgstr "Wymagana jest zmiana nośnika"
 
 #. TRANSLATORS: the type, e.g. DVD, CD, etc
-#: ../lib/packagekit-glib2/pk-task-text.c:270
+#: ../lib/packagekit-glib2/pk-task-text.c:268
 msgid "Media type"
 msgstr "Typ nośnika"
 
 #. TRANSLATORS: the media label, usually like 'disk-1of3'
-#: ../lib/packagekit-glib2/pk-task-text.c:273
+#: ../lib/packagekit-glib2/pk-task-text.c:271
 msgid "Media label"
 msgstr "Etykieta nośnika"
 
 #. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
-#: ../lib/packagekit-glib2/pk-task-text.c:276
+#: ../lib/packagekit-glib2/pk-task-text.c:274
 msgid "Text"
 msgstr "Tekst"
 
 #. TRANSLATORS: ask the user to insert the media
-#: ../lib/packagekit-glib2/pk-task-text.c:282
+#: ../lib/packagekit-glib2/pk-task-text.c:280
 msgid "Please insert the correct media"
 msgstr "Proszę włożyć poprawny nośnik"
 
 #. TRANSLATORS: tell the user we've not done anything as they are lazy
-#: ../lib/packagekit-glib2/pk-task-text.c:287
+#: ../lib/packagekit-glib2/pk-task-text.c:285
 msgid "The correct media was not inserted."
 msgstr "Nie włożono poprawnego nośnika."
 
 #. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:302
+#: ../lib/packagekit-glib2/pk-task-text.c:300
 msgid "The following packages have to be removed:"
 msgstr "Następujące pakiety muszą zostać usunięte:"
 
 #. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:307
+#: ../lib/packagekit-glib2/pk-task-text.c:305
 msgid "The following packages have to be installed:"
 msgstr "Następujące pakiety muszą zostać zainstalowane:"
 
 #. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:312
+#: ../lib/packagekit-glib2/pk-task-text.c:310
 msgid "The following packages have to be updated:"
 msgstr "Następujące pakiety muszą zostać zaktualizowane:"
 
 #. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:317
+#: ../lib/packagekit-glib2/pk-task-text.c:315
 msgid "The following packages have to be reinstalled:"
 msgstr "Następujące pakiety muszą zostać ponownie zainstalowane:"
 
 #. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:322
+#: ../lib/packagekit-glib2/pk-task-text.c:320
 msgid "The following packages have to be downgraded:"
 msgstr "Następujące pakiety muszą zostać zainstalowane w starszych wersjach:"
 
 #. TRANSLATORS: ask the user if the proposed changes are okay
-#: ../lib/packagekit-glib2/pk-task-text.c:382
+#: ../lib/packagekit-glib2/pk-task-text.c:380
 msgid "Proceed with changes?"
 msgstr "Kontynuować wprowadzanie zmian?"
 
 #. TRANSLATORS: tell the user we didn't do anything
-#: ../lib/packagekit-glib2/pk-task-text.c:387
+#: ../lib/packagekit-glib2/pk-task-text.c:385
 msgid "The transaction did not proceed."
 msgstr "Transakcja nie będzie kontynuowana."
 
@@ -1794,12 +1838,16 @@ msgstr ""
 msgid "Authentication is required to update packages"
 msgstr "Wymagane jest uwierzytelnienie, aby zaktualizować pakiety"
 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Authentication is required to upgrade the operating system"
+msgstr "Wymagane jest uwierzytelnienie, aby zaktualizować system operacyjny"
+
 #. SECURITY:
 #. - Normal users are allowed to cancel their own task without
 #. authentication, but a different user id needs the admin password
 #. to cancel another users task.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:26
+#: ../policy/org.freedesktop.packagekit.policy.in.h:27
 msgid "Cancel foreign task"
 msgstr "Anulowanie obcego zadania"
 
@@ -1809,7 +1857,7 @@ msgstr "Anulowanie obcego zadania"
 #. - This could be used to overwrite files not owned by the user using
 #. a carefully created package file.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:33
+#: ../policy/org.freedesktop.packagekit.policy.in.h:34
 msgid "Change location that packages are installed"
 msgstr "Zmiana położenia, w którym są instalowane pakiety"
 
@@ -1818,7 +1866,7 @@ msgstr "Zmiana położenia, w którym są instalowane pakiety"
 #. software sources as this can be used to enable new updates or
 #. install different versions of software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:39
+#: ../policy/org.freedesktop.packagekit.policy.in.h:40
 msgid "Change software source parameters"
 msgstr "Zmiana parametrów źródła oprogramowania"
 
@@ -1828,7 +1876,7 @@ msgstr "Zmiana parametrów źródła oprogramowania"
 #. - Paranoid users (or parents!) can change this to 'auth_admin' or
 #. 'auth_admin_keep'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:46
+#: ../policy/org.freedesktop.packagekit.policy.in.h:47
 msgid "Install signed package"
 msgstr "Instalacja podpisanego pakietu"
 
@@ -1838,7 +1886,7 @@ msgstr "Instalacja podpisanego pakietu"
 #. password would be a massive security hole.
 #. - This is not retained as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:53
+#: ../policy/org.freedesktop.packagekit.policy.in.h:54
 msgid "Install untrusted local file"
 msgstr "Instalacja niezaufanego lokalnego pliku"
 
@@ -1846,7 +1894,7 @@ msgstr "Instalacja niezaufanego lokalnego pliku"
 #. - Normal users do not require admin authentication to refresh the
 #. cache, as this doesn't actually install or remove software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:58
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Refresh system sources"
 msgstr "Odświeżenie źródeł systemu"
 
@@ -1857,7 +1905,7 @@ msgstr "Odświeżenie źródeł systemu"
 #. try to rebind drivers in use, for instance security authentication
 #. devices.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:66
+#: ../policy/org.freedesktop.packagekit.policy.in.h:67
 msgid "Reload a device"
 msgstr "Ponowne wczytanie urzÄ…dzenia"
 
@@ -1870,7 +1918,7 @@ msgstr "Ponowne wczytanie urzÄ…dzenia"
 #. be removed. If this is not possible, change this authentication to
 #. 'auth_admin'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:76
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Remove package"
 msgstr "Usunięcie pakietu"
 
@@ -1879,7 +1927,7 @@ msgstr "Usunięcie pakietu"
 #. as this will change a large number of packages, and could expose the
 #. system to previously patched security vulnerabilities.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:82
+#: ../policy/org.freedesktop.packagekit.policy.in.h:83
 msgid "Rollback to a previous transaction"
 msgstr "Przywrócenie poprzedniej transakcji"
 
@@ -1887,7 +1935,7 @@ msgstr "Przywrócenie poprzedniej transakcji"
 #. - Normal users do not require admin authentication to set the proxy
 #. used for downloading packages.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:87
+#: ../policy/org.freedesktop.packagekit.policy.in.h:88
 msgid "Set network proxy"
 msgstr "Ustawienie pośrednika sieciowego"
 
@@ -1897,7 +1945,7 @@ msgstr "Ustawienie pośrednika sieciowego"
 #. without a secure authentication.
 #. - This is not kept as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:94
+#: ../policy/org.freedesktop.packagekit.policy.in.h:95
 msgid "Trust a key used for signing packages"
 msgstr "Oznaczenie klucza używanego do podpisywania pakietów jako zaufanego"
 
@@ -1908,10 +1956,19 @@ msgstr "Oznaczenie klucza używanego do podpisywania pakietów jako zaufanego"
 #. - Changing this to anything other than 'yes' will break unattended
 #. updates.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:102
+#: ../policy/org.freedesktop.packagekit.policy.in.h:103
 msgid "Update packages"
 msgstr "Aktualizacja pakietów"
 
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:109
+msgid "Upgrade System"
+msgstr "Aktualizacja systemu"
+
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
@@ -1979,7 +2036,7 @@ msgid "Cannot connect to the system bus"
 msgstr "Nie można połączyć się z magistralą systemową"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:318
+#: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "Błąd podczas próbowania uruchomienia:"
 
@@ -2025,31 +2082,3 @@ msgstr "Wiele pakietów"
 #: ../src/pk-polkit-action-lookup.c:339
 msgid "Only trusted"
 msgstr "Tylko zaufane"
-
-#. TRANSLATORS: turn on all debugging
-#: ../src/egg-debug.c:388
-msgid "Show debugging information for all files"
-msgstr "Wyświetla informacje o debugowaniu dla wszystkich plików"
-
-#. TRANSLATORS: a list of modules to debug
-#: ../src/egg-debug.c:458
-msgid "Debug these specific modules"
-msgstr "Debuguje podane moduły"
-
-#. TRANSLATORS: a list of functions to debug
-#: ../src/egg-debug.c:461
-msgid "Debug these specific functions"
-msgstr "Debuguje podane funkcje"
-
-#. TRANSLATORS: save to a log
-#: ../src/egg-debug.c:464
-msgid "Log debugging data to a file"
-msgstr "Zapisuje dane debugowania do pliku"
-
-#: ../src/egg-debug.c:468
-msgid "Debugging Options"
-msgstr "Opcje debugowania"
-
-#: ../src/egg-debug.c:468
-msgid "Show debugging options"
-msgstr "Wyświetla opcje debugowania"
commit 56349d1e761f31f826cb6929cad1914c00f56a64
Merge: c510a4d... b5d0494...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 24 11:19:47 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit b5d0494de6f77f14966420e71de8e30700d9b536
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 24 12:30:50 2010 +0000

    trivial: add the transifex auth token

diff --git a/README.transifex b/README.transifex
new file mode 100644
index 0000000..56471ba
--- /dev/null
+++ b/README.transifex
@@ -0,0 +1,11 @@
+Transifex.net Token Verification 
+=================================
+
+The list of tokens bellow guarantee the respective users to be able to enable 
+submission on components using the following repository url:
+
+git at gitorious.org:packagekit/packagekit.git
+
+Tokens:
+
+sLv8aEbptmMyFt2R2Rd37myY2Vg2zN43 / hughsie
commit 7cab600964210064268950273bbeb4551052126f
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 16 14:00:45 2010 +0000

    yum: disable the Zif get-updates until depsolving is faster

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 3c9bdd7..3d87b33 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -2282,6 +2282,7 @@ static gboolean
 pk_backend_get_updates_thread (PkBackend *backend)
 {
 #ifdef HAVE_ZIF
+#if 0
 	PkBitfield filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
 	GPtrArray *store_array = NULL;
 	ZifState *state_local;
@@ -2456,6 +2457,7 @@ out:
 	if (store_array != NULL)
 		g_ptr_array_unref (store_array);
 #endif
+#endif
 	return TRUE;
 }
 
commit 8a322097936458e4d90e6d6891a85641d4f9ee20
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Wed Nov 24 16:31:48 2010 +0800

    zypp: Fix a typo in get_zypp

diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index c13975d..a5ce2d3 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -104,7 +104,7 @@ get_zypp (PkBackend *backend)
 		return NULL;
         } catch (const zypp::Exception &ex) {
 		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, ex.asUserString().c_str() );
-		return NULL
+		return NULL;
         }
 
 	return zypp;
commit 9507d582fc62aad74a5835b09f27cee2a2b68ea6
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Wed Nov 24 16:21:29 2010 +0800

    zypp:Catch ZYppFactoryException in get_zypp
    
    This patch cache ZYppFactoryException in get_zypp, and sent init error
    to client, but not exit. Also add some check code to prevent some daemon
    crash issue, which occures zypper is running and you also just want to
    run packagekit at the same time.

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index ed30c43..29b171a 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -139,6 +139,13 @@ backend_get_requires_thread (PkBackend *backend)
 {
 	gchar **package_ids;
 	PkBitfield _filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (!pk_package_ids_check (package_ids)) {
@@ -307,6 +314,10 @@ backend_get_depends_thread (PkBackend *backend)
 
 	zypp::ZYpp::Ptr zypp;
 	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	g_debug ("get_depends with filter '%s'", pk_filter_bitfield_to_string (_filters));
 
@@ -463,6 +474,13 @@ static gboolean
 backend_get_details_thread (PkBackend *backend)
 {
 	gchar **package_ids;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (!pk_package_ids_check (package_ids)) {
@@ -564,6 +582,13 @@ pk_backend_get_details (PkBackend *backend, gchar **package_ids)
 static gboolean
 backend_get_distro_upgrades_thread(PkBackend *backend)
 {
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
 	// refresh the repos before checking for updates
@@ -657,6 +682,13 @@ static gboolean
 backend_get_updates_thread (PkBackend *backend)
 {
 	PkBitfield _filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	typedef std::set<zypp::PoolItem>::iterator pi_it_t;
 
@@ -729,6 +761,13 @@ static gboolean
 backend_install_files_thread (PkBackend *backend)
 {
 	gchar **full_paths;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	full_paths = pk_backend_get_strv (backend, "full_paths");
 
@@ -861,6 +900,13 @@ static gboolean
 backend_get_update_detail_thread (PkBackend *backend)
 {
 	gchar **package_ids;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (package_ids == NULL) {
@@ -951,6 +997,13 @@ pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
 static gboolean
 backend_update_system_thread (PkBackend *backend)
 {
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 	pk_backend_set_percentage (backend, 0);
 
@@ -1015,6 +1068,10 @@ backend_install_packages_thread (PkBackend *backend)
 
 	zypp::ZYpp::Ptr zypp;
 	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (!pk_package_ids_check (package_ids)) {
@@ -1167,6 +1224,10 @@ backend_remove_packages_thread (PkBackend *backend)
 	zypp::Target_Ptr target;
 	zypp::ZYpp::Ptr zypp;
 	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	target = zypp->target ();
 
@@ -1245,6 +1306,13 @@ backend_resolve_thread (PkBackend *backend)
 {
 	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
 	PkBitfield _filters = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
@@ -1323,7 +1391,13 @@ backend_find_packages_thread (PkBackend *backend)
 	gchar **values;
 	const gchar *search;
 	guint mode;
-	//GList *list = NULL;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	values = pk_backend_get_strv (backend, "search");
 	search = values[0];  //Fixme - support the possible multiple values (logical OR search)
@@ -1405,6 +1479,13 @@ backend_search_group_thread (PkBackend *backend)
 {
 	gchar **values;
 	const gchar *group;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	values = pk_backend_get_strv (backend, "search");
 	group = values[0];  //Fixme - add support for possible multiple values.
@@ -1466,7 +1547,13 @@ pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 void
 pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
-	//FIXME - use the new param - filter
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return;
+	}
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
@@ -1506,6 +1593,13 @@ pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 void
 pk_backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
 {
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return;
+	}
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
 	zypp::RepoManager manager;
@@ -1537,6 +1631,13 @@ static gboolean
 backend_get_files_thread (PkBackend *backend)
 {
 	gchar **package_ids;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (!pk_package_ids_check (package_ids)) {
@@ -1616,6 +1717,13 @@ pk_backend_get_files(PkBackend *backend, gchar **package_ids)
 static gboolean
 backend_get_packages_thread (PkBackend *backend)
 {
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
 	std::vector<zypp::sat::Solvable> v;
@@ -1645,6 +1753,13 @@ backend_update_packages_thread (PkBackend *backend)
 {
 	gboolean retval;
 	gchar **package_ids;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 	zypp::ResPool pool = zypp_build_pool (backend, TRUE);
 	/* FIXME: support only_trusted */
 	package_ids = pk_backend_get_strv (backend, "package_ids");
@@ -1709,6 +1824,13 @@ backend_repo_set_data_thread (PkBackend *backend)
 	const gchar *repo_id;
 	const gchar *parameter;
 	const gchar *value;
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 
 	repo_id = pk_backend_get_string (backend, "repo_id");
 	parameter = pk_backend_get_string (backend, "parameter");
@@ -1840,6 +1962,13 @@ pk_backend_repo_set_data (PkBackend *backend, const gchar *repo_id, const gchar
 static gboolean
 backend_what_provides_thread (PkBackend *backend)
 {
+	zypp::ZYpp::Ptr zypp;
+
+	zypp = get_zypp (backend);
+	if (zypp == NULL){
+		pk_backend_finished (backend);
+		return FALSE;
+	}
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 	gchar **values = pk_backend_get_strv (backend, "search");
 	const gchar *search = values[0]; //Fixme - support possible multiple search values (logical OR)
diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index e23d529..c13975d 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -99,8 +99,12 @@ get_zypp (PkBackend *backend)
 
 		        initialized = TRUE;
 	        }
+	} catch (const zypp::ZYppFactoryException &ex) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_INITIALIZATION, ex.asUserString().c_str() );
+		return NULL;
         } catch (const zypp::Exception &ex) {
-		g_error ("%s", ex.asUserString ().c_str ());
+		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, ex.asUserString().c_str() );
+		return NULL
         }
 
 	return zypp;
@@ -1107,6 +1111,8 @@ zypp_refresh_cache (PkBackend *backend, gboolean force)
 {
 	// This call is needed as it calls initializeTarget which appears to properly setup the keyring
 	zypp::ZYpp::Ptr zypp = get_zypp (backend);
+        if (zypp == NULL)
+		return  FALSE;
 	zypp::filesystem::Pathname pathname(pk_backend_get_root (backend));
 	// This call is needed to refresh system rpmdb status while refresh cache
 	zypp->finishTarget ();
commit 31ece5e07076383534ea2e2e10800e5f7038fdf4
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 24 01:27:40 2010 -0200

    aptcc: first bits to a working gstreamer matcher

diff --git a/backends/aptcc/Makefile.am b/backends/aptcc/Makefile.am
index e78676f..04e5b6f 100644
--- a/backends/aptcc/Makefile.am
+++ b/backends/aptcc/Makefile.am
@@ -9,6 +9,7 @@ libpk_backend_aptcc_la_SOURCES = pkg_acqfile.cpp \
 				 apt-utils.cpp \
 				 acqprogress.cpp \
 				 matcher.cpp \
+				 gstMatcher.cpp \
 				 rsources.cpp \
 				 apt.cpp \
 				 pk-backend-aptcc.cpp
@@ -23,6 +24,7 @@ aptconf_DATA = 20packagekit
 EXTRA_DIST = 20packagekit \
 	     apt.h \
 	     apt-utils.h \
+	     gstMatcher.h \
 	     matcher.h \
 	     aptcc_show_broken.h \
 	     acqprogress.h \
diff --git a/backends/aptcc/apt.cpp b/backends/aptcc/apt.cpp
index 559496a..89cbc63 100644
--- a/backends/aptcc/apt.cpp
+++ b/backends/aptcc/apt.cpp
@@ -46,9 +46,6 @@
 #include <dirent.h>
 #include <assert.h>
 
-// Gstreamer stuff
-// #include <gst/gst.h>
-
 aptcc::aptcc(PkBackend *backend, bool &cancel)
 	:
 	packageRecords(0),
@@ -478,8 +475,6 @@ void aptcc::povidesCodec(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterato
 			cout << opt << endl;
 			regex_t sre;
 			gchar *itemreg;
-// 			GstCaps *caps;
-// 			caps = gst_caps_new_simple(data.c_str(), opt.c_str());
 			itemreg = g_strdup_printf("^%s:.* %s\\(, %s\\(,.*\\|;.*\\|$\\)\\|;\\|$\\)",
 						  type.c_str(),
 						  data.c_str(),
diff --git a/backends/aptcc/gstMatcher.cpp b/backends/aptcc/gstMatcher.cpp
new file mode 100644
index 0000000..eb0f77d
--- /dev/null
+++ b/backends/aptcc/gstMatcher.cpp
@@ -0,0 +1,109 @@
+// apt.cc
+//
+//  Copyright 1999-2008 Daniel Burrows
+//  Copyright (C) 2009 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+#include "gstMatcher.h"
+#include <stdio.h>
+#include <iostream>
+
+#include <gst/gst.h>
+
+gstMatcher::gstMatcher(gchar **values)
+{
+    // The search term from PackageKit daemon:
+    // gstreamer0.10(urisource-foobar)
+    // gstreamer0.10(decoder-audio/x-wma)(wmaversion=3)
+
+    // The optional field is more complicated, it can have
+    // types, like int, float...
+    // TODO use some GST helper :/
+    regex_t pkre;
+
+    const char *pkreg = "^gstreamer\\([0-9\\.]\\+\\)"
+                "(\\(encoder\\|decoder\\|urisource\\|urisink\\|element\\)-\\([^)]\\+\\))"
+                "\\((.*)\\)\\?";
+
+    if(regcomp(&pkre, pkreg, 0) != 0) {
+        g_debug("Regex compilation error: ", pkreg);
+        return;
+    }
+
+    gchar *value;
+    vector<pair<string, regex_t> > search;
+    for (uint i = 0; i < g_strv_length(values); i++) {
+        value = values[i];
+        regmatch_t matches[5];
+        if (regexec(&pkre, value, 5, matches, 0) == 0) {
+            string version, type, data, opt;
+            version = "\nGstreamer-Version: ";
+            version.append(string(value, matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so));
+            type = string(value, matches[2].rm_so, matches[2].rm_eo - matches[2].rm_so);
+            data = string(value, matches[3].rm_so, matches[3].rm_eo - matches[3].rm_so);
+            if (matches[4].rm_so != -1) {
+                // remove the '(' ')' that the regex matched
+                opt = string(value, matches[4].rm_so + 1, matches[4].rm_eo - matches[4].rm_so - 2);
+            } else {
+                // if the 4th element did not match match everything
+                opt = ".*";
+            }
+
+            if (type.compare("encoder") == 0) {
+                type = "Gstreamer-Encoders";
+            } else if (type.compare("decoder") == 0) {
+                type = "Gstreamer-Decoders";
+            } else if (type.compare("urisource") == 0) {
+                type = "Gstreamer-Uri-Sources";
+            } else if (type.compare("urisink") == 0) {
+                type = "Gstreamer-Uri-Sinks";
+            } else if (type.compare("element") == 0) {
+                type = "Gstreamer-Elements";
+            }
+            cout << version << endl;
+            cout << type << endl;
+            cout << data << endl;
+            cout << opt << endl;
+            regex_t sre;
+            gchar *itemreg;
+            GstCaps *caps;
+            caps = gst_caps_new_simple(data.c_str(), opt.c_str());
+            itemreg = g_strdup_printf("^%s:.* %s\\(, %s\\(,.*\\|;.*\\|$\\)\\|;\\|$\\)",
+                          type.c_str(),
+                          data.c_str(),
+                          opt.c_str());
+            if(regcomp(&sre, itemreg, REG_NEWLINE | REG_NOSUB) == 0) {
+                search.push_back(pair<string, regex_t>(version, sre));
+            } else {
+                g_debug("Search regex compilation error: ", itemreg);
+            }
+            g_free(itemreg);
+        } else {
+            g_debug("Did not match: %s", value);
+        }
+    }
+    regfree(&pkre);
+
+    // If nothing matched just return
+    if (search.size() == 0) {
+        return;
+    }
+}
+
+gstMatcher::~gstMatcher()
+{
+}
diff --git a/backends/aptcc/gstMatcher.h b/backends/aptcc/gstMatcher.h
new file mode 100644
index 0000000..2645702
--- /dev/null
+++ b/backends/aptcc/gstMatcher.h
@@ -0,0 +1,43 @@
+// apt.h  -*-c++-*-
+//
+//  Copyright 1999-2002, 2004-2005, 2007-2008 Daniel Burrows
+//  Copyright (C) 2009 Daniel Nicoletti <dantti85-pk at yahoo.com.br>
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+//
+
+#ifndef GST_MATCHER_H
+#define GST_MATCHER_H
+
+#include <regex.h>
+
+#include <glib.h>
+
+#include <vector>
+#include <map>
+#include <string>
+
+using namespace std;
+
+class gstMatcher
+{
+public:
+	gstMatcher(gchar **values);
+	~gstMatcher();
+
+};
+
+#endif
diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index c46e1c8..3659b01 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -1058,9 +1058,9 @@ backend_search_package_thread (PkBackend *backend)
 				continue;
 			}
 
+			pkgCache::VerIterator ver = m_apt->find_ver(pkg);
 			if (m_matcher->matches(pkg.Name())) {
 				// Don't insert virtual packages instead add what it provides
-				pkgCache::VerIterator ver = m_apt->find_ver(pkg);
 				if (ver.end() == false) {
 					output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
 				} else {
@@ -1079,12 +1079,9 @@ backend_search_package_thread (PkBackend *backend)
 				}
 			} else {
 				// Don't insert virtual packages instead add what it provides
-				pkgCache::VerIterator ver = m_apt->find_ver(pkg);
 				if (ver.end() == false) {
-					if (m_matcher->matches(get_default_short_description(ver, m_apt->packageRecords))
-					    || m_matcher->matches(get_default_long_description(ver, m_apt->packageRecords))
-					    || m_matcher->matches(get_short_description(ver, m_apt->packageRecords))
-					    || m_matcher->matches(get_long_description(ver, m_apt->packageRecords)))
+					if (m_matcher->matches(get_short_description(ver, m_apt->packageRecords))
+					 || m_matcher->matches(get_long_description(ver, m_apt->packageRecords)))
 					{
 						output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
 					}
@@ -1098,11 +1095,8 @@ backend_search_package_thread (PkBackend *backend)
 						{
 							// we add the package now because we will need to
 							// remove duplicates later anyway
-							if (m_matcher->matches(Prv.OwnerPkg().Name())
-							    || m_matcher->matches(get_default_short_description(ver, m_apt->packageRecords))
-							    || m_matcher->matches(get_default_long_description(ver, m_apt->packageRecords))
-							    || m_matcher->matches(get_short_description(ver, m_apt->packageRecords))
-							    || m_matcher->matches(get_long_description(ver, m_apt->packageRecords)))
+							if (m_matcher->matches(get_short_description(ver, m_apt->packageRecords))
+							 || m_matcher->matches(get_long_description(ver, m_apt->packageRecords)))
 							{
 								output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(Prv.OwnerPkg(), ver));
 							}
commit 1abc688aed199cf91061ff614fd6d8bdbabffbb6
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Tue Nov 23 23:57:13 2010 -0200

    aptcc: link aptcc to gstreamer

diff --git a/backends/aptcc/Makefile.am b/backends/aptcc/Makefile.am
index 087175b..e78676f 100644
--- a/backends/aptcc/Makefile.am
+++ b/backends/aptcc/Makefile.am
@@ -13,9 +13,9 @@ libpk_backend_aptcc_la_SOURCES = pkg_acqfile.cpp \
 				 apt.cpp \
 				 pk-backend-aptcc.cpp
 libpk_backend_aptcc_la_LIBADD = -lcrypt $(PK_PLUGIN_LIBS)
-libpk_backend_aptcc_la_LDFLAGS = -module -avoid-version $(APTCC_LIBS) $(GST_LIBS)
+libpk_backend_aptcc_la_LDFLAGS = -module -avoid-version $(APTCC_LIBS) $(GSTREAMER_LIBS)
 libpk_backend_aptcc_la_CFLAGS = $(PK_PLUGIN_CFLAGS)
-libpk_backend_aptcc_la_CPPFLAGS = $(PK_PLUGIN_CFLAGS) $(APTCC_CFLAGS)
+libpk_backend_aptcc_la_CPPFLAGS = $(PK_PLUGIN_CFLAGS) $(APTCC_CFLAGS) $(GSTREAMER_CFLAGS)
 
 aptconfdir = ${SYSCONFDIR}/apt/apt.conf.d
 aptconf_DATA = 20packagekit
diff --git a/configure.ac b/configure.ac
index f499542..d044d05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -671,7 +671,10 @@ if test x$enable_aptcc = xyes; then
 	AC_SUBST(APTCC_CFLAGS)
 	AC_SUBST(APTCC_LIBS)
 
-	AC_CHECK_LIB([gstreamer-0.10], [gst_init], AC_SUBST([GST_LIBS], [`pkg-config –libs gstreamer-0.10`]), AC_MSG_ERROR([Gstreamer-0.10 not found], [2]))
+	PKG_CHECK_MODULES(GSTREAMER, gstreamer-0.10 gstreamer-base-0.10 gstreamer-plugins-base-0.10,,
+					[AC_MSG_ERROR([Can't find the gstreamer libraries -- please install libgstreamermm-0.10-dev])])
+	AC_SUBST(GSTREAMER_CFLAGS)
+	AC_SUBST(GSTREAMER_LIBS)
 
 	AC_MSG_CHECKING([whether apt includes the automatic dependency removal patch (required)])
 
commit 493962f8a4e3fa368500b38574ea7f74bb107fa2
Author: fri <pavelfric at seznam.cz>
Date:   Tue Nov 23 17:46:00 2010 +0000

    l10n: Updated Czech (cs) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/cs.po b/po/cs.po
index af4b089..0658394 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,14 +4,14 @@
 #
 # Vojtech Smejkal <smejkalv at gmail.com>, 2008.
 # Adam Pribyl <pribyl at lowlevel.cz>, 2008.
-# Pavel Frix <fripohled.blogspot.com>, 2010.
+# Pavel Fric <fripohled.blogspot.com>, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.cs\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-11-21 07:25+0000\n"
-"PO-Revision-Date: 2010-11-21 18:00+0100\n"
-"Last-Translator: Pavel Frix <fripohled.blogspot.com>\n"
+"PO-Revision-Date: 2010-11-21 20:28+0100\n"
+"Last-Translator: Pavel Fric <fripohled.blogspot.com>\n"
 "Language-Team: Czech <fedora-cs-list at redhat.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
commit 1202584b683b58b8c37bcdc74ad4f80103bfb9cd
Author: Cheng-Chia Tseng <pswo10680 at gmail.com>
Date:   Tue Nov 23 06:25:06 2010 +0000

    l10n: Updated Chinese (Taiwan) (zh_TW) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/zh_TW.po b/po/zh_TW.po
index 01be68b..f75178b 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-08-12 01:24+0000\n"
-"PO-Revision-Date: 2010-08-17 13:10+0800\n"
+"POT-Creation-Date: 2010-11-22 07:19+0000\n"
+"PO-Revision-Date: 2010-11-23 14:24+0800\n"
 "Last-Translator: Cheng-Chia Tseng <pswo10680 at gmail.com>\n"
 "Language-Team: chinese-l10n <chinese-l10n at googlegroups.com>\n"
 "MIME-Version: 1.0\n"
@@ -19,115 +19,119 @@ msgstr ""
 
 #. TRANSLATORS: this is an atomic transaction
 #. TRANSLATORS: the role is the point of the transaction, e.g. update-system
-#: ../client/pk-console.c:176 ../client/pk-console.c:598
+#: ../client/pk-console.c:174
+#: ../client/pk-console.c:596
 msgid "Transaction"
 msgstr "處理事項"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:178
+#: ../client/pk-console.c:176
 msgid "System time"
 msgstr "系統時間"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "Succeeded"
 msgstr "成功"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "True"
 msgstr "True"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "False"
 msgstr "False"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:182 ../src/pk-polkit-action-lookup.c:332
+#: ../client/pk-console.c:180
+#: ../src/pk-polkit-action-lookup.c:332
 msgid "Role"
 msgstr "任務"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "Duration"
-msgstr "持續時間"
+msgstr "時間"
 
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "(seconds)"
 msgstr "(秒)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:191 ../src/pk-polkit-action-lookup.c:346
+#: ../client/pk-console.c:189
+#: ../src/pk-polkit-action-lookup.c:346
 msgid "Command line"
 msgstr "指令列"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:193
+#: ../client/pk-console.c:191
 msgid "User ID"
 msgstr "使用者 ID"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:200
+#: ../client/pk-console.c:198
 msgid "Username"
 msgstr "使用者名稱"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:204
+#: ../client/pk-console.c:202
 msgid "Real name"
 msgstr "真實名稱"
 
-#: ../client/pk-console.c:212
+#: ../client/pk-console.c:210
 msgid "Affected packages:"
 msgstr "受影響的套件:"
 
-#: ../client/pk-console.c:214
+#: ../client/pk-console.c:212
 msgid "Affected packages: None"
 msgstr "受影響的套件:無"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:249
+#: ../client/pk-console.c:247
 msgid "Distribution"
 msgstr "發行版"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:251
+#: ../client/pk-console.c:249
 msgid "Type"
 msgstr "é¡žåž‹"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:253 ../client/pk-console.c:292
+#: ../client/pk-console.c:251
+#: ../client/pk-console.c:290
 msgid "Summary"
 msgstr "摘要"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:281
+#: ../client/pk-console.c:279
 msgid "Category"
 msgstr "分類"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:283
+#: ../client/pk-console.c:281
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:286
+#: ../client/pk-console.c:284
 msgid "Parent"
 msgstr "親代"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:287
 msgid "Name"
 msgstr "名稱"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:295
+#: ../client/pk-console.c:293
 msgid "Icon"
 msgstr "圖示"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:341
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
 msgstr "關於更新的詳細資料:"
 
@@ -136,9 +140,10 @@ msgstr "關於更新的詳細資料:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:347 ../client/pk-console.c:617
-#: ../lib/packagekit-glib2/pk-task-text.c:126
-#: ../lib/packagekit-glib2/pk-task-text.c:208
+#: ../client/pk-console.c:345
+#: ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
 #: ../src/pk-polkit-action-lookup.c:357
 msgid "Package"
 msgid_plural "Packages"
@@ -146,200 +151,200 @@ msgstr[0] "套件"
 msgstr[1] "套件"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:350
+#: ../client/pk-console.c:348
 msgid "Updates"
 msgstr "æ›´æ–°"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:354
+#: ../client/pk-console.c:352
 msgid "Obsoletes"
 msgstr "廢棄"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:358 ../lib/packagekit-glib2/pk-task-text.c:211
+#: ../client/pk-console.c:356
+#: ../lib/packagekit-glib2/pk-task-text.c:209
 msgid "Vendor"
 msgstr "廠商"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:362
+#: ../client/pk-console.c:360
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:364
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:370
+#: ../client/pk-console.c:368
 msgid "Restart"
 msgstr "重新啟動"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:374
+#: ../client/pk-console.c:372
 msgid "Update text"
 msgstr "更新文字"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:378
+#: ../client/pk-console.c:376
 msgid "Changes"
 msgstr "變更"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:382
+#: ../client/pk-console.c:380
 msgid "State"
 msgstr "狀態"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:386
+#: ../client/pk-console.c:384
 msgid "Issued"
 msgstr "已發佈"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:390 ../lib/packagekit-glib2/pk-console-shared.c:517
+#: ../client/pk-console.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:515
 msgid "Updated"
 msgstr "已更新"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:426
+#: ../client/pk-console.c:424
 msgid "Enabled"
 msgstr "已啟用"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:429
+#: ../client/pk-console.c:427
 msgid "Disabled"
 msgstr "已停用"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:461
+#: ../client/pk-console.c:459
 msgid "System restart required by:"
 msgstr "系統重新啟動被此需求:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:464
+#: ../client/pk-console.c:462
 msgid "Session restart required:"
 msgstr "需要重新啟動作業階段:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:467
+#: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
 msgstr "系統重新啟動 (安全性) 被此需求:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:470
+#: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
 msgstr "需要重新啟動 (安全性) 作業階段:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:473
+#: ../client/pk-console.c:471
 msgid "Application restart required by:"
 msgstr "應用程式重新啟動被此需求:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:508
+#: ../client/pk-console.c:506
 msgid "Package description"
 msgstr "套件描述"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:539
+#: ../client/pk-console.c:537
 msgid "Message:"
 msgstr "訊息:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:558
 msgid "No files"
 msgstr "無檔案"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:565
+#: ../client/pk-console.c:563
 msgid "Package files"
 msgstr "套件檔案"
 
 #. TRANSLATORS: the percentage complete of the transaction
-#: ../client/pk-console.c:633
+#: ../client/pk-console.c:631
 msgid "Percentage"
 msgstr "百分比"
 
 #. TRANSLATORS: the status of the transaction (e.g. downloading)
-#: ../client/pk-console.c:651
+#: ../client/pk-console.c:649
 msgid "Status"
 msgstr "狀態"
 
 #. TRANSLATORS: the results from the transaction
-#: ../client/pk-console.c:680
+#: ../client/pk-console.c:678
 msgid "Results:"
 msgstr "結果:"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:685
 msgid "Fatal error"
 msgstr "嚴重錯誤"
 
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "沒有套件需要更新。"
+
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:696
-#: ../contrib/command-not-found/pk-command-not-found.c:454
-#: ../contrib/command-not-found/pk-command-not-found.c:634
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
 msgid "The transaction failed"
 msgstr "處理事項失敗"
 
 #. TRANSLATORS: print a message when there are no updates
-#: ../client/pk-console.c:727
+#: ../client/pk-console.c:733
 msgid "There are no updates available at this time."
 msgstr "此刻尚無更新可用。"
 
-#: ../client/pk-console.c:750
+#: ../client/pk-console.c:756
 msgid "There are no upgrades available at this time."
 msgstr "此刻尚無升級可用。"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:817
+#: ../client/pk-console.c:823
 msgid "Please restart the computer to complete the update."
 msgstr "請重新啟動電腦來完成更新。"
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:820
+#: ../client/pk-console.c:826
 msgid "Please logout and login to complete the update."
 msgstr "請登出並再次登入來完成更新。"
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:823
-msgid ""
-"Please restart the computer to complete the update as important security "
-"updates have been installed."
+#: ../client/pk-console.c:829
+msgid "Please restart the computer to complete the update as important security updates have been installed."
 msgstr "因為重大安全性更新已安裝,請重新啟動電腦來完成更新動作。"
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:826
-msgid ""
-"Please logout and login to complete the update as important security updates "
-"have been installed."
+#: ../client/pk-console.c:832
+msgid "Please logout and login to complete the update as important security updates have been installed."
 msgstr "因為重大安全性更新已安裝,請登出並再次登入來完成更新動作。"
 
 #. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
-#: ../client/pk-console.c:852
+#: ../client/pk-console.c:858
 #, c-format
-msgid ""
-"Expected package name, actually got file. Try using 'pkcon install-local %s' "
-"instead."
-msgstr ""
-"預期的套件名稱,已實際取得檔案。嘗試使用 'pkcon install-local %s' 來替代。"
+msgid "Expected package name, actually got file. Try using 'pkcon install-local %s' instead."
+msgstr "預期的套件名稱,已實際取得檔案。嘗試使用 'pkcon install-local %s' 來替代。"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:860
+#: ../client/pk-console.c:866
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "此工具無法找到任何可用的套件:%s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:888
+#: ../client/pk-console.c:894
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "此工具無法找到已安裝的套件:%s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:916 ../client/pk-console.c:944
+#: ../client/pk-console.c:922
+#: ../client/pk-console.c:950
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "此工具無法找到這個套件:%s"
@@ -348,652 +353,680 @@ msgstr "此工具無法找到這個套件:%s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:972 ../client/pk-console.c:1000
-#: ../client/pk-console.c:1028 ../client/pk-console.c:1056
-#: ../client/pk-console.c:1084
+#: ../client/pk-console.c:978
+#: ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034
+#: ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "此工具無法找到所有套件:%s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1113
+#: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
 msgstr "幕後程式損壞了 mid-transaction!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1147
+#: ../client/pk-console.c:1153
 msgid "PackageKit Console Interface"
 msgstr "PackageKit 主控台介面"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1149
+#: ../client/pk-console.c:1155
 msgid "Subcommands:"
 msgstr "次指令:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:1228
+#: ../client/pk-console.c:1234
 msgid "Failed to get the time since this action was last completed"
 msgstr "無法取得此動作最後完成後的時間"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1268 ../client/pk-monitor.c:373
+#: ../client/pk-console.c:1275
+#: ../client/pk-monitor.c:371
 msgid "Show the program version and exit"
 msgstr "顯示程式版本然後離開"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1271
+#: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
 msgstr "設定過濾條件,例如:installed"
 
 #. TRANSLATORS: command line argument, use a non-standard install prefix
-#: ../client/pk-console.c:1274
+#: ../client/pk-console.c:1281
 msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
 msgstr "設定安裝的根目錄,例:'/' 或 '/mnt/ltsp'"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:1284
 msgid "Exit without waiting for actions to complete"
 msgstr "不等待動作完成便離開"
 
 #. command line argument, do we ask questions
-#: ../client/pk-console.c:1280
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
 msgid "Install the packages without asking for confirmation"
 msgstr "安裝套件而不要詢問是否確認"
 
 #. TRANSLATORS: command line argument, this command is not a priority
-#: ../client/pk-console.c:1283
+#: ../client/pk-console.c:1290
 msgid "Run the command using idle network bandwidth and also using less power"
 msgstr "使用閒置的網路頻寬與較少的能源來執行指令"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
-#: ../client/pk-console.c:1286
-msgid ""
-"Print to screen a machine readable output, rather than using animated widgets"
+#: ../client/pk-console.c:1293
+msgid "Print to screen a machine readable output, rather than using animated widgets"
 msgstr "將機器可讀的輸出列印到畫面,而不是使用動畫化的小工具"
 
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr "最大的中介資料快取時限。使用 -1 代表「永遠」。"
+
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1308
+#: ../client/pk-console.c:1333
 msgid "Failed to contact PackageKit"
 msgstr "聯絡 PackageKit 失敗"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1370
+#: ../client/pk-console.c:1381
 msgid "The proxy could not be set"
 msgstr "無法設定 proxy"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1382
+#: ../client/pk-console.c:1393
 msgid "The install root could not be set"
 msgstr "無法設定安裝的根目錄"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1394
+#: ../client/pk-console.c:1405
 msgid "The filter specified was invalid"
 msgstr "指定的過濾條件無效"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1413
+#: ../client/pk-console.c:1424
 msgid "A search type is required, e.g. name"
 msgstr "需要選取搜尋類型,例如:名稱"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1420 ../client/pk-console.c:1432
-#: ../client/pk-console.c:1444 ../client/pk-console.c:1456
+#: ../client/pk-console.c:1431
+#: ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455
+#: ../client/pk-console.c:1467
 msgid "A search term is required"
 msgstr "需要輸入搜尋用的關鍵詞"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1466
+#: ../client/pk-console.c:1477
 msgid "Invalid search type"
 msgstr "無效的搜尋類型"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1472
+#: ../client/pk-console.c:1483
 msgid "A package name to install is required"
 msgstr "需要有要安裝的套件名稱"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1481
+#: ../client/pk-console.c:1492
 msgid "A filename to install is required"
 msgstr "需要有要安裝的檔案名稱"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1493
+#: ../client/pk-console.c:1503
 msgid "A type, key_id and package_id are required"
 msgstr "需要指定一個類型、key_id 以及 package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1504
+#: ../client/pk-console.c:1514
 msgid "A package name to remove is required"
 msgstr "需要有要移除的套件名稱"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1513
+#: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
 msgstr "需要有目標資料夾與要下載的套件名稱"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1520
+#: ../client/pk-console.c:1530
 msgid "Directory not found"
 msgstr "找不到目錄"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1529
+#: ../client/pk-console.c:1539
 msgid "A licence identifier (eula-id) is required"
 msgstr "需要指定一個授權合約的辨識符號 (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1540
+#: ../client/pk-console.c:1550
 msgid "A transaction identifier (tid) is required"
 msgstr "需要處理事項識別符 (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1561
+#: ../client/pk-console.c:1571
 msgid "A package name to resolve is required"
 msgstr "需要指定想解析套件的名稱"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1572 ../client/pk-console.c:1583
+#: ../client/pk-console.c:1582
+#: ../client/pk-console.c:1593
 msgid "A repository name is required"
 msgstr "需要指定套件庫名稱"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1594
+#: ../client/pk-console.c:1604
 msgid "A repo name, parameter and value are required"
 msgstr "需要指定一個套件庫名稱、參數和值"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1611
+#: ../client/pk-console.c:1621
 msgid "An action, e.g. 'update-system' is required"
 msgstr "需要指定一項動作,例如:「update-system」"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1618
+#: ../client/pk-console.c:1628
 msgid "A correct role is required"
 msgstr "需要指定正確的任務"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1628 ../client/pk-console.c:1643
-#: ../client/pk-console.c:1652 ../client/pk-console.c:1672
-#: ../client/pk-console.c:1681 ../client/pk-generate-pack.c:316
+#: ../client/pk-console.c:1638
+#: ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661
+#: ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690
+#: ../client/pk-generate-pack.c:314
 msgid "A package name is required"
 msgstr "需要提供套件名稱"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1661
+#: ../client/pk-console.c:1670
 msgid "A package provide string is required"
 msgstr "需要指定套件提供字串"
 
+#. TRANSLATORS: The user did not provide a distro name
+#: ../client/pk-console.c:1714
+msgid "A distribution name is required"
+msgstr "需要有發行版名稱"
+
+#. TRANSLATORS: The user did not provide an upgrade type
+#: ../client/pk-console.c:1720
+msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
+msgstr "需要有升級類型,例如:「minimal」(最小)、「default」(預設)、「complete」(完整)"
+
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1742
+#: ../client/pk-console.c:1770
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "不支援 '%s' 選項"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1752
+#: ../client/pk-console.c:1780
 msgid "Command failed"
 msgstr "指令失敗"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:255
+#: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
 msgstr "設定要排除的相依檔名"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:258
+#: ../client/pk-generate-pack.c:256
 msgid "The output file or directory (the current directory is used if omitted)"
 msgstr "輸出檔或目錄 (若省略的話會使用目前的目錄)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:259
 msgid "The package to be put into the service pack"
 msgstr "將放入服務包中的套件"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:262
 msgid "Put all updates available in the service pack"
 msgstr "將所有可用的套件放入服務包中"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:300
+#: ../client/pk-generate-pack.c:298
 msgid "Neither --package or --updates option selected."
 msgstr "--package 與 --updates 選項皆未選取。"
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:308
+#: ../client/pk-generate-pack.c:306
 msgid "Both options selected."
 msgstr "兩個選項皆被選取。"
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:324
+#: ../client/pk-generate-pack.c:322
 msgid "A output directory or file name is required"
 msgstr "需要輸出目錄或檔案名稱"
 
 #. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:340
 msgid "The daemon failed to startup"
 msgstr "幕後程式啟動失敗"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:353 ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:351
+#: ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
 msgstr "套件管理員無法執行這種類型的操作。"
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:366
-msgid ""
-"Service packs cannot be created as PackageKit was not built with libarchive "
-"support."
+#: ../client/pk-generate-pack.c:364
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
 msgstr "服務包無法建立,因為建構 PackageKit 時沒有啟用 libarchive 支援。"
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:377
+#: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
 msgstr "若要指定檔案的話,服務包名稱必須以此為結尾"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:393
+#: ../client/pk-generate-pack.c:391
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "擁有相同名稱的服務包已經存在,您要覆寫這個檔案嗎?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:396
+#: ../client/pk-generate-pack.c:394
 msgid "The pack was not overwritten."
 msgstr "服務包未被覆寫。"
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:409
+#: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "建立目錄失敗:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:421
+#: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
 msgstr "開啟套件清單失敗。"
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:430
+#: ../client/pk-generate-pack.c:428
 msgid "Finding package name."
 msgstr "正在尋找套件名稱。"
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:434
+#: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "找不到套件「%s」:%s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:442
+#: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
 msgstr "正在建立服務包..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:457
+#: ../client/pk-generate-pack.c:455
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "服務包建立了「%s」"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:462
+#: ../client/pk-generate-pack.c:460
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "無法建立「%s」:%s"
 
-#: ../client/pk-monitor.c:286
+#: ../client/pk-monitor.c:284
 msgid "Failed to get daemon state"
 msgstr "未能取得幕後程式狀態"
 
-#: ../client/pk-monitor.c:351
+#: ../client/pk-monitor.c:349
 msgid "Failed to get properties"
 msgstr "未能取得屬性"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:389
+#: ../client/pk-monitor.c:387
 msgid "PackageKit Monitor"
 msgstr "PackageKit 監控程式"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:497
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
 msgid "Getting package information..."
 msgstr "正在取得套件資訊..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:503
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
 #, c-format
 msgid "Run %s"
 msgstr "執行 %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:509
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
 msgid "Installed version"
 msgstr "已安裝的版本"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
 #, c-format
 msgid "Run version %s now"
 msgstr "立刻執行版本 %s"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:523
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
 msgid "Run now"
 msgstr "立刻執行"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:529
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
 #, c-format
 msgid "Update to version %s"
 msgstr "更新至版本 %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:535
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
 #, c-format
 msgid "Install %s now"
 msgstr "立刻安裝 %s"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:538
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
 msgid "Version"
 msgstr "版本"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:543
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
 msgid "No packages found for your system"
 msgstr "找不到適合您系統的套件"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:548
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
 msgid "Installing..."
 msgstr "正在安裝..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:367
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Downloading details about the software sources."
 msgstr "正在下載關於軟體來源的詳細資料。"
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:371
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Downloading filelists (this may take some time to complete)."
 msgstr "正在下載檔案清單 (這會花上一段時間才能完成)。"
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:375
+#: ../contrib/command-not-found/pk-command-not-found.c:374
 msgid "Waiting for package manager lock."
 msgstr "正在等待套件管理程式解鎖。"
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:379
+#: ../contrib/command-not-found/pk-command-not-found.c:378
 msgid "Loading list of packages."
 msgstr "正在載入套件清單。"
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:445
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "搜尋檔案失敗"
 
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "取得檔案清單失敗"
+
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:597
+#: ../contrib/command-not-found/pk-command-not-found.c:602
 msgid "Failed to launch:"
 msgstr "啟動失敗:"
 
 #. TRANSLATORS: we failed to install the package
-#: ../contrib/command-not-found/pk-command-not-found.c:625
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "Failed to install packages"
 msgstr "安裝套件失敗"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:701
+#: ../contrib/command-not-found/pk-command-not-found.c:706
 msgid "PackageKit Command Not Found"
 msgstr "找不到 PackageKit 指令"
 
-#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:727
-msgid "Command not found."
-msgstr "找不到指令。"
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "找不到指令"
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:745
+#: ../contrib/command-not-found/pk-command-not-found.c:757
 msgid "Similar command is:"
 msgstr "相似指令為:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:755
+#: ../contrib/command-not-found/pk-command-not-found.c:771
 msgid "Run similar command:"
 msgstr "執行相似指令:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:769
-#: ../contrib/command-not-found/pk-command-not-found.c:778
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
 msgid "Similar commands are:"
 msgstr "相似指令有:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:801
 msgid "Please choose a command to run"
 msgstr "請選擇一項指令來執行"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:803
+#: ../contrib/command-not-found/pk-command-not-found.c:819
 msgid "The package providing this file is:"
 msgstr "提供此檔案的套件為:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:808
+#: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
 msgstr "是否要安裝「%s」套件以提供「%s」指令?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:832
+#: ../contrib/command-not-found/pk-command-not-found.c:853
 msgid "Packages providing this file are:"
 msgstr "提供此檔案的套件有:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:842
+#: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
 msgstr "合適的套件有:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:851
+#: ../contrib/command-not-found/pk-command-not-found.c:872
 msgid "Please choose a package to install"
 msgstr "請選擇欲安裝的套件"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:197
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "正在開始安裝"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:409
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "找不到套件 %s,或是已經安裝了:%s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
-msgid ""
-"Don't actually install any packages, only simulate what would be installed"
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
+msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "不要真的安裝任何套件,只要模擬要安裝什麼就好"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:521
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
 msgstr "不要安裝核心套件的相依關係"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
 msgid "Do not display information or progress"
 msgstr "不要顯示資訊或進度"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:542
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 msgid "PackageKit Debuginfo Installer"
 msgstr "PackageKit 除錯資訊安裝程式"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "錯誤:指定要安裝的套件名稱。"
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:592
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
 #, c-format
 msgid "Getting sources list"
 msgstr "正在取得來源清單"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:602
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:677
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:805
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:872
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:916
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 msgid "FAILED."
 msgstr "失敗。"
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:617
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:692
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:776
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:820
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
 #, c-format
 msgid "OK."
 msgstr "確定。"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:620
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "找到 %i 個啟用的與 %i 個停用的來源。"
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:627
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
 #, c-format
 msgid "Finding debugging sources"
 msgstr "正在尋找除錯來源"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:660
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "找到 %i 個停用的除錯資訊套件庫。"
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:667
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "正在啟用除錯來源"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:695
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "已啟用 %i 個除錯來源。"
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:702
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
 #, c-format
 msgid "Finding debugging packages"
 msgstr "正在尋找除錯套件"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:714
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "找不到套件 %s:%s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "找不到除錯資訊套件 %s:%s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:765
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
 #, c-format
 msgid "Found no packages to install."
 msgstr "找不到要安裝的套件。"
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:779
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
 #, c-format
 msgid "Found %i packages:"
 msgstr "找到 %i 個套件:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:795
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "正在尋找依賴於這些套件的套件"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "找不到依賴的套件:%s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:824
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
 #, c-format
 msgid "Found %i extra packages."
 msgstr "找到 %i 個額外套件。"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
 #, c-format
 msgid "No extra packages required."
 msgstr "不需要額外的套件。"
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:837
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "找到 %i 個套件要安裝:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:850
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "在模擬模式內不會安裝套件"
 
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:862
-#: ../lib/packagekit-glib2/pk-console-shared.c:289
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
 #, c-format
 msgid "Installing packages"
 msgstr "正在安裝套件"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:875
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "無法安裝套件:%s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "正在停用先前啟用的來源"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:919
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "無法停用除錯來源:%s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:934
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "已停用 %i 個除錯來源。"
@@ -1100,604 +1133,617 @@ msgstr "PackageKit 套件清單"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit 服務包"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:65
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "請輸入一個 1 到 %i 之間的數字:"
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:191
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
 msgid "More than one package matches:"
 msgstr "超過一個符合的套件:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:202
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
 msgid "Please choose the correct package: "
 msgstr "請選擇正確的套件:"
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:257
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
 msgid "Unknown state"
 msgstr "不明的狀態"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:261
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
 msgid "Starting"
 msgstr "正在開始"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:265
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
 msgid "Waiting in queue"
 msgstr "正在依佇列等待"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:269
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
 msgid "Running"
 msgstr "正在執行"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:273
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
 msgid "Querying"
 msgstr "正在查詢"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:277
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
 msgid "Getting information"
 msgstr "正在取得資訊"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:281
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
 msgid "Removing packages"
 msgstr "正在移除套件"
 
 #. TRANSLATORS: transaction state, downloading package files
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:285
-#: ../lib/packagekit-glib2/pk-console-shared.c:663
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
 msgid "Downloading packages"
 msgstr "正在下載套件"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:293
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
 msgid "Refreshing software list"
 msgstr "正在重新整理軟體清單"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:297
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
 msgid "Installing updates"
 msgstr "正在安裝更新"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:301
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
 msgid "Cleaning up packages"
 msgstr "正在清理套件"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:305
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
 msgid "Obsoleting packages"
 msgstr "正在廢棄套件"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:309
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
 msgid "Resolving dependencies"
 msgstr "正在解析相依性"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:313
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
 msgid "Checking signatures"
 msgstr "正在檢查簽章"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:317
-#: ../lib/packagekit-glib2/pk-console-shared.c:623
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
 msgid "Rolling back"
 msgstr "正在回復"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:321
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
 msgid "Testing changes"
 msgstr "正在測試變更"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:325
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
 msgid "Committing changes"
 msgstr "正在遞交變更"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:329
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
 msgid "Requesting data"
 msgstr "正在請求資料"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:333
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
 msgid "Finished"
 msgstr "已完成"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:337
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
 msgid "Cancelling"
 msgstr "正在取消"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:341
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
 msgid "Downloading repository information"
 msgstr "正在下載套件庫資訊"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:345
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
 msgid "Downloading list of packages"
 msgstr "正在下載套件清單"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:349
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
 msgid "Downloading file lists"
 msgstr "正在下載檔案清單"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:353
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
 msgid "Downloading lists of changes"
 msgstr "正在下載變更的清單"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:357
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
 msgid "Downloading groups"
 msgstr "正在下載群組"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:361
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
 msgid "Downloading update information"
 msgstr "正在下載更新資訊"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:365
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
 msgid "Repackaging files"
 msgstr "正在重新包裝檔案"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:369
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
 msgid "Loading cache"
 msgstr "正在載入快取"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:373
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
 msgid "Scanning applications"
 msgstr "正在掃描應用程式"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:377
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
 msgid "Generating package lists"
 msgstr "正在產生套件清單"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:381
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
 msgid "Waiting for package manager lock"
 msgstr "正在等候套件管程式解鎖"
 
 #. TRANSLATORS: transaction state, waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:385
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
 msgid "Waiting for authentication"
 msgstr "正在等候認證"
 
 #. TRANSLATORS: transaction state, we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:389
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
 msgid "Updating running applications"
 msgstr "正在更新正在執行中的應用程式"
 
 #. TRANSLATORS: transaction state, we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:393
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
 msgid "Checking applications in use"
 msgstr "正在檢查使用中的應用程式"
 
 #. TRANSLATORS: transaction state, we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:397
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
 msgid "Checking libraries in use"
 msgstr "正在檢查使用中的函式庫"
 
 #. TRANSLATORS: transaction state, we are copying package files before or after the transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
 msgid "Copying files"
 msgstr "正在複製檔案"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:419
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
 msgid "Trivial"
 msgstr "小"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:423
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
 msgid "Normal"
 msgstr "一般"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:427
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
 msgid "Important"
 msgstr "重要"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:431
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
 msgid "Security"
 msgstr "安全性"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:435
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
 msgid "Bug fix "
 msgstr "錯誤修正"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:439
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
 msgid "Enhancement"
 msgstr "增強"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:443
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
 msgid "Blocked"
 msgstr "已阻擋"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
-#: ../lib/packagekit-glib2/pk-console-shared.c:521
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
 msgid "Installed"
 msgstr "已安裝"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:453
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
 msgid "Available"
 msgstr "可用"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:471
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
 msgid "Downloading"
 msgstr "正在下載"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:475
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
 msgid "Updating"
 msgstr "正在更新"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:479
-#: ../lib/packagekit-glib2/pk-console-shared.c:599
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
 msgid "Installing"
 msgstr "正在安裝"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:483
-#: ../lib/packagekit-glib2/pk-console-shared.c:595
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
 msgid "Removing"
 msgstr "正在移除"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:487
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
 msgid "Cleaning up"
 msgstr "正在清除"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:491
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
 msgid "Obsoleting"
 msgstr "正在廢棄"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:495
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
 msgid "Reinstalling"
 msgstr "正在重新安裝"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:513
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
 msgid "Downloaded"
 msgstr "已下載"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:525
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
 msgid "Removed"
 msgstr "已移除"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:529
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
 msgid "Cleaned up"
 msgstr "已清除"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:533
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
 msgid "Obsoleted"
 msgstr "已廢棄"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:537
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
 msgid "Reinstalled"
 msgstr "已重新安裝"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:555
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
 msgid "Unknown role type"
 msgstr "未知的任務類型"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:559
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
 msgid "Getting dependencies"
 msgstr "正在取得相容性"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:563
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
 msgid "Getting update details"
 msgstr "正在取得更新詳細資料"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:567
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
 msgid "Getting details"
 msgstr "正在取得詳細資料"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:571
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
 msgid "Getting requires"
 msgstr "正在取得需求"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:575
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
 msgid "Getting updates"
 msgstr "正在取得更新"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:579
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
 msgid "Searching by details"
 msgstr "正在依詳細資料搜尋"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:583
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
 msgid "Searching by file"
 msgstr "正在依檔案搜尋"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:587
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
 msgid "Searching groups"
 msgstr "正在搜尋群組"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:591
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
 msgid "Searching by name"
 msgstr "正在依名稱搜尋"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:603
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
 msgid "Installing files"
 msgstr "正在安裝檔案"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:607
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
 msgid "Refreshing cache"
 msgstr "正在重新整理快取"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:611
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
 msgid "Updating packages"
 msgstr "正在更新套件"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:615
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
 msgid "Updating system"
 msgstr "正在更新系統"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:619
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
 msgid "Canceling"
 msgstr "正在取消"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:627
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
 msgid "Getting repositories"
 msgstr "正在取得套件庫"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:631
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
 msgid "Enabling repository"
 msgstr "正在啟用套件庫"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:635
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
 msgid "Setting data"
 msgstr "正在設定資料"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:639
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
 msgid "Resolving"
 msgstr "正在解析"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:643
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
 msgid "Getting file list"
 msgstr "正在取得檔案清單"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:647
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
 msgid "Getting provides"
 msgstr "正在取得提供什麼"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:651
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
 msgid "Installing signature"
 msgstr "正在安裝簽章"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:655
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
 msgid "Getting packages"
 msgstr "正在取得套件"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:659
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
 msgid "Accepting EULA"
 msgstr "正在接受終端使用者授權同意書"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:667
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
 msgid "Getting upgrades"
 msgstr "正在取得升級"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:671
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
 msgid "Getting categories"
 msgstr "正在取得分類"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:675
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
 msgid "Getting transactions"
 msgstr "正在取得處理事項"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:679
-#: ../lib/packagekit-glib2/pk-console-shared.c:683
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
 msgid "Simulating install"
 msgstr "正在模擬安裝"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:687
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
 msgid "Simulating remove"
 msgstr "正在模擬移除"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:691
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
 msgid "Simulating update"
 msgstr "正在模擬更新"
 
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "顯示供所有檔案用的額外除錯資訊"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "除錯選項"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "顯示除錯選項"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
-#: ../lib/packagekit-glib2/pk-task-text.c:69
+#: ../lib/packagekit-glib2/pk-task-text.c:67
 msgid "Do you want to allow installing of unsigned software?"
 msgstr "您想要允許未簽署軟體的安裝嗎?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:74
+#: ../lib/packagekit-glib2/pk-task-text.c:72
 msgid "The unsigned software will not be installed."
 msgstr "未簽署的軟體不會被安裝。"
 
 #. TRANSLATORS: the package repository is signed by a key that is not recognised
-#: ../lib/packagekit-glib2/pk-task-text.c:123
+#: ../lib/packagekit-glib2/pk-task-text.c:121
 msgid "Software source signature required"
 msgstr "需要軟體來源簽章"
 
 #. TRANSLATORS: the package repository name
-#: ../lib/packagekit-glib2/pk-task-text.c:129
+#: ../lib/packagekit-glib2/pk-task-text.c:127
 msgid "Software source name"
 msgstr "軟體來源名稱"
 
 #. TRANSLATORS: the key URL
-#: ../lib/packagekit-glib2/pk-task-text.c:132
+#: ../lib/packagekit-glib2/pk-task-text.c:130
 msgid "Key URL"
 msgstr "金鑰 URL"
 
 #. TRANSLATORS: the username of the key
-#: ../lib/packagekit-glib2/pk-task-text.c:135
+#: ../lib/packagekit-glib2/pk-task-text.c:133
 msgid "Key user"
 msgstr "金鑰使用者"
 
 #. TRANSLATORS: the key ID, usually a few hex digits
-#: ../lib/packagekit-glib2/pk-task-text.c:138
+#: ../lib/packagekit-glib2/pk-task-text.c:136
 msgid "Key ID"
 msgstr "金鑰 ID"
 
 #. TRANSLATORS: the key fingerprint, again, yet more hex
-#: ../lib/packagekit-glib2/pk-task-text.c:141
+#: ../lib/packagekit-glib2/pk-task-text.c:139
 msgid "Key fingerprint"
 msgstr "金鑰指紋"
 
 #. TRANSLATORS: the timestamp (a bit like a machine readable time)
-#: ../lib/packagekit-glib2/pk-task-text.c:144
+#: ../lib/packagekit-glib2/pk-task-text.c:142
 msgid "Key Timestamp"
 msgstr "金鑰時間戳記"
 
 #. TRANSLATORS: ask the user if they want to import
-#: ../lib/packagekit-glib2/pk-task-text.c:157
+#: ../lib/packagekit-glib2/pk-task-text.c:155
 msgid "Do you accept this signature?"
 msgstr "您是否接受此簽章?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:162
+#: ../lib/packagekit-glib2/pk-task-text.c:160
 msgid "The signature was not accepted."
 msgstr "簽章未被接受。"
 
 #. TRANSLATORS: this is another name for a software licence that has to be read before installing
-#: ../lib/packagekit-glib2/pk-task-text.c:205
+#: ../lib/packagekit-glib2/pk-task-text.c:203
 msgid "End user licence agreement required"
 msgstr "需要接受終端使用者授權同意書"
 
 #. TRANSLATORS: the EULA text itself (long and boring)
-#: ../lib/packagekit-glib2/pk-task-text.c:214
+#: ../lib/packagekit-glib2/pk-task-text.c:212
 msgid "Agreement"
 msgstr "同意書"
 
 #. TRANSLATORS: ask the user if they've read and accepted the EULA
-#: ../lib/packagekit-glib2/pk-task-text.c:223
+#: ../lib/packagekit-glib2/pk-task-text.c:221
 msgid "Do you accept this agreement?"
 msgstr "您是否接受此同意書?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:228
+#: ../lib/packagekit-glib2/pk-task-text.c:226
 msgid "The agreement was not accepted."
 msgstr "同意書未被接受。"
 
 #. TRANSLATORS: the user needs to change media inserted into the computer
-#: ../lib/packagekit-glib2/pk-task-text.c:267
+#: ../lib/packagekit-glib2/pk-task-text.c:265
 msgid "Media change required"
 msgstr "需要變更媒體"
 
 #. TRANSLATORS: the type, e.g. DVD, CD, etc
-#: ../lib/packagekit-glib2/pk-task-text.c:270
+#: ../lib/packagekit-glib2/pk-task-text.c:268
 msgid "Media type"
 msgstr "媒體類型"
 
 #. TRANSLATORS: the media label, usually like 'disk-1of3'
-#: ../lib/packagekit-glib2/pk-task-text.c:273
+#: ../lib/packagekit-glib2/pk-task-text.c:271
 msgid "Media label"
 msgstr "媒體標籤"
 
 #. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
-#: ../lib/packagekit-glib2/pk-task-text.c:276
+#: ../lib/packagekit-glib2/pk-task-text.c:274
 msgid "Text"
 msgstr "文字"
 
 #. TRANSLATORS: ask the user to insert the media
-#: ../lib/packagekit-glib2/pk-task-text.c:282
+#: ../lib/packagekit-glib2/pk-task-text.c:280
 msgid "Please insert the correct media"
 msgstr "請插入正確媒體"
 
 #. TRANSLATORS: tell the user we've not done anything as they are lazy
-#: ../lib/packagekit-glib2/pk-task-text.c:287
+#: ../lib/packagekit-glib2/pk-task-text.c:285
 msgid "The correct media was not inserted."
 msgstr "沒有插入正確媒體。"
 
 #. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:302
+#: ../lib/packagekit-glib2/pk-task-text.c:300
 msgid "The following packages have to be removed:"
 msgstr "下列套件必須被移除掉:"
 
 #. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:307
+#: ../lib/packagekit-glib2/pk-task-text.c:305
 msgid "The following packages have to be installed:"
 msgstr "下列套件要被安裝:"
 
 #. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:312
+#: ../lib/packagekit-glib2/pk-task-text.c:310
 msgid "The following packages have to be updated:"
 msgstr "下列套件要被更新:"
 
 #. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:317
+#: ../lib/packagekit-glib2/pk-task-text.c:315
 msgid "The following packages have to be reinstalled:"
 msgstr "下列套件要被重新安裝:"
 
 #. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:322
+#: ../lib/packagekit-glib2/pk-task-text.c:320
 msgid "The following packages have to be downgraded:"
 msgstr "下列套件要被降級:"
 
 #. TRANSLATORS: ask the user if the proposed changes are okay
-#: ../lib/packagekit-glib2/pk-task-text.c:382
+#: ../lib/packagekit-glib2/pk-task-text.c:380
 msgid "Proceed with changes?"
 msgstr "要處理變更嗎?"
 
 #. TRANSLATORS: tell the user we didn't do anything
-#: ../lib/packagekit-glib2/pk-task-text.c:387
+#: ../lib/packagekit-glib2/pk-task-text.c:385
 msgid "The transaction did not proceed."
 msgstr "該處理事項沒有執行。"
 
@@ -1716,8 +1762,7 @@ msgid "Authentication is required to accept a EULA"
 msgstr "要接受終端使用者授權條款協議需先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid ""
-"Authentication is required to cancel a task that was not started by yourself"
+msgid "Authentication is required to cancel a task that was not started by yourself"
 msgstr "若要取消一項並非由您啟動的工作,您必須先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
@@ -1725,14 +1770,11 @@ msgid "Authentication is required to change software source parameters"
 msgstr "要更改軟體來源參數需先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid ""
-"Authentication is required to change the location used to decompress packages"
+msgid "Authentication is required to change the location used to decompress packages"
 msgstr "要變更用來解壓縮套件的位置需先通過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
+msgid "Authentication is required to consider a key used for signing packages as trusted"
 msgstr "要將一個用來簽署套件的金鑰列為已信任的金鑰需先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
@@ -1760,21 +1802,23 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "要回復處理事項需要先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
+msgid "Authentication is required to set the network proxy used for downloading packages"
 msgstr "要設定用來下載套件的網路代理伺服器 需先經過身份認證"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:20
 msgid "Authentication is required to update packages"
 msgstr "要更新套件需先經過身份認證"
 
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Authentication is required to upgrade the operating system"
+msgstr "要升級作業系統需先通過身份認證"
+
 #. SECURITY:
 #. - Normal users are allowed to cancel their own task without
 #. authentication, but a different user id needs the admin password
 #. to cancel another users task.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:26
+#: ../policy/org.freedesktop.packagekit.policy.in.h:27
 msgid "Cancel foreign task"
 msgstr "取消外來工作"
 
@@ -1784,7 +1828,7 @@ msgstr "取消外來工作"
 #. - This could be used to overwrite files not owned by the user using
 #. a carefully created package file.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:33
+#: ../policy/org.freedesktop.packagekit.policy.in.h:34
 msgid "Change location that packages are installed"
 msgstr "變更套件要安裝的位置"
 
@@ -1793,7 +1837,7 @@ msgstr "變更套件要安裝的位置"
 #. software sources as this can be used to enable new updates or
 #. install different versions of software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:39
+#: ../policy/org.freedesktop.packagekit.policy.in.h:40
 msgid "Change software source parameters"
 msgstr "更改軟體來源參數"
 
@@ -1803,7 +1847,7 @@ msgstr "更改軟體來源參數"
 #. - Paranoid users (or parents!) can change this to 'auth_admin' or
 #. 'auth_admin_keep'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:46
+#: ../policy/org.freedesktop.packagekit.policy.in.h:47
 msgid "Install signed package"
 msgstr "安裝已簽署的套件"
 
@@ -1813,7 +1857,7 @@ msgstr "安裝已簽署的套件"
 #. password would be a massive security hole.
 #. - This is not retained as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:53
+#: ../policy/org.freedesktop.packagekit.policy.in.h:54
 msgid "Install untrusted local file"
 msgstr "安裝未信任的本地檔案"
 
@@ -1821,7 +1865,7 @@ msgstr "安裝未信任的本地檔案"
 #. - Normal users do not require admin authentication to refresh the
 #. cache, as this doesn't actually install or remove software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:58
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Refresh system sources"
 msgstr "重新整理系統來源"
 
@@ -1832,7 +1876,7 @@ msgstr "重新整理系統來源"
 #. try to rebind drivers in use, for instance security authentication
 #. devices.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:66
+#: ../policy/org.freedesktop.packagekit.policy.in.h:67
 msgid "Reload a device"
 msgstr "重新載入裝置"
 
@@ -1845,7 +1889,7 @@ msgstr "重新載入裝置"
 #. be removed. If this is not possible, change this authentication to
 #. 'auth_admin'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:76
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Remove package"
 msgstr "移除套件"
 
@@ -1854,7 +1898,7 @@ msgstr "移除套件"
 #. as this will change a large number of packages, and could expose the
 #. system to previously patched security vulnerabilities.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:82
+#: ../policy/org.freedesktop.packagekit.policy.in.h:83
 msgid "Rollback to a previous transaction"
 msgstr "回復至上一個處理事項"
 
@@ -1862,7 +1906,7 @@ msgstr "回復至上一個處理事項"
 #. - Normal users do not require admin authentication to set the proxy
 #. used for downloading packages.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:87
+#: ../policy/org.freedesktop.packagekit.policy.in.h:88
 msgid "Set network proxy"
 msgstr "設定網路代理伺服器"
 
@@ -1872,7 +1916,7 @@ msgstr "設定網路代理伺服器"
 #. without a secure authentication.
 #. - This is not kept as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:94
+#: ../policy/org.freedesktop.packagekit.policy.in.h:95
 msgid "Trust a key used for signing packages"
 msgstr "信任一個用來簽署套件的金鑰"
 
@@ -1883,10 +1927,19 @@ msgstr "信任一個用來簽署套件的金鑰"
 #. - Changing this to anything other than 'yes' will break unattended
 #. updates.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:102
+#: ../policy/org.freedesktop.packagekit.policy.in.h:103
 msgid "Update packages"
 msgstr "更新套件"
 
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:109
+msgid "Upgrade System"
+msgstr "升級系統"
+
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
@@ -1904,9 +1957,7 @@ msgstr "正確的使用者 (一般為 root) 沒有啟動可執行檔"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
 msgstr "org.freedesktop.PackageKit.conf 檔案尚未安裝在系統目錄中:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
@@ -1947,10 +1998,10 @@ msgstr "PackageKit 服務"
 #. TRANSLATORS: fatal error, dbus is not running
 #: ../src/pk-main.c:267
 msgid "Cannot connect to the system bus"
-msgstr "無法連接至系統 bus"
+msgstr "無法連接至系統匯流"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:318
+#: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "嘗試啟動時發生錯誤:"
 
@@ -1959,7 +2010,8 @@ msgid "To install debugging packages, extra sources need to be enabled"
 msgstr "要安裝除錯套件,需要啟用額外的來源"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
+#: ../src/pk-polkit-action-lookup.c:171
+#: ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "這個軟體並非來自信任的來源。"
 
@@ -1989,123 +2041,72 @@ msgstr "許多套件"
 msgid "Only trusted"
 msgstr "只有信任的"
 
-#. TRANSLATORS: turn on all debugging
-#: ../src/egg-debug.c:388
-msgid "Show debugging information for all files"
-msgstr "顯示供所有檔案用的額外除錯資訊"
-
-#. TRANSLATORS: a list of modules to debug
-#: ../src/egg-debug.c:458
-msgid "Debug these specific modules"
-msgstr "針對這些指定的模組除錯"
-
-#. TRANSLATORS: a list of functions to debug
-#: ../src/egg-debug.c:461
-msgid "Debug these specific functions"
-msgstr "針對這些指定的功能除錯"
-
-#. TRANSLATORS: save to a log
-#: ../src/egg-debug.c:464
-msgid "Log debugging data to a file"
-msgstr "將除錯資料紀錄到檔案"
-
-#: ../src/egg-debug.c:468
-msgid "Debugging Options"
-msgstr "除錯選項"
-
-#: ../src/egg-debug.c:468
-msgid "Show debugging options"
-msgstr "顯示除錯選項"
-
+#~ msgid "Debug these specific modules"
+#~ msgstr "針對這些指定的模組除錯"
+#~ msgid "Debug these specific functions"
+#~ msgstr "針對這些指定的功能除錯"
+#~ msgid "Log debugging data to a file"
+#~ msgstr "將除錯資料紀錄到檔案"
 #~ msgid "Cannot install when offline"
 #~ msgstr "當離線時無法安裝"
-
 #~ msgid "Cannot refresh cache whilst offline"
 #~ msgstr "當離線時無法重新整理快取"
-
 #~ msgid "Please restart the application as it is being used."
 #~ msgstr "請重新啟動應用程式因為該應用程式正被使用中。"
-
 #~ msgid "This tool could not install the files: %s"
 #~ msgstr "此工具無法安裝檔案:%s"
-
 #~ msgid "This tool could not remove the packages: %s"
 #~ msgstr "此工具無法移除套件:%s"
-
 #~ msgid "Proceed removing additional packages?"
 #~ msgstr "是否要進行移除額外套件?"
-
 #~ msgid "The package removal was canceled!"
 #~ msgstr "套件移除已取消!"
-
 #~ msgid "This tool could not download the package %s as it could not be found"
 #~ msgstr "此工具無法下載 %s 套件因為找不到該套件"
-
 #~ msgid "This tool could not download the packages: %s"
 #~ msgstr "此工具無法下載套件:%s"
-
 #~ msgid "This tool could not update %s: %s"
 #~ msgstr "此工具無法更新 %s:%s"
-
 #~ msgid "This tool could not get the requirements for %s: %s"
 #~ msgstr "此工具無法取得 %s 的需求:%s"
-
 #~ msgid "This tool could not get the dependencies for %s: %s"
 #~ msgstr "此工具無法取得 %s 的相依性:%s"
-
 #~ msgid "This tool could not get package details for %s: %s"
 #~ msgstr "此工具無法取得 %s 的套件詳細資料:%s"
-
 #~ msgid "This tool could not find the files for %s: %s"
 #~ msgstr "此工具找不到 %s 的檔案:%s"
-
 #~ msgid "This tool could not get the file list for %s: %s"
 #~ msgstr "此工具無法取得 %s 的檔案清單:%s"
-
 #~ msgid "File already exists: %s"
 #~ msgstr "檔案已經存在:%s"
-
 #~ msgid "This tool could not get package list: %s"
 #~ msgstr "此工具無法取得套件清單:%s"
-
 #~ msgid "File does not exist: %s"
 #~ msgstr "檔案不存在:%s"
-
 #~ msgid "Packages to add"
 #~ msgstr "要新增的套件"
-
 #~ msgid "Packages to remove"
 #~ msgstr "要移除的套件"
-
 #~ msgid "not found."
 #~ msgstr "找不到。"
-
 #~ msgid "No packages can be found to install"
 #~ msgstr "找不到要安裝的套件"
-
 #~ msgid "This tool could not find the update details for %s: %s"
 #~ msgstr "此工具找不到 %s 的更新詳細資料:%s"
-
 #~ msgid "This tool could not get the update details for %s: %s"
 #~ msgstr "此工具無法取得 %s 的更新詳細資料:%s"
-
 #~ msgid "Error:"
 #~ msgstr "錯誤:"
-
 #~ msgid "Do you agree to this license?"
 #~ msgstr "您是否同意此授權合約?"
-
 #~ msgid "The license was refused."
 #~ msgstr "已拒絕授權合約。"
-
 #~ msgid "This tool could not connect to system DBUS."
 #~ msgstr "此工具無法連接至系統的 DBUS。"
-
 #~ msgid "A list file name to create is required"
 #~ msgstr "需要想建立的清單檔名"
-
 #~ msgid "A list file to open is required"
 #~ msgstr "需要想開啟的清單檔案"
-
 #~ msgid "Incorrect privileges for this operation"
 #~ msgstr "執行這項操作的權限不對"
+
commit 1159d027ea527aac94e338d0b8790dc2c6e41d28
Author: fri <pavelfric at seznam.cz>
Date:   Sun Nov 21 17:04:16 2010 +0000

    l10n: Updated Czech (cs) translation to 100%
    
    New status: 375 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/cs.po b/po/cs.po
index 4b11769..af4b089 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,1564 +4,1765 @@
 #
 # Vojtech Smejkal <smejkalv at gmail.com>, 2008.
 # Adam Pribyl <pribyl at lowlevel.cz>, 2008.
+# Pavel Frix <fripohled.blogspot.com>, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.cs\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-04 08:25+0000\n"
-"PO-Revision-Date: 2009-09-07 16:56+0100\n"
-"Last-Translator: Dušan Hokův <dusan at mirc.cz>\n"
+"POT-Creation-Date: 2010-11-21 07:25+0000\n"
+"PO-Revision-Date: 2010-11-21 18:00+0100\n"
+"Last-Translator: Pavel Frix <fripohled.blogspot.com>\n"
 "Language-Team: Czech <fedora-cs-list at redhat.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 0.2\n"
+"X-Generator: Lokalize 1.1\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:238
-#: ../client/pk-console-test.c:146
+#. TRANSLATORS: the role is the point of the transaction, e.g. update-system
+#: ../client/pk-console.c:174 ../client/pk-console.c:596
 msgid "Transaction"
 msgstr "Transakce"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:240
-#: ../client/pk-console-test.c:148
+#: ../client/pk-console.c:176
 msgid "System time"
 msgstr "Systémový čas"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:150
+#: ../client/pk-console.c:178
 msgid "Succeeded"
 msgstr "Úspěšné"
 
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:150
+#: ../client/pk-console.c:178
 msgid "True"
 msgstr "Pravda"
 
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:150
+#: ../client/pk-console.c:178
 msgid "False"
 msgstr "Nepravda"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:244
-#: ../client/pk-console-test.c:152
-#: ../src/pk-polkit-action-lookup.c:327
+#: ../client/pk-console.c:180 ../src/pk-polkit-action-lookup.c:332
 msgid "Role"
-msgstr "Role"
+msgstr "Úloha"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:249
-#: ../client/pk-console-test.c:157
+#: ../client/pk-console.c:185
 msgid "Duration"
 msgstr "Doba trvání"
 
-#: ../client/pk-console.c:249
-#: ../client/pk-console-test.c:157
+#: ../client/pk-console.c:185
 msgid "(seconds)"
 msgstr "(sekund)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:253
-#: ../client/pk-console-test.c:161
-#: ../src/pk-polkit-action-lookup.c:341
+#: ../client/pk-console.c:189 ../src/pk-polkit-action-lookup.c:346
 msgid "Command line"
 msgstr "Příkazový řádek"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:255
-#: ../client/pk-console-test.c:163
+#: ../client/pk-console.c:191
 msgid "User ID"
 msgstr "Uživatelské ID"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:262
-#: ../client/pk-console-test.c:170
+#: ../client/pk-console.c:198
 msgid "Username"
 msgstr "Uživatelské jméno"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:266
-#: ../client/pk-console-test.c:174
+#: ../client/pk-console.c:202
 msgid "Real name"
 msgstr "Skutečné jméno"
 
-#: ../client/pk-console.c:274
-#: ../client/pk-console-test.c:182
+#: ../client/pk-console.c:210
 msgid "Affected packages:"
-msgstr "Ovlivněné balíky:"
+msgstr "Ovlivněné balíčky:"
 
-#: ../client/pk-console.c:276
-#: ../client/pk-console-test.c:184
+#: ../client/pk-console.c:212
 msgid "Affected packages: None"
 msgstr "Ovlivněné balíčky: Žádné"
 
-#. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../client/pk-console.c:337
-#: ../client/pk-task-text.c:208
-msgid "The following packages have to be removed:"
-msgstr "Následující balíky musí být odstraněny:"
-
-#. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../client/pk-console.c:340
-#: ../client/pk-task-text.c:213
-msgid "The following packages have to be installed:"
-msgstr "Následující balíky musí být instalovány:"
-
-#. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../client/pk-console.c:343
-#: ../client/pk-task-text.c:218
-msgid "The following packages have to be updated:"
-msgstr "Následující balíky musí být aktualizovány:"
-
-#. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../client/pk-console.c:346
-#: ../client/pk-task-text.c:223
-msgid "The following packages have to be reinstalled:"
-msgstr "Následující balíky musí být reinstalovány:"
-
-#. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../client/pk-console.c:349
-#: ../client/pk-task-text.c:228
-msgid "The following packages have to be downgraded:"
-msgstr "Následující balíky musí být vráceny na předchozí verzi:"
-
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:363
-#: ../client/pk-console-test.c:204
+#: ../client/pk-console.c:247
 msgid "Distribution"
 msgstr "Distribuce"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:365
-#: ../client/pk-console-test.c:206
+#: ../client/pk-console.c:249
 msgid "Type"
 msgstr "Typ"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#. TRANSLATORS: this is any summary text describing the upgrade
-#. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:367
-#: ../client/pk-console.c:390
-#: ../client/pk-console-test.c:208
-#: ../client/pk-console-test.c:229
+#: ../client/pk-console.c:251 ../client/pk-console.c:290
 msgid "Summary"
-msgstr "Souhrn"
+msgstr "Přehled"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:379
-#: ../client/pk-console-test.c:218
+#: ../client/pk-console.c:279
 msgid "Category"
-msgstr "Kategorie"
+msgstr "Skupina"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:381
-#: ../client/pk-console-test.c:220
+#: ../client/pk-console.c:281
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:384
-#: ../client/pk-console-test.c:223
+#: ../client/pk-console.c:284
 msgid "Parent"
 msgstr "Nadřazený"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:387
-#: ../client/pk-console-test.c:226
+#: ../client/pk-console.c:287
 msgid "Name"
 msgstr "Název"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:393
-#: ../client/pk-console-test.c:232
+#: ../client/pk-console.c:293
 msgid "Icon"
 msgstr "Ikona"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:408
-#: ../client/pk-console-test.c:246
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
-msgstr "Detaily o aktualizaci:"
+msgstr "Podrobnosti k aktualizaci:"
 
 #. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is being processed
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:410
-#: ../client/pk-console-test.c:252
-#: ../client/pk-task-text.c:95
-#: ../client/pk-task-text.c:144
-#: ../src/pk-polkit-action-lookup.c:352
+#: ../client/pk-console.c:345 ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
+#: ../src/pk-polkit-action-lookup.c:357
 msgid "Package"
 msgid_plural "Packages"
-msgstr[0] "Balík"
+msgstr[0] "Balíček"
 msgstr[1] "Balíky"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:413
-#: ../client/pk-console-test.c:255
+#: ../client/pk-console.c:348
 msgid "Updates"
-msgstr "Aktualizace"
+msgstr "Nejnovější balíčky"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:417
-#: ../client/pk-console-test.c:259
+#: ../client/pk-console.c:352
 msgid "Obsoletes"
-msgstr "Zastarává"
+msgstr "Zastaralé balíčky"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:421
-#: ../client/pk-console-test.c:263
-#: ../client/pk-task-text.c:145
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:356 ../lib/packagekit-glib2/pk-task-text.c:209
 msgid "Vendor"
-msgstr "Výrobce"
+msgstr "Prodejce"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:425
-#: ../client/pk-console-test.c:267
+#: ../client/pk-console.c:360
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:429
-#: ../client/pk-console-test.c:271
+#: ../client/pk-console.c:364
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:433
-#: ../client/pk-console-test.c:275
+#: ../client/pk-console.c:368
 msgid "Restart"
-msgstr "Restart"
+msgstr "Znovuspuštění"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:437
-#: ../client/pk-console-test.c:279
+#: ../client/pk-console.c:372
 msgid "Update text"
 msgstr "Text aktualizace"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:441
-#: ../client/pk-console-test.c:283
+#: ../client/pk-console.c:376
 msgid "Changes"
 msgstr "Změny"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:445
-#: ../client/pk-console-test.c:287
+#: ../client/pk-console.c:380
 msgid "State"
 msgstr "Stav"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:450
-#: ../client/pk-console-test.c:292
+#: ../client/pk-console.c:384
 msgid "Issued"
-msgstr ""
+msgstr "Vydán"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:455
-#: ../client/pk-console-test.c:297
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:388 ../lib/packagekit-glib2/pk-console-shared.c:515
 msgid "Updated"
 msgstr "Aktualizován"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:475
-#: ../client/pk-console-test.c:315
+#: ../client/pk-console.c:424
 msgid "Enabled"
 msgstr "Povoleno"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:478
-#: ../client/pk-console-test.c:318
+#: ../client/pk-console.c:427
 msgid "Disabled"
 msgstr "Zakázáno"
 
-#: ../client/pk-console.c:555
-#: ../client/pk-console.c:557
-msgid "Percentage"
-msgstr "Procentuální"
-
-#: ../client/pk-console.c:557
-msgid "Unknown"
-msgstr "Neznámý"
-
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:599
-#: ../client/pk-console-test.c:340
+#: ../client/pk-console.c:459
 msgid "System restart required by:"
-msgstr "Restart systému požaduje:"
+msgstr "Znovuspuštění systému požaduje:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:602
-#: ../client/pk-console-test.c:343
+#: ../client/pk-console.c:462
 msgid "Session restart required:"
-msgstr "Je požadován restart sezení:"
+msgstr "Je požadováno znovuspuštění sezení:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:605
-#: ../client/pk-console-test.c:346
+#: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
-msgstr "Restart (bezpečnostní) systému požaduje:"
+msgstr "Znovuspuštění (bezpečnostní) systému požaduje:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:608
-#: ../client/pk-console-test.c:349
+#: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
-msgstr "Je požadován restart (bezpečnostní) sezení:"
+msgstr "Je požadováno znovuspuštění (bezpečnostní) sezení:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:611
-#: ../client/pk-console-test.c:352
+#: ../client/pk-console.c:471
 msgid "Application restart required by:"
-msgstr "Restart aplikace vyžaduje:"
+msgstr "Znovuspuštění programu vyžaduje:"
 
-#. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:666
-#: ../client/pk-console-test.c:434
-msgid "Please restart the computer to complete the update."
-msgstr "Prosím restartujte počítač pro dokončení aktualizace."
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:506
+msgid "Package description"
+msgstr "Popis balíčku"
 
-#. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:669
-#: ../client/pk-console-test.c:437
-msgid "Please logout and login to complete the update."
-msgstr "Prosím odhlaste se a znovu se přihlašte pro dokončení aktualizace."
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:537
+msgid "Message:"
+msgstr "Zpráva:"
 
-#. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:672
-#: ../client/pk-console-test.c:440
-msgid "Please restart the application as it is being used."
-msgstr "Prosím restartujte aplikaci, protože je právě používána."
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:558
+msgid "No files"
+msgstr "Žádné soubory"
 
-#. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:675
-#: ../client/pk-console-test.c:443
-msgid "Please restart the computer to complete the update as important security updates have been installed."
-msgstr "Prosím restartujte počítač pro dokončení aktualizace kvůli nainstalovaným důležitým bezpečnostním aktualizacím ."
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:563
+msgid "Package files"
+msgstr "Soubory v balíčku"
 
-#. TRANSLATORS: a package needs to restart the session (due to security)
+#. TRANSLATORS: the percentage complete of the transaction
+#: ../client/pk-console.c:631
+msgid "Percentage"
+msgstr "Procentuální"
+
+#. TRANSLATORS: the status of the transaction (e.g. downloading)
+#: ../client/pk-console.c:649
+msgid "Status"
+msgstr "Stav"
+
+#. TRANSLATORS: the results from the transaction
 #: ../client/pk-console.c:678
-#: ../client/pk-console-test.c:446
-msgid "Please logout and login to complete the update as important security updates have been installed."
-msgstr "Prosím odhlaste se a znovu se přihlašte pro dokončení aktualizace kvůli nainstalovaným důležitým bezpečnostním aktualizacím."
+msgid "Results:"
+msgstr "Výsledky:"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:685
+msgid "Fatal error"
+msgstr "Vážná chyba"
+
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "Nejsou tu žádné balíčky k aktualizaci"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
+msgid "The transaction failed"
+msgstr "Transakce se nezdařila"
+
+#. TRANSLATORS: print a message when there are no updates
+#: ../client/pk-console.c:733
+msgid "There are no updates available at this time."
+msgstr "V tuto chvíli není dostupná žádná novější verze."
+
+#: ../client/pk-console.c:756
+msgid "There are no upgrades available at this time."
+msgstr "V tuto chvíli nejsou dostupná žádná povýšení."
 
-#. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:810
-#: ../client/pk-console-test.c:541
-#, c-format
-msgid "The package %s is already installed"
-msgstr "Balík %s je již nainstalován"
+#. TRANSLATORS: a package needs to restart their system
+#: ../client/pk-console.c:823
+msgid "Please restart the computer to complete the update."
+msgstr "Spusťte, prosím, počítač znovu, aby aktualizace mohla být dokončena."
 
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:818
-#: ../client/pk-console-test.c:549
-#, c-format
-msgid "The package %s could not be installed: %s"
-msgstr "Balík %s nemůže být nainstalován: %s"
-
-#. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:844
-#: ../client/pk-console.c:892
-#: ../client/pk-console.c:916
-#: ../client/pk-console.c:964
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1173
-#: ../client/pk-console.c:1234
-#: ../client/pk-tools-common.c:63
-#: ../client/pk-tools-common.c:82
-#: ../client/pk-tools-common.c:90
-#, c-format
-msgid "Internal error: %s"
-msgstr "Interní chyba: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#. ask the user
-#: ../client/pk-console.c:876
-#: ../client/pk-console.c:948
-#: ../client/pk-console.c:1266
-#: ../client/pk-task-text.c:284
-msgid "Proceed with changes?"
-msgstr "Pokračovat se změnami?"
+#. TRANSLATORS: a package needs to restart the session
+#: ../client/pk-console.c:826
+msgid "Please logout and login to complete the update."
+msgstr ""
+"Odhlašte se, prosím, a znovu se přihlašte, aby aktualizace mohla být "
+"dokončena."
 
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:881
-#: ../client/pk-console.c:953
-msgid "The package install was canceled!"
-msgstr "Instalace baličku byla zrušena!"
+#. TRANSLATORS: a package needs to restart their system (due to security)
+#: ../client/pk-console.c:829
+msgid ""
+"Please restart the computer to complete the update as important security "
+"updates have been installed."
+msgstr ""
+"Spusťte, prosím, počítač znovu, aby aktualizace mohla být dokončena, protože "
+"byly nainstalovány "
+"důležité bezpečnostní aktualizace."
 
-#. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:900
-#: ../client/pk-console.c:1634
-#: ../client/pk-console-test.c:572
-#, c-format
-msgid "This tool could not install the packages: %s"
-msgstr "Tento nástroj není schopen nainstalovat balíky: %s"
+#. TRANSLATORS: a package needs to restart the session (due to security)
+#: ../client/pk-console.c:832
+msgid ""
+"Please logout and login to complete the update as important security updates "
+"have been installed."
+msgstr ""
+"Odhlašte se, prosím, a znovu se přihlašte, aby aktualizace mohla být "
+"dokončena, protože byly nainstalovány "
+"důležité bezpečnostní aktualizace."
 
-#. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:972
-#: ../client/pk-console-test.c:586
+#. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
+#: ../client/pk-console.c:858
 #, c-format
-msgid "This tool could not install the files: %s"
-msgstr "Tento nástroj není schopen nainstalovat soubory: %s"
+msgid ""
+"Expected package name, actually got file. Try using 'pkcon install-local %s' "
+"instead."
+msgstr ""
+"Očekáván název balíčku, doopravdy však byl obdržen soubor. Místo toho "
+"vyzkoušejte "
+"užití 'pkcon install-local %s'."
 
-#. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:1028
-#: ../client/pk-console-test.c:636
-#, c-format
-msgid "This tool could not remove %s: %s"
-msgstr "Tento nástroj nemůže odstranit %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1051
-#: ../client/pk-console.c:1089
-#: ../client/pk-console.c:1118
-#: ../client/pk-console-test.c:657
-#, c-format
-msgid "This tool could not remove the packages: %s"
-msgstr "Tento nástroj nemůže odstranit balíky: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:1104
-msgid "Proceed with additional packages?"
-msgstr "Pokračovat s doplňkovými balíky? "
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1109
-msgid "The package removal was canceled!"
-msgstr "Odstranění baličku bylo zrušeno!"
-
-#. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:1150
-#: ../client/pk-console-test.c:689
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:866
 #, c-format
-msgid "This tool could not download the package %s as it could not be found"
-msgstr "Tento nástroj nemůže stáhnout balík %s, protože nemůže být nalezen"
+msgid "This tool could not find any available package: %s"
+msgstr "Tomuto nástroji se nepodařilo nalézt žádný dostupný balíček: %s"
 
-#. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:1181
-#: ../client/pk-console-test.c:711
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:894
 #, c-format
-msgid "This tool could not download the packages: %s"
-msgstr "Tento nástroj nemůže stáhnout balíky: %s"
+msgid "This tool could not find the installed package: %s"
+msgstr "Tomuto nástroji se nepodařilo nalézt nainstalovaný balíček: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1213
-#: ../client/pk-console.c:1225
-#: ../client/pk-console.c:1280
-#: ../client/pk-console-test.c:743
-#: ../client/pk-console-test.c:753
+#: ../client/pk-console.c:922 ../client/pk-console.c:950
 #, c-format
-msgid "This tool could not update %s: %s"
-msgstr "Tento nástroj nemůže aktualizovat %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1271
-msgid "The package update was canceled!"
-msgstr "Aktualizace balíčku byla zrušena!"
+msgid "This tool could not find the package: %s"
+msgstr "Tomuto nástroji se nepodařilo nalézt balíček: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1304
-#: ../client/pk-console.c:1312
-#: ../client/pk-console-test.c:779
-#: ../client/pk-console-test.c:787
-#, fuzzy, c-format
-msgid "This tool could not get the requirements for %s: %s"
-msgstr "Tento nástroj nemůže získat  požadavky pro '%s': %s"
-
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1334
-#: ../client/pk-console.c:1342
-#: ../client/pk-console-test.c:809
-#: ../client/pk-console-test.c:817
-#, fuzzy, c-format
-msgid "This tool could not get the dependencies for %s: %s"
-msgstr "Tento nástroj nemůže získat závislosti pro '%s': %s"
-
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1364
-#: ../client/pk-console.c:1372
-#: ../client/pk-console-test.c:839
-#: ../client/pk-console-test.c:847
-#, fuzzy, c-format
-msgid "This tool could not get package details for %s: %s"
-msgstr "Tento nástroj nemůže získat detaily o '%s': %s"
-
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1394
-#: ../client/pk-console-test.c:869
-#, fuzzy, c-format
-msgid "This tool could not find the files for %s: %s"
-msgstr "Tento nástroj nemůže najít soubory pro '%s': %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1402
-#: ../client/pk-console-test.c:877
-#, fuzzy, c-format
-msgid "This tool could not get the file list for %s: %s"
-msgstr "Tento nástroj nemůže získat seznam souborů pro '%s': %s"
-
-#. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1424
-#, c-format
-msgid "File already exists: %s"
-msgstr "Soubor již existuje: %s"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1429
-#: ../client/pk-console.c:1485
-#: ../client/pk-console.c:1560
-msgid "Getting package list"
-msgstr "Získávám seznam balíků"
-
-#. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1435
-#: ../client/pk-console.c:1491
-#: ../client/pk-console.c:1566
-#, fuzzy, c-format
-msgid "This tool could not get package list: %s"
-msgstr "Tento nástroj nemůže odstranit balíky: %s"
-
-#. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1446
-#, c-format
-msgid "Failed to save to disk"
-msgstr "Selhalo uložení na disk"
-
-#. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1480
-#: ../client/pk-console.c:1555
-#, c-format
-msgid "File does not exist: %s"
-msgstr "Soubor neexistuje: %s"
-
-#. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1512
-msgid "Packages to add"
-msgstr "Balíčky k přidání"
-
-#. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1520
-msgid "Packages to remove"
-msgstr "Balíčky k odebrání"
-
-#. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1588
-#, fuzzy, c-format
-msgid "No new packages need to be installed"
-msgstr "Balík '%s' nemůže být nainstalován: %s"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1594
-msgid "To install"
-msgstr "K instalaci"
-
-#. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1606
-msgid "Searching for package: "
-msgstr "Hledání balíčku:"
-
-#. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1610
-msgid "not found."
-msgstr "nenalezen."
-
-#. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1621
-#, fuzzy, c-format
-msgid "No packages can be found to install"
-msgstr "Pro váš systém nebyly nalezeny žádné balíky"
-
-#. TRANSLATORS: installing new packages from package list
-#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
-#: ../client/pk-console.c:1627
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../client/pk-console.c:978 ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034 ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
 #, c-format
-msgid "Installing packages"
-msgstr "Instalace balíků"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1663
-#: ../client/pk-console-test.c:899
-#, fuzzy, c-format
-msgid "This tool could not find the update details for %s: %s"
-msgstr "Tento nástroj nemůže najít podrobnosti o aktualizaci pro '%s': %s"
-
-#. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1671
-#: ../client/pk-console-test.c:907
-#, fuzzy, c-format
-msgid "This tool could not get the update details for %s: %s"
-msgstr "Tento nástroj nemůže získat podrobnosti o aktualizaci pro '%s': %s"
-
-#. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1702
-msgid "Error:"
-msgstr "Chyba: "
-
-#. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1716
-#: ../client/pk-console-test.c:369
-msgid "Package description"
-msgstr "Popis balíku"
-
-#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:1732
-#: ../client/pk-console-test.c:387
-msgid "Message:"
-msgstr "Zpráva:"
-
-#. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1760
-#: ../client/pk-console-test.c:415
-msgid "Package files"
-msgstr "Soubory v balíku"
-
-#. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1768
-#: ../client/pk-console-test.c:410
-msgid "No files"
-msgstr "Žádné soubory"
-
-#. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1791
-msgid "Repository signature required"
-msgstr "Vyžaduje podpis repozitáře"
-
-#. TRANSLATORS: This a prompt asking the user to import the security key
-#. ask the user
-#: ../client/pk-console.c:1801
-#: ../client/pk-task-text.c:107
-#, fuzzy
-msgid "Do you accept this signature?"
-msgstr "Příjímáte tento podpis?"
-
-#. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1805
-#: ../client/pk-task-text.c:111
-msgid "The signature was not accepted."
-msgstr "Podpis nebyl přijat."
-
-#. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1839
-msgid "End user license agreement required"
-msgstr "Vyžaduje souhlas s licencí koncového uživatele"
-
-#. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1846
-msgid "Do you agree to this license?"
-msgstr "Souhlasíte s touto licencí?"
-
-#. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1850
-msgid "The license was refused."
-msgstr "Licence byla odmítnuta."
+msgid "This tool could not find all the packages: %s"
+msgstr "Tomuto nástroji se nepodařilo nalézt všechny balíčky: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1879
-#: ../client/pk-console-test.c:925
+#: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
-msgstr "Démon havaroval během činnosti!"
+msgstr "Démon havaroval uprostřed činnosti!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1932
-#: ../client/pk-console-test.c:969
+#: ../client/pk-console.c:1153
 msgid "PackageKit Console Interface"
-msgstr "Konzolové rozhraní PackageKitu"
+msgstr "Konzolové rozhraní k PackageKitu"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1934
-#: ../client/pk-console-test.c:971
+#: ../client/pk-console.c:1155
 msgid "Subcommands:"
 msgstr "Dílčí příkazy:"
 
-#. TRANSLATORS: command line argument, if we should show debugging information
-#. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:2027
-#: ../client/pk-console-test.c:1202
-#: ../client/pk-generate-pack.c:187
-#: ../client/pk-monitor.c:128
-#: ../contrib/command-not-found/pk-command-not-found.c:616
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:549
-#: ../contrib/device-rebind/pk-device-rebind.c:293
-#: ../src/pk-main.c:211
-msgid "Show extra debugging information"
-msgstr "Zobrazit dodatečné ladící informace"
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:1234
+msgid "Failed to get the time since this action was last completed"
+msgstr ""
+"Nepodařilo se zjistit čas od té doby, co tato činnost byla naposledy "
+"dokončena"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:2030
-#: ../client/pk-console-test.c:1205
-#: ../client/pk-monitor.c:130
+#: ../client/pk-console.c:1275 ../client/pk-monitor.c:371
 msgid "Show the program version and exit"
-msgstr "Zobrazit verzi programu a ukončit se"
+msgstr "Ukázat verzi programu a ukončit se"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:2033
-#: ../client/pk-console-test.c:1208
+#: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
 msgstr "Nastavit filtr, např. nainstalované"
 
+#. TRANSLATORS: command line argument, use a non-standard install prefix
+#: ../client/pk-console.c:1281
+msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
+msgstr "Nastavit instalační kořen, např. '/' or '/mnt/ltsp'"
+
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:2036
-#: ../client/pk-console-test.c:1211
+#: ../client/pk-console.c:1284
 msgid "Exit without waiting for actions to complete"
-msgstr "Ukončit bez varovaní o nedokončených akcích"
+msgstr "Ukončit bez čekání na nedokončené činnosti"
+
+#. command line argument, do we ask questions
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
+msgid "Install the packages without asking for confirmation"
+msgstr "Nainstalovat balíčky bez žádosti o potvrzení"
 
-#. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:2063
-msgid "This tool could not connect to system DBUS."
-msgstr "Tento nástroj se nemůže připojit k systému DBUS"
+#. TRANSLATORS: command line argument, this command is not a priority
+#: ../client/pk-console.c:1290
+msgid "Run the command using idle network bandwidth and also using less power"
+msgstr ""
+"Spustit příkaz za použití nepoužívané šířky pásma sítě a také za využití "
+"menšího "
+"množství energie"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1293
+msgid ""
+"Print to screen a machine readable output, rather than using animated widgets"
+msgstr ""
+"Vyvolat na obrazovku strojově čitelný výstup, namísto použití kreslených "
+"prvků"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr "Největší stáří vyrovnávací paměti metadat. Použít -1 pro 'nikdy'."
+
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1333
+msgid "Failed to contact PackageKit"
+msgstr "Nepodařilo se spojit se s PackageKitem"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:2153
-#: ../client/pk-console-test.c:1279
+#: ../client/pk-console.c:1381
+msgid "The proxy could not be set"
+msgstr "Proxy se nepodařilo nastavit"
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1393
+msgid "The install root could not be set"
+msgstr "Instalační kořen se nepodařilo nastavit"
+
+#. TRANSLATORS: The user specified an incorrect filter
+#: ../client/pk-console.c:1405
 msgid "The filter specified was invalid"
 msgstr "Určený filtr byl neplatný"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:2172
-#: ../client/pk-console-test.c:1298
+#: ../client/pk-console.c:1424
 msgid "A search type is required, e.g. name"
-msgstr ""
+msgstr "Je požadován hledaný typ, např. název"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:2179
-#: ../client/pk-console.c:2188
-#: ../client/pk-console.c:2197
-#: ../client/pk-console.c:2206
-#: ../client/pk-console-test.c:1305
-#: ../client/pk-console-test.c:1317
-#: ../client/pk-console-test.c:1329
-#: ../client/pk-console-test.c:1341
+#: ../client/pk-console.c:1431 ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455 ../client/pk-console.c:1467
 msgid "A search term is required"
-msgstr ""
+msgstr "Je požadován hledaný pojem"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:2213
-#: ../client/pk-console-test.c:1351
+#: ../client/pk-console.c:1477
 msgid "Invalid search type"
-msgstr "Neplatný typ vyhledávání"
+msgstr "Neplatný hledaný typ"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:2219
-#: ../client/pk-console-test.c:1358
-msgid "A package name or filename to install is required"
-msgstr ""
+#: ../client/pk-console.c:1483
+msgid "A package name to install is required"
+msgstr "Je požadován název balíčku, který se má instalovat"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1492
+msgid "A filename to install is required"
+msgstr "Je požadován název souboru, který se má instalovat"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2228
-#: ../client/pk-console-test.c:1368
-#, fuzzy
+#: ../client/pk-console.c:1503
 msgid "A type, key_id and package_id are required"
-msgstr "Je nutné určit typ, key_id a package_id"
+msgstr "Je požadován typ, key_id a package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:2237
-#: ../client/pk-console-test.c:1379
-#, fuzzy
+#: ../client/pk-console.c:1514
 msgid "A package name to remove is required"
-msgstr "Následující balíky musí být odstraněny"
+msgstr "Je požadován název balíčku, který se má odstranit"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:2245
-#: ../client/pk-console-test.c:1387
-#, fuzzy
+#: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
-msgstr "Je nutné určit cílový adresář a poté balík, který se má stáhnout"
+msgstr "Jsou požadovány cílový adresář a názvy balíčků, které se mají stáhnout"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:2252
-#: ../client/pk-console-test.c:1394
+#: ../client/pk-console.c:1530
 msgid "Directory not found"
 msgstr "Adresář nenalezen"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2260
-#: ../client/pk-console-test.c:1403
-#, fuzzy
+#: ../client/pk-console.c:1539
 msgid "A licence identifier (eula-id) is required"
-msgstr "Musíte zadat identifikaci licence (eula-id)"
+msgstr "Je požadován identifikátor licence (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2270
-#: ../client/pk-console-test.c:1415
+#: ../client/pk-console.c:1550
 msgid "A transaction identifier (tid) is required"
-msgstr ""
+msgstr "Je požadován identifikátor transakce (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2287
-#: ../client/pk-console-test.c:1437
-#, fuzzy
+#: ../client/pk-console.c:1571
 msgid "A package name to resolve is required"
-msgstr "Následující balíky musí být odstraněny"
+msgstr "Je požadován název balíčku, pro který se má najít řešení"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2296
-#: ../client/pk-console.c:2305
-#: ../client/pk-console-test.c:1448
-#: ../client/pk-console-test.c:1459
+#: ../client/pk-console.c:1582 ../client/pk-console.c:1593
 msgid "A repository name is required"
-msgstr "Je třeba určit název repozitáře"
+msgstr "Je třeba určit název skladiště"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2314
-#: ../client/pk-console-test.c:1470
-#, fuzzy
+#: ../client/pk-console.c:1604
 msgid "A repo name, parameter and value are required"
-msgstr "Je nutné určit název/parametr a hodnotu repozitáře"
+msgstr "Jsou požadovány název, parametr a hodnota"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2328
-#: ../client/pk-console-test.c:1488
-#, fuzzy
+#: ../client/pk-console.c:1621
 msgid "An action, e.g. 'update-system' is required"
-msgstr "Je nutné zadat akci, např. 'update-system'"
+msgstr "Je požadována činnost, např. 'update-system'"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2335
-#: ../client/pk-console-test.c:1495
+#: ../client/pk-console.c:1628
 msgid "A correct role is required"
-msgstr "Je požadována správná role"
-
-#. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2342
-#: ../client/pk-console-test.c:1502
-msgid "Failed to get the time since this action was last completed"
-msgstr ""
+msgstr "Je požadována správná úloha"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2352
-#: ../client/pk-console.c:2364
-#: ../client/pk-console.c:2373
-#: ../client/pk-console.c:2391
-#: ../client/pk-console.c:2400
-#: ../client/pk-console-test.c:1511
-#: ../client/pk-console-test.c:1526
-#: ../client/pk-console-test.c:1535
-#: ../client/pk-console-test.c:1556
-#: ../client/pk-console-test.c:1565
-#: ../client/pk-generate-pack.c:243
+#: ../client/pk-console.c:1638 ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661 ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690 ../client/pk-generate-pack.c:314
 msgid "A package name is required"
 msgstr "Je požadován název balíčku"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2382
-#: ../client/pk-console-test.c:1545
-#, fuzzy
+#: ../client/pk-console.c:1670
 msgid "A package provide string is required"
-msgstr "Je požadováno odhlášení a přihlášení"
+msgstr "Je požadován řetězec k poskytnutí balíčku"
 
-#. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2409
-msgid "A list file name to create is required"
-msgstr ""
+#. TRANSLATORS: The user did not provide a distro name
+#: ../client/pk-console.c:1714
+msgid "A distribution name is required"
+msgstr "Je požadován název distribuce"
 
-#. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2419
-#: ../client/pk-console.c:2429
-#, fuzzy
-msgid "A list file to open is required"
-msgstr "Je požadováno odhlášení a přihlášení"
+#. TRANSLATORS: The user did not provide an upgrade type
+#: ../client/pk-console.c:1720
+msgid "An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"
+msgstr "Je požadován typ povýšení, např. 'minimal', 'default' nebo 'complete'"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2483
-#: ../client/pk-console-test.c:1619
+#: ../client/pk-console.c:1770
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Volba '%s' není podporována "
 
-#. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2496
-msgid "Incorrect privileges for this operation"
-msgstr "Nesprávná oprávnění pro tuto operaci"
-
 #. TRANSLATORS: Generic failure of what they asked to do
-#. /* TRANSLATORS: User does not have permission to do this */
-#. g_print ("%s\n", _("Incorrect privileges for this operation"));
-#. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2499
-#: ../client/pk-console-test.c:1631
+#: ../client/pk-console.c:1780
 msgid "Command failed"
 msgstr "Příkaz selhal"
 
-#. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:103
-msgid "Downloading"
-msgstr "Stahuji"
-
-#. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:123
-msgid "Downloading packages"
-msgstr "Stahuji balíky"
-
-#. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:128
-msgid "Downloading dependencies"
-msgstr "Stahuji závislosti"
-
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:190
+#: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
-msgstr "Nastavte soubor se závislostmi, které mají být vynechány"
+msgstr "Nastavit název souboru se závislostmi, které mají být vynechány"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:193
-#, fuzzy
-msgid "The output file or directory (the current directory is used if ommitted)"
-msgstr "Výstupní adresář (aktuální adresář, pokud není žádný uveden)"
+#: ../client/pk-generate-pack.c:256
+msgid "The output file or directory (the current directory is used if omitted)"
+msgstr ""
+"Výstupní soubor nebo adresář (je-li vynecháno, používá se současný adresář)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:196
+#: ../client/pk-generate-pack.c:259
 msgid "The package to be put into the service pack"
-msgstr "Balíky zahrnuté do servisního balíku"
+msgstr "Balíček zahrnutý do obslužného balíku"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:199
+#: ../client/pk-generate-pack.c:262
 msgid "Put all updates available in the service pack"
-msgstr "Přidej dostupné aktualizace do servisního balíku"
+msgstr "Přidat všechny dostupné aktualizace do obslužného balíku"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:227
+#: ../client/pk-generate-pack.c:298
 msgid "Neither --package or --updates option selected."
-msgstr "Nebylo vybráno ani --package ani --updates."
+msgstr "Nebyla vybrány ani volba --package ani --updates."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:235
+#: ../client/pk-generate-pack.c:306
 msgid "Both options selected."
 msgstr "Obě volby vybrány."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:251
+#: ../client/pk-generate-pack.c:322
 msgid "A output directory or file name is required"
 msgstr "Je požadován výstupní adresář nebo název souboru"
 
+#. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:340
+msgid "The daemon failed to startup"
+msgstr "Démona se nepodařilo spustit"
+
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:269
-#: ../client/pk-generate-pack.c:275
+#: ../client/pk-generate-pack.c:351 ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
-msgstr ""
+msgstr "Správce balíčků neumí provádět tento typ úlohy."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:282
-msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
+#: ../client/pk-generate-pack.c:364
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
 msgstr ""
+"Obslužné balíky nelze vytvářet, jelikož PackageKitnebyl sestaven s podporou "
+"pro libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:293
+#: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
-msgstr ""
+msgstr "Pokud zadáte soubor, pak musí název obslužného balíku končit na"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:309
+#: ../client/pk-generate-pack.c:391
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Balík se stejným jménem už existuje, chcete jej přepsat?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:312
+#: ../client/pk-generate-pack.c:394
 msgid "The pack was not overwritten."
 msgstr "Balík nebyl přepsán."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:325
+#: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "Nepodařilo se vytvořit adresář."
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:335
+#: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
-msgstr "Nepodařilo se otevřít seznam balíku."
+msgstr "Nepodařilo se otevřít seznam s balíčky."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:346
+#: ../client/pk-generate-pack.c:428
 msgid "Finding package name."
-msgstr "Hledám jméno balíku."
+msgstr "Hledá se název balíčku."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:350
+#: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
-msgstr "Nemohu najít balík '%s': %s"
+msgstr "Nepodařilo se najít balíček '%s': %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:367
+#: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
-msgstr "Vytvářím servisní balík..."
+msgstr "Vytváří se obslužný balík..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:374
+#: ../client/pk-generate-pack.c:455
 #, c-format
 msgid "Service pack created '%s'"
-msgstr "Servisní balík vytvořen '%s'"
+msgstr "Obslužný balík vytvořen '%s'"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:379
+#: ../client/pk-generate-pack.c:460
 #, c-format
 msgid "Failed to create '%s': %s"
-msgstr "Nemohu vytvořit '%s': %s"
-
-#. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:146
-msgid "PackageKit Monitor"
-msgstr "PackageKit Monitor"
-
-#: ../client/pk-monitor.c:183
-msgid "Cannot show the list of transactions"
-msgstr "Nelze zobrazit seznam transakcí"
-
-#. ask the user
-#: ../client/pk-task-text.c:61
-msgid "Do you want to allow installing of unsigned software?"
-msgstr "Chcete povolit instalování nepodepsaného softwaru?"
-
-#: ../client/pk-task-text.c:65
-msgid "The unsigned software will not be installed."
-msgstr "Nepodepsaný software nebude nainstalován."
-
-#: ../client/pk-task-text.c:94
-#, fuzzy
-msgid "Software source signature required"
-msgstr "Vyžaduje podpis repozitáře"
-
-#: ../client/pk-task-text.c:96
-#, fuzzy
-msgid "Software source name"
-msgstr "Změnit parametry zdrojů softwaru"
-
-#: ../client/pk-task-text.c:97
-msgid "Key URL"
-msgstr "URL klíče"
-
-#: ../client/pk-task-text.c:98
-msgid "Key user"
-msgstr "Uživatel klíče"
-
-#: ../client/pk-task-text.c:99
-msgid "Key ID"
-msgstr "ID klíče"
-
-#: ../client/pk-task-text.c:100
-msgid "Key fingerprint"
-msgstr "Fingerprint klíče"
+msgstr "Nepodařilo se vytvořit '%s': %s"
 
-#: ../client/pk-task-text.c:101
-msgid "Key Timestamp"
-msgstr "Časová značka klíče"
-
-#: ../client/pk-task-text.c:142
-msgid "End user licence agreement required"
-msgstr "Vyžaduje souhlas s licencí koncového uživatele"
-
-#: ../client/pk-task-text.c:143
-msgid "EULA ID"
-msgstr "EULA ID"
-
-#: ../client/pk-task-text.c:146
-msgid "Agreement"
-msgstr "Ujednání"
-
-#. ask the user
-#: ../client/pk-task-text.c:152
-msgid "Do you accept this agreement?"
-msgstr "Příjímáte toto ujednání?"
-
-#: ../client/pk-task-text.c:156
-msgid "The agreement was not accepted."
-msgstr "Ujednání nebylo přijato."
-
-#: ../client/pk-task-text.c:182
-msgid "Media change required"
-msgstr "Je vyžadována změna média"
-
-#: ../client/pk-task-text.c:183
-msgid "Media type"
-msgstr "typ Média"
+#: ../client/pk-monitor.c:284
+msgid "Failed to get daemon state"
+msgstr "Nepodařilo se získat stav démona"
 
-#: ../client/pk-task-text.c:184
-msgid "Media ID"
-msgstr "ID Média"
+#: ../client/pk-monitor.c:349
+msgid "Failed to get properties"
+msgstr "Nepodařilo se získat vlastnosti"
 
-#: ../client/pk-task-text.c:185
-msgid "Text"
-msgstr "Text"
-
-#. ask the user
-#: ../client/pk-task-text.c:189
-msgid "Please insert the correct media"
-msgstr "Prosím vlžte správné médium"
-
-#: ../client/pk-task-text.c:193
-msgid "The correct media was not inserted."
-msgstr "Nebylo vloženo správné médium."
-
-#: ../client/pk-task-text.c:288
-msgid "The transaction did not proceed."
-msgstr "Transakce nemohla pokračovat."
-
-#: ../client/pk-text.c:50
-#, c-format
-msgid "Please enter a number from 1 to %i: "
-msgstr "Prosím zadejte číslo od 1 do %i: "
-
-#. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:119
-#, c-format
-msgid "The package could not be found"
-msgstr "Balík nebyl nalezen."
-
-#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-tools-common.c:131
-msgid "More than one package matches:"
-msgstr "Danému výrazu odpovídá více balíků:"
-
-#. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-tools-common.c:138
-msgid "Please choose the correct package: "
-msgstr "Prosím vyberte správný balík: "
+#. TRANSLATORS: this is a program that monitors PackageKit
+#: ../client/pk-monitor.c:387
+msgid "PackageKit Monitor"
+msgstr "Sledování PackageKit"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:466
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
 msgid "Getting package information..."
-msgstr "Zjišťuji informace o balících..."
+msgstr "Zjišťují se informace o balíčcích..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:472
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
 #, c-format
 msgid "Run %s"
 msgstr "Spustit %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:478
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
 msgid "Installed version"
 msgstr "Nainstalovaná verze"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:486
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
 #, c-format
 msgid "Run version %s now"
 msgstr "Spustit verzi %s"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:492
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
 msgid "Run now"
-msgstr "Spustit ihned"
+msgstr "Spustit nyní"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:498
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
 #, c-format
 msgid "Update to version %s"
 msgstr "Aktualizovat na verzi %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:504
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
 #, c-format
 msgid "Install %s now"
-msgstr "Instalovat %s"
+msgstr "Instalovat nyní %s"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:507
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
 msgid "Version"
 msgstr "Verze"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:512
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
 msgid "No packages found for your system"
-msgstr "Pro váš systém nebyly nalezeny žádné balíky"
+msgstr "Pro váš systém nebyly nalezeny žádné balíčky"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
 msgid "Installing..."
-msgstr "Instaluji..."
+msgstr "Instaluje se..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:349
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Downloading details about the software sources."
-msgstr "Stahuji detaily o zdrojích software."
+msgstr "Stahují se podrobnosti ke zdrojům programů."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:353
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Downloading filelists (this may take some time to complete)."
-msgstr "Stahuji seznamy souborů (dokončení může chvíli trvat)."
+msgstr "Stahují se seznamy souborů (dokončení úkolu může chvíli trvat)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:357
+#: ../contrib/command-not-found/pk-command-not-found.c:374
 msgid "Waiting for package manager lock."
-msgstr "Čekám na zámek správce balíčků."
+msgstr "Čeká se na zámek správce balíčků."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:361
+#: ../contrib/command-not-found/pk-command-not-found.c:378
 msgid "Loading list of packages."
-msgstr "Načítám seznam balíků."
+msgstr "Nahráváse seznam balíčků."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:420
-#, fuzzy
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
-msgstr "Nepodařilo se získat poslední čas"
+msgstr "Nalezení souboru se nezdařilo"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "Získání seznamu souborů se nezdařilo"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:557
-#, fuzzy
+#: ../contrib/command-not-found/pk-command-not-found.c:602
 msgid "Failed to launch:"
-msgstr "Nepodařilo se získat poslední čas"
+msgstr "Nepodařilo se spustit:"
+
+#. TRANSLATORS: we failed to install the package
+#: ../contrib/command-not-found/pk-command-not-found.c:630
+msgid "Failed to install packages"
+msgstr "Nepodařilo se nainstalovat balíčky"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:632
-#, fuzzy
+#: ../contrib/command-not-found/pk-command-not-found.c:706
 msgid "PackageKit Command Not Found"
-msgstr "PackageKit Monitor"
+msgstr "Příkaz pro PackageKit nebyl nalezen"
 
-#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:658
-msgid "Command not found."
-msgstr "Příkaz nenalezen."
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "Příkaz nebyl nenalezen."
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:665
+#: ../contrib/command-not-found/pk-command-not-found.c:757
 msgid "Similar command is:"
 msgstr "Podobný příkaz je:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:674
+#: ../contrib/command-not-found/pk-command-not-found.c:771
 msgid "Run similar command:"
 msgstr "Spustit podobný příkaz:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:686
-#: ../contrib/command-not-found/pk-command-not-found.c:695
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
 msgid "Similar commands are:"
 msgstr "Podobné příkazy jsou:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:702
+#: ../contrib/command-not-found/pk-command-not-found.c:801
 msgid "Please choose a command to run"
-msgstr "Prosím vyberte příkaz ke spuštění"
+msgstr "Vyberte, prosím, příkaz ke spuštění"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:721
+#: ../contrib/command-not-found/pk-command-not-found.c:819
 msgid "The package providing this file is:"
-msgstr "Balík poskytující tento soubor je:"
+msgstr "Balíček poskytující tento soubor je:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:726
+#: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
-msgstr ""
+msgstr "Nainstalovat balíček '%s', který poskytuje příkaz '%s'?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:747
+#: ../contrib/command-not-found/pk-command-not-found.c:853
 msgid "Packages providing this file are:"
-msgstr "Balíky poskytující tento soubor jsou:"
+msgstr "Balíčky poskytující tento soubor jsou:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:756
+#: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
-msgstr "Možné balíky jsou:"
+msgstr "Vhodné balíčky jsou:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:764
+#: ../contrib/command-not-found/pk-command-not-found.c:872
 msgid "Please choose a package to install"
-msgstr "Prosím vyberte balíček k instalaci"
+msgstr "Vyberte, prosím, balíček, který se má instalovat"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
-msgstr "Spouším instalaci"
+msgstr "Spouští se instalace"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
+#, c-format
 msgid "Failed to find the package %s, or already installed: %s"
-msgstr "Balík '%s' je již nainstalován"
+msgstr "Nepodařilo se najít balíček %s, nebo je již nainstalován: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:552
-msgid "Don't actually install any packages, only simulate what would be installed"
-msgstr ""
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
+msgstr "Ve skutečnosti neinstalovat žádné balíčky, pouze instalaci napodobit"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:555
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
-msgstr ""
+msgstr "Neinstalovat závislosti základních balíčků"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:558
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
 msgid "Do not display information or progress"
-msgstr "nezobrazovat informace nebo půběh"
+msgstr "Nezobrazovat informace nebo postup"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:576
-#, fuzzy
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 msgid "PackageKit Debuginfo Installer"
-msgstr "Konzolové rozhraní PackageKitu"
+msgstr "Instalátor pro informace o chybách pro PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:588
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
+#, c-format
 msgid "ERROR: Specify package names to install."
-msgstr "Vyberte balík nebo soubor, která se bude instalovat"
+msgstr "CHYBA: Zadejte názvy balíčků, které se mají nainstalovat"
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:622
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
 #, c-format
 msgid "Getting sources list"
-msgstr "Získávám seznam zdrojů"
+msgstr "Získává se seznam zdrojů"
+
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
+msgid "FAILED."
+msgstr "SELHALO."
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:680
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:715
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:799
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:843
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:910
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:954
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:643
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Nalezeno %i povolených a %i zakázaných zdrojů."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:650
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
 #, c-format
 msgid "Finding debugging sources"
-msgstr ""
+msgstr "Hledají se zdroje informací o chybách"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:683
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
 #, c-format
 msgid "Found %i disabled debuginfo repos."
-msgstr ""
+msgstr "Bylo nalezeno %i vypnutých skladišť s informacemi o chybách."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
 #, c-format
 msgid "Enabling debugging sources"
-msgstr ""
-
-#. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:784
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:895
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:939
-msgid "FAILED."
-msgstr "SELHALO."
+msgstr "Povolují se zdroje informací o chybách"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:718
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
 #, c-format
 msgid "Enabled %i debugging sources."
-msgstr ""
+msgstr "Povoleno %i zdrojů informací o chybách"
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:725
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
+#, c-format
 msgid "Finding debugging packages"
-msgstr "Hledám jméno balíku."
+msgstr "Hledají se balíčky s informacemi o chybách"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
+#, c-format
 msgid "Failed to find the package %s: %s"
-msgstr "Nemohu najít balík '%s': %s"
+msgstr "Nepodařilo se najít balík %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:760
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
+#, c-format
 msgid "Failed to find the debuginfo package %s: %s"
-msgstr "Nemohu najít balík '%s': %s"
+msgstr "Nepodařilo se najít balík s informacemi o chybách %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
+#, c-format
 msgid "Found no packages to install."
-msgstr "Balík '%s' nemůže být nainstalován: %s"
+msgstr "Nebyly nalezeny žádné balíčky k instalaci."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:802
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
+#, c-format
 msgid "Found %i packages:"
-msgstr "Stahuji"
+msgstr "Byly nalezeny %i balíčky:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
 #, c-format
 msgid "Finding packages that depend on these packages"
-msgstr ""
+msgstr "Hledají se balíčky, které závisejí na těchto balíčcích"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:831
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
+#, c-format
 msgid "Could not find dependant packages: %s"
-msgstr "Nemohu najít odpovídající balík"
+msgstr "Nepodařilo se nalézt závislé balíčky: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:847
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
 #, c-format
 msgid "Found %i extra packages."
-msgstr "Nalezeno %i extra balíčků."
+msgstr "Bylo nalezeno %i dalších balíčků."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:851
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
 #, c-format
 msgid "No extra packages required."
-msgstr "Nejsou potřeba žádné extra balíčky."
+msgstr "Nejsou potřeba žádné další balíčky."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
+#, c-format
 msgid "Found %i packages to install:"
-msgstr "Balík '%s' nemůže být nainstalován: %s"
+msgstr "Byly nalezeny %i balíčky k instalaci:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
+#, c-format
 msgid "Not installing packages in simulate mode"
-msgstr "Nainstalovat balík"
+msgstr "Nebyly instalovány žádné balíčky v režimu napodobení instalace"
+
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
+#, c-format
+msgid "Installing packages"
+msgstr "Instalují se balíčky"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:898
-#, fuzzy, c-format
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
+#, c-format
 msgid "Could not install packages: %s"
-msgstr "Tento nástroj není schopen nainstalovat balíky: %s"
+msgstr "Nepodařilo se nainstalovat balíčky: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:930
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
 #, c-format
 msgid "Disabling sources previously enabled"
-msgstr ""
+msgstr "Zakazují se zdroje, jež byly předtím povoleny"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:942
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
-msgstr ""
+msgstr "Nepodařilo se zakázat zdroje s informacemi o chybách: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:957
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
 #, c-format
 msgid "Disabled %i debugging sources."
-msgstr ""
+msgstr "Byly zakázány %i zdroje s informacemi o chybách."
 
 #. TRANSLATORS: couldn't open device to write
-#: ../contrib/device-rebind/pk-device-rebind.c:61
+#: ../contrib/device-rebind/pk-device-rebind.c:62
 msgid "Failed to open file"
-msgstr "Selhalo otevření souboru"
+msgstr "Nepodařilo se otevřít soubor"
 
 #. TRANSLATORS: could not write to the device
-#: ../contrib/device-rebind/pk-device-rebind.c:70
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:71
 msgid "Failed to write to the file"
-msgstr "Nepodařilo se získat poslední čas"
+msgstr "Nepodařilo se provést zápis do souboru"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:110
-#: ../contrib/device-rebind/pk-device-rebind.c:147
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:111
+#: ../contrib/device-rebind/pk-device-rebind.c:148
 msgid "Failed to write to device"
-msgstr "Selhalo uložení na disk"
+msgstr "Nepodařilo se provést zápis na zařízení"
 
 #. TRANSLATORS: the device could not be found in sysfs
-#: ../contrib/device-rebind/pk-device-rebind.c:175
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:176
 msgid "Device could not be found"
-msgstr "Balík nebyl nalezen."
+msgstr "Zařízení se nepodařilo najít"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:202
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:203
 msgid "Failed to unregister driver"
-msgstr "Nepodařilo se vytvořit adresář."
+msgstr "Ovladač se nepodařilo odhlásit"
 
 #. TRANSLATORS: we failed to bind the old driver
-#: ../contrib/device-rebind/pk-device-rebind.c:211
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:212
 msgid "Failed to register driver"
-msgstr "Nepodařilo se vytvořit adresář."
+msgstr "Ovladač se nepodařilo přihlásit"
 
 #. TRANSLATORS: user did not specify a device sysfs path that exists
-#: ../contrib/device-rebind/pk-device-rebind.c:260
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:261
 msgid "Device path not found"
-msgstr "Adresář nenalezen"
+msgstr "Cesta k zařízení nebyla nalezena"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:268
+#: ../contrib/device-rebind/pk-device-rebind.c:269
 msgid "Incorrect device path specified"
-msgstr "Určena nesprávná cesta zařízení"
+msgstr "Zadána nesprávná cesta k zařízení"
+
+#: ../contrib/device-rebind/pk-device-rebind.c:294
+msgid "Show extra debugging information"
+msgstr "Ukázat další informace o chybách"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/device-rebind/pk-device-rebind.c:296
+#: ../contrib/device-rebind/pk-device-rebind.c:297
 msgid "Don't actually touch the hardware, only simulate what would be done"
 msgstr ""
+"Nedotýkat se ve skutečnosti žádného technického vybavení, nýbrž jen "
+"napodobit, co se dělá"
 
 #. TRANSLATORS: command line option: a list of files to install
-#: ../contrib/device-rebind/pk-device-rebind.c:299
+#: ../contrib/device-rebind/pk-device-rebind.c:300
 msgid "Device paths"
-msgstr "Cesty zařízení"
+msgstr "Cesty k zařízení"
 
 #. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
-#: ../contrib/device-rebind/pk-device-rebind.c:314
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:315
 msgid "PackageKit Device Reloader"
-msgstr "Balící služba PackageKit"
+msgstr "Dobíječ zařízení PackageKit"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:322
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:323
 msgid "You need to specify at least one valid device path"
-msgstr "Je nutné určit časový termín"
+msgstr "Potřebujete zadat alespoň jednu správnou cestu k zařízení"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
-#: ../contrib/device-rebind/pk-device-rebind.c:332
+#: ../contrib/device-rebind/pk-device-rebind.c:333
 msgid "This script can only be used by the root user"
-msgstr "Tento skript může být použit pouze uživatelem root"
+msgstr "Tento skript může být použit pouze superuživatelem"
 
 #. TRANSLATORS: we're going to verify the path first
-#: ../contrib/device-rebind/pk-device-rebind.c:341
+#: ../contrib/device-rebind/pk-device-rebind.c:342
 msgid "Verifying device path"
-msgstr "Ověřuji cestu zařízení"
+msgstr "Ověřuje se cesta k zařízení"
 
 #. TRANSLATORS: user did not specify a device sysfs path that exists
-#: ../contrib/device-rebind/pk-device-rebind.c:346
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:347
 msgid "Failed to verify device path"
-msgstr "Nepodařilo se získat poslední čas"
+msgstr "Nepodařilo se ověřit cestu k zařízení"
 
 #. TRANSLATORS: we're going to try
-#: ../contrib/device-rebind/pk-device-rebind.c:360
+#: ../contrib/device-rebind/pk-device-rebind.c:361
 msgid "Attempting to rebind device"
-msgstr ""
+msgstr "Zkouší se opětovné připojení zařízení"
 
 #. TRANSLATORS: we failed to release the current driver
-#: ../contrib/device-rebind/pk-device-rebind.c:365
-#, fuzzy
+#: ../contrib/device-rebind/pk-device-rebind.c:366
 msgid "Failed to rebind device"
-msgstr "Nepodařilo se vytvořit adresář."
+msgstr "Nepodařilo se znovu připojit zařízení"
 
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
-msgstr "PackageKit Katalog"
+msgstr "Přehled pro PackageKit"
 
 #: ../data/packagekit-package-list.xml.in.h:1
 msgid "PackageKit Package List"
-msgstr "PackageKit seznam balíků"
+msgstr "Seznam balíčků pro PackageKit"
 
 #: ../data/packagekit-servicepack.xml.in.h:1
 msgid "PackageKit Service Pack"
-msgstr "Balící služba PackageKit"
+msgstr "Obslužný balík PackageKit"
+
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "Zadejte, prosím, číslo od 1 do %i: "
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
+msgid "More than one package matches:"
+msgstr "Odpovídá více než jeden balíček:"
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
+msgid "Please choose the correct package: "
+msgstr "Vyberte, prosím, správný balíček: "
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
+msgid "Unknown state"
+msgstr "Neznámý stav"
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
+msgid "Starting"
+msgstr "Spouští se"
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
+msgid "Waiting in queue"
+msgstr "Čeká se v řadě"
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
+msgid "Running"
+msgstr "Provádí se"
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
+msgid "Querying"
+msgstr "Vyvolává se"
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
+msgid "Getting information"
+msgstr "Získavají se informace"
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
+msgid "Removing packages"
+msgstr "Odstraňují se balíčky"
+
+#. TRANSLATORS: transaction state, downloading package files
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
+msgid "Downloading packages"
+msgstr "Stahují se balíčky"
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
+msgid "Refreshing software list"
+msgstr "Obnovuje se seznam balíčků"
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
+msgid "Installing updates"
+msgstr "Instalují se nejnovější balíčky"
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
+msgid "Cleaning up packages"
+msgstr "Uklízí se balíčky"
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
+msgid "Obsoleting packages"
+msgstr "Uklízí se zastaralé balíčky"
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
+msgid "Resolving dependencies"
+msgstr "Nachází se řešení závislostí"
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
+msgid "Checking signatures"
+msgstr "Ověřují se podpisy"
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
+msgid "Rolling back"
+msgstr "Vrací se zpět"
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
+msgid "Testing changes"
+msgstr "Zkouší se změny"
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
+msgid "Committing changes"
+msgstr "Zaznamenávají se změny"
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
+msgid "Requesting data"
+msgstr "Požadují se data"
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
+msgid "Finished"
+msgstr "Hotovo"
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
+msgid "Cancelling"
+msgstr "Ruší se"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
+msgid "Downloading repository information"
+msgstr "Stahují se informace o skladišti"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
+msgid "Downloading list of packages"
+msgstr "Stahuje se seznam balíčků"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
+msgid "Downloading file lists"
+msgstr "Stahuje se seznam souborů"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
+msgid "Downloading lists of changes"
+msgstr "Stahuje se seznam změn"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
+msgid "Downloading groups"
+msgstr "Stahují se skupiny"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
+msgid "Downloading update information"
+msgstr "Stahují se informace o nejnovějších balíčcích"
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
+msgid "Repackaging files"
+msgstr "Balí se znovu soubory"
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
+msgid "Loading cache"
+msgstr "Nahrává se vyrovnávací paměť"
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
+msgid "Scanning applications"
+msgstr "Prohledávají se programy"
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
+msgid "Generating package lists"
+msgstr "Vytváří se seznamy balíčků"
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
+msgid "Waiting for package manager lock"
+msgstr "Čeká se na zámek správce balíčků"
+
+#. TRANSLATORS: transaction state, waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
+msgid "Waiting for authentication"
+msgstr "Čeká se na ověření"
+
+#. TRANSLATORS: transaction state, we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
+msgid "Updating running applications"
+msgstr "Aktualizují se běžící programy"
+
+#. TRANSLATORS: transaction state, we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
+msgid "Checking applications in use"
+msgstr "Ověřují se používané programy"
+
+#. TRANSLATORS: transaction state, we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
+msgid "Checking libraries in use"
+msgstr "Ověřují se používané knihovny"
+
+#. TRANSLATORS: transaction state, we are copying package files before or after the transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
+msgid "Copying files"
+msgstr "Kopírují se soubory"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
+msgid "Trivial"
+msgstr "Bezvýznamný"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
+msgid "Normal"
+msgstr "Obvyklý"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+msgid "Important"
+msgstr "Důležitý"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
+msgid "Security"
+msgstr "Bezpečnost"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
+msgid "Bug fix "
+msgstr "Oprava chyby"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
+msgid "Enhancement"
+msgstr "Vylepšení"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
+msgid "Blocked"
+msgstr "Blokováno"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
+msgid "Installed"
+msgstr "Nainstalováno"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
+msgid "Available"
+msgstr "Dostupné"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
+msgid "Downloading"
+msgstr "Stahuje se"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
+msgid "Updating"
+msgstr "Aktualizuje se"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
+msgid "Installing"
+msgstr "Instaluje se"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
+msgid "Removing"
+msgstr "Odstraňuje se"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
+msgid "Cleaning up"
+msgstr "Uklízí se"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
+msgid "Obsoleting"
+msgstr "Uklízí se zastaralé balíčky"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
+msgid "Reinstalling"
+msgstr "Instaluje se znovu"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
+msgid "Downloaded"
+msgstr "Staženo"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
+msgid "Removed"
+msgstr "Odstraněno"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
+msgid "Cleaned up"
+msgstr "Uklizeno"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
+msgid "Obsoleted"
+msgstr "Zastaralé uklizeno"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
+msgid "Reinstalled"
+msgstr "Znovu nainstalováno"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
+msgid "Unknown role type"
+msgstr "Neznámý typ úlohy"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
+msgid "Getting dependencies"
+msgstr "Získávají se závislosti"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
+msgid "Getting update details"
+msgstr "Získávají se podrobnosti k nejnovějším balíčkům"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
+msgid "Getting details"
+msgstr "Získávají se podrobnosti"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
+msgid "Getting requires"
+msgstr "Získávají se požadavky"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
+msgid "Getting updates"
+msgstr "Získávají se nejnovější balíčky"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
+msgid "Searching by details"
+msgstr "Vyhledává se podle podrobností"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
+msgid "Searching by file"
+msgstr "Vyhledává se podle souboru"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
+msgid "Searching groups"
+msgstr "Vyhledává se podle skupiny"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
+msgid "Searching by name"
+msgstr "Vyhledává se podle názvu"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
+msgid "Installing files"
+msgstr "Instalují se soubory"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
+msgid "Refreshing cache"
+msgstr "Obnovuje se vyrovnávací paměť"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
+msgid "Updating packages"
+msgstr "Aktualizují se balíčky"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
+msgid "Updating system"
+msgstr "Aktualizuje se systém"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
+msgid "Canceling"
+msgstr "Ruší se"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
+msgid "Getting repositories"
+msgstr "Získávají se skladiště"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
+msgid "Enabling repository"
+msgstr "Povolují se skladiště"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
+msgid "Setting data"
+msgstr "Nastavují se data"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
+msgid "Resolving"
+msgstr "Nachází se řešení"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
+msgid "Getting file list"
+msgstr "Získává se seznam souborů"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
+msgid "Getting provides"
+msgstr "Získávají se nabízející"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
+msgid "Installing signature"
+msgstr "Instaluje se podpis"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
+msgid "Getting packages"
+msgstr "Získávají se balíčky"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
+msgid "Accepting EULA"
+msgstr "Přijímá se EULA"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
+msgid "Getting upgrades"
+msgstr "Získávají se vylepšení"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
+msgid "Getting categories"
+msgstr "Získávají se skupiny"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
+msgid "Getting transactions"
+msgstr "Získávají se transakce"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
+msgid "Simulating install"
+msgstr "Napodobuje se instalace"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
+msgid "Simulating remove"
+msgstr "Napodobuje se odstranění"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
+msgid "Simulating update"
+msgstr "Napodobuje se aktualizace"
+
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "Ukázat informace o chybách pro všechny soubory"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "Volby pro informace o chybách"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "Ukázat volby pro informace o chybách"
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:67
+msgid "Do you want to allow installing of unsigned software?"
+msgstr "Chcete povolit instalování nepodepsaných programů?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:72
+msgid "The unsigned software will not be installed."
+msgstr "Nepodepsané programy nebudou nainstalovány."
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:121
+msgid "Software source signature required"
+msgstr "Vyžadován podpis zdroje programů"
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:127
+msgid "Software source name"
+msgstr "Název zdroje programů"
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:130
+msgid "Key URL"
+msgstr "Adresa (URL) klíče"
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:133
+msgid "Key user"
+msgstr "Uživatel klíče"
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:136
+msgid "Key ID"
+msgstr "ID klíče"
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:139
+msgid "Key fingerprint"
+msgstr "Otisk prstu klíče"
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:142
+msgid "Key Timestamp"
+msgstr "Časové razítko klíče"
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:155
+msgid "Do you accept this signature?"
+msgstr "Příjímáte tento podpis?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:160
+msgid "The signature was not accepted."
+msgstr "Podpis nebyl přijat."
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:203
+msgid "End user licence agreement required"
+msgstr "Je vyžadován souhlas s licencí pro koncového uživatele"
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:212
+msgid "Agreement"
+msgstr "Ujednání"
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:221
+msgid "Do you accept this agreement?"
+msgstr "Příjímáte toto ujednání?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:226
+msgid "The agreement was not accepted."
+msgstr "Ujednání nebylo přijato."
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:265
+msgid "Media change required"
+msgstr "Je vyžadována změna nosiče"
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:268
+msgid "Media type"
+msgstr "Typ nosiče"
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:271
+msgid "Media label"
+msgstr "Označení nosiče"
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:274
+msgid "Text"
+msgstr "Text"
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:280
+msgid "Please insert the correct media"
+msgstr "Vložte, prosím, správný nosič"
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:285
+msgid "The correct media was not inserted."
+msgstr "Nebyl vložen správný nosič."
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:300
+msgid "The following packages have to be removed:"
+msgstr "Následující balíky musí být odstraněny:"
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:305
+msgid "The following packages have to be installed:"
+msgstr "Následující balíky musí být nainstalovány:"
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:310
+msgid "The following packages have to be updated:"
+msgstr "Následující balíky musí být aktualizovány:"
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:315
+msgid "The following packages have to be reinstalled:"
+msgstr "Následující balíky musí být znovu nainstalovány:"
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:320
+msgid "The following packages have to be downgraded:"
+msgstr "Následující balíky musí být vráceny na předchozí verzi:"
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:380
+msgid "Proceed with changes?"
+msgstr "Pokračovat se změnami?"
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:385
+msgid "The transaction did not proceed."
+msgstr "Transakce nemohla dále pokračovat."
 
 #. SECURITY:
 #. - Normal users do not require admin authentication to accept new
@@ -1571,80 +1772,102 @@ msgstr "Balící služba PackageKit"
 #.
 #: ../policy/org.freedesktop.packagekit.policy.in.h:7
 msgid "Accept EULA"
-msgstr "Přijmout licenční smlouvu"
+msgstr "Přijmout licenční smlouvu (EULA)"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:8
 msgid "Authentication is required to accept a EULA"
-msgstr "Pro přijetí licenční smlouvy je vyžadováno oprávnění"
+msgstr "Pro přijetí licenční smlouvy (EULA) je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-#, fuzzy
-msgid "Authentication is required to cancel a task that was not started by yourself"
-msgstr "Pro změnu parametrů zdrojů softwaru je vyžádováno oprávnění"
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr "Pro zrušení úlohy, kterou jste sám nespustil, je vyžádováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
-msgstr "Pro změnu parametrů zdrojů softwaru je vyžádováno oprávnění"
+msgstr "Pro změnu parametrů zdrojů programů je vyžádováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-#, fuzzy
-msgid "Authentication is required to consider a key used for signing packages as trusted"
-msgstr "K obnovení seznamů balíků je vyžadováno oprávnění"
+msgid ""
+"Authentication is required to change the location used to decompress packages"
+msgstr ""
+"Pro změnu místa používaného pro rozbalování balíčků je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
-#, fuzzy
-msgid "Authentication is required to install a signed package"
-msgstr "K instalaci balíku je vyžadováno oprávnění"
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
+msgstr ""
+"Pro zvážení klíče použitého k podepsání balíčků je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
-#, fuzzy
-msgid "Authentication is required to install an untrusted package"
-msgstr "K instalaci balíku je vyžadováno oprávnění"
+msgid "Authentication is required to install a signed package"
+msgstr "Pro instalaci podepsaného balíčku je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:14
-#, fuzzy
-msgid "Authentication is required to refresh the system sources"
-msgstr "K obnovení seznamů balíků je vyžadováno oprávnění"
+msgid "Authentication is required to install an untrusted package"
+msgstr "Pro instalaci nedůvěryhodného balíčku je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:15
-#, fuzzy
-msgid "Authentication is required to reload the device with a new driver"
-msgstr "K obnovení seznamů balíků je vyžadováno oprávnění"
+msgid "Authentication is required to refresh the system sources"
+msgstr "Pro obnovení systémových zdrojů je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Authentication is required to remove packages"
-msgstr "K odstranění balíků je vyžadováno oprávnění"
+msgid "Authentication is required to reload the device with a new driver"
+msgstr ""
+"Pro opětovné nahrání zařízení s novým ovladačem je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Authentication is required to rollback a transaction"
-msgstr "K vrácení akce je vyžadováno oprávnění"
+msgid "Authentication is required to remove packages"
+msgstr "Pro odstranění balíků je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:18
-#, fuzzy
-msgid "Authentication is required to set the network proxy used for downloading packages"
-msgstr "K odstranění balíků je vyžadováno oprávnění"
+msgid "Authentication is required to rollback a transaction"
+msgstr "Pro vrácení transakce je vyžadováno oprávnění"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
+msgstr ""
+"Pro nastavení síťové proxy používané ke stahování balíčků je vyžadováno "
+"oprávnění"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:20
 msgid "Authentication is required to update packages"
-msgstr "K aktualizaci balíků je vyžadováno oprávnění"
+msgstr "Pro aktualizaci balíčků je vyžadováno oprávnění"
+
+#: ../policy/org.freedesktop.packagekit.policy.in.h:21
+msgid "Authentication is required to upgrade the operating system"
+msgstr "Pro povýšení operačního systému je vyžadováno oprávnění"
 
 #. SECURITY:
 #. - Normal users are allowed to cancel their own task without
 #. authentication, but a different user id needs the admin password
 #. to cancel another users task.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:25
+#: ../policy/org.freedesktop.packagekit.policy.in.h:27
 msgid "Cancel foreign task"
-msgstr ""
+msgstr "Zrušit cizí úkol"
+
+#. SECURITY:
+#. - This is used when users want to install to a different prefix, for
+#. instance to a LTSP image or a virtual machine.
+#. - This could be used to overwrite files not owned by the user using
+#. a carefully created package file.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:34
+msgid "Change location that packages are installed"
+msgstr "Změnit místo, kam jsou balíčky instalovány"
 
 #. SECURITY:
 #. - Normal users require admin authentication to enable or disable
 #. software sources as this can be used to enable new updates or
 #. install different versions of software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:31
+#: ../policy/org.freedesktop.packagekit.policy.in.h:40
 msgid "Change software source parameters"
-msgstr "Změnit parametry zdrojů softwaru"
+msgstr "Změnit parametry zdrojů programů"
 
 #. SECURITY:
 #. - Normal users do not need authentication to install signed packages
@@ -1652,7 +1875,7 @@ msgstr "Změnit parametry zdrojů softwaru"
 #. - Paranoid users (or parents!) can change this to 'auth_admin' or
 #. 'auth_admin_keep'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:38
+#: ../policy/org.freedesktop.packagekit.policy.in.h:47
 msgid "Install signed package"
 msgstr "Nainstalovat podepsaný balík"
 
@@ -1662,7 +1885,7 @@ msgstr "Nainstalovat podepsaný balík"
 #. password would be a massive security hole.
 #. - This is not retained as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:45
+#: ../policy/org.freedesktop.packagekit.policy.in.h:54
 msgid "Install untrusted local file"
 msgstr "Nainstalovat místní nedůvěryhodný soubor"
 
@@ -1670,7 +1893,7 @@ msgstr "Nainstalovat místní nedůvěryhodný soubor"
 #. - Normal users do not require admin authentication to refresh the
 #. cache, as this doesn't actually install or remove software.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:50
+#: ../policy/org.freedesktop.packagekit.policy.in.h:59
 msgid "Refresh system sources"
 msgstr "Obnovit systémové zdroje"
 
@@ -1681,9 +1904,9 @@ msgstr "Obnovit systémové zdroje"
 #. try to rebind drivers in use, for instance security authentication
 #. devices.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:58
+#: ../policy/org.freedesktop.packagekit.policy.in.h:67
 msgid "Reload a device"
-msgstr ""
+msgstr "Nahrát zařízení znovu"
 
 #. SECURITY:
 #. - Normal users require admin authentication to remove packages as
@@ -1694,24 +1917,24 @@ msgstr ""
 #. be removed. If this is not possible, change this authentication to
 #. 'auth_admin'.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:68
+#: ../policy/org.freedesktop.packagekit.policy.in.h:77
 msgid "Remove package"
-msgstr "Odstranit balík"
+msgstr "Odstranit balíček"
 
 #. SECURITY:
 #. - Normal users require admin authentication to rollback system state
 #. as this will change a large number of packages, and could expose the
 #. system to previously patched security vulnerabilities.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:74
+#: ../policy/org.freedesktop.packagekit.policy.in.h:83
 msgid "Rollback to a previous transaction"
-msgstr "Vrátit poslední akci"
+msgstr "Vrátit se k předchozí transakci"
 
 #. SECURITY:
 #. - Normal users do not require admin authentication to set the proxy
 #. used for downloading packages.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:79
+#: ../policy/org.freedesktop.packagekit.policy.in.h:88
 msgid "Set network proxy"
 msgstr "Nastavit proxy sítě"
 
@@ -1721,9 +1944,9 @@ msgstr "Nastavit proxy sítě"
 #. without a secure authentication.
 #. - This is not kept as each package should be authenticated.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:86
+#: ../policy/org.freedesktop.packagekit.policy.in.h:95
 msgid "Trust a key used for signing packages"
-msgstr ""
+msgstr "Důvěřovat klíči použitému k podepsání balíčků"
 
 #. SECURITY:
 #. - Normal users do not require admin authentication to update the
@@ -1732,234 +1955,395 @@ msgstr ""
 #. - Changing this to anything other than 'yes' will break unattended
 #. updates.
 #.
-#: ../policy/org.freedesktop.packagekit.policy.in.h:94
+#: ../policy/org.freedesktop.packagekit.policy.in.h:103
 msgid "Update packages"
-msgstr "Aktualizovat balíky"
+msgstr "Aktualizovat balíčky"
+
+#. SECURITY:
+#. - Normal users require admin authentication to upgrade the disto as
+#. this can make the system unbootable or stop other applications from
+#. working.
+#.
+#: ../policy/org.freedesktop.packagekit.policy.in.h:109
+msgid "Upgrade System"
+msgstr "Povýšit systém"
 
 #. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
 msgid "Startup failed due to security policies on this machine."
-msgstr "Spuštění selhalo kvůli bezpečností politice na tomto stroji"
+msgstr "Chyba při spuštění kvůli bezpečnostím směrnicím na tomto stroji."
 
 #. TRANSLATORS: only two ways this can fail...
 #: ../src/pk-main.c:89
 msgid "This can happen for two reasons:"
-msgstr "Toto se mohlo stát ze dvou důvodů:"
+msgstr "Toto se může stát ze dvou důvodů:"
 
 #. TRANSLATORS: only allowed to be owned by root
 #: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
-msgstr "Aplikace není spuštěna pod správným uživatelem (obvykle superuživatel)"
+msgstr "Program není spuštěn pod správným uživatelem (obvykle superuživatel)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
-msgstr "Soubor org.freedesktop.PackageKit.conf není nainstalován v systémovém adresáři:"
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr ""
+"Soubor org.freedesktop.PackageKit.conf není nainstalován v systémovém "
+"adresáři:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
-#: ../src/pk-main.c:205
+#: ../src/pk-main.c:200
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Balíčkovací systém, který se má použít, např. dummy"
 
 #. TRANSLATORS: if we should run in the background
-#: ../src/pk-main.c:208
+#: ../src/pk-main.c:203
 msgid "Daemonize and detach from the terminal"
 msgstr "Spustit démona a odpojit od terminálu"
 
 #. TRANSLATORS: if we should not monitor how long we are inactive for
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:206
 msgid "Disable the idle timer"
 msgstr "Vypnout nevyužitý časovač"
 
 #. TRANSLATORS: show version
-#: ../src/pk-main.c:217
+#: ../src/pk-main.c:209
 msgid "Show version and exit"
-msgstr "Zobrazit verzi a ukončit se"
+msgstr "Ukázat verzi a ukončit se"
 
 #. TRANSLATORS: exit after we've started up, used for user profiling
-#: ../src/pk-main.c:220
+#: ../src/pk-main.c:212
 msgid "Exit after a small delay"
 msgstr "Ukončit se s krátkým zpožděním"
 
 #. TRANSLATORS: exit straight away, used for automatic profiling
-#: ../src/pk-main.c:223
+#: ../src/pk-main.c:215
 msgid "Exit after the engine has loaded"
-msgstr "Ukončit se až poté, co se načte engine"
+msgstr "Ukončit se až poté, co se načte jádro"
 
 #. TRANSLATORS: describing the service that is running
-#: ../src/pk-main.c:238
+#: ../src/pk-main.c:230
 msgid "PackageKit service"
 msgstr "Služba PackageKit"
 
 #. TRANSLATORS: fatal error, dbus is not running
-#: ../src/pk-main.c:275
+#: ../src/pk-main.c:267
 msgid "Cannot connect to the system bus"
-msgstr "Nemohu se připojit k systémové sběrnici"
+msgstr "Nelze se připojit k systémové sběrnici"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:334
+#: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "Chyba při pokusu o spuštění:"
 
-#: ../src/pk-polkit-action-lookup.c:147
-#, fuzzy
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
-msgstr "Balík '%s' nemůže být nainstalován: %s"
+msgstr ""
+"Aby mohly být nainstalovány balíčky pro informace o chybách, je třeba "
+"povolit další zdroje"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168
-#: ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
-msgstr "Software není z důvěryhodného zdroje."
+msgstr "Program není z důvěryhodného zdroje."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
-msgstr ""
+msgstr "Aktualizujte tento balíček, jen když jste přesvědčen, že je bezpečný."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
-msgstr ""
+msgstr "Aktualizujte tyto balíčky, jen když jste přesvědčen, že jsou bezpečné."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
-msgstr ""
+msgstr "Instalujte tento balíček, jen když jste přesvědčen, že je bezpečný."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
-msgstr ""
-
-#. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
-msgid "Malicious software can damage your computer or cause other harm."
-msgstr "Škodlivý software může poškodit váš počítač nebo způsobit jiné škody."
+msgstr "Instalujte tyto balíčky, jen když jste přesvědčen, že jsou bezpečné."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:273
 msgid "Many packages"
 msgstr "Mnoho balíčků"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:334
+#: ../src/pk-polkit-action-lookup.c:339
 msgid "Only trusted"
 msgstr "Pouze důvěryhodné"
 
+#~ msgid "Please restart the application as it is being used."
+#~ msgstr "Prosím restartujte aplikaci, protože je právě používána."
+
+#~ msgid "The package %s is already installed"
+#~ msgstr "Balík %s je již nainstalován"
+
+#~ msgid "The package %s could not be installed: %s"
+#~ msgstr "Balík %s nemůže být nainstalován: %s"
+
+#~ msgid "The package install was canceled!"
+#~ msgstr "Instalace baličku byla zrušena!"
+
+#~ msgid "This tool could not install the files: %s"
+#~ msgstr "Tento nástroj není schopen nainstalovat soubory: %s"
+
+#~ msgid "This tool could not remove the packages: %s"
+#~ msgstr "Tento nástroj nemůže odstranit balíky: %s"
+
+#~ msgid "Proceed with additional packages?"
+#~ msgstr "Pokračovat s doplňkovými balíky? "
+
+#~ msgid "The package removal was canceled!"
+#~ msgstr "Odstranění baličku bylo zrušeno!"
+
+#~ msgid "This tool could not download the package %s as it could not be found"
+#~ msgstr "Tento nástroj nemůže stáhnout balík %s, protože nemůže být nalezen"
+
+#~ msgid "This tool could not download the packages: %s"
+#~ msgstr "Tento nástroj nemůže stáhnout balíky: %s"
+
+#~ msgid "This tool could not update %s: %s"
+#~ msgstr "Tento nástroj nemůže aktualizovat %s: %s"
+
+#~ msgid "The package update was canceled!"
+#~ msgstr "Aktualizace balíčku byla zrušena!"
+
+#, fuzzy
+#~ msgid "This tool could not get the requirements for %s: %s"
+#~ msgstr "Tento nástroj nemůže získat  požadavky pro '%s': %s"
+
+#, fuzzy
+#~ msgid "This tool could not get the dependencies for %s: %s"
+#~ msgstr "Tento nástroj nemůže získat závislosti pro '%s': %s"
+
+#, fuzzy
+#~ msgid "This tool could not get package details for %s: %s"
+#~ msgstr "Tento nástroj nemůže získat detaily o '%s': %s"
+
+#, fuzzy
+#~ msgid "This tool could not find the files for %s: %s"
+#~ msgstr "Tento nástroj nemůže najít soubory pro '%s': %s"
+
+#, fuzzy
+#~ msgid "This tool could not get the file list for %s: %s"
+#~ msgstr "Tento nástroj nemůže získat seznam souborů pro '%s': %s"
+
+#~ msgid "File already exists: %s"
+#~ msgstr "Soubor již existuje: %s"
+
+#, fuzzy
+#~ msgid "This tool could not get package list: %s"
+#~ msgstr "Tento nástroj nemůže odstranit balíky: %s"
+
+#~ msgid "Failed to save to disk"
+#~ msgstr "Selhalo uložení na disk"
+
+#~ msgid "File does not exist: %s"
+#~ msgstr "Soubor neexistuje: %s"
+
+#~ msgid "Packages to add"
+#~ msgstr "Balíčky k přidání"
+
+#~ msgid "Packages to remove"
+#~ msgstr "Balíčky k odebrání"
+
+#, fuzzy
+#~ msgid "No new packages need to be installed"
+#~ msgstr "Balík '%s' nemůže být nainstalován: %s"
+
+#~ msgid "not found."
+#~ msgstr "nenalezen."
+
+#, fuzzy
+#~ msgid "No packages can be found to install"
+#~ msgstr "Pro váš systém nebyly nalezeny žádné balíky"
+
+#, fuzzy
+#~ msgid "This tool could not find the update details for %s: %s"
+#~ msgstr "Tento nástroj nemůže najít podrobnosti o aktualizaci pro '%s': %s"
+
+#, fuzzy
+#~ msgid "This tool could not get the update details for %s: %s"
+#~ msgstr "Tento nástroj nemůže získat podrobnosti o aktualizaci pro '%s': %s"
+
+#~ msgid "Error:"
+#~ msgstr "Chyba: "
+
+#~ msgid "Repository signature required"
+#~ msgstr "Vyžaduje podpis repozitáře"
+
+#~ msgid "End user license agreement required"
+#~ msgstr "Vyžaduje souhlas s licencí koncového uživatele"
+
+#~ msgid "Do you agree to this license?"
+#~ msgstr "Souhlasíte s touto licencí?"
+
+#~ msgid "The license was refused."
+#~ msgstr "Licence byla odmítnuta."
+
+#~ msgid "This tool could not connect to system DBUS."
+#~ msgstr "Tento nástroj se nemůže připojit k systému DBUS"
+
+#~ msgid "Incorrect privileges for this operation"
+#~ msgstr "Nesprávná oprávnění pro tuto operaci"
+
+#~ msgid "Cannot show the list of transactions"
+#~ msgstr "Nelze zobrazit seznam transakcí"
+
+#~ msgid "EULA ID"
+#~ msgstr "EULA ID"
+
+#~ msgid "Media ID"
+#~ msgstr "ID Média"
+
+#~ msgid "Malicious software can damage your computer or cause other harm."
+#~ msgstr ""
+#~ "Škodlivý software může poškodit váš počítač nebo způsobit jiné škody."
+
 #~ msgid "You need to specify a search type, e.g. name"
 #~ msgstr "Je nutné stanovit typ vyhledávání, např. jméno"
+
 #~ msgid "You need to specify a search term"
 #~ msgstr "Je nutné uvést termín, který se bude hledat"
+
 #~ msgid "You need to specify a package to remove"
 #~ msgstr "Vyberte balík, který se má odstranit"
+
 #~ msgid "You need to specify a package name to resolve"
 #~ msgstr "K vyřešení je nutné uvést název balíku"
+
 #~ msgid "You need to specify a repository name"
 #~ msgstr "Je nutné zadat název repozitáře"
+
 #~ msgid "You need to specify a correct role"
 #~ msgstr "Je nutné určit správnou roli"
-#~ msgid "Failed to get last time"
-#~ msgstr "Nepodařilo se získat poslední čas"
+
 #~ msgid "You need to specify a package to find the details for"
 #~ msgstr "Je nutné určit balík, pro který se mají najít podrobnosti"
+
 #~ msgid "You need to specify a package to find the files for"
 #~ msgstr "Je nutné určit balík, pro který se mají najít soubory"
 
 #, fuzzy
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Je nutné určit časový termín"
+
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "Tento nástroj nemůže odstranit balíky: '%s'"
+
 #~ msgid "Install local file"
 #~ msgstr "Nainstalovat místní soubor"
+
 #~ msgid "Okay to import key?"
 #~ msgstr "Chcete importovat klíč?"
+
 #~ msgid "Did not import key"
 #~ msgstr "Klíč nebyl importován"
+
 #~ msgid "Do you agree?"
 #~ msgstr "Souhlasíte?"
+
 #~ msgid "Could not find package to remove"
 #~ msgstr "Nemohu najít balík, který se má odstranit"
-#~ msgid "Cancelled!"
-#~ msgstr "Zrušeno!"
-#~ msgid "Could not find package to update"
-#~ msgstr "Nemohu najít balík, který se má aktualizovat"
+
 #~ msgid "Could not find details for"
 #~ msgstr "Nemohu zjistit detaily pro"
 
 #, fuzzy
 #~ msgid "Could not set database readonly"
 #~ msgstr "Nemohu otevřít databázi: %s"
+
 #~ msgid "Could not open database: %s"
 #~ msgstr "Nemohu otevřít databázi: %s"
+
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Nejspíše budete muset spustit tento program jako superuživatel"
+
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Spustit %s</span>"
+
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ihned spustit verzi %s</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ihned spustit</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Aktualizovat na verzi %s</span>"
+
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Ihned instalovat %s</"
 #~ "span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Verze: %s</small>"
+
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr "stahování selhala: neplatné package_id a/nebo adresář"
+
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "Nemohu najít platný soubor metadat"
+
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Souhlasíte s stažením doplňkových balíků"
+
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Musíte určit jméno balíku a balíčky, které mají být zabaleny\n"
+
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Neplatné jméno opravného balíčku. Zadejte jméno s příponou .servicepack\n"
+
 #~ msgid "Authentication is required to install a local file"
 #~ msgstr "K instalaci místního souboru je vyžadováno oprávnění"
+
 #~ msgid "Authentication is required to install a security signature"
 #~ msgstr "K instalaci bezpečnostního podpisu je vyžadováno oprávnění"
+
 #~ msgid "Authentication is required to update all packages"
 #~ msgstr "K aktualizaci všech balíků je vyžadováno oprávnění"
-#~ msgid "Install security signature"
-#~ msgstr "Nainstalovat bezpečnostní podpis"
-#~ msgid "Refresh package lists"
-#~ msgstr "Obnovit seznam balíků"
+
 #~ msgid "Update all packages"
 #~ msgstr "Aktualizovat všechny balíky"
+
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
 #~ msgstr ""
 #~ "K danému názvu nemohu najít balík k nainstalovaní ani balík, který už je "
 #~ "nainstalovaný"
+
 #~ msgid "Could not find a package with that name to update"
 #~ msgstr "K daného názvu nemohu najít balík, který se má aktualizovat"
+
 #~ msgid "Could not find a description for this package"
 #~ msgstr "Nemohu získat popis tohoto balíku"
+
 #~ msgid "You need to specify a package to find the description for"
 #~ msgstr "Je nutné určit balík, pro který se má najít popis"
-
commit 616d79ae450121c47c259113200dcacd14f26e60
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Fri Nov 19 16:42:19 2010 +0800

    Transfer correct restart info while updating packages
    
    PackageKit zypp backend have not send restart info to related pacakges,
    so application can't get any restart info.
    
    zypp_get_updates can't be called to set _updating_self. As user just
    want to update special pacakges, while zypp_get_updates will detect all
    the packages need to update.
    
    The GUI tools(eg:gpk) call get-updates first to get the patches,
    which need to restart, to upgrade.

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 6f6fd7f..ed30c43 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1650,13 +1650,6 @@ backend_update_packages_thread (PkBackend *backend)
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	PkRestartEnum restart = PK_RESTART_ENUM_NONE;
 
-	delete zypp_get_updates (backend); // make sure _updating_self is set
-
-	if (_updating_self) {
-		g_debug ("updating self and setting restart");
-		restart = PK_RESTART_ENUM_SESSION;
-		_updating_self = FALSE;
-	}
 	for (guint i = 0; package_ids[i]; i++) {
 		gchar **id_parts = pk_package_id_split (package_ids[i]);
 		std::string name = id_parts[PK_PACKAGE_ID_NAME];
@@ -1680,13 +1673,14 @@ backend_update_packages_thread (PkBackend *backend)
 		item.status ().setToBeInstalled (zypp::ResStatus::USER);
 		zypp::Patch::constPtr patch = zypp::asKind<zypp::Patch>(item.resolvable ());
 		zypp_check_restart (&restart, patch);
+		if (restart != PK_RESTART_ENUM_NONE){
+			pk_backend_require_restart (backend, restart, package_ids[i]);
+			restart = PK_RESTART_ENUM_NONE;
+		}
 	}
 
 	retval = zypp_perform_execution (backend, UPDATE, FALSE);
 
-	if (restart != PK_RESTART_ENUM_NONE)
-		pk_backend_require_restart (backend, restart, "A restart is needed");
-
 	pk_backend_finished (backend);
 	return retval;
 }
commit 413908a5e5776536645267416e3c156e71030eb3
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Fri Nov 19 16:12:42 2010 +0800

    zypp:  filter installed packages to update
    
    This patch ignore the installed packages to update with 'pkcon
    get-updates'. eg:If you have multi-kernel packages installed and in repo,
    pkcon get-updates always show you need to update kernel.

diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index 1272754..e23d529 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -760,6 +760,20 @@ zypp_get_package_updates (std::string repo)
                 zypp::PoolItem candidate =  zypp_find_arch_update_item (pool, *it);
                 if (!candidate.resolvable ())
                         continue;
+
+		gboolean system = false;
+		for (zypp::ResPool::byName_iterator it = pool.byNameBegin (candidate->name());
+				it != pool.byNameEnd (candidate->name()); it++) {
+			if (!it->satSolvable().isSystem())
+				continue;
+			if (zypp_ver_and_arch_equal (it->satSolvable(), candidate->edition ().c_str (),candidate->arch ().c_str ())) {
+				system = true;
+				break;
+			}
+		}
+		if (system == true) 
+			continue;
+
 		if (repo.empty ()) {
 	                pks->insert (candidate);
 		} else {
commit 7be09afbb69621aabcb9d390ea403ea397d025c7
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Tue Nov 16 16:39:50 2010 +0100

    trivial: Select KDE Debconf frontend if KDE is running
    
    This has no effect on the Debconf process at time,
    since the official Debconf-KDE frontend is not yet
    finished.
    If dialog frontend is "kde", but the frontend was not
    found, Debconf will automatically fallback to "gnome"
    or "dialog".
    
    This patch also adds a few more temp files which
    are left by the APTcc backend to the gitignore list.

diff --git a/.gitignore b/.gitignore
index 65250a6..d56ce36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,4 +63,8 @@ packagekit.types
 ChangeLog
 .deps
 .acb
-
+*.la
+*.lo
+*.o
+*.lai
+*.so
diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index 92d1c74..f5a8706 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -1861,7 +1861,10 @@ pk_client_create_helper_socket (PkClientState *state)
 		display = g_getenv ("DISPLAY");
 		if (display != NULL) {
 			envp[envpi++] = g_strdup_printf ("DISPLAY=%s", display);
-			dialog = "gnome";
+			if (g_strcmp0 (g_getenv ("KDE_FULL_SESSION"), "true") == 0)
+			  dialog = "kde";
+			else
+			  dialog = "gnome";
 		}
 
 		/* indicate a prefered frontend */
commit 589eab2986a18fbbfcc6ad18e5fa5e1bf878b14a
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 15 13:53:46 2010 +0000

    trivial: yum: adjust to the Zif API de-jour

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index bb194bb..3c9bdd7 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -45,7 +45,7 @@ typedef struct {
 	guint		 signal_status;
 #ifdef HAVE_ZIF
 	ZifConfig	*config;
-	ZifStoreLocal	*store_local;
+	ZifStore	*store_local;
 	ZifRepos	*repos;
 	ZifGroups	*groups;
 	ZifState	*state;
@@ -222,7 +222,7 @@ pk_backend_transaction_start (PkBackend *backend)
 	}
 
 	/* try to set, or re-set install root */
-	ret = zif_store_local_set_prefix (priv->store_local, root, &error);
+	ret = zif_store_local_set_prefix (ZIF_STORE_LOCAL (priv->store_local), root, &error);
 	if (!ret) {
 		pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to set prefix: %s", error->message);
 		g_error_free (error);
@@ -482,7 +482,7 @@ pk_backend_get_default_store_array_for_filter (PkBackend *backend, PkBitfield fi
 
 	/* add local packages to the store_array */
 	if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
-		store = ZIF_STORE (zif_store_local_new ());
+		store = zif_store_local_new ();
 		zif_store_array_add_store (store_array, store);
 		g_object_unref (store);
 	}
@@ -2326,7 +2326,7 @@ pk_backend_get_updates_thread (PkBackend *backend)
 
 	/* get all the installed packages */
 	state_local = zif_state_get_child (priv->state);
-	packages = zif_store_get_packages (ZIF_STORE (priv->store_local), state_local, &error);
+	packages = zif_store_get_packages (priv->store_local, state_local, &error);
 	if (packages == NULL) {
 		g_print ("failed to get local store: %s", error->message);
 		g_error_free (error);
commit ec2953e49025afe66451a7064bd111eda1ec8c79
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Sat Nov 13 17:31:36 2010 -0200

    packagekit-qt: write the getCategories() code so we can use it

diff --git a/lib/packagekit-qt/src/transaction.cpp b/lib/packagekit-qt/src/transaction.cpp
index 1a0f110..fad5255 100644
--- a/lib/packagekit-qt/src/transaction.cpp
+++ b/lib/packagekit-qt/src/transaction.cpp
@@ -343,6 +343,11 @@ void Transaction::downloadPackages(const QSharedPointer<Package> &package)
     downloadPackages(QList<QSharedPointer<Package> >() << package);
 }
 
+void Transaction::getCategories()
+{
+    RUN_TRANSACTION(GetCategories())
+}
+
 void Transaction::getDepends(const QList<QSharedPointer<Package> > &packages, Enum::Filters filters, bool recursive)
 {
     RUN_TRANSACTION(GetDepends(Util::filtersToString(filters), Util::packageListToPids(packages), recursive))
commit fd9980ca72318d7e5e2787bd18b6abdd8cd5559d
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Sat Nov 13 01:44:20 2010 -0200

    packagekit-qt: Add searchGroups methods that can take a string so we can search on categories

diff --git a/lib/packagekit-qt/src/transaction.cpp b/lib/packagekit-qt/src/transaction.cpp
index 568ddd7..1a0f110 100644
--- a/lib/packagekit-qt/src/transaction.cpp
+++ b/lib/packagekit-qt/src/transaction.cpp
@@ -506,6 +506,16 @@ void Transaction::searchDetails(const QString &search, Enum::Filters filters)
     searchDetails(QStringList() << search, filters);
 }
 
+void Transaction::searchGroups(const QStringList &groups, Enum::Filters filters)
+{
+    RUN_TRANSACTION(SearchGroups(Util::filtersToString(filters), groups))
+}
+
+void Transaction::searchGroups(const QString &group, Enum::Filters filters)
+{
+    searchGroups(QStringList() << group, filters);
+}
+
 void Transaction::searchGroups(Enum::Groups groups, Enum::Filters filters)
 {
     QStringList groupsSL;
@@ -513,7 +523,7 @@ void Transaction::searchGroups(Enum::Groups groups, Enum::Filters filters)
         groupsSL << Util::enumToString<Enum>(group, "Group", "Group");
     }
 
-    RUN_TRANSACTION(SearchGroups(Util::filtersToString(filters), groupsSL))
+    searchGroups(groups, filters);
 }
 
 void Transaction::searchGroups(Enum::Group group, Enum::Filters filters)
diff --git a/lib/packagekit-qt/src/transaction.h b/lib/packagekit-qt/src/transaction.h
index 9e0ce73..00d88fa 100644
--- a/lib/packagekit-qt/src/transaction.h
+++ b/lib/packagekit-qt/src/transaction.h
@@ -429,6 +429,18 @@ public:
     /**
      * \brief Lists all the packages in the given \p group
      *
+     * \p groups is the name of the group that you want, when searching for
+     * categories prefix it with '@'
+     * \p filters can be used to restrict the returned packages
+     *
+     * \note This method emits \sa package()
+     */
+    void searchGroups(const QStringList &groups, Enum::Filters filters = Enum::NoFilter);
+    void searchGroups(const QString &group, Enum::Filters filters = Enum::NoFilter);
+
+    /**
+     * \brief Lists all the packages in the given \p group
+     *
      * \p filters can be used to restrict the returned packages
      *
      * \note This method emits \sa package()
commit dad61396f39b3ae4e61485f4acf607f913222130
Author: Sveinung Kvilhaugsvik <sveinung84 at users.sourceforge.net>
Date:   Fri Nov 12 17:49:34 2010 +0000

    Correct the description of org.freedesktop.packagekit.upgrade-system
    
    Signed-off-by: Richard Hughes <richard at hughsie.com>

diff --git a/policy/org.freedesktop.packagekit.policy.in b/policy/org.freedesktop.packagekit.policy.in
index dbc84a1..c690099 100644
--- a/policy/org.freedesktop.packagekit.policy.in
+++ b/policy/org.freedesktop.packagekit.policy.in
@@ -239,7 +239,7 @@
             this can make the system unbootable or stop other applications from
             working.
      -->
-    <_description>Remove package</_description>
+    <_description>Upgrade System</_description>
     <_message>Authentication is required to upgrade the operating system</_message>
     <icon_name>package-x-generic</icon_name>
     <defaults>
commit b2b0b6d80c714765aa864f226b6b7f265fb45742
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 12 17:48:56 2010 +0000

    trivial: yum: update to the Zif API de-jour

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index b9802c0..bb194bb 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -1636,7 +1636,7 @@ pk_backend_download_packages_thread (PkBackend *backend)
 
 		/* download */
 		state_local = zif_state_get_child (priv->state);
-		ret = zif_package_download (package, directory, state_local, &error);
+		ret = zif_package_remote_download (ZIF_PACKAGE_REMOTE (package), directory, state_local, &error);
 		if (!ret) {
 			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED,
 					       "failed to download %s: %s", filename, error->message);
@@ -2393,7 +2393,7 @@ pk_backend_get_updates_thread (PkBackend *backend)
 		/* updates without updatinfo */
 		info = PK_INFO_ENUM_NORMAL;
 
-		update = zif_package_get_update_detail (package, state_loop, &error);
+		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package), state_loop, &error);
 		if (update == NULL) {
 			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
 			g_clear_error (&error);
@@ -2564,7 +2564,7 @@ pk_backend_get_update_detail_thread (PkBackend *backend)
 		}
 
 		state_local = zif_state_get_child (priv->state);
-		update = zif_package_get_update_detail (package, state_local, &error);
+		update = zif_package_remote_get_update_detail (ZIF_PACKAGE_REMOTE (package), state_local, &error);
 		if (update == NULL) {
 			g_debug ("failed to get updateinfo for %s", zif_package_get_id (package));
 			g_clear_error (&error);
commit 41b47cbe5fd7f33987301723c18f19a87a69e3ba
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 12 09:04:24 2010 +0000

    yum: adjust to the Zif 0.1.3 API break

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 897db7c..b9802c0 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -783,6 +783,64 @@ out:
 	return array_retval;
 }
 
+/**
+ * pk_backend_what_provides_helper:
+ */
+static GPtrArray *
+pk_backend_what_provides_helper (GPtrArray *store_array, gchar **search, ZifState *state, GError **error)
+{
+	gboolean ret;
+	GPtrArray *array = NULL;
+	GPtrArray *array_retval = NULL;
+	GPtrArray *array_tmp;
+	guint i, j;
+	ZifDepend *depend;
+	ZifPackage *package;
+	ZifState *state_local;
+
+	/* set steps */
+	zif_state_set_number_steps (state, g_strv_length (search));
+
+	/* resolve all the groups */
+	array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
+	for (i=0; search[i] != NULL; i++) {
+		state_local = zif_state_get_child (state);
+
+		/* parse this depend */
+		depend = zif_depend_new ();
+		ret = zif_depend_parse_description (depend, search[i], error);
+		if (!ret)
+			goto out;
+
+		/* find what provides this depend */
+		array_tmp = zif_store_array_what_provides (store_array, depend, state_local, error);
+		g_object_unref (depend);
+		if (array_tmp == NULL)
+			goto out;
+
+		/* add each result */
+		for (j=0; j<array_tmp->len; j++) {
+			package = g_ptr_array_index (array_tmp, i);
+			g_ptr_array_add (array, g_object_ref (package));
+		}
+		g_ptr_array_unref (array_tmp);
+
+		/* set steps */
+		zif_state_set_number_steps (state_local, 2);
+
+		/* this part done */
+		ret = zif_state_done (state, error);
+		if (!ret)
+			goto out;
+	}
+
+	/* success */
+	array_retval = g_ptr_array_ref (array);
+out:
+	if (array != NULL)
+		g_ptr_array_unref (array);
+	return array_retval;
+}
 #endif
 
 /**
@@ -896,7 +954,7 @@ pk_backend_search_thread (PkBackend *backend)
 				array = zif_store_array_resolve (store_array, search, state_local, &error);
 			}
 		} else if (role == PK_ROLE_ENUM_WHAT_PROVIDES) {
-			array = zif_store_array_what_provides (store_array, search, state_local, &error);
+			array = pk_backend_what_provides_helper (store_array, search, state_local, &error);
 		}
 		if (array == NULL) {
 			pk_backend_error_code (backend, PK_ERROR_ENUM_INTERNAL_ERROR, "failed to search: %s", error->message);
@@ -1655,7 +1713,6 @@ pk_backend_get_depends_thread (PkBackend *backend)
 	GPtrArray *result;
 	GPtrArray *requires;
 	GPtrArray *provides;
-	const gchar *to_array[] = { NULL, NULL };
 
 	len = g_strv_length (package_ids);
 
@@ -1736,8 +1793,7 @@ pk_backend_get_depends_thread (PkBackend *backend)
 			require = g_ptr_array_index (requires, k);
 
 			/* find the package providing the depend */
-			to_array[0] = zif_depend_get_name (require);
-			provides = zif_store_array_what_provides (store_array, (gchar**)to_array, state_loop_inner, &error);
+			provides = zif_store_array_what_provides (store_array, require, state_loop_inner, &error);
 			if (provides == NULL) {
 				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 						       "failed to find provide for %s: %s",
commit 6de193a6f0fc8251070da37f8131253eb43872b4
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 8 11:58:18 2010 +0000

    yum: Set the repository directory when doing a complete upgrade

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index e11a238..897db7c 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -1242,6 +1242,7 @@ pk_backend_initialize (PkBackend *backend)
 	priv->release = zif_release_new ();
 	zif_release_set_boot_dir (priv->release, "/boot/upgrade");
 	zif_release_set_cache_dir (priv->release, "/var/cache/PackageKit");
+	zif_release_set_repo_dir (priv->release, "/var/cache/yum/preupgrade");
 	zif_release_set_uri (priv->release, "http://mirrors.fedoraproject.org/releases.txt");
 
 	/* ZifStoreLocal */
commit a0555999d9213981960806d928e1ab91fd0fd448
Author: Matthias Klumpp <matthias at nlinux.org>
Date:   Thu Nov 11 21:32:13 2010 +0100

    trivial: Added Debian to PK download page

diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index 51c0bec..aae23a9 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -34,6 +34,10 @@ your native package manager.
    Fedora: Yes, starting with 9, just run: <code>yum install PackageKit gnome-packagekit</code> (as root)
   </li>
   <li>
+   Debian: Yes, packages are available for Debian Sid.
+   Just install <code>packagekit</code> via APT. PackageKit frontends are not yet packaged for Debian.
+  </li>
+  <li>
    Ubuntu: Yes, starting with Hardy Heron (8.04), that ships an obsolete version (0.1.6) of PackageKit by default.
    Newer versions are used by more recent releases, but you can find the latest versions of PackageKit for all releases in this <a href="https://edge.launchpad.net/~packagekit/+archive">Personal Package Archive</a>.
    <a href="https://help.ubuntu.com/8.04/add-applications/C/extra-repositories-adding.html">Add</a>
commit 05ad4000c1110d49d1530db9a0589dd02147744b
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Tue Nov 9 14:20:19 2010 -0200

    aptcc: Fix crash due to NULL strings
    packagekit-qt: emit transactionListChanged(empty) when daemon crashes

diff --git a/backends/aptcc/apt.cpp b/backends/aptcc/apt.cpp
index 71178b6..559496a 100644
--- a/backends/aptcc/apt.cpp
+++ b/backends/aptcc/apt.cpp
@@ -343,7 +343,7 @@ void aptcc::emit_package(const pkgCache::PkgIterator &pkg,
 	package_id = pk_package_id_build(pkg.Name(),
 					 ver.VerStr(),
 					 ver.Arch(),
-					 vf.File().Archive());
+					 vf.File().Archive() == NULL ? "" : vf.File().Archive());
 	pk_backend_package(m_backend,
 			   state,
 			   package_id,
@@ -398,9 +398,9 @@ void aptcc::emitUpdates(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator
 
 		// let find what kind of upgrade this is
 		pkgCache::VerFileIterator vf = i->second.FileList();
-		std::string origin  = vf.File().Origin();
-		std::string archive = vf.File().Archive();
-		std::string label   = vf.File().Label();
+		std::string origin  = vf.File().Origin() == NULL ? "" : vf.File().Origin();
+		std::string archive = vf.File().Archive() == NULL ? "" : vf.File().Archive();
+		std::string label   = vf.File().Label() == NULL ? "" : vf.File().Label();
 		if (origin.compare("Debian") == 0 ||
 		    origin.compare("Ubuntu") == 0) {
 			if (ends_with(archive, "-security") ||
@@ -567,7 +567,7 @@ void aptcc::emit_details(const pkgCache::PkgIterator &pkg)
 	package_id = pk_package_id_build(pkg.Name(),
 					 ver.VerStr(),
 					 ver.Arch(),
-					 vf.File().Archive());
+					 vf.File().Archive() == NULL ? "" : vf.File().Archive());
 	pk_backend_details(m_backend,
 			   package_id,
 			   "unknown",
@@ -588,14 +588,13 @@ void aptcc::emit_update_detail(const pkgCache::PkgIterator &pkg)
     current_package_id = pk_package_id_build(pkg.Name(),
                                              currver.VerStr(),
                                              currver.Arch(),
-                                             currvf.File().Archive());
+                                             currvf.File().Archive() == NULL ? "" : currvf.File().Archive());
 
     // Get the update version
     pkgCache::VerIterator candver = find_candidate_ver(pkg);
 
     pkgCache::VerFileIterator vf = candver.FileList();
-    pkgCache::PkgFileIterator pkgFile = vf.File();
-    string origin = pkgFile.Origin();
+    string origin = vf.File().Origin() == NULL ? "" : vf.File().Origin();
     pkgRecords::Parser &rec = packageRecords->Lookup(candver.FileList());
 
     // Build the changelogURI
@@ -795,7 +794,7 @@ void aptcc::emit_update_detail(const pkgCache::PkgIterator &pkg)
     }
 
     // Build a package_id from the update version
-    string archive(vf.File().Archive());
+    string archive = vf.File().Archive() == NULL ? "" : vf.File().Archive();
     gchar *package_id;
     package_id = pk_package_id_build(pkg.Name(),
                     candver.VerStr(),
diff --git a/lib/packagekit-qt/src/clientprivate.cpp b/lib/packagekit-qt/src/clientprivate.cpp
index 14e679c..5c18863 100644
--- a/lib/packagekit-qt/src/clientprivate.cpp
+++ b/lib/packagekit-qt/src/clientprivate.cpp
@@ -80,6 +80,9 @@ void ClientPrivate::serviceOwnerChanged (const QString& name, const QString& old
         t->finished (Enum::ExitFailed, 0);
         t->d_ptr->destroy ();
     }
+
+    // We don't have more transactions running
+    c->transactionListChanged(QList<Transaction*>());
 }
 
 void ClientPrivate::destroyTransaction(const QString &tid)
commit c510a4dc83821b97d803971175f37eb64ac80c86
Merge: 34ef286... a9af8dc...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Nov 8 15:49:33 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit a9af8dcdb4933b0389b1b7a59124b6e4a5f48a74
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Nov 7 17:56:45 2010 +0000

    trivial: yum: do not use the deprecated zif_download_set_proxy()

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 6867546..e11a238 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -44,7 +44,6 @@ typedef struct {
 	guint		 signal_finished;
 	guint		 signal_status;
 #ifdef HAVE_ZIF
-	ZifDownload	*download;
 	ZifConfig	*config;
 	ZifStoreLocal	*store_local;
 	ZifRepos	*repos;
@@ -247,7 +246,7 @@ pk_backend_transaction_start (PkBackend *backend)
 
 	/* set the proxy */
 	http_proxy = pk_backend_get_proxy_http (backend);
-	zif_download_set_proxy (priv->download, http_proxy, NULL);
+	zif_config_set_string (priv->config, "http_proxy", http_proxy, NULL);
 
 	/* setup state */
 	zif_state_reset (priv->state);
@@ -1236,9 +1235,6 @@ pk_backend_initialize (PkBackend *backend)
 	/* profile */
 	pk_backend_profile ("read config_file");
 
-	/* ZifDownload */
-	priv->download = zif_download_new ();
-
 	/* ZifLock */
 	priv->lock = zif_lock_new ();
 
@@ -1307,8 +1303,6 @@ pk_backend_destroy (PkBackend *backend)
 		g_object_unref (priv->config);
 	if (priv->release != NULL)
 		g_object_unref (priv->release);
-	if (priv->download != NULL)
-		g_object_unref (priv->download);
 	if (priv->state != NULL)
 		g_object_unref (priv->state);
 	if (priv->repos != NULL)
commit 791d4ded0f6a8f94e9474dedc30f12204cd73b9b
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Nov 6 18:00:14 2010 +0000

    yum: convert the ZifRelease error code into a suitable PK error enum

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index c4c92cf..6867546 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -3312,6 +3312,7 @@ pk_backend_upgrade_system_thread (PkBackend *backend)
 	gchar **distro_id_split = NULL;
 	guint version;
 	gboolean ret;
+	PkErrorEnum error_code;
 	GError *error = NULL;
 	ZifReleaseUpgradeKind upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_DEFAULT;
 	PkUpgradeKindEnum upgrade_kind = pk_backend_get_uint (backend, "upgrade_kind");
@@ -3346,7 +3347,33 @@ pk_backend_upgrade_system_thread (PkBackend *backend)
 					   priv->state,
 					   &error);
 	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+		/* convert the ZifRelease error code into a PK error enum */
+		switch (error->code) {
+		case ZIF_RELEASE_ERROR_DOWNLOAD_FAILED:
+			error_code = PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED;
+			break;
+		case ZIF_RELEASE_ERROR_FILE_INVALID:
+			error_code = PK_ERROR_ENUM_FAILED_CONFIG_PARSING;
+			break;
+		case ZIF_RELEASE_ERROR_LOW_DISKSPACE:
+			error_code = PK_ERROR_ENUM_NO_SPACE_ON_DEVICE;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_FOUND:
+			error_code = PK_ERROR_ENUM_PACKAGE_NOT_FOUND;
+			break;
+		case ZIF_RELEASE_ERROR_NOT_SUPPORTED:
+			error_code = PK_ERROR_ENUM_NOT_SUPPORTED;
+			break;
+		case ZIF_RELEASE_ERROR_NO_UUID_FOR_ROOT:
+		case ZIF_RELEASE_ERROR_SETUP_INVALID:
+		case ZIF_RELEASE_ERROR_SPAWN_FAILED:
+		case ZIF_RELEASE_ERROR_WRITE_FAILED:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+			break;
+		default:
+			error_code = PK_ERROR_ENUM_INTERNAL_ERROR;
+		}
+		pk_backend_error_code (backend, error_code,
 				       "failed to upgrade: %s", error->message);
 		g_error_free (error);
 		goto out;
commit e61350ec35b53d05c6532f4be234d5bd8f62a0e7
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Nov 6 13:21:11 2010 +0000

    Add an upgrade-kind parameter to UpgradeSystem()
    
    This allows the frontend client to specify how much data is downloaded before the upgrade is attempted.

diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index 150a8c4..89d898f 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -1425,7 +1425,7 @@ pk_backend_upgrade_system_timeout (gpointer data)
  * pk_backend_upgrade_system:
  */
 void
-pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
 	pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD);
 	pk_backend_set_allow_cancel (backend, TRUE);
diff --git a/backends/test/pk-backend-test-fail.c b/backends/test/pk-backend-test-fail.c
index 876505a..023e4e1 100644
--- a/backends/test/pk-backend-test-fail.c
+++ b/backends/test/pk-backend-test-fail.c
@@ -260,7 +260,7 @@ pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
  * pk_backend_upgrade_system:
  */
 void
-pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
 	pk_backend_error_code (backend, PK_ERROR_ENUM_INSTALL_ROOT_INVALID,
 			       "Cannot find boot partition");
diff --git a/backends/test/pk-backend-test-succeed.c b/backends/test/pk-backend-test-succeed.c
index d32eba4..86aa37e 100644
--- a/backends/test/pk-backend-test-succeed.c
+++ b/backends/test/pk-backend-test-succeed.c
@@ -392,7 +392,7 @@ pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
  * pk_backend_upgrade_system:
  */
 void
-pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
 	pk_backend_finished (backend);
 }
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 58905cf..c4c92cf 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -51,6 +51,7 @@ typedef struct {
 	ZifGroups	*groups;
 	ZifState	*state;
 	ZifLock		*lock;
+	ZifRelease	*release;
 #endif
 	GTimer		*timer;
 	GVolumeMonitor	*volume_monitor;
@@ -1241,6 +1242,12 @@ pk_backend_initialize (PkBackend *backend)
 	/* ZifLock */
 	priv->lock = zif_lock_new ();
 
+	/* ZifRelease */
+	priv->release = zif_release_new ();
+	zif_release_set_boot_dir (priv->release, "/boot/upgrade");
+	zif_release_set_cache_dir (priv->release, "/var/cache/PackageKit");
+	zif_release_set_uri (priv->release, "http://mirrors.fedoraproject.org/releases.txt");
+
 	/* ZifStoreLocal */
 	priv->store_local = zif_store_local_new ();
 
@@ -1298,6 +1305,8 @@ pk_backend_destroy (PkBackend *backend)
 #ifdef HAVE_ZIF
 	if (priv->config != NULL)
 		g_object_unref (priv->config);
+	if (priv->release != NULL)
+		g_object_unref (priv->release);
 	if (priv->download != NULL)
 		g_object_unref (priv->download);
 	if (priv->state != NULL)
@@ -1440,9 +1449,14 @@ pk_backend_get_roles (PkBackend *backend)
 		PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES,
 		-1);
 
+#ifdef HAVE_ZIF
+	pk_bitfield_add (roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES);
+	pk_bitfield_add (roles, PK_ROLE_ENUM_UPGRADE_SYSTEM);
+#else
 	/* only add GetDistroUpgrades if the binary is present */
 	if (g_file_test (PREUPGRADE_BINARY, G_FILE_TEST_EXISTS))
 		pk_bitfield_add (roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES);
+#endif
 
 	return roles;
 }
@@ -1637,11 +1651,7 @@ pk_backend_get_depends_thread (PkBackend *backend)
 	ZifState *state_local;
 	ZifState *state_loop;
 	ZifState *state_loop_inner;
-#ifdef ZIF_CHECK_VERSION
 	ZifDepend *require;
-#else
-	const ZifDepend *require;
-#endif
 	const gchar *id;
 	guint i, j, k;
 	guint len;
@@ -1731,22 +1741,12 @@ pk_backend_get_depends_thread (PkBackend *backend)
 			require = g_ptr_array_index (requires, k);
 
 			/* find the package providing the depend */
-#ifdef ZIF_CHECK_VERSION
 			to_array[0] = zif_depend_get_name (require);
-#else
-			to_array[0] = require->name;
-#endif
 			provides = zif_store_array_what_provides (store_array, (gchar**)to_array, state_loop_inner, &error);
 			if (provides == NULL) {
-#ifdef ZIF_CHECK_VERSION
 				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 						       "failed to find provide for %s: %s",
 						       zif_depend_get_name (require), error->message);
-#else
-				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
-						       "failed to find provide for %s: %s",
-						       require->name, error->message);
-#endif
 				g_error_free (error);
 				goto out;
 			}
@@ -2015,102 +2015,50 @@ static gboolean
 pk_backend_get_distro_upgrades_thread (PkBackend *backend)
 {
 #ifdef HAVE_ZIF
-	gboolean ret;
-	gchar *distro_id = NULL;
-	gchar *filename = NULL;
-	gchar **groups = NULL;
-	gchar *name = NULL;
-	gchar **split = NULL;
+	gchar *distro_id;
+	GError *error = NULL;
+	GPtrArray *array = NULL;
 	guint i;
-	guint last_version = 0;
-	guint newest = G_MAXUINT;
 	guint version;
-	GError *error = NULL;
-	GKeyFile *file = NULL;
-	ZifState *child;
+	ZifUpgrade *upgrade;
 
-	/* download, then parse */
+	/* one shot */
 	zif_state_reset (priv->state);
-	zif_state_set_number_steps (priv->state, 2);
 
-	/* download new file */
-	filename = g_build_filename ("/var/cache/PackageKit", "releases.txt", NULL);
-	child = zif_state_get_child (priv->state);
-	pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO);
-	ret = zif_download_file (priv->download, "http://mirrors.fedoraproject.org/releases.txt", filename, child, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_ERROR, "failed to download %s: %s", filename, error->message);
-		g_error_free (error);
-		goto out;
-	}
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
+	/* get the current version */
+	version = zif_config_get_uint (priv->config, "releasever", NULL);
+	if (version == G_MAXUINT) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "could not get distro present version");
 		goto out;
 	}
 
-	file = g_key_file_new ();
-	ret = g_key_file_load_from_file (file, filename, G_KEY_FILE_NONE, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_ERROR, "failed to open %s: %s", filename, error->message);
+	/* get the upgrades */
+	array = zif_release_get_upgrades_new (priv->release, version, priv->state, &error);
+	if (array == NULL) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "could not get latest distro data : %s", error->message);
 		g_error_free (error);
 		goto out;
 	}
 
-	/* get all entries */
-	groups = g_key_file_get_groups (file, NULL);
-	for (i=0; groups[i] != NULL; i++) {
-		/* we only care about stable versions */
-		if (!g_key_file_get_boolean (file, groups[i], "stable", NULL))
-			goto out;
-		version = g_key_file_get_integer (file, groups[i], "version", NULL);
-		g_debug ("%s is update to version %i", groups[i], version);
-		if (version > last_version) {
-			newest = i;
-			last_version = version;
-		}
-	}
-
-	/* nothing found */
-	if (newest == G_MAXUINT) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING, "could not get latest distro data");
-		goto out;
-	}
-
-	/* are we already on the latest version */
-	version = zif_config_get_uint (priv->config, "releasever", &error);
-	if (version == G_MAXUINT) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING, "could not get distro present version");
-		goto out;
-	}
-
-	/* all okay, nothing to show */
-	if (version >= last_version)
-		goto out;
-
-	/* if we have an upgrade candidate then pass back data to daemon */
-	split = g_strsplit (groups[newest], " ", -1);
-	name = g_ascii_strdown (split[0], -1);
-	distro_id = g_strdup_printf ("%s-%s", name, split[1]);
-	pk_backend_distro_upgrade (backend, PK_DISTRO_UPGRADE_ENUM_STABLE, distro_id, groups[newest]);
-
-	/* we're done */
-	ret = zif_state_done (priv->state, &error);
-	if (!ret) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_CANCELLED, "cancelled: %s", error->message);
-		g_error_free (error);
-		goto out;
+	/* emit the results */
+	for (i=0; i<array->len; i++) {
+		upgrade = g_ptr_array_index (array, i);
+		if (!zif_upgrade_get_enabled (upgrade))
+			continue;
+		distro_id = g_strdup_printf ("fedora-%i", zif_upgrade_get_version (upgrade));
+		pk_backend_distro_upgrade (backend,
+					   zif_upgrade_get_stable (upgrade) ? PK_DISTRO_UPGRADE_ENUM_STABLE :
+									      PK_DISTRO_UPGRADE_ENUM_UNSTABLE,
+					   distro_id,
+					   zif_upgrade_get_id (upgrade));
+		g_free (distro_id);
 	}
 out:
 	pk_backend_finished (backend);
-	g_free (distro_id);
-	g_free (filename);
-	g_free (name);
-	if (file != NULL)
-		g_key_file_free (file);
-	g_strfreev (groups);
-	g_strfreev (split);
+	if (array != NULL)
+		g_ptr_array_unref (array);
 #endif
 	return TRUE;
 }
@@ -3354,12 +3302,67 @@ pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
 	g_free (package_ids_temp);
 }
 
+/**
+  * pk_backend_upgrade_system_thread:
+  */
+static gboolean
+pk_backend_upgrade_system_thread (PkBackend *backend)
+{
+#ifdef HAVE_ZIF
+	gchar **distro_id_split = NULL;
+	guint version;
+	gboolean ret;
+	GError *error = NULL;
+	ZifReleaseUpgradeKind upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_DEFAULT;
+	PkUpgradeKindEnum upgrade_kind = pk_backend_get_uint (backend, "upgrade_kind");
+	const gchar *distro_id = pk_backend_get_string (backend, "distro_id");
+
+	/* check valid */
+	distro_id_split = g_strsplit (distro_id, "-", -1);
+	if (g_strv_length (distro_id_split) != 2) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "distribution id %s invalid", distro_id);
+		goto out;
+	}
+
+	/* check fedora */
+	if (g_strcmp0 (distro_id_split[0], "fedora") != 0) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "only 'fedora' is supported");
+		goto out;
+	}
+
+	/* map PK enum to Zif enumerated types */
+	if (upgrade_kind == PK_UPGRADE_KIND_ENUM_MINIMAL)
+		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_MINIMAL;
+	else if (upgrade_kind == PK_UPGRADE_KIND_ENUM_COMPLETE)
+		upgrade_kind_zif = ZIF_RELEASE_UPGRADE_KIND_COMPLETE;
+
+	/* do the upgrade */
+	version = atoi (distro_id_split[1]);
+	ret = zif_release_upgrade_version (priv->release,
+					   version,
+					   upgrade_kind_zif,
+					   priv->state,
+					   &error);
+	if (!ret) {
+		pk_backend_error_code (backend, PK_ERROR_ENUM_FAILED_CONFIG_PARSING,
+				       "failed to upgrade: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	pk_backend_finished (backend);
+	g_strfreev (distro_id_split);
+#endif
+	return TRUE;
+}
 
 /**
  * pk_backend_upgrade_system:
  */
 void
-pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
-	/* FIXME */
+	pk_backend_thread_create (backend, pk_backend_upgrade_system_thread);
 }
diff --git a/client/pk-console.c b/client/pk-console.c
index bdef844..c25c174 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1715,7 +1715,15 @@ main (int argc, char *argv[])
 			retval = PK_EXIT_CODE_SYNTAX_INVALID;
 			goto out;
 		}
-		pk_client_upgrade_system_async (PK_CLIENT (task), value, cancellable,
+		if (details == NULL) {
+			/* TRANSLATORS: The user did not provide an upgrade type */
+			error = g_error_new (1, 0, "%s", _("An upgrade type is required, e.g. 'minimal', 'default' or 'complete'"));
+			retval = PK_EXIT_CODE_SYNTAX_INVALID;
+			goto out;
+		}
+		pk_client_upgrade_system_async (PK_CLIENT (task), value,
+						pk_upgrade_kind_enum_from_string (details),
+						cancellable,
 						(PkProgressCallback) pk_console_progress_cb, NULL,
 						(GAsyncReadyCallback) pk_console_finished_cb, NULL);
 
diff --git a/configure.ac b/configure.ac
index 9856af4..f499542 100644
--- a/configure.ac
+++ b/configure.ac
@@ -640,7 +640,7 @@ if test x$enable_yum = xyes; then
 	AC_ARG_ENABLE(zif, AS_HELP_STRING([--enable-zif],[Build ZIF experimental code]),
 		      enable_zif=$enableval,enable_zif=yes)
 	if test x$enable_zif = xyes; then
-		PKG_CHECK_MODULES(ZIF, zif >= 0.1.2,
+		PKG_CHECK_MODULES(ZIF, zif >= 0.1.3,
 			          build_zif=yes, build_zif=no)
 	fi
 	if test "x$build_zif" = "xyes"; then
diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index 3a2b66f..2349f1d 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -1684,6 +1684,7 @@ pk_client_simulate_update_packages (PkClient *client, gchar **package_ids, GCanc
 /**
  * pk_client_upgrade_system:
  * @distro_id: a distro ID such as "fedora-14"
+ * @upgrade_kind: a #PkUpgradeKindEnum such as %PK_UPGRADE_KIND_ENUM_COMPLETE
  * @cancellable: a #GCancellable or %NULL
  * @progress_callback: (scope call): the function to run when the progress changes
  * @progress_user_data: data to pass to @progress_callback
@@ -1703,7 +1704,8 @@ pk_client_simulate_update_packages (PkClient *client, gchar **package_ids, GCanc
  * Since: 0.6.11
  **/
 PkResults *
-pk_client_upgrade_system (PkClient *client, const gchar *distro_id, GCancellable *cancellable,
+pk_client_upgrade_system (PkClient *client, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind,
+			  GCancellable *cancellable,
 		          PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
@@ -1718,7 +1720,8 @@ pk_client_upgrade_system (PkClient *client, const gchar *distro_id, GCancellable
 	helper->error = error;
 
 	/* run async method */
-	pk_client_upgrade_system_async (client, distro_id, cancellable, progress_callback, progress_user_data,
+	pk_client_upgrade_system_async (client, distro_id, upgrade_kind,
+					cancellable, progress_callback, progress_user_data,
 				        (GAsyncReadyCallback) pk_client_generic_finish_sync, helper);
 
 	g_main_loop_run (helper->loop);
diff --git a/lib/packagekit-glib2/pk-client-sync.h b/lib/packagekit-glib2/pk-client-sync.h
index 105df42..e162c3e 100644
--- a/lib/packagekit-glib2/pk-client-sync.h
+++ b/lib/packagekit-glib2/pk-client-sync.h
@@ -283,6 +283,7 @@ PkResults	*pk_client_simulate_update_packages	(PkClient		*client,
 
 PkResults	*pk_client_upgrade_system		(PkClient		*client,
 							 const gchar		*distro_id,
+							 PkUpgradeKindEnum	 upgrade_kind,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index d8dec1f..92d1c74 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -121,6 +121,7 @@ typedef struct {
 	PkResults			*results;
 	PkRoleEnum			 role;
 	PkSigTypeEnum			 type;
+	PkUpgradeKindEnum		 upgrade_kind;
 	guint				 refcount;
 	gboolean			 signals_connected;
 	PkClientHelper			*client_helper;
@@ -1791,6 +1792,7 @@ pk_client_set_hints_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *
 		state->call = dbus_g_proxy_begin_call (state->proxy, "UpgradeSystem",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRING, state->distro_id,
+						       G_TYPE_STRING, pk_upgrade_kind_enum_to_string (state->upgrade_kind),
 						       G_TYPE_INVALID);
 	} else {
 		g_assert_not_reached ();
@@ -4181,6 +4183,7 @@ out:
  * pk_client_upgrade_system_async:
  * @client: a valid #PkClient instance
  * @distro_id: a distro ID such as "fedora-14"
+ * @upgrade_kind: a #PkUpgradeKindEnum such as %PK_UPGRADE_KIND_ENUM_COMPLETE
  * @cancellable: a #GCancellable or %NULL
  * @progress_callback: (scope call): the function to run when the progress changes
  * @progress_user_data: data to pass to @progress_callback
@@ -4196,7 +4199,8 @@ out:
  * Since: 0.6.11
  **/
 void
-pk_client_upgrade_system_async (PkClient *client, const gchar *distro_id, GCancellable *cancellable,
+pk_client_upgrade_system_async (PkClient *client, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind,
+				GCancellable *cancellable,
 			        PkProgressCallback progress_callback, gpointer progress_user_data,
 			        GAsyncReadyCallback callback_ready, gpointer user_data)
 {
@@ -4220,6 +4224,7 @@ pk_client_upgrade_system_async (PkClient *client, const gchar *distro_id, GCance
 		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_client_cancellable_cancel_cb), state, NULL);
 	}
 	state->distro_id = g_strdup (distro_id);
+	state->upgrade_kind = upgrade_kind;
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
diff --git a/lib/packagekit-glib2/pk-client.h b/lib/packagekit-glib2/pk-client.h
index 2d34b1a..11c2bad 100644
--- a/lib/packagekit-glib2/pk-client.h
+++ b/lib/packagekit-glib2/pk-client.h
@@ -395,6 +395,7 @@ void		 pk_client_simulate_update_packages_async (PkClient		*client,
 
 void		 pk_client_upgrade_system_async		(PkClient		*client,
 							 const gchar		*distro_id,
+							 PkUpgradeKindEnum	 upgrade_kind,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
diff --git a/lib/packagekit-glib2/pk-enum.c b/lib/packagekit-glib2/pk-enum.c
index 13776c3..7369372 100644
--- a/lib/packagekit-glib2/pk-enum.c
+++ b/lib/packagekit-glib2/pk-enum.c
@@ -580,6 +580,14 @@ static const PkEnumMatch enum_authorize_type[] = {
 	{0, NULL}
 };
 
+static const PkEnumMatch enum_upgrade_kind[] = {
+	{PK_UPGRADE_KIND_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
+	{PK_UPGRADE_KIND_ENUM_MINIMAL,		"minimal"},
+	{PK_UPGRADE_KIND_ENUM_DEFAULT,		"default"},
+	{PK_UPGRADE_KIND_ENUM_COMPLETE,		"complete"},
+	{0, NULL}
+};
+
 /**
  * pk_enum_find_value:
  * @table: A #PkEnumMatch enum table of values
@@ -1178,3 +1186,35 @@ pk_authorize_type_enum_to_string (PkAuthorizeEnum authorize_type)
 {
 	return pk_enum_find_string (enum_authorize_type, authorize_type);
 }
+
+/**
+ * pk_upgrade_kind_enum_from_string:
+ * @upgrade_kind: Text describing the enumerated type
+ *
+ * Converts a text enumerated type to its unsigned integer representation
+ *
+ * Return value: the enumerated constant value, e.g. %PK_UPGRADE_KIND_ENUM_MINIMAL
+ *
+ * Since: 0.6.11
+ **/
+PkUpgradeKindEnum
+pk_upgrade_kind_enum_from_string (const gchar *upgrade_kind)
+{
+	return pk_enum_find_value (enum_upgrade_kind, upgrade_kind);
+}
+
+/**
+ * pk_upgrade_kind_enum_to_string:
+ * @upgrade_kind: The enumerated type value
+ *
+ * Converts a enumerated type to its text representation
+ *
+ * Return value: the enumerated constant value, e.g. "minimal"
+ *
+ * Since: 0.6.11
+ **/
+const gchar *
+pk_upgrade_kind_enum_to_string (PkUpgradeKindEnum upgrade_kind)
+{
+	return pk_enum_find_string (enum_upgrade_kind, upgrade_kind);
+}
diff --git a/lib/packagekit-glib2/pk-enum.h b/lib/packagekit-glib2/pk-enum.h
index cb87877..6181635 100644
--- a/lib/packagekit-glib2/pk-enum.h
+++ b/lib/packagekit-glib2/pk-enum.h
@@ -718,6 +718,19 @@ typedef enum {
 	PK_AUTHORIZE_ENUM_LAST
 } PkAuthorizeEnum;
 
+/**
+ * PkUpgradeKindEnum:
+ *
+ * The type of distribution upgrade to perform
+ **/
+typedef enum {
+	PK_UPGRADE_KIND_ENUM_UNKNOWN,
+	PK_UPGRADE_KIND_ENUM_MINIMAL,
+	PK_UPGRADE_KIND_ENUM_DEFAULT,
+	PK_UPGRADE_KIND_ENUM_COMPLETE,
+	PK_UPGRADE_KIND_ENUM_LAST
+} PkUpgradeKindEnum;
+
 /* general */
 void		 pk_enum_test				(gpointer	 user_data);
 guint		 pk_enum_find_value			(const PkEnumMatch *table,
@@ -778,6 +791,9 @@ const gchar	*pk_media_type_enum_to_string		(PkMediaTypeEnum media_type);
 PkAuthorizeEnum  pk_authorize_type_enum_from_string	(const gchar	*authorize_type);
 const gchar	*pk_authorize_type_enum_to_string	(PkAuthorizeEnum authorize_type);
 
+PkUpgradeKindEnum  pk_upgrade_kind_enum_from_string	(const gchar	*upgrade_kind);
+const gchar	*pk_upgrade_kind_enum_to_string		(PkUpgradeKindEnum upgrade_kind);
+
 G_END_DECLS
 
 #endif /* __PK_ENUM_H */
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index 051b1fc..17b3ab9 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -1550,7 +1550,21 @@
         <doc:doc>
           <doc:summary>
             <doc:para>
-              The distro ID to upgrade to, e.g. <doc:tt>fedora-14</doc:tt>.
+              The distribution ID to upgrade to, e.g. <doc:tt>fedora-14</doc:tt>.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+      <arg type="s" name="upgrade_kind" direction="in">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The type of upgrade, e.g. <doc:tt>minimal</doc:tt>, <doc:tt>default</doc:tt> or <doc:tt>complete</doc:tt>.
+              Minimal upgrades will download the smallest amount of data
+              before launching a installer.
+              The default is to download enough data to launch a full
+              graphical installer, but a complete upgrade will be
+              required if there is no internet access during install time.
             </doc:para>
           </doc:summary>
         </doc:doc>
diff --git a/src/pk-backend.c b/src/pk-backend.c
index cbb70cd..3a5e449 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -3439,13 +3439,14 @@ pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
  * pk_backend_upgrade_system:
  */
 void
-pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id, PkUpgradeKindEnum upgrade_kind)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
 	g_return_if_fail (backend->priv->desc->upgrade_system != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_UPGRADE_SYSTEM);
 	pk_store_set_string (backend->priv->store, "distro_id", distro_id);
-	backend->priv->desc->upgrade_system (backend, distro_id);
+	pk_store_set_uint (backend->priv->store, "upgrade_kind", upgrade_kind);
+	backend->priv->desc->upgrade_system (backend, distro_id, upgrade_kind);
 }
 
 /**
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 8f5c6bb..9e754a5 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -190,7 +190,8 @@ void		pk_backend_simulate_remove_packages	(PkBackend	*backend,
 void		pk_backend_simulate_update_packages	(PkBackend	*backend,
 							 gchar		**package_ids);
 void		pk_backend_upgrade_system		(PkBackend	*backend,
-							 const gchar	*distro_id);
+							 const gchar	*distro_id,
+							 PkUpgradeKindEnum upgrade_kind);
 
 /* set the state */
 gboolean	 pk_backend_accept_eula			(PkBackend	*backend,
@@ -464,7 +465,8 @@ typedef struct {
 	void		(*transaction_start)		(PkBackend	*backend);
 	void		(*transaction_stop)		(PkBackend	*backend);
 	void		(*upgrade_system)		(PkBackend	*backend,
-							 const gchar	*distro_id);
+							 const gchar	*distro_id,
+							 PkUpgradeKindEnum upgrade_kind);
 	gpointer	padding[7];
 } PkBackendDesc;
 
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 7849c29..2fc5921 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -2022,7 +2022,7 @@ pk_transaction_set_running (PkTransaction *transaction)
 			pk_backend_get_depends (priv->backend, filters, priv->cached_package_ids, TRUE);
 		}
 	} else if (priv->role == PK_ROLE_ENUM_UPGRADE_SYSTEM) {
-		pk_backend_upgrade_system (priv->backend, priv->cached_value);
+		pk_backend_upgrade_system (priv->backend, priv->cached_value, priv->cached_provides);
 	} else {
 		g_error ("failed to run as role not assigned");
 		ret = FALSE;
@@ -5431,15 +5431,16 @@ pk_transaction_what_provides (PkTransaction *transaction, const gchar *filter, c
  * pk_transaction_upgrade_system:
  **/
 void
-pk_transaction_upgrade_system (PkTransaction *transaction, const gchar *distro_id, DBusGMethodInvocation *context)
+pk_transaction_upgrade_system (PkTransaction *transaction, const gchar *distro_id, const gchar *upgrade_kind_str, DBusGMethodInvocation *context)
 {
 	gboolean ret;
 	GError *error = NULL;
+	PkUpgradeKindEnum upgrade_kind;
 
 	g_return_if_fail (PK_IS_TRANSACTION (transaction));
 	g_return_if_fail (transaction->priv->tid != NULL);
 
-	g_debug ("UpgradeSystem method called: %s", distro_id);
+	g_debug ("UpgradeSystem method called: %s (%s)", distro_id, upgrade_kind_str);
 
 	/* not implemented yet */
 	if (!pk_backend_is_implemented (transaction->priv->backend, PK_ROLE_ENUM_UPGRADE_SYSTEM)) {
@@ -5458,8 +5459,19 @@ pk_transaction_upgrade_system (PkTransaction *transaction, const gchar *distro_i
 		return;
 	}
 
+	/* check upgrade kind */
+	upgrade_kind = pk_upgrade_kind_enum_from_string (upgrade_kind_str);
+	if (upgrade_kind == PK_UPGRADE_KIND_ENUM_UNKNOWN) {
+		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INVALID_PROVIDE,
+				     "upgrade kind '%s' not found", upgrade_kind_str);
+		pk_transaction_release_tid (transaction);
+		pk_transaction_dbus_return_error (context, error);
+		return;
+	}
+
 	/* save so we can run later */
 	transaction->priv->cached_value = g_strdup (distro_id);
+	transaction->priv->cached_provides = upgrade_kind;
 	pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPGRADE_SYSTEM);
 
 	/* try to get authorization */
diff --git a/src/pk-transaction.h b/src/pk-transaction.h
index 78ab889..99b271f 100644
--- a/src/pk-transaction.h
+++ b/src/pk-transaction.h
@@ -238,6 +238,7 @@ void		 pk_transaction_what_provides			(PkTransaction	*transaction,
 								 DBusGMethodInvocation *context);
 void		 pk_transaction_upgrade_system			(PkTransaction	*transaction,
 								 const gchar	*distro_id,
+								 const gchar	*upgrade_kind_str,
 								 DBusGMethodInvocation *context);
 gboolean	 pk_transaction_filter_check			(const gchar	*filter,
 								 GError		**error);
commit 1db1066c962d5206595fb85290894075b2f576dd
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 5 16:03:13 2010 +0000

    trivial: Add the python stub for upgrade-system

diff --git a/lib/python/packagekit/backend.py b/lib/python/packagekit/backend.py
index e89d174..b679425 100644
--- a/lib/python/packagekit/backend.py
+++ b/lib/python/packagekit/backend.py
@@ -396,6 +396,13 @@ class PackageKitBaseBackend:
         '''
         self.error(ERROR_NOT_SUPPORTED, "This function is not implemented in this backend", exit=False)
 
+    def upgrade_system(self, distro_id):
+        '''
+        Implement the {backend}-update-system functionality
+        Needed to be implemented in a sub class
+        '''
+        self.error(ERROR_NOT_SUPPORTED, "This function is not implemented in this backend", exit=False)
+
     def refresh_cache(self, force):
         '''
         Implement the {backend}-refresh_cache functionality
@@ -720,6 +727,9 @@ class PackageKitBaseBackend:
             package_ids = args[0].split(PACKAGE_IDS_DELIM)
             self.simulate_update_packages(package_ids)
             self.finished()
+        elif cmd == 'upgrade-system':
+            self.upgrade_system(args[0])
+            self.finished()
         else:
             errmsg = "command '%s' is not known" % cmd
             self.error(ERROR_INTERNAL_ERROR, errmsg, exit=False)
commit 34ef28651238dfcf4e99b9cfa3279c79e67ca003
Merge: 91364f6... 53940d7...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Nov 4 11:36:09 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 91364f689683b180f3d6df99bb65f6b0a0374b03
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Thu Nov 4 11:28:24 2010 -0200

    aptcc: Ported away from PK_BACKEND_OPTIONS

diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index c46e1c8..d52b434 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -42,10 +42,28 @@ static bool _cancel = false;
 static PkBackendSpawn *spawn;
 
 /**
- * backend_initialize:
+ * pk_backend_get_description:
  */
-static void
-backend_initialize (PkBackend *backend)
+gchar *
+pk_backend_get_description (PkBackend *backend)
+{
+	return g_strdup ("APTcc");
+}
+
+/**
+ * pk_backend_get_author:
+ */
+gchar *
+pk_backend_get_author (PkBackend *backend)
+{
+	return g_strdup ("Daniel Nicoletti <dantti85-pk at yahoo.com.br>");
+}
+
+/**
+ * pk_backend_initialize:
+ */
+void
+pk_backend_initialize (PkBackend *backend)
 {
 	g_debug ("APTcc Initializing");
 
@@ -60,19 +78,19 @@ backend_initialize (PkBackend *backend)
 }
 
 /**
- * backend_destroy:
+ * pk_backend_destroy:
  */
-static void
-backend_destroy (PkBackend *backend)
+void
+pk_backend_destroy (PkBackend *backend)
 {
 	g_debug ("APTcc being destroyed");
 }
 
 /**
- * backend_get_groups:
+ * pk_backend_get_groups:
  */
-static PkBitfield
-backend_get_groups (PkBackend *backend)
+PkBitfield
+pk_backend_get_groups (PkBackend *backend)
 {
 	return pk_bitfield_from_enums (
 		PK_GROUP_ENUM_ACCESSORIES,
@@ -100,10 +118,10 @@ backend_get_groups (PkBackend *backend)
 }
 
 /**
- * backend_get_filters:
+ * pk_backend_get_filters:
  */
-static PkBitfield
-backend_get_filters (PkBackend *backend)
+PkBitfield
+pk_backend_get_filters (PkBackend *backend)
 {
 	return pk_bitfield_from_enums (
 		PK_FILTER_ENUM_GUI,
@@ -114,19 +132,19 @@ backend_get_filters (PkBackend *backend)
 }
 
 /**
- * backend_get_mime_types:
+ * pk_backend_get_mime_types:
  */
-static gchar *
-backend_get_mime_types (PkBackend *backend)
+gchar *
+pk_backend_get_mime_types (PkBackend *backend)
 {
 	return g_strdup ("application/x-deb");
 }
 
 /**
- * backend_cancel:
+ * pk_backend_cancel:
  */
-static void
-backend_cancel (PkBackend *backend)
+void
+pk_backend_cancel (PkBackend *backend)
 {
 	aptcc *m_apt = (aptcc*) pk_backend_get_pointer(backend, "aptcc_obj");
 	if (m_apt) {
@@ -203,10 +221,10 @@ backend_get_depends_or_requires_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_depends:
+ * pk_backend_get_depends:
  */
-static void
-backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+void
+pk_backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	pk_backend_set_bool (backend, "get_depends", true);
 	pk_backend_set_bool (backend, "recursive", recursive);
@@ -214,10 +232,10 @@ backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids
 }
 
 /**
- * backend_get_requires:
+ * pk_backend_get_requires:
  */
-static void
-backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+void
+pk_backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	pk_backend_set_bool (backend, "get_depends", false);
 	pk_backend_set_bool (backend, "recursive", recursive);
@@ -225,10 +243,10 @@ backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_id
 }
 
 /**
- * backend_get_distro_upgrades:
+ * pk_backend_get_distro_upgrades:
  */
-static void
-backend_get_distro_upgrades (PkBackend *backend)
+void
+pk_backend_get_distro_upgrades (PkBackend *backend)
 {
 	pk_backend_spawn_helper (spawn, "get-distro-upgrade.py", "get-distro-upgrades", NULL);
 }
@@ -288,10 +306,10 @@ backend_get_files_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_files:
+ * pk_backend_get_files:
  */
-static void
-backend_get_files (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_files (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_get_files_thread);
 }
@@ -365,20 +383,20 @@ backend_get_details_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_update_detail:
+ * pk_backend_get_update_detail:
  */
-static void
-backend_get_update_detail (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_set_bool (backend, "updateDetail", true);
 	pk_backend_thread_create (backend, backend_get_details_thread);
 }
 
 /**
- * backend_get_details:
+ * pk_backend_get_details:
  */
-static void
-backend_get_details (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_details (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_set_bool (backend, "updateDetail", false);
 	pk_backend_thread_create (backend, backend_get_details_thread);
@@ -466,20 +484,20 @@ backend_get_or_update_system_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_updates:
+ * pk_backend_get_updates:
  */
-static void
-backend_get_updates (PkBackend *backend, PkBitfield filters)
+void
+pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
 {
 	pk_backend_set_bool (backend, "getUpdates", true);
 	pk_backend_thread_create (backend, backend_get_or_update_system_thread);
 }
 
 /**
- * backend_update_system:
+ * pk_backend_update_system:
  */
-static void
-backend_update_system (PkBackend *backend, gboolean only_trusted)
+void
+pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
 {
 	pk_backend_set_bool (backend, "getUpdates", false);
 	pk_backend_thread_create (backend, backend_get_or_update_system_thread);
@@ -575,10 +593,10 @@ backend_what_provides_thread (PkBackend *backend)
 }
 
 /**
-  * backend_what_provides
+  * pk_backend_what_provides
   */
-static void
-backend_what_provides (PkBackend *backend,
+void
+pk_backend_what_provides (PkBackend *backend,
 		       PkBitfield filters,
 		       PkProvidesEnum provide,
 		       gchar **values)
@@ -587,10 +605,10 @@ backend_what_provides (PkBackend *backend,
 }
 
 /**
- * backend_download_packages_thread:
+ * pk_backend_download_packages_thread:
  */
 static gboolean
-backend_download_packages_thread (PkBackend *backend)
+pk_backend_download_packages_thread (PkBackend *backend)
 {
 	gchar **package_ids;
 	string directory;
@@ -706,19 +724,19 @@ backend_download_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_download_packages:
+ * pk_backend_download_packages:
  */
-static void
-backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
+void
+pk_backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
 {
-	pk_backend_thread_create (backend, backend_download_packages_thread);
+	pk_backend_thread_create (backend, pk_backend_download_packages_thread);
 }
 
 /**
- * backend_refresh_cache_thread:
+ * pk_backend_refresh_cache_thread:
  */
 static gboolean
-backend_refresh_cache_thread (PkBackend *backend)
+pk_backend_refresh_cache_thread (PkBackend *backend)
 {
 	pk_backend_set_allow_cancel (backend, true);
 
@@ -775,17 +793,17 @@ backend_refresh_cache_thread (PkBackend *backend)
 }
 
 /**
- * backend_refresh_cache:
+ * pk_backend_refresh_cache:
  */
-static void
-backend_refresh_cache (PkBackend *backend, gboolean force)
+void
+pk_backend_refresh_cache (PkBackend *backend, gboolean force)
 {
-	pk_backend_thread_create (backend, backend_refresh_cache_thread);
+	pk_backend_thread_create (backend, pk_backend_refresh_cache_thread);
 }
 
 
 static gboolean
-backend_resolve_thread (PkBackend *backend)
+pk_backend_resolve_thread (PkBackend *backend)
 {
 	gchar **package_ids;
 	PkBitfield filters;
@@ -854,16 +872,16 @@ backend_resolve_thread (PkBackend *backend)
 }
 
 /**
- * backend_resolve:
+ * pk_backend_resolve:
  */
-static void
-backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
+void
+pk_backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
 {
-	pk_backend_thread_create (backend, backend_resolve_thread);
+	pk_backend_thread_create (backend, pk_backend_resolve_thread);
 }
 
 static gboolean
-backend_search_files_thread (PkBackend *backend)
+pk_backend_search_files_thread (PkBackend *backend)
 {
 	gchar **values;
 	PkBitfield filters;
@@ -912,12 +930,12 @@ backend_search_files_thread (PkBackend *backend)
 }
 
 /**
- * backend_search_files:
+ * pk_backend_search_files:
  */
-static void
-backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 {
-	pk_backend_thread_create (backend, backend_search_files_thread);
+	pk_backend_thread_create (backend, pk_backend_search_files_thread);
 }
 
 static gboolean
@@ -996,10 +1014,10 @@ backend_search_groups_thread (PkBackend *backend)
 }
 
 /**
- * backend_search_groups:
+ * pk_backend_search_groups:
  */
-static void
-backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_thread_create (backend, backend_search_groups_thread);
 }
@@ -1156,20 +1174,20 @@ backend_search_package_thread (PkBackend *backend)
 }
 
 /**
- * backend_search_names:
+ * pk_backend_search_names:
  */
-static void
-backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_set_bool(backend, "search_details", false);
 	pk_backend_thread_create(backend, backend_search_package_thread);
 }
 
 /**
- * backend_search_details:
+ * pk_backend_search_details:
  */
-static void
-backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_set_bool(backend, "search_details", true);
 	pk_backend_thread_create(backend, backend_search_package_thread);
@@ -1246,10 +1264,10 @@ backend_manage_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_install_update_packages:
+ * pk_backend_install_packages:
  */
-static void
-backend_install_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
+void
+pk_backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	pk_backend_set_bool(backend, "simulate", false);
 	pk_backend_set_bool(backend, "remove", false);
@@ -1257,10 +1275,21 @@ backend_install_update_packages (PkBackend *backend, gboolean only_trusted, gcha
 }
 
 /**
- * backend_simulate_install_update_packages:
+ * pk_backend_update_packages:
  */
-static void
-backend_simulate_install_update_packages (PkBackend *backend, gchar **packages)
+void
+pk_backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
+{
+	pk_backend_set_bool(backend, "simulate", false);
+	pk_backend_set_bool(backend, "remove", false);
+	pk_backend_thread_create (backend, backend_manage_packages_thread);
+}
+
+/**
+ * pk_backend_simulate_install_packages:
+ */
+void
+pk_backend_simulate_install_packages (PkBackend *backend, gchar **packages)
 {
 	pk_backend_set_bool(backend, "simulate", true);
 	pk_backend_set_bool(backend, "remove", false);
@@ -1268,10 +1297,21 @@ backend_simulate_install_update_packages (PkBackend *backend, gchar **packages)
 }
 
 /**
- * backend_remove_packages:
+ * pk_backend_simulate_update_packages:
  */
-static void
-backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
+void
+pk_backend_simulate_update_packages (PkBackend *backend, gchar **packages)
+{
+	pk_backend_set_bool(backend, "simulate", true);
+	pk_backend_set_bool(backend, "remove", false);
+	pk_backend_thread_create (backend, backend_manage_packages_thread);
+}
+
+/**
+ * pk_backend_remove_packages:
+ */
+void
+pk_backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
 	pk_backend_set_bool(backend, "simulate", false);
 	pk_backend_set_bool(backend, "remove", true);
@@ -1279,10 +1319,10 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
 }
 
 /**
- * backend_simulate_remove_packages:
+ * pk_backend_simulate_remove_packages:
  */
-static void
-backend_simulate_remove_packages (PkBackend *backend, gchar **packages, gboolean autoremove)
+void
+pk_backend_simulate_remove_packages (PkBackend *backend, gchar **packages, gboolean autoremove)
 {
 	pk_backend_set_bool(backend, "simulate", true);
 	pk_backend_set_bool(backend, "remove", true);
@@ -1394,20 +1434,20 @@ backend_repo_manager_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_repo_list:
+ * pk_backend_get_repo_list:
  */
-static void
-backend_get_repo_list (PkBackend *backend, PkBitfield filters)
+void
+pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
 	pk_backend_set_bool(backend, "list", true);
 	pk_backend_thread_create(backend, backend_repo_manager_thread);
 }
 
 /**
- * backend_repo_enable:
+ * pk_backend_repo_enable:
  */
-static void
-backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
+void
+pk_backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
 {
 	pk_backend_set_bool(backend, "list", false);
 	pk_backend_thread_create(backend, backend_repo_manager_thread);
@@ -1459,57 +1499,10 @@ backend_get_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_packages:
+ * pk_backend_get_packages:
  */
-static void
-backend_get_packages (PkBackend *backend, PkBitfield filter)
+void
+pk_backend_get_packages (PkBackend *backend, PkBitfield filter)
 {
 	pk_backend_thread_create (backend, backend_get_packages_thread);
 }
-
-/* FIXME: port this away from PK_BACKEND_OPTIONS */
-extern "C" PK_BACKEND_OPTIONS (
-	"APTcc",					/* description */
-	"Daniel Nicoletti <dantti85-pk at yahoo.com.br>",	/* author */
-	backend_initialize,	        		/* initalize */
-	backend_destroy,				/* destroy */
-	backend_get_groups,				/* get_groups */
-	backend_get_filters,				/* get_filters */
-	NULL,						/* get_roles */
-	backend_get_mime_types,				/* get_mime_types */
-	backend_cancel,					/* cancel */
-	backend_download_packages,			/* download_packages */
-	NULL,						/* get_categories */
-	backend_get_depends,				/* get_depends */
-	backend_get_details,				/* get_details */
-	backend_get_distro_upgrades,			/* get_distro_upgrades */
-	backend_get_files,				/* get_files */
-	backend_get_packages,				/* get_packages */
-	backend_get_repo_list,				/* get_repo_list */
-	backend_get_requires,				/* get_requires */
-	backend_get_update_detail,			/* get_update_detail */
-	backend_get_updates,				/* get_updates */
-	NULL,						/* install_files */
-	backend_install_update_packages,		/* install_packages */
-	NULL,						/* install_signature */
-	backend_refresh_cache,				/* refresh_cache */
-	backend_remove_packages,			/* remove_packages */
-	backend_repo_enable,				/* repo_enable */
-	NULL,						/* repo_set_data */
-	backend_resolve,				/* resolve */
-	NULL,						/* rollback */
-	backend_search_details,				/* search_details */
-	backend_search_files,				/* search_files */
-	backend_search_groups,				/* search_groups */
-	backend_search_names,				/* search_names */
-	backend_install_update_packages,		/* update_packages */
-	backend_update_system,				/* update_system */
-	backend_what_provides,				/* what_provides */
-	NULL,						/* simulate_install_files */
-	backend_simulate_install_update_packages,	/* simulate_install_packages */
-	backend_simulate_remove_packages,		/* simulate_remove_packages */
-	backend_simulate_install_update_packages,	/* simulate_update_packages */
-	NULL,						/* upgrade_system */
-	NULL,						/* transaction_start */
-	NULL						/* transaction_stop */
-);
commit 53940d7011c4ae151874e5a5dbd46753de5d389b
Author: Duncan Mac-Vicar P <dmacvicar at suse.de>
Date:   Thu Nov 4 13:26:21 2010 +0100

    move away from PK_BACKEND_OPTIONS function table and use the
    standard name convention that PK will resolve using GModule.
    
    pkcon get-roles shows no changes

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index f8f83fa..6f6fd7f 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -76,11 +76,32 @@ static std::map<PkBackend *, EventDirector *> _eventDirectors;
 std::map<PkBackend *, std::vector<std::string> *> _signatures;
 
 /**
- * backend_initialize:
+ * pk_backend_get_description:
+ */
+gchar *
+pk_backend_get_description (PkBackend *backend)
+{
+	return g_strdup ("ZYpp package manager");
+}
+
+/**
+ * pk_backend_get_author:
+ */
+gchar *
+pk_backend_get_author (PkBackend *backend)
+{
+	return g_strdup ("Boyd Timothy <btimothy at gmail.com>, "
+			 "Scott Reeves <sreeves at novell.com>, "
+			 "Stefan Haas <shaas at suse.de>"
+			 "ZYpp developers <zypp-devel at opensuse.org>");
+}
+
+/**
+ * pk_backend_initialize:
  * This should only be run once per backend load, i.e. not every transaction
  */
-static void
-backend_initialize (PkBackend *backend)
+void
+pk_backend_initialize (PkBackend *backend)
 {
 	zypp_logging ();
 //	disabled get_zypp() - too slow for a dbus timeout after zypper clean -a
@@ -93,11 +114,11 @@ backend_initialize (PkBackend *backend)
 }
 
 /**
- * backend_destroy:
+ * pk_backend_destroy:
  * This should only be run once per backend load, i.e. not every transaction
  */
-static void
-backend_destroy (PkBackend *backend)
+void
+pk_backend_destroy (PkBackend *backend)
 {
 	g_debug ("zypp_backend_destroy");
 
@@ -207,19 +228,19 @@ backend_get_requires_thread (PkBackend *backend)
 }
 
 /**
-  * backend_get_requires:
+  * pk_backend_get_requires:
   */
-static void
-backend_get_requires(PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+void
+pk_backend_get_requires(PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	pk_backend_thread_create (backend, backend_get_requires_thread);
 }
 
 /**
- * backend_get_groups:
+ * pk_backend_get_groups:
  */
-static PkBitfield
-backend_get_groups (PkBackend *backend)
+PkBitfield
+pk_backend_get_groups (PkBackend *backend)
 {
 	return pk_bitfield_from_enums (
 		PK_GROUP_ENUM_ADMIN_TOOLS,
@@ -243,10 +264,10 @@ backend_get_groups (PkBackend *backend)
 }
 
 /**
- * backend_get_filters:
+ * pk_backend_get_filters:
  */
-static PkBitfield
-backend_get_filters (PkBackend *backend)
+PkBitfield
+pk_backend_get_filters (PkBackend *backend)
 {
 	return pk_bitfield_from_enums (
 		PK_FILTER_ENUM_INSTALLED,
@@ -407,7 +428,7 @@ backend_get_depends_thread (PkBackend *backend)
 
 			g_debug ("add dep - '%s' '%s' %d [%s]", it->second.name().c_str(),
 				   info == PK_INFO_ENUM_INSTALLED ? "installed" : "available",
-				   it->second.isSystem(), 
+				   it->second.isSystem(),
 				   zypp_filter_solvable (_filters, it->second) ? "don't add" : "add" );
 
 			if (!zypp_filter_solvable (_filters, it->second)) {
@@ -430,10 +451,10 @@ backend_get_depends_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_depends:
+ * pk_backend_get_depends:
  */
-static void
-backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
+void
+pk_backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	pk_backend_thread_create (backend, backend_get_depends_thread);
 }
@@ -532,10 +553,10 @@ backend_get_details_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_details:
+ * pk_backend_get_details:
  */
-static void
-backend_get_details (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_details (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_get_details_thread);
 }
@@ -580,10 +601,10 @@ backend_get_distro_upgrades_thread(PkBackend *backend)
 }
 
 /**
- * backend_get_distro_upgrades:
+ * pk_backend_get_distro_upgrades:
  */
-static void
-backend_get_distro_upgrades (PkBackend *backend)
+void
+pk_backend_get_distro_upgrades (PkBackend *backend)
 {
 	pk_backend_thread_create (backend, backend_get_distro_upgrades_thread);
 }
@@ -598,10 +619,10 @@ backend_refresh_cache_thread (PkBackend *backend)
 }
 
 /**
- * backend_refresh_cache
+ * pk_backend_refresh_cache
  */
-static void
-backend_refresh_cache (PkBackend *backend, gboolean force)
+void
+pk_backend_refresh_cache (PkBackend *backend, gboolean force)
 {
 	pk_backend_thread_create (backend, backend_refresh_cache_thread);
 }
@@ -696,10 +717,10 @@ backend_get_updates_thread (PkBackend *backend)
 }
 
 /**
- * backend_get_updates
+ * pk_backend_get_updates
  */
-static void
-backend_get_updates (PkBackend *backend, PkBitfield filters)
+void
+pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
 {
 	pk_backend_thread_create (backend, backend_get_updates_thread);
 }
@@ -819,19 +840,19 @@ backend_install_files_thread (PkBackend *backend)
 }
 
 /**
-  * backend_install_files
+  * pk_backend_install_files
   */
-static void
-backend_install_files (PkBackend *backend, gboolean only_trusted, gchar **full_paths)
+void
+pk_backend_install_files (PkBackend *backend, gboolean only_trusted, gchar **full_paths)
 {
 	pk_backend_thread_create (backend, backend_install_files_thread);
 }
 
 /**
-  * backend_simulate_install_files
+  * pk_backend_simulate_install_files
   */
-static void
-backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
+void
+pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
 {
 	pk_backend_thread_create (backend, backend_install_files_thread);
 }
@@ -919,10 +940,10 @@ backend_get_update_detail_thread (PkBackend *backend)
 }
 
 /**
-  * backend_get_update_detail
+  * pk_backend_get_update_detail
   */
-static void
-backend_get_update_detail (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_get_update_detail_thread);
 }
@@ -970,10 +991,10 @@ backend_update_system_thread (PkBackend *backend)
 }
 
 /**
- * backend_update_system
+ * pk_backend_update_system
  */
-static void
-backend_update_system (PkBackend *backend, gboolean only_trusted)
+void
+pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
 {
 	pk_backend_thread_create (backend, backend_update_system_thread);
 }
@@ -1032,7 +1053,7 @@ backend_install_packages_thread (PkBackend *backend)
 					break;
 				}
 			}
-			
+
 			if (!system) {
 				gboolean hit = false;
 
@@ -1094,10 +1115,10 @@ backend_install_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_install_packages:
+ * pk_backend_install_packages:
  */
-static void
-backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
+void
+pk_backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	// For now, don't let the user cancel the install once it's started
 	pk_backend_set_allow_cancel (backend, FALSE);
@@ -1105,10 +1126,10 @@ backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **pac
 }
 
 /**
- * backend_simulate_install_packages:
+ * pk_backend_simulate_install_packages:
  */
-static void
-backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_install_packages_thread);
 }
@@ -1126,10 +1147,10 @@ backend_install_signature_thread (PkBackend *backend)
 }
 
 /**
- * backend_install_signature:
+ * pk_backend_install_signature:
  */
-static void
-backend_install_signature (PkBackend *backend, PkSigTypeEnum type, const gchar *key_id, const gchar *package_id)
+void
+pk_backend_install_signature (PkBackend *backend, PkSigTypeEnum type, const gchar *key_id, const gchar *package_id)
 {
 	pk_backend_thread_create (backend, backend_install_signature_thread);
 }
@@ -1205,16 +1226,16 @@ backend_remove_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_remove_packages:
+ * pk_backend_remove_packages:
  */
-static void
-backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
+void
+pk_backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
 	pk_backend_thread_create (backend, backend_remove_packages_thread);
 }
 
-static void
-backend_simulate_remove_packages (PkBackend *backend, gchar **packages, gboolean autoremove)
+void
+pk_backend_simulate_remove_packages (PkBackend *backend, gchar **packages, gboolean autoremove)
 {
 	pk_backend_thread_create (backend, backend_remove_packages_thread);
 }
@@ -1288,10 +1309,10 @@ backend_resolve_thread (PkBackend *backend)
 }
 
 /**
- * backend_resolve:
+ * pk_backend_resolve:
  */
-static void
-backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
+void
+pk_backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_resolve_thread);
 }
@@ -1360,20 +1381,20 @@ backend_find_packages_thread (PkBackend *backend)
 }
 
 /**
- * backend_search_name:
+ * pk_backend_search_name:
  */
-static void
-backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_set_uint (backend, "mode", SEARCH_TYPE_NAME);
 	pk_backend_thread_create (backend, backend_find_packages_thread);
 }
 
 /**
- * backend_search_details:
+ * pk_backend_search_details:
  */
-static void
-backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_set_uint (backend, "mode", SEARCH_TYPE_DETAILS);
 	pk_backend_thread_create (backend, backend_find_packages_thread);
@@ -1421,19 +1442,19 @@ backend_search_group_thread (PkBackend *backend)
 }
 
 /**
- * backend_search_group:
+ * pk_backend_search_group:
  */
-static void
-backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_thread_create (backend, backend_search_group_thread);
 }
 
 /**
- * backend_search_file:
+ * pk_backend_search_file:
  */
-static void
-backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
+void
+pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	pk_backend_set_uint (backend, "mode", SEARCH_TYPE_FILE);
 	pk_backend_thread_create (backend, backend_find_packages_thread);
@@ -1442,8 +1463,8 @@ backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 /**
  * backend_get_repo_list:
  */
-static void
-backend_get_repo_list (PkBackend *backend, PkBitfield filters)
+void
+pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
 	//FIXME - use the new param - filter
 
@@ -1480,10 +1501,10 @@ backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 }
 
 /**
- * backend_repo_enable:
+ * pk_backend_repo_enable:
  */
-static void
-backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
+void
+pk_backend_repo_enable (PkBackend *backend, const gchar *rid, gboolean enabled)
 {
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
@@ -1584,10 +1605,10 @@ backend_get_files_thread (PkBackend *backend)
 }
 
 /**
-  * backend_get_files:
+  * pk_backend_get_files:
   */
-static void
-backend_get_files(PkBackend *backend, gchar **package_ids)
+void
+pk_backend_get_files(PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_get_files_thread);
 }
@@ -1611,10 +1632,10 @@ backend_get_packages_thread (PkBackend *backend)
 	return TRUE;
 }
 /**
-  * backend_get_packages:
+  * pk_backend_get_packages:
   */
-static void
-backend_get_packages (PkBackend *backend, PkBitfield filter)
+void
+pk_backend_get_packages (PkBackend *backend, PkBitfield filter)
 {
 	pk_backend_thread_create (backend, backend_get_packages_thread);
 }
@@ -1652,7 +1673,7 @@ backend_update_packages_thread (PkBackend *backend)
 				break;
 			}
 		}
-		if (system == true) 
+		if (system == true)
 			continue;
 		zypp::sat::Solvable solvable = zypp_get_package_by_id (backend, package_ids[i]);
 		zypp::PoolItem item = zypp::ResPool::instance ().find (solvable);
@@ -1671,19 +1692,19 @@ backend_update_packages_thread (PkBackend *backend)
 }
 
 /**
-  * backend_update_packages
+  * pk_backend_update_packages
   */
-static void
-backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
+void
+pk_backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_update_packages_thread);
 }
 
 /**
-  * backend_simulate_update_packages
+  * pk_backend_simulate_update_packages
   */
-static void
-backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
+void
+pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_thread_create (backend, backend_update_packages_thread);
 }
@@ -1814,10 +1835,10 @@ backend_repo_set_data_thread (PkBackend *backend)
 }
 
 /**
-  * backend_repo_set_data
+  * pk_backend_repo_set_data
   */
-static void
-backend_repo_set_data (PkBackend *backend, const gchar *repo_id, const gchar *parameter, const gchar *value)
+void
+pk_backend_repo_set_data (PkBackend *backend, const gchar *repo_id, const gchar *parameter, const gchar *value)
 {
 	pk_backend_thread_create (backend, backend_repo_set_data_thread);
 }
@@ -1873,7 +1894,7 @@ backend_what_provides_thread (PkBackend *backend)
 		for (zypp::sat::WhatProvides::const_iterator it = prov.begin (); it != prov.end (); it++) {
 			if (zypp_filter_solvable (_filters, *it))
 				continue;
-			
+
 			PkInfoEnum info = it->isSystem () ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE;
 			zypp_backend_package (backend, info, *it, it->lookupStrAttribute (zypp::sat::SolvAttr::summary).c_str ());
 		}
@@ -1884,25 +1905,25 @@ backend_what_provides_thread (PkBackend *backend)
 }
 
 /**
-  * backend_what_provides
+  * pk_backend_what_provides
   */
-static void
-backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provide, gchar **values)
+void
+pk_backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provide, gchar **values)
 {
 	pk_backend_thread_create (backend, backend_what_provides_thread);
 }
 
-static gchar *
-backend_get_mime_types (PkBackend *backend)
+gchar *
+pk_backend_get_mime_types (PkBackend *backend)
 {
 	return g_strdup ("application/x-rpm");
 }
 
 /**
- * backend_transaction_start:
+ * pk_backend_transaction_start:
  */
-static void
-backend_transaction_start (PkBackend *backend)
+void
+pk_backend_transaction_start (PkBackend *backend)
 {
 	gchar *proxy_http;
 	gchar *proxy_ftp;
@@ -1929,62 +1950,14 @@ backend_transaction_start (PkBackend *backend)
 }
 
 /**
- * backend_transaction_stop:
+ * pk_backend_transaction_stop:
  */
-static void
-backend_transaction_stop (PkBackend *backend)
+void
+pk_backend_transaction_stop (PkBackend *backend)
 {
 	/* unset proxy info for this transaction */
 	g_unsetenv ("http_proxy");
 	g_unsetenv ("ftp_proxy");
 }
 
-/* FIXME: port this away from PK_BACKEND_OPTIONS */
-extern "C" PK_BACKEND_OPTIONS (
-	"Zypp",					/* description */
-	"Boyd Timothy <btimothy at gmail.com>, "
-	"Scott Reeves <sreeves at novell.com>, "
-	"Stefan Haas <shaas at suse.de>",		/* author */
-	backend_initialize,			/* initalize */
-	backend_destroy,			/* destroy */
-	backend_get_groups,			/* get_groups */
-	backend_get_filters,			/* get_filters */
-	NULL,					/* get_roles */
-	backend_get_mime_types,			/* get_mime_types */
-	NULL,					/* cancel */
-	NULL,					/* download_packages */
-	NULL,					/* get_categories */
-	backend_get_depends,			/* get_depends */
-	backend_get_details,			/* get_details */
-	backend_get_distro_upgrades,		/* get_distro_upgrades */
-	backend_get_files,			/* get_files */
-	backend_get_packages,			/* get_packages */
-	backend_get_repo_list,			/* get_repo_list */
-	backend_get_requires,			/* get_requires */
-	backend_get_update_detail,		/* get_update_detail */
-	backend_get_updates,			/* get_updates */
-	backend_install_files,			/* install_files */
-	backend_install_packages,		/* install_packages */
-	backend_install_signature,		/* install_signature */
-	backend_refresh_cache,			/* refresh_cache */
-	backend_remove_packages,		/* remove_packages */
-	backend_repo_enable,			/* repo_enable */
-	backend_repo_set_data,			/* repo_set_data */
-	backend_resolve,			/* resolve */
-	NULL,					/* rollback */
-	backend_search_details,			/* search_details */
-	backend_search_files,			/* search_files */
-	backend_search_groups,			/* search_groups */
-	backend_search_names,			/* search_names */
-	backend_update_packages,		/* update_packages */
-	backend_update_system,			/* update_system */
-	backend_what_provides,			/* what_provides */
-	backend_simulate_install_files,		/* simulate_install_files */
-	backend_simulate_install_packages,	/* simulate_install_packages */
-	backend_simulate_remove_packages,	/* simulate_remove_packages */
-	backend_simulate_update_packages,	/* simulate_update_packages */
-	NULL,					/* upgrade_system */
-	backend_transaction_start,		/* transaction_start */
-	backend_transaction_stop		/* transaction_stop */
-);
 
commit 8205baee0dcfe1b742464ce22aa7329296e7339e
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Thu Nov 4 13:30:41 2010 +0800

    zypp: support repo filter in geting repo list
    
    This patch implement the repo filter feature for zypp backend.
    Typically, repo filter can be used in gpk-repo.

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index d0410ed..f8f83fa 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1465,6 +1465,8 @@ backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 	}
 
 	for (std::list <zypp::RepoInfo>::iterator it = repos.begin(); it != repos.end(); it++) {
+		if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_DEVELOPMENT) && zypp_is_development_repo (backend, *it))
+			continue;
 		// RepoInfo::alias - Unique identifier for this source.
 		// RepoInfo::name - Short label or description of the
 		// repository, to be used on the user interface
diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index e360dc5..1272754 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -150,6 +150,35 @@ zypp_is_changeable_media (PkBackend *backend, const zypp::Url &url)
 	return is_cd;
 }
 
+gboolean
+zypp_is_development_repo (PkBackend *backend, zypp::RepoInfo repo)
+{
+	std::string repo_debuginfo("-debuginfo");
+	std::string repo_debug("-debug");
+	std::string repo_development("-development");
+	std::string repo_source ("-source");
+	
+	std::string repo_name(repo.name());
+
+	if (repo_name.length() > repo_debuginfo.length() && 
+	    repo_name.compare(repo_name.length() - repo_debuginfo.length(), repo_debuginfo.length(), repo_debuginfo) == 0)
+		return TRUE;
+
+	if (repo_name.length() > repo_debug.length() && 
+	    repo_name.compare(repo_name.length() - repo_debug.length(), repo_debug.length(), repo_debug) == 0)
+		return TRUE;
+
+	if (repo_name.length() > repo_development.length() && 
+	    repo_name.compare(repo_name.length() - repo_development.length(), repo_development.length(), repo_development) == 0)
+		return TRUE;
+
+	if (repo_name.length() > repo_source.length() && 
+	   repo_name.compare(repo_name.length() - repo_source.length(), repo_source.length(), repo_source) == 0)
+		return TRUE;
+
+	return FALSE;
+}
+
 zypp::ResPool
 zypp_build_pool (PkBackend *backend, gboolean include_local)
 {
diff --git a/backends/zypp/zypp-utils.h b/backends/zypp/zypp-utils.h
index 95d084c..815f594 100644
--- a/backends/zypp/zypp-utils.h
+++ b/backends/zypp/zypp-utils.h
@@ -85,6 +85,8 @@ gboolean zypp_logging ();
 
 gboolean zypp_is_changeable_media (PkBackend *backend, const zypp::Url &url);
 
+gboolean zypp_is_development_repo (PkBackend *backend, zypp::RepoInfo repo);
+
 /**
  * Build and return a ResPool that contains all local resolvables
  * and ones found in the enabled repositories.
commit 5907efa0f3f73b7575d38d8fc86d1c87c0aa13b7
Author: Zhang Qiang <qiang.z.zhang at intel.com>
Date:   Thu Nov 4 13:08:59 2010 +0800

    Always show update a package even if already update
    
    zypp backend: when execute pkcon update, pkcon update always show the
    specified packages need to update, even if it's already updated. This
    patch fix this issue, and check the package if it's needed to update.

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index b180bbd..d0410ed 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1622,6 +1622,7 @@ backend_update_packages_thread (PkBackend *backend)
 {
 	gboolean retval;
 	gchar **package_ids;
+	zypp::ResPool pool = zypp_build_pool (backend, TRUE);
 	/* FIXME: support only_trusted */
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	PkRestartEnum restart = PK_RESTART_ENUM_NONE;
@@ -1634,6 +1635,23 @@ backend_update_packages_thread (PkBackend *backend)
 		_updating_self = FALSE;
 	}
 	for (guint i = 0; package_ids[i]; i++) {
+		gchar **id_parts = pk_package_id_split (package_ids[i]);
+		std::string name = id_parts[PK_PACKAGE_ID_NAME];
+
+		// Do we have already the latest version.
+		gboolean system = false;
+		for (zypp::ResPool::byName_iterator it = pool.byNameBegin (name);
+				it != pool.byNameEnd (name); it++) {
+			if (!it->satSolvable().isSystem())
+				continue;
+			if (zypp_ver_and_arch_equal (it->satSolvable(), id_parts[PK_PACKAGE_ID_VERSION],
+						id_parts[PK_PACKAGE_ID_ARCH])) {
+				system = true;
+				break;
+			}
+		}
+		if (system == true) 
+			continue;
 		zypp::sat::Solvable solvable = zypp_get_package_by_id (backend, package_ids[i]);
 		zypp::PoolItem item = zypp::ResPool::instance ().find (solvable);
 		item.status ().setToBeInstalled (zypp::ResStatus::USER);
commit 3d8d74c6dfca3fd20fe72a788638bb4b59c23fd5
Author: Jonathan Conder <jonno dot conder at gmail dot com>
Date:   Thu Nov 4 13:30:01 2010 +1300

    pacman: prevent recursive logging

diff --git a/backends/pacman/backend-pacman.c b/backends/pacman/backend-pacman.c
index 5f11a75..6ed13a0 100644
--- a/backends/pacman/backend-pacman.c
+++ b/backends/pacman/backend-pacman.c
@@ -46,17 +46,17 @@ pacman_message_cb (const gchar *domain, GLogLevelFlags level, const gchar *messa
 	switch (level) {
 		case G_LOG_LEVEL_WARNING:
 		case G_LOG_LEVEL_MESSAGE:
-			g_warning ("pacman: %s", message);
+			/*g_warning ("pacman: %s", message);*/
 			backend_message ((PkBackend *) user_data, message);
 			break;
 
 		case G_LOG_LEVEL_INFO:
 		case G_LOG_LEVEL_DEBUG:
-			g_debug ("pacman: %s", message);
+			/*g_debug ("pacman: %s", message);*/
 			break;
 
 		default:
-			g_warning ("pacman: %s", message);
+			/*g_warning ("pacman: %s", message);*/
 			break;
 	}
 }
commit 379ca491309ac77de3b984822880fa016d0bcf9b
Merge: 41b89ee... 23910fe...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 3 17:49:58 2010 -0200

    Merge branch 'master' of gitorious.org:packagekit/packagekit

commit 41b89ee7febac04fa241acf59097cfa8d7835087
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Wed Nov 3 17:47:17 2010 -0200

    aptcc: Set the env proxy vars so that Apt::Acquire is not overwritten, fixes LP: #633008

diff --git a/backends/aptcc/apt.cpp b/backends/aptcc/apt.cpp
index c4089de..74c6dd0 100644
--- a/backends/aptcc/apt.cpp
+++ b/backends/aptcc/apt.cpp
@@ -66,8 +66,8 @@ aptcc::aptcc(PkBackend *backend, bool &cancel)
 bool aptcc::init()
 {
 	gchar *locale;
-	gchar *proxy_http;
-	gchar *proxy_ftp;
+	gchar *http_proxy;
+	gchar *ftp_proxy;
 
 	// Set PackageKit status
 	pk_backend_set_status(m_backend, PK_STATUS_ENUM_LOADING_CACHE);
@@ -84,18 +84,12 @@ bool aptcc::init()
 	}
 
 	// set http proxy
-	if (proxy_http = pk_backend_get_proxy_http(m_backend)) {
-		_config->Set("Acquire::http::Proxy", proxy_http);
-	} else {
-		_config->Set("Acquire::http::Proxy", "");
-	}
+	http_proxy = pk_backend_get_proxy_http(m_backend);
+	setenv("http_proxy", http_proxy, 1);
 
 	// set ftp proxy
-	if (proxy_ftp = pk_backend_get_proxy_ftp(m_backend)) {
-		_config->Set("Acquire::ftp::Proxy", proxy_ftp);
-	} else {
-		_config->Set("Acquire::ftp::Proxy", "");
-	}
+	ftp_proxy = pk_backend_get_proxy_ftp(m_backend);
+	setenv("ftp_proxy", ftp_proxy, 1);
 
 	packageSourceList = new pkgSourceList;
 	// Read the source list
commit 23910fe014417114908d3cbb6b8dcce5bef5d151
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 17:11:15 2010 +0000

    yum: fix compile with git master versions of Zif

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index b9dd098..58905cf 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -1637,7 +1637,11 @@ pk_backend_get_depends_thread (PkBackend *backend)
 	ZifState *state_local;
 	ZifState *state_loop;
 	ZifState *state_loop_inner;
+#ifdef ZIF_CHECK_VERSION
+	ZifDepend *require;
+#else
 	const ZifDepend *require;
+#endif
 	const gchar *id;
 	guint i, j, k;
 	guint len;
@@ -1727,12 +1731,22 @@ pk_backend_get_depends_thread (PkBackend *backend)
 			require = g_ptr_array_index (requires, k);
 
 			/* find the package providing the depend */
+#ifdef ZIF_CHECK_VERSION
+			to_array[0] = zif_depend_get_name (require);
+#else
 			to_array[0] = require->name;
+#endif
 			provides = zif_store_array_what_provides (store_array, (gchar**)to_array, state_loop_inner, &error);
 			if (provides == NULL) {
+#ifdef ZIF_CHECK_VERSION
+				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+						       "failed to find provide for %s: %s",
+						       zif_depend_get_name (require), error->message);
+#else
 				pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
 						       "failed to find provide for %s: %s",
 						       require->name, error->message);
+#endif
 				g_error_free (error);
 				goto out;
 			}
commit 237aaf7901b234fb4c45aa7dff273a77bff38a1e
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 15:32:14 2010 +0000

    dummy: add a more realistic UpgradeSystem

diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index a6fc33b..150a8c4 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -1376,16 +1376,61 @@ pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
 }
 
 
+static gboolean
+pk_backend_upgrade_system_timeout (gpointer data)
+{
+	PkBackend *backend = (PkBackend *) data;
+	if (_progress_percentage == 100) {
+		pk_backend_require_restart (backend, PK_RESTART_ENUM_SYSTEM, "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed");
+		pk_backend_finished (backend);
+		return FALSE;
+	}
+	if (_progress_percentage == 0) {
+		pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO);
+	}
+	if (_progress_percentage == 20) {
+		pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+				    "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed",
+				    "The Linux kernel (the core of the Linux operating system)");
+	}
+	if (_progress_percentage == 30) {
+		pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+				    "gtkhtml2;2.19.1-4.fc8;i386;fedora",
+				    "An HTML widget for GTK+ 2.0");
+	}
+	if (_progress_percentage == 40) {
+		pk_backend_set_allow_cancel (backend, FALSE);
+		pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+				    "powertop;1.8-1.fc8;i386;fedora",
+				    "Power consumption monitor");
+	}
+	if (_progress_percentage == 60) {
+		pk_backend_set_allow_cancel (backend, TRUE);
+		pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+				    "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed",
+				    "The Linux kernel (the core of the Linux operating system)");
+	}
+	if (_progress_percentage == 80) {
+		pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+				    "powertop;1.8-1.fc8;i386;fedora",
+				    "Power consumption monitor");
+	}
+	_progress_percentage += 1;
+	pk_backend_set_percentage (backend, _progress_percentage);
+	pk_backend_set_sub_percentage (backend, (_progress_percentage % 10) * 10);
+	return TRUE;
+}
+
 /**
  * pk_backend_upgrade_system:
  */
 void
 pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
 {
-	pk_backend_package (backend, PK_INFO_ENUM_UPDATING,
-			    "gtkhtml2;2.19.1-4.fc8;i386;fedora", "An HTML widget for GTK+ 2.0");
-	pk_backend_require_restart (backend, PK_RESTART_ENUM_SYSTEM, "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed");
-	pk_backend_finished (backend);
+	pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD);
+	pk_backend_set_allow_cancel (backend, TRUE);
+	_progress_percentage = 0;
+	_signal_timeout = g_timeout_add (100, pk_backend_upgrade_system_timeout, backend);
 }
 
 /**
commit 644fa615935aeeaa905352312384d36abc794fef
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 11:54:28 2010 +0000

    Use PolicyKit to restrict the UpgradeSystem method to administrators

diff --git a/policy/org.freedesktop.packagekit.policy.in b/policy/org.freedesktop.packagekit.policy.in
index 7d59fb3..dbc84a1 100644
--- a/policy/org.freedesktop.packagekit.policy.in
+++ b/policy/org.freedesktop.packagekit.policy.in
@@ -233,5 +233,21 @@
     <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/pk-device-rebind</annotate>
   </action>
 
+  <action id="org.freedesktop.packagekit.upgrade-system">
+    <!-- SECURITY:
+          - Normal users require admin authentication to upgrade the disto as
+            this can make the system unbootable or stop other applications from
+            working.
+     -->
+    <_description>Remove package</_description>
+    <_message>Authentication is required to upgrade the operating system</_message>
+    <icon_name>package-x-generic</icon_name>
+    <defaults>
+      <allow_any>no</allow_any>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin</allow_active>
+    </defaults>
+  </action>
+
 </policyconfig>
 
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 737be38..7849c29 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -2466,6 +2466,9 @@ pk_transaction_role_to_action_only_trusted (PkRoleEnum role)
 		case PK_ROLE_ENUM_CANCEL:
 			policy = "org.freedesktop.packagekit.cancel-foreign";
 			break;
+		case PK_ROLE_ENUM_UPGRADE_SYSTEM:
+			policy = "org.freedesktop.packagekit.upgrade-system";
+			break;
 		default:
 			break;
 	}
@@ -5459,11 +5462,9 @@ pk_transaction_upgrade_system (PkTransaction *transaction, const gchar *distro_i
 	transaction->priv->cached_value = g_strdup (distro_id);
 	pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPGRADE_SYSTEM);
 
-	/* try to commit this */
-	ret = pk_transaction_commit (transaction);
+	/* try to get authorization */
+	ret = pk_transaction_obtain_authorization (transaction, FALSE, PK_ROLE_ENUM_UPGRADE_SYSTEM, &error);
 	if (!ret) {
-		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_COMMIT_FAILED,
-				     "Could not commit to a transaction object");
 		pk_transaction_release_tid (transaction);
 		pk_transaction_dbus_return_error (context, error);
 		return;
commit 8f93f1ae83f18c69bbcddb082067641c526e1ff4
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 10:55:53 2010 +0000

    yum: do not claim to implement the RepoSetData method

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 3209ebf..b9dd098 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -1433,7 +1433,6 @@ pk_backend_get_roles (PkBackend *backend)
 		PK_ROLE_ENUM_UPDATE_SYSTEM,
 		PK_ROLE_ENUM_GET_REPO_LIST,
 		PK_ROLE_ENUM_REPO_ENABLE,
-		PK_ROLE_ENUM_REPO_SET_DATA,
 		PK_ROLE_ENUM_GET_CATEGORIES,
 		PK_ROLE_ENUM_SIMULATE_INSTALL_FILES,
 		PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES,
commit ada939e4ab5d4a3e018b69eedd4e00417851e23b
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 10:55:01 2010 +0000

    trivial: add some asserts if backends can't do things they claim to do

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 8b183f0..cbb70cd 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -3010,6 +3010,7 @@ void
 pk_backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar *directory)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->download_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_DOWNLOAD_PACKAGES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	pk_store_set_string (backend->priv->store, "directory", directory);
@@ -3023,6 +3024,7 @@ void
 pk_backend_get_categories (PkBackend *backend)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_categories != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_CATEGORIES);
 	backend->priv->desc->get_categories (backend);
 }
@@ -3034,6 +3036,7 @@ void
 pk_backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_depends != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_DEPENDS);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
@@ -3048,6 +3051,7 @@ void
 pk_backend_get_details (PkBackend *backend, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_details != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_DETAILS);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	backend->priv->desc->get_details (backend, package_ids);
@@ -3060,6 +3064,7 @@ void
 pk_backend_get_distro_upgrades (PkBackend *backend)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_distro_upgrades != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_DISTRO_UPGRADES);
 	backend->priv->desc->get_distro_upgrades (backend);
 }
@@ -3071,6 +3076,7 @@ void
 pk_backend_get_files (PkBackend *backend, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_files != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_FILES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	backend->priv->desc->get_files (backend, package_ids);
@@ -3083,6 +3089,7 @@ void
 pk_backend_get_requires (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_requires != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_REQUIRES);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
@@ -3097,6 +3104,7 @@ void
 pk_backend_get_update_detail (PkBackend *backend, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_update_detail != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_UPDATE_DETAIL);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	backend->priv->desc->get_update_detail (backend, package_ids);
@@ -3109,6 +3117,7 @@ void
 pk_backend_get_updates (PkBackend *backend, PkBitfield filters)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_updates != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_UPDATES);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	backend->priv->desc->get_updates (backend, filters);
@@ -3121,6 +3130,7 @@ void
 pk_backend_install_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->install_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_INSTALL_PACKAGES);
 	pk_store_set_bool (backend->priv->store, "only_trusted", only_trusted);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
@@ -3135,6 +3145,7 @@ void
 pk_backend_install_signature (PkBackend *backend, PkSigTypeEnum type, const gchar *key_id, const gchar *package_id)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->install_signature != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_INSTALL_SIGNATURE);
 	pk_store_set_string (backend->priv->store, "key_id", key_id);
 	pk_store_set_string (backend->priv->store, "package_id", package_id);
@@ -3148,6 +3159,7 @@ void
 pk_backend_install_files (PkBackend *backend, gboolean only_trusted, gchar **full_paths)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->install_files != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_INSTALL_FILES);
 	pk_store_set_bool (backend->priv->store, "only_trusted", only_trusted);
 	pk_store_set_strv (backend->priv->store, "full_paths", full_paths);
@@ -3162,6 +3174,7 @@ void
 pk_backend_refresh_cache (PkBackend *backend, gboolean force)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->refresh_cache != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_REFRESH_CACHE);
 	pk_store_set_bool (backend->priv->store, "force", force);
 	backend->priv->desc->refresh_cache (backend, force);
@@ -3174,6 +3187,7 @@ void
 pk_backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow_deps, gboolean autoremove)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->remove_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_REMOVE_PACKAGES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	pk_store_set_bool (backend->priv->store, "allow_deps", allow_deps);
@@ -3189,6 +3203,7 @@ void
 pk_backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->resolve != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_RESOLVE);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
@@ -3202,6 +3217,7 @@ void
 pk_backend_rollback (PkBackend *backend, const gchar *transaction_id)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->rollback != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_ROLLBACK);
 	pk_store_set_string (backend->priv->store, "transaction_id", transaction_id);
 	backend->priv->desc->rollback (backend, transaction_id);
@@ -3214,6 +3230,7 @@ void
 pk_backend_search_details (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->search_details != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SEARCH_DETAILS);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "search", values);
@@ -3227,6 +3244,7 @@ void
 pk_backend_search_files (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->search_files != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SEARCH_FILE);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "search", values);
@@ -3240,6 +3258,7 @@ void
 pk_backend_search_groups (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->search_groups != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SEARCH_GROUP);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "search", values);
@@ -3253,6 +3272,7 @@ void
 pk_backend_search_names (PkBackend *backend, PkBitfield filters, gchar **values)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->search_names != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SEARCH_NAME);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_strv (backend->priv->store, "search", values);
@@ -3266,6 +3286,7 @@ void
 pk_backend_update_packages (PkBackend *backend, gboolean only_trusted, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->update_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_UPDATE_PACKAGES);
 	pk_store_set_bool (backend->priv->store, "only_trusted", only_trusted);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
@@ -3280,6 +3301,7 @@ void
 pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->update_system != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_UPDATE_SYSTEM);
 	pk_store_set_bool (backend->priv->store, "only_trusted", only_trusted);
 	pk_backend_set_bool (backend, "hint:simulate", FALSE);
@@ -3293,6 +3315,7 @@ void
 pk_backend_get_repo_list (PkBackend *backend, PkBitfield filters)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_repo_list != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_REPO_LIST);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	backend->priv->desc->get_repo_list (backend, filters);
@@ -3305,6 +3328,7 @@ void
 pk_backend_repo_enable (PkBackend *backend, const gchar *repo_id, gboolean enabled)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->repo_enable != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_REPO_ENABLE);
 	pk_store_set_string (backend->priv->store, "repo_id", repo_id);
 	pk_store_set_bool (backend->priv->store, "enabled", enabled);
@@ -3318,6 +3342,7 @@ void
 pk_backend_repo_set_data (PkBackend *backend, const gchar *repo_id, const gchar *parameter, const gchar *value)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->repo_set_data != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_REPO_SET_DATA);
 	pk_store_set_string (backend->priv->store, "repo_id", repo_id);
 	pk_store_set_string (backend->priv->store, "parameter", parameter);
@@ -3332,6 +3357,7 @@ void
 pk_backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum provides, gchar **values)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->what_provides != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_WHAT_PROVIDES);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	pk_store_set_uint (backend->priv->store, "provides", provides);
@@ -3346,6 +3372,7 @@ void
 pk_backend_get_packages (PkBackend *backend, PkBitfield filters)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->get_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_GET_PACKAGES);
 	pk_store_set_uint (backend->priv->store, "filters", filters);
 	backend->priv->desc->get_packages (backend, filters);
@@ -3358,6 +3385,7 @@ void
 pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->simulate_install_files != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SIMULATE_INSTALL_FILES);
 	pk_store_set_strv (backend->priv->store, "full_paths", full_paths);
 	pk_backend_set_bool (backend, "hint:simulate", TRUE);
@@ -3371,6 +3399,7 @@ void
 pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->simulate_install_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	pk_backend_set_bool (backend, "hint:simulate", TRUE);
@@ -3384,6 +3413,7 @@ void
 pk_backend_simulate_remove_packages (PkBackend *backend, gchar **package_ids, gboolean	 autoremove)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->simulate_remove_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	pk_store_set_bool (backend->priv->store, "autoremove", autoremove);
@@ -3398,6 +3428,7 @@ void
 pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->simulate_update_packages != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES);
 	pk_store_set_strv (backend->priv->store, "package_ids", package_ids);
 	pk_backend_set_bool (backend, "hint:simulate", TRUE);
@@ -3411,6 +3442,7 @@ void
 pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
 {
 	g_return_if_fail (PK_IS_BACKEND (backend));
+	g_return_if_fail (backend->priv->desc->upgrade_system != NULL);
 	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_UPGRADE_SYSTEM);
 	pk_store_set_string (backend->priv->store, "distro_id", distro_id);
 	backend->priv->desc->upgrade_system (backend, distro_id);
commit de60e3755db6620fe34f7aa303e0822f24649e4e
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Nov 3 09:48:20 2010 +0000

    glib: Add some C getters to PkDistroUpgrade

diff --git a/lib/packagekit-glib2/pk-distro-upgrade.c b/lib/packagekit-glib2/pk-distro-upgrade.c
index ad641ed..01903d6 100644
--- a/lib/packagekit-glib2/pk-distro-upgrade.c
+++ b/lib/packagekit-glib2/pk-distro-upgrade.c
@@ -46,7 +46,7 @@ static void     pk_distro_upgrade_finalize	(GObject     *object);
  **/
 struct _PkDistroUpgradePrivate
 {
-	PkUpdateStateEnum		 state;
+	PkDistroUpgradeEnum		 state;
 	gchar				*name;
 	gchar				*summary;
 };
@@ -54,7 +54,7 @@ struct _PkDistroUpgradePrivate
 enum {
 	PROP_0,
 	PROP_STATE,
-	PROP_NAME,
+	PROP_NAME,	/* FIXME: should be "ID" */
 	PROP_SUMMARY,
 	PROP_LAST
 };
@@ -62,6 +62,59 @@ enum {
 G_DEFINE_TYPE (PkDistroUpgrade, pk_distro_upgrade, PK_TYPE_SOURCE)
 
 /**
+ * pk_distro_upgrade_get_id:
+ * @distro_upgrade: a valid #PkDistroUpgrade object.
+ *
+ * Gets the distribution identifier.
+ * You use this value to call UpgradeSystem.
+ *
+ * Return value: the distro-id, e.g. "fedora-14"
+ *
+ * Since: 0.6.11
+ **/
+const gchar *
+pk_distro_upgrade_get_id (PkDistroUpgrade *distro_upgrade)
+{
+	g_return_val_if_fail (PK_IS_DISTRO_UPGRADE (distro_upgrade), NULL);
+	return distro_upgrade->priv->name;
+}
+
+/**
+ * pk_distro_upgrade_get_summary:
+ * @distro_upgrade: a valid #PkDistroUpgrade object.
+ *
+ * Gets the description of the distribution upgrade.
+ *
+ * Return value: the printable name, e.g. "Fedora 14"
+ *
+ * Since: 0.6.11
+ **/
+const gchar *
+pk_distro_upgrade_get_summary (PkDistroUpgrade *distro_upgrade)
+{
+	g_return_val_if_fail (PK_IS_DISTRO_UPGRADE (distro_upgrade), NULL);
+	return distro_upgrade->priv->summary;
+}
+
+/**
+ * pk_distro_upgrade_get_state:
+ * @distro_upgrade: a valid #PkDistroUpgrade object.
+ *
+ * Gets the status of the distribution upgrade.
+ *
+ * Return value: the printable name, e.g. %PK_DISTRO_UPGRADE_ENUM_UNSTABLE
+ *
+ * Since: 0.6.11
+ **/
+PkDistroUpgradeEnum
+pk_distro_upgrade_get_state (PkDistroUpgrade *distro_upgrade)
+{
+	g_return_val_if_fail (PK_IS_DISTRO_UPGRADE (distro_upgrade), PK_DISTRO_UPGRADE_ENUM_UNKNOWN);
+	return distro_upgrade->priv->state;
+}
+
+
+/**
  * pk_distro_upgrade_get_property:
  **/
 static void
diff --git a/lib/packagekit-glib2/pk-distro-upgrade.h b/lib/packagekit-glib2/pk-distro-upgrade.h
index a9ba9d1..a825014 100644
--- a/lib/packagekit-glib2/pk-distro-upgrade.h
+++ b/lib/packagekit-glib2/pk-distro-upgrade.h
@@ -29,6 +29,7 @@
 #include <glib-object.h>
 
 #include <packagekit-glib2/pk-source.h>
+#include <packagekit-glib2/pk-enum.h>
 
 G_BEGIN_DECLS
 
@@ -63,6 +64,12 @@ struct _PkDistroUpgradeClass
 GType		 pk_distro_upgrade_get_type	 	(void);
 PkDistroUpgrade	*pk_distro_upgrade_new			(void);
 
+/* accessors */
+const gchar	*pk_distro_upgrade_get_id		(PkDistroUpgrade	*distro_upgrade);
+const gchar	*pk_distro_upgrade_get_summary		(PkDistroUpgrade	*distro_upgrade);
+PkDistroUpgradeEnum pk_distro_upgrade_get_state		(PkDistroUpgrade	*distro_upgrade);
+
+
 G_END_DECLS
 
 #endif /* __PK_DISTRO_UPGRADE_H */
commit 42ca2064761bf415c76cf3eced3a6cabd56c1b87
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 2 17:19:43 2010 +0000

    Ensure we can send a cache-age of maxuint to fix command-not-found

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index 3e66e7c..d8dec1f 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -1957,7 +1957,7 @@ pk_client_get_tid_cb (GObject *object, GAsyncResult *res, PkClientState *state)
 
 	/* cache-age */
 	if (state->client->priv->cache_age > 0) {
-		hint = g_strdup_printf ("cache-age=%i", state->client->priv->cache_age);
+		hint = g_strdup_printf ("cache-age=%u", state->client->priv->cache_age);
 		g_ptr_array_add (array, hint);
 	}
 
diff --git a/src/egg-string.c b/src/egg-string.c
index fc493ed..ea2f922 100644
--- a/src/egg-string.c
+++ b/src/egg-string.c
@@ -106,7 +106,7 @@ egg_strtouint (const gchar *text, guint *value)
 		return FALSE;
 
 	/* out of range */
-	if (value_raw > G_MAXINT)
+	if (value_raw > G_MAXUINT)
 		return FALSE;
 
 	/* cast back down to value */
commit 40e412f7db10c93a44d9098b17afa3a3f25a4a72
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 2 10:04:38 2010 +0000

    Add a new backend role for updating the whole distro: UpgradeSystem

diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
index 6f8095c..5513d8d 100644
--- a/backends/alpm/pk-backend-alpm.c
+++ b/backends/alpm/pk-backend-alpm.c
@@ -1649,6 +1649,7 @@ backend_what_provides (PkBackend *backend, PkBitfield filters, PkProvidesEnum pr
 	pk_backend_thread_create (backend, backend_search_thread);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"alpm",						/* description */
 	"Valeriy Lyasotskiy <onestep at ukr.net>",		/* author */
@@ -1690,6 +1691,7 @@ PK_BACKEND_OPTIONS (
 	NULL,						/* simulate_install_packages */
 	NULL,						/* simulate_remove_packages */
 	NULL,						/* simulate_update_packages */
+	NULL,						/* upgrade_system */
 	NULL,						/* transaction_start */
 	NULL						/* transaction_stop */
 );
diff --git a/backends/apt/pk-backend-apt.c b/backends/apt/pk-backend-apt.c
index 66273ba..6508bf3 100644
--- a/backends/apt/pk-backend-apt.c
+++ b/backends/apt/pk-backend-apt.c
@@ -536,7 +536,7 @@ backend_get_filters (PkBackend *backend)
 		-1);
 }
 
-
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Apt",					/* description */
 	"Sebastian Heinlein <glatzor at ubuntu.com>",	/* author */
@@ -590,6 +590,7 @@ PK_BACKEND_OPTIONS (
 	backend_simulate_install_packages,	/* simulate_install_packages */
 	backend_simulate_remove_packages,	/* simulate_remove_packages */
 	backend_simulate_update_packages,	/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index 0238a38..c46e1c8 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -1467,6 +1467,7 @@ backend_get_packages (PkBackend *backend, PkBitfield filter)
 	pk_backend_thread_create (backend, backend_get_packages_thread);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 extern "C" PK_BACKEND_OPTIONS (
 	"APTcc",					/* description */
 	"Daniel Nicoletti <dantti85-pk at yahoo.com.br>",	/* author */
@@ -1508,6 +1509,7 @@ extern "C" PK_BACKEND_OPTIONS (
 	backend_simulate_install_update_packages,	/* simulate_install_packages */
 	backend_simulate_remove_packages,		/* simulate_remove_packages */
 	backend_simulate_install_update_packages,	/* simulate_update_packages */
+	NULL,						/* upgrade_system */
 	NULL,						/* transaction_start */
 	NULL						/* transaction_stop */
 );
diff --git a/backends/box/pk-backend-box.c b/backends/box/pk-backend-box.c
index 80f2cf1..a6f930a 100644
--- a/backends/box/pk-backend-box.c
+++ b/backends/box/pk-backend-box.c
@@ -693,6 +693,7 @@ backend_repo_set_data (PkBackend *backend, const gchar *rid, const gchar *parame
 	pk_backend_finished (backend);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Box",					/* description */
 	"Grzegorz DÄ…browski <grzegorz.dabrowski at gmail.com>",	/* author */
@@ -734,6 +735,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/conary/pk-backend-conary.c b/backends/conary/pk-backend-conary.c
index b59339f..06d49a8 100644
--- a/backends/conary/pk-backend-conary.c
+++ b/backends/conary/pk-backend-conary.c
@@ -421,6 +421,7 @@ backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 	g_free (package_ids_temp);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Conary with XMLCache",				/* description */
 	"Andres Vargas <zodman at foresightlinux.org>", /* author */
@@ -462,6 +463,7 @@ PK_BACKEND_OPTIONS (
 	backend_simulate_install_packages,	/* simulate_install_packages */
 	backend_simulate_remove_packages,	/* simulate_remove_packages */
 	backend_simulate_update_packages,	/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index 6f8dec8..a6fc33b 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -1375,6 +1375,19 @@ pk_backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
 	pk_backend_finished (backend);
 }
 
+
+/**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+{
+	pk_backend_package (backend, PK_INFO_ENUM_UPDATING,
+			    "gtkhtml2;2.19.1-4.fc8;i386;fedora", "An HTML widget for GTK+ 2.0");
+	pk_backend_require_restart (backend, PK_RESTART_ENUM_SYSTEM, "kernel;2.6.23-0.115.rc3.git1.fc8;i386;installed");
+	pk_backend_finished (backend);
+}
+
 /**
  * pk_backend_transaction_start:
  */
diff --git a/backends/entropy/pk-backend-entropy.c b/backends/entropy/pk-backend-entropy.c
index 50519ef..b97f088 100644
--- a/backends/entropy/pk-backend-entropy.c
+++ b/backends/entropy/pk-backend-entropy.c
@@ -555,6 +555,7 @@ backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
     g_free (package_ids_temp);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Entropy",				/* description */
 	"Fabio Erculiani (lxnay) <lxnay at sabayon.org>",	/* author */
@@ -596,6 +597,7 @@ PK_BACKEND_OPTIONS (
 	backend_simulate_install_packages,  /* simulate_install_packages */
 	backend_simulate_remove_packages,   /* simulate_remove_packages */
 	backend_simulate_update_packages,   /* simulate_update_packages */
+	NULL,						/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/opkg/pk-backend-opkg.c b/backends/opkg/pk-backend-opkg.c
index e5f4ced..e0b77d9 100644
--- a/backends/opkg/pk-backend-opkg.c
+++ b/backends/opkg/pk-backend-opkg.c
@@ -709,6 +709,7 @@ backend_get_details (PkBackend *backend, gchar **package_ids)
 	pk_backend_thread_create (backend, backend_get_details_thread);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"opkg",					/* description */
 	"Thomas Wood <thomas at openedhand.com>",	/* author */
@@ -750,6 +751,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/pisi/pk-backend-pisi.c b/backends/pisi/pk-backend-pisi.c
index 2acc9d7..9635708 100644
--- a/backends/pisi/pk-backend-pisi.c
+++ b/backends/pisi/pk-backend-pisi.c
@@ -357,6 +357,7 @@ backend_repo_set_data (PkBackend *backend, const gchar *rid, const gchar *parame
 	pk_backend_spawn_helper (spawn, "pisiBackend.py", "repo-set-data", rid, parameter, value, NULL);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"PiSi",					/* description */
 	"S.Çağlar Onur <caglar at pardus.org.tr>",	/* author */
@@ -398,6 +399,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/poldek/pk-backend-poldek.c b/backends/poldek/pk-backend-poldek.c
index 4c6df05..bfd472d 100644
--- a/backends/poldek/pk-backend-poldek.c
+++ b/backends/poldek/pk-backend-poldek.c
@@ -3397,6 +3397,7 @@ backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 	pk_backend_thread_create (backend, do_simulate_packages);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"poldek",					/* description */
 	"Marcin Banasiak <megabajt at pld-linux.org>",	/* author */
@@ -3438,6 +3439,7 @@ PK_BACKEND_OPTIONS (
 	backend_simulate_install_packages,		/* simulate_install_packages */
 	backend_simulate_remove_packages,		/* simulate_remove_packages */
 	backend_simulate_update_packages,		/* simulate_update_packages */
+	NULL,						/* upgrade_system */
 	NULL,						/* transaction_start */
 	NULL						/* transaction_stop */
 );
diff --git a/backends/portage/pk-backend-portage.c b/backends/portage/pk-backend-portage.c
index a51908b..21109a8 100644
--- a/backends/portage/pk-backend-portage.c
+++ b/backends/portage/pk-backend-portage.c
@@ -488,6 +488,7 @@ backend_simulate_install_packages (PkBackend *backend, gchar **package_ids)
     g_free (package_ids_temp);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Portage",				/* description */
 	"Mounir Lamouri (volkmar) <mounir.lamouri at gmail.com>, Fabio Erculiani <lxnay at sabayon.org>",	/* author */
@@ -529,6 +530,7 @@ PK_BACKEND_OPTIONS (
     backend_simulate_install_packages,  /* simulate_install_packages */
     backend_simulate_remove_packages,   /* simulate_remove_packages */
     backend_simulate_update_packages,   /* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/ports/pk-backend-ports.c b/backends/ports/pk-backend-ports.c
index 2a93758..ea51919 100644
--- a/backends/ports/pk-backend-ports.c
+++ b/backends/ports/pk-backend-ports.c
@@ -409,6 +409,7 @@ backend_update_system (PkBackend *backend, gboolean only_trusted)
 	pk_backend_spawn_helper (spawn, BACKEND_FILE, "update-system", pk_backend_bool_to_string (only_trusted), NULL);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Ports",				/* description */
 	"Anders F Björklund <afb at users.sourceforge.net>",	/* author */
@@ -450,6 +451,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/razor/pk-backend-razor.c b/backends/razor/pk-backend-razor.c
index 0a99899..4625ff8 100644
--- a/backends/razor/pk-backend-razor.c
+++ b/backends/razor/pk-backend-razor.c
@@ -390,6 +390,7 @@ backend_get_filters (PkBackend *backend)
 	return pk_bitfield_from_enums (PK_FILTER_ENUM_DEVELOPMENT, -1);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"razor",				/* description */
 	"Richard Hughes <richard at hughsie.com>",	/* author */
@@ -431,6 +432,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/slapt/pk-backend-slapt.c b/backends/slapt/pk-backend-slapt.c
index cb6eb82..2c9a130 100644
--- a/backends/slapt/pk-backend-slapt.c
+++ b/backends/slapt/pk-backend-slapt.c
@@ -1328,6 +1328,7 @@ backend_download_packages (PkBackend *backend, gchar **package_ids, const gchar
 	pk_backend_finished (backend);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"Slack",				/* description */
 	"Anders F Björklund <afb at users.sourceforge.net>",	/* author */
@@ -1369,6 +1370,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/smart/pk-backend-smart.c b/backends/smart/pk-backend-smart.c
index 78518d5..421fa61 100644
--- a/backends/smart/pk-backend-smart.c
+++ b/backends/smart/pk-backend-smart.c
@@ -441,6 +441,7 @@ backend_repo_set_data (PkBackend *backend, const gchar *rid, const gchar *parame
 	pk_backend_spawn_helper (spawn, BACKEND_FILE, "repo-set-data", rid, parameter, value, NULL);
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"SMART",					/* description */
 	"James Bowes <jbowes at dangerouslyinc.com>",	/* author */
@@ -482,6 +483,7 @@ PK_BACKEND_OPTIONS (
 	NULL,						/* simulate_install_packages */
 	NULL,						/* simulate_remove_packages */
 	NULL,						/* simulate_update_packages */
+	NULL,						/* upgrade_system */
 	NULL,						/* transaction_start */
 	NULL						/* transaction_stop */
 );
diff --git a/backends/test/pk-backend-test-fail.c b/backends/test/pk-backend-test-fail.c
index fb4ee2c..876505a 100644
--- a/backends/test/pk-backend-test-fail.c
+++ b/backends/test/pk-backend-test-fail.c
@@ -255,3 +255,14 @@ pk_backend_update_system (PkBackend *backend, gboolean only_trusted)
 {
 	pk_backend_finished (backend);
 }
+
+/**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+{
+	pk_backend_error_code (backend, PK_ERROR_ENUM_INSTALL_ROOT_INVALID,
+			       "Cannot find boot partition");
+	pk_backend_finished (backend);
+}
diff --git a/backends/test/pk-backend-test-succeed.c b/backends/test/pk-backend-test-succeed.c
index e4bb957..d32eba4 100644
--- a/backends/test/pk-backend-test-succeed.c
+++ b/backends/test/pk-backend-test-succeed.c
@@ -387,3 +387,12 @@ pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 {
 	pk_backend_finished (backend);
 }
+
+/**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+{
+	pk_backend_finished (backend);
+}
diff --git a/backends/urpmi/pk-backend-urpmi.c b/backends/urpmi/pk-backend-urpmi.c
index 99c31c9..f3bb943 100644
--- a/backends/urpmi/pk-backend-urpmi.c
+++ b/backends/urpmi/pk-backend-urpmi.c
@@ -359,7 +359,7 @@ backend_get_distro_upgrades (PkBackend *backend)
 	pk_backend_spawn_helper (spawn, "urpmi-dispatched-backend.pl", "get-distro-upgrades", NULL);
 }
 
-
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 PK_BACKEND_OPTIONS (
 	"URPMI",					/* description */
 	"Aurelien Lefebvre <alkh at mandriva.org>",	/* author */
@@ -401,6 +401,7 @@ PK_BACKEND_OPTIONS (
 	NULL,					/* simulate_install_packages */
 	NULL,					/* simulate_remove_packages */
 	NULL,					/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	NULL,					/* transaction_start */
 	NULL					/* transaction_stop */
 );
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index da6450e..3209ebf 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -3340,3 +3340,13 @@ pk_backend_simulate_install_files (PkBackend *backend, gchar **full_paths)
 	pk_backend_spawn_helper (priv->spawn, "yumBackend.py", "simulate-install-files", package_ids_temp, NULL);
 	g_free (package_ids_temp);
 }
+
+
+/**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+{
+	/* FIXME */
+}
diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index d73be34..b180bbd 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1919,6 +1919,7 @@ backend_transaction_stop (PkBackend *backend)
 	g_unsetenv ("ftp_proxy");
 }
 
+/* FIXME: port this away from PK_BACKEND_OPTIONS */
 extern "C" PK_BACKEND_OPTIONS (
 	"Zypp",					/* description */
 	"Boyd Timothy <btimothy at gmail.com>, "
@@ -1962,6 +1963,7 @@ extern "C" PK_BACKEND_OPTIONS (
 	backend_simulate_install_packages,	/* simulate_install_packages */
 	backend_simulate_remove_packages,	/* simulate_remove_packages */
 	backend_simulate_update_packages,	/* simulate_update_packages */
+	NULL,					/* upgrade_system */
 	backend_transaction_start,		/* transaction_start */
 	backend_transaction_stop		/* transaction_stop */
 );
diff --git a/client/pk-console.c b/client/pk-console.c
index 3f50821..bdef844 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2009 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -1708,6 +1708,17 @@ main (int argc, char *argv[])
 					    (PkProgressCallback) pk_console_progress_cb, NULL,
 					    (GAsyncReadyCallback) pk_console_finished_cb, NULL);
 
+	} else if (strcmp (mode, "upgrade-system") == 0) {
+		if (value == NULL) {
+			/* TRANSLATORS: The user did not provide a distro name */
+			error = g_error_new (1, 0, "%s", _("A distribution name is required"));
+			retval = PK_EXIT_CODE_SYNTAX_INVALID;
+			goto out;
+		}
+		pk_client_upgrade_system_async (PK_CLIENT (task), value, cancellable,
+						(PkProgressCallback) pk_console_progress_cb, NULL,
+						(GAsyncReadyCallback) pk_console_finished_cb, NULL);
+
 	} else if (strcmp (mode, "get-roles") == 0) {
 		text = pk_role_bitfield_to_string (roles);
 		g_strdelimit (text, ";", '\n');
diff --git a/contrib/pk-completion.bash b/contrib/pk-completion.bash
index 3fcf8c9..bae7db7 100755
--- a/contrib/pk-completion.bash
+++ b/contrib/pk-completion.bash
@@ -2,6 +2,7 @@
 # bash completion support for PackageKit's console commands.
 #
 # Copyright (C) 2007 James Bowes <jbowes at dangerouslyinc.com>
+# Copyright (C) 2010 Richard Hughes <richard at hughsie.com>
 #
 # Licensed under the GNU General Public License Version 2
 #
@@ -44,6 +45,7 @@ __pkcon_commandlist="
     resolve
     search
     update
+    upgrade-system
     "
 
 __pkconcomp ()
diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index 907577c..3a2b66f 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2008-2009 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2008-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU Lesser General Public License Version 2.1
  *
@@ -1680,6 +1680,58 @@ pk_client_simulate_update_packages (PkClient *client, gchar **package_ids, GCanc
 	return results;
 }
 
+
+/**
+ * pk_client_upgrade_system:
+ * @distro_id: a distro ID such as "fedora-14"
+ * @cancellable: a #GCancellable or %NULL
+ * @progress_callback: (scope call): the function to run when the progress changes
+ * @progress_user_data: data to pass to @progress_callback
+ * @error: the #GError to store any failure, or %NULL
+ *
+ * This transaction will upgrade the distro to the next version, which may
+ * involve just downloading the installer and setting up the boot device,
+ * or may involve doing an on-line upgrade.
+ *
+ * The backend will decide what is best to do.
+ *
+ * Warning: this function is synchronous, and may block. Do not use it in GUI
+ * applications.
+ *
+ * Return value: (transfer full): a %PkResults object, or NULL for error
+ *
+ * Since: 0.6.11
+ **/
+PkResults *
+pk_client_upgrade_system (PkClient *client, const gchar *distro_id, GCancellable *cancellable,
+		          PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+{
+	PkClientHelper *helper;
+	PkResults *results;
+
+	g_return_val_if_fail (PK_IS_CLIENT (client), NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+	/* create temp object */
+	helper = g_new0 (PkClientHelper, 1);
+	helper->loop = g_main_loop_new (NULL, FALSE);
+	helper->error = error;
+
+	/* run async method */
+	pk_client_upgrade_system_async (client, distro_id, cancellable, progress_callback, progress_user_data,
+				        (GAsyncReadyCallback) pk_client_generic_finish_sync, helper);
+
+	g_main_loop_run (helper->loop);
+
+	results = helper->results;
+
+	/* free temp object */
+	g_main_loop_unref (helper->loop);
+	g_free (helper);
+
+	return results;
+}
+
 /**
  * pk_client_adopt:
  * @client: a valid #PkClient instance
diff --git a/lib/packagekit-glib2/pk-client-sync.h b/lib/packagekit-glib2/pk-client-sync.h
index f2068a9..105df42 100644
--- a/lib/packagekit-glib2/pk-client-sync.h
+++ b/lib/packagekit-glib2/pk-client-sync.h
@@ -281,6 +281,13 @@ PkResults	*pk_client_simulate_update_packages	(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
+PkResults	*pk_client_upgrade_system		(PkClient		*client,
+							 const gchar		*distro_id,
+							 GCancellable		*cancellable,
+							 PkProgressCallback	 progress_callback,
+							 gpointer		 progress_user_data,
+							 GError			**error);
+
 PkResults	*pk_client_adopt 			(PkClient		*client,
 							 const gchar		*transaction_id,
 							 GCancellable		*cancellable,
diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index faa7777..3e66e7c 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -100,6 +100,7 @@ typedef struct {
 	gchar				*repo_id;
 	gchar				**search;
 	gchar				*tid;
+	gchar				*distro_id;
 	gchar				*transaction_id;
 	gchar				*value;
 	gpointer			 progress_user_data;
@@ -665,6 +666,7 @@ pk_client_state_finish (PkClientState *state, const GError *error)
 	g_strfreev (state->search);
 	g_free (state->value);
 	g_free (state->tid);
+	g_free (state->distro_id);
 	g_free (state->transaction_id);
 	g_strfreev (state->files);
 	g_strfreev (state->package_ids);
@@ -1785,6 +1787,11 @@ pk_client_set_hints_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
 		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
+	} else if (state->role == PK_ROLE_ENUM_UPGRADE_SYSTEM) {
+		state->call = dbus_g_proxy_begin_call (state->proxy, "UpgradeSystem",
+						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
+						       G_TYPE_STRING, state->distro_id,
+						       G_TYPE_INVALID);
 	} else {
 		g_assert_not_reached ();
 	}
@@ -4169,6 +4176,70 @@ out:
 	g_object_unref (res);
 }
 
+
+/**
+ * pk_client_upgrade_system_async:
+ * @client: a valid #PkClient instance
+ * @distro_id: a distro ID such as "fedora-14"
+ * @cancellable: a #GCancellable or %NULL
+ * @progress_callback: (scope call): the function to run when the progress changes
+ * @progress_user_data: data to pass to @progress_callback
+ * @callback_ready: the function to run on completion
+ * @user_data: the data to pass to @callback_ready
+ *
+ * This transaction will update the distro to the next version, which may
+ * involve just downloading the installer and setting up the boot device,
+ * or may involve doing an on-line upgrade.
+ *
+ * The backend will decide what is best to do.
+ *
+ * Since: 0.6.11
+ **/
+void
+pk_client_upgrade_system_async (PkClient *client, const gchar *distro_id, GCancellable *cancellable,
+			        PkProgressCallback progress_callback, gpointer progress_user_data,
+			        GAsyncReadyCallback callback_ready, gpointer user_data)
+{
+	GSimpleAsyncResult *res;
+	PkClientState *state;
+	GError *error = NULL;
+
+	g_return_if_fail (PK_IS_CLIENT (client));
+	g_return_if_fail (callback_ready != NULL);
+	g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+
+	res = g_simple_async_result_new (G_OBJECT (client), callback_ready, user_data, pk_client_upgrade_system_async);
+
+	/* save state */
+	state = g_slice_new0 (PkClientState);
+	state->role = PK_ROLE_ENUM_UPGRADE_SYSTEM;
+	state->res = g_object_ref (res);
+	state->client = g_object_ref (client);
+	if (cancellable != NULL) {
+		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_client_cancellable_cancel_cb), state, NULL);
+	}
+	state->distro_id = g_strdup (distro_id);
+	state->progress_callback = progress_callback;
+	state->progress_user_data = progress_user_data;
+	state->progress = pk_progress_new ();
+
+	/* check not already cancelled */
+	if (cancellable != NULL && g_cancellable_set_error_if_cancelled (cancellable, &error)) {
+		pk_client_state_finish (state, error);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* identify */
+	pk_client_set_role (state, state->role);
+
+	/* get tid */
+	pk_control_get_tid_async (client->priv->control, cancellable, (GAsyncReadyCallback) pk_client_get_tid_cb, state);
+out:
+	g_object_unref (res);
+}
+
 /***************************************************************************************************/
 
 /**
diff --git a/lib/packagekit-glib2/pk-client.h b/lib/packagekit-glib2/pk-client.h
index 0a52d4d..2d34b1a 100644
--- a/lib/packagekit-glib2/pk-client.h
+++ b/lib/packagekit-glib2/pk-client.h
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2009 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2009-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU Lesser General Public License Version 2.1
  *
@@ -393,6 +393,14 @@ void		 pk_client_simulate_update_packages_async (PkClient		*client,
 							 GAsyncReadyCallback	 callback_ready,
 							 gpointer		 user_data);
 
+void		 pk_client_upgrade_system_async		(PkClient		*client,
+							 const gchar		*distro_id,
+							 GCancellable		*cancellable,
+							 PkProgressCallback	 progress_callback,
+							 gpointer		 progress_user_data,
+							 GAsyncReadyCallback	 callback_ready,
+							 gpointer		 user_data);
+
 void		 pk_client_adopt_async 			(PkClient		*client,
 							 const gchar		*transaction_id,
 							 GCancellable		*cancellable,
diff --git a/lib/packagekit-glib2/pk-enum.c b/lib/packagekit-glib2/pk-enum.c
index 9b0a6dc..13776c3 100644
--- a/lib/packagekit-glib2/pk-enum.c
+++ b/lib/packagekit-glib2/pk-enum.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU Lesser General Public License Version 2.1
  *
@@ -124,6 +124,7 @@ static const PkEnumMatch enum_role[] = {
 	{PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES,	"simulate-install-packages"},
 	{PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES,		"simulate-remove-packages"},
 	{PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES,		"simulate-update-packages"},
+	{PK_ROLE_ENUM_UPGRADE_SYSTEM,			"upgrade-system"},
 	{0, NULL}
 };
 
diff --git a/lib/packagekit-glib2/pk-enum.h b/lib/packagekit-glib2/pk-enum.h
index fcac493..cb87877 100644
--- a/lib/packagekit-glib2/pk-enum.h
+++ b/lib/packagekit-glib2/pk-enum.h
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU Lesser General Public License Version 2.1
  *
@@ -120,6 +120,7 @@ typedef enum {
 	PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES,
 	PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES,
 	PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES,
+	PK_ROLE_ENUM_UPGRADE_SYSTEM,			/* Since: 0.6.11 */
 	PK_ROLE_ENUM_LAST
 } PkRoleEnum;
 
diff --git a/lib/packagekit-glib2/pk-self-test.c b/lib/packagekit-glib2/pk-self-test.c
index 4be31b1..f3421ec 100644
--- a/lib/packagekit-glib2/pk-self-test.c
+++ b/lib/packagekit-glib2/pk-self-test.c
@@ -954,7 +954,7 @@ pk_test_control_get_properties_cb (GObject *object, GAsyncResult *res, gpointer
 		     "refresh-cache;remove-packages;repo-enable;repo-set-data;resolve;rollback;"
 		     "search-details;search-file;search-group;search-name;update-packages;update-system;"
 		     "what-provides;download-packages;get-distro-upgrades;simulate-install-packages;"
-		     "simulate-remove-packages;simulate-update-packages");
+		     "simulate-remove-packages;simulate-update-packages;upgrade-system");
 	g_free (text);
 
 	/* check filters */
@@ -1098,7 +1098,7 @@ pk_test_control_func (void)
 		     "refresh-cache;remove-packages;repo-enable;repo-set-data;resolve;rollback;"
 		     "search-details;search-file;search-group;search-name;update-packages;update-system;"
 		     "what-provides;download-packages;get-distro-upgrades;simulate-install-packages;"
-		     "simulate-remove-packages;simulate-update-packages");
+		     "simulate-remove-packages;simulate-update-packages;upgrade-system");
 	g_free (text);
 
 	g_object_unref (control);
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index 5c259d6..051b1fc 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -1529,6 +1529,35 @@
     </method>
 
     <!--*****************************************************************************************-->
+    <method name="UpgradeSystem">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This method perfoms a distribution upgrade to the specified
+            version.
+          </doc:para>
+          <doc:para>
+            This method typically emits
+            <doc:tt>Progress</doc:tt>,
+            <doc:tt>Status</doc:tt> and
+            <doc:tt>Error</doc:tt> and
+            <doc:tt>Package</doc:tt>.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+      <arg type="s" name="distro_id" direction="in">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The distro ID to upgrade to, e.g. <doc:tt>fedora-14</doc:tt>.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+    </method>
+
+    <!--*****************************************************************************************-->
     <signal name="Category">
       <doc:doc>
         <doc:description>
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 92f07e7..8b183f0 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -318,6 +318,8 @@ pk_backend_get_roles (PkBackend *backend)
 		pk_bitfield_add (roles, PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES);
 	if (desc->simulate_update_packages != NULL)
 		pk_bitfield_add (roles, PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES);
+	if (desc->upgrade_system != NULL)
+		pk_bitfield_add (roles, PK_ROLE_ENUM_UPGRADE_SYSTEM);
 	backend->priv->roles = roles;
 out:
 	return backend->priv->roles;
@@ -574,6 +576,7 @@ pk_backend_set_name (PkBackend *backend, const gchar *backend_name, GError **err
 			g_module_symbol (handle, "pk_backend_update_packages", (gpointer *)&desc->update_packages);
 			g_module_symbol (handle, "pk_backend_update_system", (gpointer *)&desc->update_system);
 			g_module_symbol (handle, "pk_backend_what_provides", (gpointer *)&desc->what_provides);
+			g_module_symbol (handle, "pk_backend_upgrade_system", (gpointer *)&desc->upgrade_system);
 
 			/* get old static string data */
 			ret = g_module_symbol (handle, "pk_backend_get_author", (gpointer *)&backend_vfunc);
@@ -3402,6 +3405,18 @@ pk_backend_simulate_update_packages (PkBackend *backend, gchar **package_ids)
 }
 
 /**
+ * pk_backend_upgrade_system:
+ */
+void
+pk_backend_upgrade_system (PkBackend *backend, const gchar *distro_id)
+{
+	g_return_if_fail (PK_IS_BACKEND (backend));
+	pk_backend_set_role_internal (backend, PK_ROLE_ENUM_UPGRADE_SYSTEM);
+	pk_store_set_string (backend->priv->store, "distro_id", distro_id);
+	backend->priv->desc->upgrade_system (backend, distro_id);
+}
+
+/**
  * pk_backend_init:
  **/
 static void
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 1e3c44b..8f5c6bb 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -189,6 +189,8 @@ void		pk_backend_simulate_remove_packages	(PkBackend	*backend,
 							 gboolean	 autoremove);
 void		pk_backend_simulate_update_packages	(PkBackend	*backend,
 							 gchar		**package_ids);
+void		pk_backend_upgrade_system		(PkBackend	*backend,
+							 const gchar	*distro_id);
 
 /* set the state */
 gboolean	 pk_backend_accept_eula			(PkBackend	*backend,
@@ -461,7 +463,9 @@ typedef struct {
 							 gchar		**package_ids);
 	void		(*transaction_start)		(PkBackend	*backend);
 	void		(*transaction_stop)		(PkBackend	*backend);
-	gpointer	padding[8];
+	void		(*upgrade_system)		(PkBackend	*backend,
+							 const gchar	*distro_id);
+	gpointer	padding[7];
 } PkBackendDesc;
 
 /* this is deprecated */
@@ -473,7 +477,7 @@ typedef struct {
 			   repo_enable, repo_set_data, resolve, rollback, search_details, search_file,	\
 			   search_group, search_name, update_packages, update_system, what_provides,	\
 			   simulate_install_files, simulate_install_packages, simulate_remove_packages,	\
-			   simulate_update_packages, transaction_start, transaction_stop )		\
+			   simulate_update_packages, upgrade_system, transaction_start, transaction_stop ) \
 	G_MODULE_EXPORT const PkBackendDesc pk_backend_desc = { 					\
 		description,			\
 		author,				\
@@ -515,6 +519,7 @@ typedef struct {
 		simulate_install_packages,	\
 		simulate_remove_packages,	\
 		simulate_update_packages,	\
+		upgrade_system,			\
 		transaction_start,		\
 		transaction_stop,		\
 		{0} 				\
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 28bc62d..737be38 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -2021,6 +2021,8 @@ pk_transaction_set_running (PkTransaction *transaction)
 			filters = pk_bitfield_from_enums (PK_FILTER_ENUM_NOT_INSTALLED, PK_FILTER_ENUM_NEWEST, -1);
 			pk_backend_get_depends (priv->backend, filters, priv->cached_package_ids, TRUE);
 		}
+	} else if (priv->role == PK_ROLE_ENUM_UPGRADE_SYSTEM) {
+		pk_backend_upgrade_system (priv->backend, priv->cached_value);
 	} else {
 		g_error ("failed to run as role not assigned");
 		ret = FALSE;
@@ -5423,6 +5425,55 @@ pk_transaction_what_provides (PkTransaction *transaction, const gchar *filter, c
 }
 
 /**
+ * pk_transaction_upgrade_system:
+ **/
+void
+pk_transaction_upgrade_system (PkTransaction *transaction, const gchar *distro_id, DBusGMethodInvocation *context)
+{
+	gboolean ret;
+	GError *error = NULL;
+
+	g_return_if_fail (PK_IS_TRANSACTION (transaction));
+	g_return_if_fail (transaction->priv->tid != NULL);
+
+	g_debug ("UpgradeSystem method called: %s", distro_id);
+
+	/* not implemented yet */
+	if (!pk_backend_is_implemented (transaction->priv->backend, PK_ROLE_ENUM_UPGRADE_SYSTEM)) {
+		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_NOT_SUPPORTED,
+				     "UpgradeSystem not yet supported by backend");
+		pk_transaction_release_tid (transaction);
+		pk_transaction_dbus_return_error (context, error);
+		return;
+	}
+
+	/* check if the sender is the same */
+	ret = pk_transaction_verify_sender (transaction, context, &error);
+	if (!ret) {
+		/* don't release tid */
+		pk_transaction_dbus_return_error (context, error);
+		return;
+	}
+
+	/* save so we can run later */
+	transaction->priv->cached_value = g_strdup (distro_id);
+	pk_transaction_set_role (transaction, PK_ROLE_ENUM_UPGRADE_SYSTEM);
+
+	/* try to commit this */
+	ret = pk_transaction_commit (transaction);
+	if (!ret) {
+		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_COMMIT_FAILED,
+				     "Could not commit to a transaction object");
+		pk_transaction_release_tid (transaction);
+		pk_transaction_dbus_return_error (context, error);
+		return;
+	}
+
+	/* return from async with success */
+	pk_transaction_dbus_return (context);
+}
+
+/**
  * pk_transaction_get_property:
  **/
 static void
diff --git a/src/pk-transaction.h b/src/pk-transaction.h
index 268daab..78ab889 100644
--- a/src/pk-transaction.h
+++ b/src/pk-transaction.h
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
+ * Copyright (C) 2008-2010 Richard Hughes <richard at hughsie.com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -236,6 +236,9 @@ void		 pk_transaction_what_provides			(PkTransaction	*transaction,
 								 const gchar	*type,
 								 gchar		**values,
 								 DBusGMethodInvocation *context);
+void		 pk_transaction_upgrade_system			(PkTransaction	*transaction,
+								 const gchar	*distro_id,
+								 DBusGMethodInvocation *context);
 gboolean	 pk_transaction_filter_check			(const gchar	*filter,
 								 GError		**error);
 gboolean	 pk_transaction_strvalidate			(const gchar	*textr,
commit 9aa2b6c78eda14df312889bfa895814f03efe9ae
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 2 09:56:04 2010 +0000

    trivial: make the bash completion file match reality

diff --git a/contrib/pk-completion.bash b/contrib/pk-completion.bash
index 79c9983..3fcf8c9 100755
--- a/contrib/pk-completion.bash
+++ b/contrib/pk-completion.bash
@@ -18,7 +18,7 @@
 
 __pkcon_commandlist="
     accept-eula
-    get-actions
+    get-roles
     get-depends
     get-details
     get-distro-upgrades
@@ -33,9 +33,6 @@ __pkcon_commandlist="
     get-update-detail
     get-updates
     get-categories
-    list-create
-    list-diff
-    list-install
     install
     install-local
     refresh
commit 04a0498465f377f79cf7d97ff8411d2c661597eb
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Nov 2 09:51:21 2010 +0000

    Ignore unknown entries in the pk_x_bitfield_from_string() to ensure forwards compatibility

diff --git a/lib/packagekit-glib2/pk-bitfield.c b/lib/packagekit-glib2/pk-bitfield.c
index 69535ac..8f48ce5 100644
--- a/lib/packagekit-glib2/pk-bitfield.c
+++ b/lib/packagekit-glib2/pk-bitfield.c
@@ -140,7 +140,7 @@ pk_role_bitfield_to_string (PkBitfield roles)
 
 /**
  * pk_role_bitfield_from_string:
- * @roles: the enumerated constant value, e.g. "available;~gui"
+ * @roles: the enumerated constant value, e.g. "search-file;update-system"
  *
  * Converts text representation to its enumerated type bitfield
  *
@@ -166,11 +166,8 @@ pk_role_bitfield_from_string (const gchar *roles)
 	length = g_strv_length (split);
 	for (i=0; i<length; i++) {
 		role = pk_role_enum_from_string (split[i]);
-		if (role == PK_ROLE_ENUM_UNKNOWN) {
-			roles_enum = 0;
-			break;
-		}
-		roles_enum += pk_bitfield_value (role);
+		if (role != PK_ROLE_ENUM_UNKNOWN)
+			roles_enum += pk_bitfield_value (role);
 	}
 out:
 	g_strfreev (split);
@@ -238,11 +235,8 @@ pk_group_bitfield_from_string (const gchar *groups)
 	length = g_strv_length (split);
 	for (i=0; i<length; i++) {
 		group = pk_group_enum_from_string (split[i]);
-		if (group == PK_GROUP_ENUM_UNKNOWN) {
-			groups_enum = 0;
-			break;
-		}
-		groups_enum += pk_bitfield_value (group);
+		if (group != PK_GROUP_ENUM_UNKNOWN)
+			groups_enum += pk_bitfield_value (group);
 	}
 out:
 	g_strfreev (split);
@@ -314,11 +308,8 @@ pk_filter_bitfield_from_string (const gchar *filters)
 	length = g_strv_length (split);
 	for (i=0; i<length; i++) {
 		filter = pk_filter_enum_from_string (split[i]);
-		if (filter == PK_FILTER_ENUM_UNKNOWN) {
-			filters_enum = 0;
-			break;
-		}
-		filters_enum += pk_bitfield_value (filter);
+		if (filter != PK_FILTER_ENUM_UNKNOWN)
+			filters_enum += pk_bitfield_value (filter);
 	}
 out:
 	g_strfreev (split);
commit 44f3600ad8b1fbf6d4caf0b2c5b1d8d21abed97d
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 1 21:55:57 2010 +0000

    Use G_LOG_DOMAIN in all the backends

diff --git a/backends/alpm/Makefile.am b/backends/alpm/Makefile.am
index 6156218..15749dc 100644
--- a/backends/alpm/Makefile.am
+++ b/backends/alpm/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Alpm\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_alpm.la
 libpk_backend_alpm_la_SOURCES = pk-backend-alpm.c
diff --git a/backends/apt/Makefile.am b/backends/apt/Makefile.am
index 7bb3d5e..044295a 100644
--- a/backends/apt/Makefile.am
+++ b/backends/apt/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Apt\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_apt.la
 libpk_backend_apt_la_SOURCES = pk-backend-apt.c
diff --git a/backends/aptcc/Makefile.am b/backends/aptcc/Makefile.am
index 4e1e22d..087175b 100644
--- a/backends/aptcc/Makefile.am
+++ b/backends/aptcc/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Aptcc\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_aptcc.la
 libpk_backend_aptcc_la_SOURCES = pkg_acqfile.cpp \
@@ -37,4 +40,4 @@ install-data-hook:
 
 clean-local :
 	rm -f *~
-	rm -f *.pyc
\ No newline at end of file
+	rm -f *.pyc
diff --git a/backends/box/Makefile.am b/backends/box/Makefile.am
index 38e335b..23bd9bf 100644
--- a/backends/box/Makefile.am
+++ b/backends/box/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Box\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_box.la
 libpk_backend_box_la_SOURCES = pk-backend-box.c
diff --git a/backends/conary/Makefile.am b/backends/conary/Makefile.am
index 7e03cb4..7a71ef0 100644
--- a/backends/conary/Makefile.am
+++ b/backends/conary/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Conary\"
+
 helperdir = $(datadir)/PackageKit/helpers/conary
 dist_helper_DATA = 			\
 	conaryBackend.py		\
diff --git a/backends/entropy/Makefile.am b/backends/entropy/Makefile.am
index 2078c4e..4897780 100644
--- a/backends/entropy/Makefile.am
+++ b/backends/entropy/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Entropy\"
+
 helperdir = $(datadir)/PackageKit/helpers/entropy
 dist_helper_DATA = entropyBackend.py
 
diff --git a/backends/opkg/Makefile.am b/backends/opkg/Makefile.am
index f824316..7959b95 100644
--- a/backends/opkg/Makefile.am
+++ b/backends/opkg/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Opkg\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_opkg.la
 libpk_backend_opkg_la_SOURCES = pk-backend-opkg.c
diff --git a/backends/pacman/Makefile.am b/backends/pacman/Makefile.am
index e78a26d..9ea0217 100644
--- a/backends/pacman/Makefile.am
+++ b/backends/pacman/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Pacman\"
+
 PACMAN_CONFIG_FILE = $(confdir)/pacman.conf
 PACMAN_GROUP_LIST = $(confdir)/groups.list
 PACMAN_REPO_LIST = $(confdir)/repos.list
diff --git a/backends/pisi/Makefile.am b/backends/pisi/Makefile.am
index 4ba597f..33b0154 100644
--- a/backends/pisi/Makefile.am
+++ b/backends/pisi/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Pisi\"
+
 helperdir = $(datadir)/PackageKit/helpers/pisi
 dist_helper_DATA = 			\
 	pisiBackend.py
diff --git a/backends/poldek/Makefile.am b/backends/poldek/Makefile.am
index cf923bc..6208d6e 100644
--- a/backends/poldek/Makefile.am
+++ b/backends/poldek/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Poldek\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_poldek.la
 libpk_backend_poldek_la_SOURCES = pk-backend-poldek.c
diff --git a/backends/portage/Makefile.am b/backends/portage/Makefile.am
index e264967..381bcb1 100644
--- a/backends/portage/Makefile.am
+++ b/backends/portage/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Portage\"
+
 helperdir = $(datadir)/PackageKit/helpers/portage
 dist_helper_DATA = portageBackend.py
 
diff --git a/backends/ports/Makefile.am b/backends/ports/Makefile.am
index 898aebe..89c9ba4 100644
--- a/backends/ports/Makefile.am
+++ b/backends/ports/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Ports\"
+
 SUBDIRS=ruby_packagekit
 
 helperdir = $(datadir)/PackageKit/helpers/ports
diff --git a/backends/razor/Makefile.am b/backends/razor/Makefile.am
index 43112f9..9734fb5 100644
--- a/backends/razor/Makefile.am
+++ b/backends/razor/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Razor\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_razor.la
 libpk_backend_razor_la_SOURCES = pk-backend-razor.c
diff --git a/backends/slapt/Makefile.am b/backends/slapt/Makefile.am
index eebc441..4b04c3b 100644
--- a/backends/slapt/Makefile.am
+++ b/backends/slapt/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Slapt\"
+
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_slapt.la
 libpk_backend_slapt_la_SOURCES = pk-backend-slapt.c
diff --git a/backends/smart/Makefile.am b/backends/smart/Makefile.am
index a5f8762..a7ccce6 100644
--- a/backends/smart/Makefile.am
+++ b/backends/smart/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Smart\"
+
 helperdir = $(datadir)/PackageKit/helpers/smart
 dist_helper_DATA = 			\
 	smartBackend.py
diff --git a/backends/test/Makefile.am b/backends/test/Makefile.am
index 9ecb656..63a1661 100644
--- a/backends/test/Makefile.am
+++ b/backends/test/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Test\"
+
 SUBDIRS = helpers
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES =			\
diff --git a/backends/urpmi/Makefile.am b/backends/urpmi/Makefile.am
index 4f2be2d..aebf025 100644
--- a/backends/urpmi/Makefile.am
+++ b/backends/urpmi/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Urpmi\"
+
 SUBDIRS = helpers
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_urpmi.la
diff --git a/backends/zypp/Makefile.am b/backends/zypp/Makefile.am
index fabf1e6..dcf88d7 100644
--- a/backends/zypp/Makefile.am
+++ b/backends/zypp/Makefile.am
@@ -1,3 +1,6 @@
+INCLUDES = \
+	-DG_LOG_DOMAIN=\"PackageKit-Zypp\"
+
 #SUBDIRS = helpers
 plugindir = $(PK_PLUGIN_DIR)
 plugin_LTLIBRARIES = libpk_backend_zypp.la
commit 29675adba5337ca8a00555a23759aabdf4a33c2a
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 1 19:40:51 2010 +0000

    yum: fix compiling when not using Zif

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 4594e6c..da6450e 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -672,8 +672,6 @@ out:
 	return array;
 }
 
-#endif
-
 /**
  * pk_backend_get_cat_for_id:
  */
@@ -785,6 +783,8 @@ out:
 	return array_retval;
 }
 
+#endif
+
 /**
  * pk_backend_search_thread:
  */
commit 3d4bd921ef159e32335ebd304d4e88d6bd272f85
Author: Jorge González <aloriel at gmail.com>
Date:   Mon Nov 1 18:01:00 2010 +0000

    l10n: Updated Spanish (Castilian) (es) translation to 100%
    
    New status: 371 messages complete with 0 fuzzies and 0 untranslated.
    
    Transmitted-via: Transifex (www.transifex.net).

diff --git a/po/es.po b/po/es.po
index bd2600b..3cc4284 100644
--- a/po/es.po
+++ b/po/es.po
@@ -2,18 +2,18 @@
 # This file is distributed under the same license as the PackageKit package.
 #
 # Javier Alejandro Castro <javier.alejandro.castro at gmail.com>, 2008.
-# Jorge González <jorgegonz at svn.gnome.org>, 2009.
 # Fernando Gonzalez Blanco <fgonz at fedoraproject.org>, 2009.
 # Héctor Daniel Cabrera <logan at fedoraproject.org>, 2009, 2010.
+# Jorge González <jorgegonz at svn.gnome.org>, 2009, 2010.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-04 11:48+0000\n"
-"PO-Revision-Date: 2010-07-04 13:22-0300\n"
-"Last-Translator: Héctor Daniel Cabrera <logan at fedoraproject.org>\n"
-"Language-Team: Fedora Spanish <trans-es at lists.fedoraproject.org>\n"
+"POT-Creation-Date: 2010-11-01 12:26+0000\n"
+"PO-Revision-Date: 2010-11-01 18:59+0100\n"
+"Last-Translator: Jorge González <jorgegonz at svn.gnome.org>\n"
+"Language-Team: Español <gnome-es-list at gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -23,119 +23,115 @@ msgstr ""
 
 #. TRANSLATORS: this is an atomic transaction
 #. TRANSLATORS: the role is the point of the transaction, e.g. update-system
-#: ../client/pk-console.c:176
-#: ../client/pk-console.c:598
+#: ../client/pk-console.c:174 ../client/pk-console.c:596
 msgid "Transaction"
 msgstr "Transacción"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:178
+#: ../client/pk-console.c:176
 msgid "System time"
 msgstr "Hora del sistema"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "Succeeded"
 msgstr "Exitosa"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "True"
 msgstr "Verdadero"
 
-#: ../client/pk-console.c:180
+#: ../client/pk-console.c:178
 msgid "False"
 msgstr "Falso"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:182
-#: ../src/pk-polkit-action-lookup.c:332
+#: ../client/pk-console.c:180 ../src/pk-polkit-action-lookup.c:332
 msgid "Role"
 msgstr "Función"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "Duration"
 msgstr "Duración"
 
-#: ../client/pk-console.c:187
+#: ../client/pk-console.c:185
 msgid "(seconds)"
 msgstr "(segundos)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:191
-#: ../src/pk-polkit-action-lookup.c:346
+#: ../client/pk-console.c:189 ../src/pk-polkit-action-lookup.c:346
 msgid "Command line"
 msgstr "Línea de comandos"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:193
+#: ../client/pk-console.c:191
 msgid "User ID"
 msgstr "ID de usuario"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:200
+#: ../client/pk-console.c:198
 msgid "Username"
 msgstr "Nombre de usuario"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:204
+#: ../client/pk-console.c:202
 msgid "Real name"
 msgstr "Nombre real"
 
-#: ../client/pk-console.c:212
+#: ../client/pk-console.c:210
 msgid "Affected packages:"
 msgstr "Paquetes involucrados:"
 
-#: ../client/pk-console.c:214
+#: ../client/pk-console.c:212
 msgid "Affected packages: None"
 msgstr "Paquetes involucrados: Ninguno"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:249
+#: ../client/pk-console.c:247
 msgid "Distribution"
 msgstr "Distribución"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:251
+#: ../client/pk-console.c:249
 msgid "Type"
 msgstr "Tipo"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:253
-#: ../client/pk-console.c:292
+#: ../client/pk-console.c:251 ../client/pk-console.c:290
 msgid "Summary"
 msgstr "Resumen"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:281
+#: ../client/pk-console.c:279
 msgid "Category"
 msgstr "Categoría"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:283
+#: ../client/pk-console.c:281
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:286
+#: ../client/pk-console.c:284
 msgid "Parent"
 msgstr "Padre"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:287
 msgid "Name"
 msgstr "Nombre"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:295
+#: ../client/pk-console.c:293
 msgid "Icon"
 msgstr "Icono"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:341
+#: ../client/pk-console.c:339
 msgid "Details about the update:"
 msgstr "Detalles acerca de la actualización:"
 
@@ -144,10 +140,9 @@ msgstr "Detalles acerca de la actualización:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:347
-#: ../client/pk-console.c:617
-#: ../lib/packagekit-glib2/pk-task-text.c:126
-#: ../lib/packagekit-glib2/pk-task-text.c:208
+#: ../client/pk-console.c:345 ../client/pk-console.c:615
+#: ../lib/packagekit-glib2/pk-task-text.c:124
+#: ../lib/packagekit-glib2/pk-task-text.c:206
 #: ../src/pk-polkit-action-lookup.c:357
 msgid "Package"
 msgid_plural "Packages"
@@ -155,196 +150,209 @@ msgstr[0] "Paquete"
 msgstr[1] "Paquetes"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:350
+#: ../client/pk-console.c:348
 msgid "Updates"
 msgstr "Actualizaciones"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:354
+#: ../client/pk-console.c:352
 msgid "Obsoletes"
 msgstr "Sustituye"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:358
-#: ../lib/packagekit-glib2/pk-task-text.c:211
+#: ../client/pk-console.c:356 ../lib/packagekit-glib2/pk-task-text.c:209
 msgid "Vendor"
 msgstr "Fabricante"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:362
+#: ../client/pk-console.c:360
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:364
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:370
+#: ../client/pk-console.c:368
 msgid "Restart"
 msgstr "Reiniciar"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:374
+#: ../client/pk-console.c:372
 msgid "Update text"
 msgstr "Texto de actualización"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:378
+#: ../client/pk-console.c:376
 msgid "Changes"
 msgstr "Cambios"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:382
+#: ../client/pk-console.c:380
 msgid "State"
 msgstr "Estado"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:386
+#: ../client/pk-console.c:384
 msgid "Issued"
 msgstr "Emitido"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:390
-#: ../lib/packagekit-glib2/pk-console-shared.c:517
+#: ../client/pk-console.c:388 ../lib/packagekit-glib2/pk-console-shared.c:515
 msgid "Updated"
 msgstr "Actualizado"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:426
+#: ../client/pk-console.c:424
 msgid "Enabled"
-msgstr "Habilitado"
+msgstr "Activado"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:429
+#: ../client/pk-console.c:427
 msgid "Disabled"
-msgstr "Deshabilitado"
+msgstr "Desactivado"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:461
+#: ../client/pk-console.c:459
 msgid "System restart required by:"
 msgstr "Se necesita reiniciar el sistema debido a:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:464
+#: ../client/pk-console.c:462
 msgid "Session restart required:"
 msgstr "Se necesita reiniciar la sesión:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:467
+#: ../client/pk-console.c:465
 msgid "System restart (security) required by:"
 msgstr "Reinicio del sistema (seguridad) solicitado por:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:470
+#: ../client/pk-console.c:468
 msgid "Session restart (security) required:"
 msgstr "Reinicio de la sesión (seguridad) solicitado por:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:473
+#: ../client/pk-console.c:471
 msgid "Application restart required by:"
 msgstr "Se necesita reiniciar una aplicación debido a:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:508
+#: ../client/pk-console.c:506
 msgid "Package description"
 msgstr "Descripción del paquete"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:539
+#: ../client/pk-console.c:537
 msgid "Message:"
 msgstr "Mensaje:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:558
 msgid "No files"
 msgstr "No hay archivos"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:565
+#: ../client/pk-console.c:563
 msgid "Package files"
 msgstr "Archivos del paquete"
 
 #. TRANSLATORS: the percentage complete of the transaction
-#: ../client/pk-console.c:633
+#: ../client/pk-console.c:631
 msgid "Percentage"
 msgstr "Porcentaje"
 
 #. TRANSLATORS: the status of the transaction (e.g. downloading)
-#: ../client/pk-console.c:651
+#: ../client/pk-console.c:649
 msgid "Status"
 msgstr "Estado"
 
 #. TRANSLATORS: the results from the transaction
-#: ../client/pk-console.c:680
+#: ../client/pk-console.c:678
 msgid "Results:"
 msgstr "Resultados:"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:685
 msgid "Fatal error"
 msgstr "Error fatal"
 
+#. TRANSLATORS: the user asked to update everything, but there is nothing that can be updated
+#: ../client/pk-console.c:701
+msgid "There are no packages to update."
+msgstr "No existen paquetes que actualizar."
+
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:696
-#: ../contrib/command-not-found/pk-command-not-found.c:454
-#: ../contrib/command-not-found/pk-command-not-found.c:634
+#: ../client/pk-console.c:704
+#: ../contrib/command-not-found/pk-command-not-found.c:639
 msgid "The transaction failed"
 msgstr "La transacción no pudo realizarse"
 
 #. TRANSLATORS: print a message when there are no updates
-#: ../client/pk-console.c:727
+#: ../client/pk-console.c:733
 msgid "There are no updates available at this time."
 msgstr "En este momento no existen actualizaciones disponibles."
 
-#: ../client/pk-console.c:750
+#: ../client/pk-console.c:756
 msgid "There are no upgrades available at this time."
 msgstr "En este momento no existen actualizaciones disponibles."
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:817
+#: ../client/pk-console.c:823
 msgid "Please restart the computer to complete the update."
 msgstr "Reinicie el equipo para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:820
+#: ../client/pk-console.c:826
 msgid "Please logout and login to complete the update."
 msgstr "Cierre la sesión y vuelva a ingresar para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:823
-msgid "Please restart the computer to complete the update as important security updates have been installed."
-msgstr "Por favor, debido a que se han instalado actualizaciones de seguridad importantes, reinicie el equipo para completar la actualización. "
+#: ../client/pk-console.c:829
+msgid ""
+"Please restart the computer to complete the update as important security "
+"updates have been installed."
+msgstr ""
+"Debido a que se han instalado actualizaciones de seguridad importantes, "
+"reinicie el equipo para completar la actualización. "
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:826
-msgid "Please logout and login to complete the update as important security updates have been installed."
-msgstr "Por favor, debido a que se han instalado actualizaciones de seguridad importantes, cierre la sesión y vuelva a registrarse para completar la actualización."
+#: ../client/pk-console.c:832
+msgid ""
+"Please logout and login to complete the update as important security updates "
+"have been installed."
+msgstr ""
+"Debido a que se han instalado actualizaciones de seguridad importantes, "
+"cierre la sesión y vuelva a registrarse para completar la actualización."
 
 #. TRANSLATORS: The user used 'pkcon install dave.rpm' rather than 'pkcon install-local dave.rpm'
-#: ../client/pk-console.c:852
+#: ../client/pk-console.c:858
 #, c-format
-msgid "Expected package name, actually got file. Try using 'pkcon install-local %s' instead."
-msgstr "Se esperaba el nombre de un paquete, pero se obtuvo un archivo. En su lugar, trate de utilizar 'pkcon install-local %s'."
+msgid ""
+"Expected package name, actually got file. Try using 'pkcon install-local %s' "
+"instead."
+msgstr ""
+"Se esperaba el nombre de un paquete, pero se obtuvo un archivo. En su lugar, "
+"trate de utilizar 'pkcon install-local %s'."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:860
+#: ../client/pk-console.c:866
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Esta herramienta no pudo encontrar ningún paquete disponible: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:888
+#: ../client/pk-console.c:894
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Esta herramienta no pudo encontrar el paquete instalado: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:916
-#: ../client/pk-console.c:944
+#: ../client/pk-console.c:922 ../client/pk-console.c:950
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Esta herramienta no pudo encontrar el paquete: %s"
@@ -353,658 +361,679 @@ msgstr "Esta herramienta no pudo encontrar el paquete: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:972
-#: ../client/pk-console.c:1000
-#: ../client/pk-console.c:1028
-#: ../client/pk-console.c:1056
-#: ../client/pk-console.c:1084
+#: ../client/pk-console.c:978 ../client/pk-console.c:1006
+#: ../client/pk-console.c:1034 ../client/pk-console.c:1062
+#: ../client/pk-console.c:1090
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Esta herramienta no pudo encontrar todos los paquetes: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1113
+#: ../client/pk-console.c:1119
 msgid "The daemon crashed mid-transaction!"
-msgstr "¡El demonio se ha caído en plena transacción!"
+msgstr "El demonio se ha colgado en plena transacción."
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1147
+#: ../client/pk-console.c:1153
 msgid "PackageKit Console Interface"
 msgstr "Interfaz de consola de PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1149
+#: ../client/pk-console.c:1155
 msgid "Subcommands:"
 msgstr "Subcomandos:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:1228
+#: ../client/pk-console.c:1234
 msgid "Failed to get the time since this action was last completed"
 msgstr "Falló al obtener la hora de la última vez que se completó esta acción"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:1268
-#: ../client/pk-monitor.c:373
+#: ../client/pk-console.c:1275 ../client/pk-monitor.c:371
 msgid "Show the program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:1271
+#: ../client/pk-console.c:1278
 msgid "Set the filter, e.g. installed"
 msgstr "Establecer el filtro, p. ej. instalado"
 
 #. TRANSLATORS: command line argument, use a non-standard install prefix
-#: ../client/pk-console.c:1274
+#: ../client/pk-console.c:1281
 msgid "Set the install root, e.g. '/' or '/mnt/ltsp'"
-msgstr "Establecer la raíz de instalación, p. ej., '/', o '/mnt/ltsp'"
+msgstr "Establecer la raíz de instalación, p. ej., «/», o «/mnt/ltsp»"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:1284
 msgid "Exit without waiting for actions to complete"
 msgstr "Salir sin esperar que las acciones se completen"
 
 #. command line argument, do we ask questions
-#: ../client/pk-console.c:1280
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:527
+#: ../client/pk-console.c:1287
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:525
 msgid "Install the packages without asking for confirmation"
 msgstr "Instalar los paquetes sin confirmación"
 
 #. TRANSLATORS: command line argument, this command is not a priority
-#: ../client/pk-console.c:1283
+#: ../client/pk-console.c:1290
 msgid "Run the command using idle network bandwidth and also using less power"
-msgstr "Ejecuta el comando utilizando menos potencia, y el ancho de bando libre"
+msgstr ""
+"Ejecuta el comando utilizando menos potencia, y el ancho de bando libre"
+
+#. TRANSLATORS: command line argument, just output without fancy formatting
+#: ../client/pk-console.c:1293
+msgid ""
+"Print to screen a machine readable output, rather than using animated widgets"
+msgstr ""
+"Imprime en la pantalla una salida legible por una máquina, en lugar de "
+"utilizar widgets animados"
 
 #. TRANSLATORS: command line argument, just output without fancy formatting
-#: ../client/pk-console.c:1286
-msgid "Print to screen a machine readable output, rather than using animated widgets"
-msgstr "Imprime en la pantalla una salida legible por una máquina, en lugar de utilizar widgets animados"
+#: ../client/pk-console.c:1296
+msgid "The maximum metadata cache age. Use -1 for 'never'."
+msgstr ""
+"El tiempo máximo de edad para la caché de metadatos. Usar -1 para «nunca»."
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1308
+#: ../client/pk-console.c:1333
 msgid "Failed to contact PackageKit"
 msgstr "Falló al contactar con PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1369
+#: ../client/pk-console.c:1381
 msgid "The proxy could not be set"
 msgstr "No se pudo definir el proxy"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1381
+#: ../client/pk-console.c:1393
 msgid "The install root could not be set"
 msgstr "La raíz de instalación no pudo ser definida"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1393
+#: ../client/pk-console.c:1405
 msgid "The filter specified was invalid"
 msgstr "El filtro especificado fue inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1412
+#: ../client/pk-console.c:1424
 msgid "A search type is required, e.g. name"
 msgstr "Se necesita un tipo de búsqueda, por ejemplo, nombre"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1419
-#: ../client/pk-console.c:1431
-#: ../client/pk-console.c:1443
-#: ../client/pk-console.c:1455
+#: ../client/pk-console.c:1431 ../client/pk-console.c:1443
+#: ../client/pk-console.c:1455 ../client/pk-console.c:1467
 msgid "A search term is required"
 msgstr "Se necesita un término de búsqueda"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1465
+#: ../client/pk-console.c:1477
 msgid "Invalid search type"
 msgstr "Tipo de búsqueda inválido"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1471
+#: ../client/pk-console.c:1483
 msgid "A package name to install is required"
 msgstr "Se necesita un nombre de paquete a instalar"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1480
+#: ../client/pk-console.c:1492
 msgid "A filename to install is required"
 msgstr "Se requiere un nombre de archivo a instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1492
+#: ../client/pk-console.c:1503
 msgid "A type, key_id and package_id are required"
 msgstr "Se necesita un tipo, key_id y package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1503
+#: ../client/pk-console.c:1514
 msgid "A package name to remove is required"
 msgstr "Necesita un nombre de paquete para eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1512
+#: ../client/pk-console.c:1523
 msgid "A destination directory and the package names to download are required"
-msgstr "Se necesita un directorio de destino y los nombres de los paquetes a descargar"
+msgstr ""
+"Se necesita un directorio de destino y los nombres de los paquetes a "
+"descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1519
+#: ../client/pk-console.c:1530
 msgid "Directory not found"
 msgstr "Directorio no encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1528
+#: ../client/pk-console.c:1539
 msgid "A licence identifier (eula-id) is required"
 msgstr "Se necesita un identificador de licencia (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1539
+#: ../client/pk-console.c:1550
 msgid "A transaction identifier (tid) is required"
 msgstr "Se necesita un identificador de transacción (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1560
+#: ../client/pk-console.c:1571
 msgid "A package name to resolve is required"
 msgstr "Se necesita un nombre de paquete para resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1571
-#: ../client/pk-console.c:1582
+#: ../client/pk-console.c:1582 ../client/pk-console.c:1593
 msgid "A repository name is required"
 msgstr "Se necesita un nombre de repositorio"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1593
+#: ../client/pk-console.c:1604
 msgid "A repo name, parameter and value are required"
 msgstr "Debe especificar un nombre de repositorio, parámetro y valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1610
+#: ../client/pk-console.c:1621
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Debe especificar una acción, por ejemplo, «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1617
+#: ../client/pk-console.c:1628
 msgid "A correct role is required"
 msgstr "Se necesita un rol correcto"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1627
-#: ../client/pk-console.c:1642
-#: ../client/pk-console.c:1651
-#: ../client/pk-console.c:1671
-#: ../client/pk-console.c:1680
-#: ../client/pk-generate-pack.c:316
+#: ../client/pk-console.c:1638 ../client/pk-console.c:1652
+#: ../client/pk-console.c:1661 ../client/pk-console.c:1681
+#: ../client/pk-console.c:1690 ../client/pk-generate-pack.c:314
 msgid "A package name is required"
 msgstr "Se necesita un nombre de paquete"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1660
+#: ../client/pk-console.c:1670
 msgid "A package provide string is required"
 msgstr "Se necesita la cadena de lo que proporciona el paquete"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1741
+#: ../client/pk-console.c:1751
 #, c-format
 msgid "Option '%s' is not supported"
-msgstr "La opción '%s' no está soportada"
+msgstr "La opción «%s» no está soportada"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1751
+#: ../client/pk-console.c:1761
 msgid "Command failed"
 msgstr "Falló el comando"
 
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:255
+#: ../client/pk-generate-pack.c:253
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Establezca el nombre del archivo de dependencias para excluir"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:258
+#: ../client/pk-generate-pack.c:256
 msgid "The output file or directory (the current directory is used if omitted)"
-msgstr "El directorio o archivo de salida (si se imite, será utilizado el directorio actual)"
+msgstr ""
+"El directorio o archivo de salida (si se imite, será utilizado el directorio "
+"actual)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:259
 msgid "The package to be put into the service pack"
 msgstr "El paquete a ser colocado en el paquete de servicio"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:262
 msgid "Put all updates available in the service pack"
 msgstr "Poner todas las actualizaciones disponibles en el paquete de servicio"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:300
+#: ../client/pk-generate-pack.c:298
 msgid "Neither --package or --updates option selected."
 msgstr "No se seleccionó la opción --package o --updates."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:308
+#: ../client/pk-generate-pack.c:306
 msgid "Both options selected."
 msgstr "Se seleccionaron ambas opciones."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:324
+#: ../client/pk-generate-pack.c:322
 msgid "A output directory or file name is required"
 msgstr "Se necesita un directorio o nombre de archivo de salida"
 
 #. TRANSLATORS: This is when the daemon is not-installed/broken and fails to startup
-#: ../client/pk-generate-pack.c:342
+#: ../client/pk-generate-pack.c:340
 msgid "The daemon failed to startup"
 msgstr "El demonio falló al tratar de iniciarse"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:353
-#: ../client/pk-generate-pack.c:359
+#: ../client/pk-generate-pack.c:351 ../client/pk-generate-pack.c:357
 msgid "The package manager cannot perform this type of operation."
 msgstr "El gestor de paquetes no puede realizar este tipo de operación."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:366
-msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
-msgstr "No se pueden crear paquetes de servicio ya que PackageKit no se construyó con soporte para libarchive."
+#: ../client/pk-generate-pack.c:364
+msgid ""
+"Service packs cannot be created as PackageKit was not built with libarchive "
+"support."
+msgstr ""
+"No se pueden crear paquetes de servicio ya que PackageKit no se construyó "
+"con soporte para libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:377
+#: ../client/pk-generate-pack.c:375
 msgid "If specifying a file, the service pack name must end with"
-msgstr "Si especifica un archivo, el nombre del paquete de servicio debe finalizar con"
+msgstr ""
+"Si especifica un archivo, el nombre del paquete de servicio debe finalizar "
+"con"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:393
+#: ../client/pk-generate-pack.c:391
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Ya existe un paquete con ese nombre, ¿desea sobrescribirlo?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:396
+#: ../client/pk-generate-pack.c:394
 msgid "The pack was not overwritten."
 msgstr "No se sobrescribió el paquete."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:409
+#: ../client/pk-generate-pack.c:407
 msgid "Failed to create directory:"
 msgstr "Falló al crear el directorio:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:421
+#: ../client/pk-generate-pack.c:419
 msgid "Failed to open package list."
 msgstr "Falló al abrir la lista de paquetes."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:430
+#: ../client/pk-generate-pack.c:428
 msgid "Finding package name."
 msgstr "Buscando el nombre de paquete."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:434
+#: ../client/pk-generate-pack.c:432
 #, c-format
 msgid "Failed to find package '%s': %s"
-msgstr "Falló al buscar el paquete '%s': %s"
+msgstr "Falló al buscar el paquete «%s»: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:442
+#: ../client/pk-generate-pack.c:440
 msgid "Creating service pack..."
 msgstr "Creando el paquete de servicio..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:457
+#: ../client/pk-generate-pack.c:455
 #, c-format
 msgid "Service pack created '%s'"
-msgstr "Ha sido creado el paquete de servicio '%s'"
+msgstr "Ha sido creado el paquete de servicio «%s»"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:462
+#: ../client/pk-generate-pack.c:460
 #, c-format
 msgid "Failed to create '%s': %s"
-msgstr "Falló al crear '%s': %s"
+msgstr "Falló al crear «%s»: %s"
 
-#: ../client/pk-monitor.c:286
+#: ../client/pk-monitor.c:284
 msgid "Failed to get daemon state"
 msgstr "Falló al obtener el estado del demonio"
 
-#: ../client/pk-monitor.c:351
+#: ../client/pk-monitor.c:349
 msgid "Failed to get properties"
 msgstr "Falló al intentar obtener las propiedades"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:389
+#: ../client/pk-monitor.c:387
 msgid "PackageKit Monitor"
 msgstr "Monitor de PackageKit"
 
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:497
+#: ../contrib/browser-plugin/pk-plugin-install.c:499
 msgid "Getting package information..."
 msgstr "Extrayendo información del paquete..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:503
+#: ../contrib/browser-plugin/pk-plugin-install.c:505
 #, c-format
 msgid "Run %s"
 msgstr "Ejecutar %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:509
+#: ../contrib/browser-plugin/pk-plugin-install.c:511
 msgid "Installed version"
 msgstr "Versión instalada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:519
 #, c-format
 msgid "Run version %s now"
 msgstr "Ejecutar la versión %s ahora"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:523
+#: ../contrib/browser-plugin/pk-plugin-install.c:525
 msgid "Run now"
 msgstr "Ejecutar ahora"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:529
+#: ../contrib/browser-plugin/pk-plugin-install.c:531
 #, c-format
 msgid "Update to version %s"
 msgstr "Actualizar a la versión %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:535
+#: ../contrib/browser-plugin/pk-plugin-install.c:537
 #, c-format
 msgid "Install %s now"
 msgstr "Instalar %s ahora"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:538
+#: ../contrib/browser-plugin/pk-plugin-install.c:540
 msgid "Version"
 msgstr "Versión"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:543
+#: ../contrib/browser-plugin/pk-plugin-install.c:545
 msgid "No packages found for your system"
 msgstr "No se encontró ningún paquete para su sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:548
+#: ../contrib/browser-plugin/pk-plugin-install.c:550
 msgid "Installing..."
 msgstr "Instalando..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:367
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Downloading details about the software sources."
 msgstr "Descargando detalles acerca de las fuentes de software"
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:371
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Downloading filelists (this may take some time to complete)."
-msgstr "Descargando listas de archivo (esto podría tardar un tiempo en completarse)."
+msgstr ""
+"Descargando listas de archivo (esto podría tardar un tiempo en completarse)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:375
+#: ../contrib/command-not-found/pk-command-not-found.c:374
 msgid "Waiting for package manager lock."
 msgstr "Esperando bloqueo del administrador de paquetes."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:379
+#: ../contrib/command-not-found/pk-command-not-found.c:378
 msgid "Loading list of packages."
 msgstr "Cargando listas de paquetes."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:445
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Falló al buscar el archivo"
 
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../contrib/command-not-found/pk-command-not-found.c:456
+msgid "Getting the list of files failed"
+msgstr "Falló al obtener la lista de archivos"
+
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:597
+#: ../contrib/command-not-found/pk-command-not-found.c:602
 msgid "Failed to launch:"
 msgstr "Falló al iniciar:"
 
 #. TRANSLATORS: we failed to install the package
-#: ../contrib/command-not-found/pk-command-not-found.c:625
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "Failed to install packages"
 msgstr "No se han podido instalar los paquetes"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:701
+#: ../contrib/command-not-found/pk-command-not-found.c:706
 msgid "PackageKit Command Not Found"
 msgstr "No se encontró el comando PackageKit"
 
-#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
-#: ../contrib/command-not-found/pk-command-not-found.c:727
-msgid "Command not found."
-msgstr "Comando no encontrado."
+#. TRANSLATORS: the prefix of all the output telling the user
+#. * why it's not executing. NOTE: this is lowercase to mimic
+#. * the style of bash itself -- apologies
+#: ../contrib/command-not-found/pk-command-not-found.c:739
+msgid "command not found"
+msgstr "comando no encontrado"
 
 #. TRANSLATORS: tell the user what we think the command is
-#: ../contrib/command-not-found/pk-command-not-found.c:745
+#: ../contrib/command-not-found/pk-command-not-found.c:757
 msgid "Similar command is:"
 msgstr "Un comando similar es:"
 
 #. TRANSLATORS: Ask the user if we should run the similar command
-#: ../contrib/command-not-found/pk-command-not-found.c:755
+#: ../contrib/command-not-found/pk-command-not-found.c:771
 msgid "Run similar command:"
 msgstr "Ejecuta un comando similar:"
 
 #. TRANSLATORS: show the user a list of commands that they could have meant
 #. TRANSLATORS: show the user a list of commands we could run
-#: ../contrib/command-not-found/pk-command-not-found.c:769
-#: ../contrib/command-not-found/pk-command-not-found.c:778
+#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:794
 msgid "Similar commands are:"
 msgstr "Los comandos similares son:"
 
 #. TRANSLATORS: ask the user to choose a file to run
-#: ../contrib/command-not-found/pk-command-not-found.c:785
+#: ../contrib/command-not-found/pk-command-not-found.c:801
 msgid "Please choose a command to run"
 msgstr "Elija un comando para ejecutar"
 
 #. TRANSLATORS: tell the user what package provides the command
-#: ../contrib/command-not-found/pk-command-not-found.c:803
+#: ../contrib/command-not-found/pk-command-not-found.c:819
 msgid "The package providing this file is:"
 msgstr "El paquete que proporciona este archivo es:"
 
 #. TRANSLATORS: as the user if we want to install a package to provide the command
-#: ../contrib/command-not-found/pk-command-not-found.c:808
+#: ../contrib/command-not-found/pk-command-not-found.c:826
 #, c-format
 msgid "Install package '%s' to provide command '%s'?"
-msgstr "¿Instalar el paquete '%s' para proporcionar el comando '%s'?"
+msgstr "¿Instalar el paquete «%s» para proporcionar el comando «%s»?"
 
 #. TRANSLATORS: Show the user a list of packages that provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:832
+#: ../contrib/command-not-found/pk-command-not-found.c:853
 msgid "Packages providing this file are:"
 msgstr "Los paquetes que proporcionan este archivo son:"
 
 #. TRANSLATORS: Show the user a list of packages that they can install to provide this command
-#: ../contrib/command-not-found/pk-command-not-found.c:842
+#: ../contrib/command-not-found/pk-command-not-found.c:863
 msgid "Suitable packages are:"
 msgstr "Los paquetes posibles son:"
 
 #. get selection
 #. TRANSLATORS: ask the user to choose a file to install
-#: ../contrib/command-not-found/pk-command-not-found.c:851
+#: ../contrib/command-not-found/pk-command-not-found.c:872
 msgid "Please choose a package to install"
 msgstr "Elija un paquete para instalar"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:197
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "Iniciando la instalación"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:409
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:407
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
-msgstr "No se ha podido encontrar el paquete %s, o tal vez ya se encuentre instalado: %s"
+msgstr ""
+"No se ha podido encontrar el paquete %s, o tal vez ya se encuentre "
+"instalado: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:518
-msgid "Don't actually install any packages, only simulate what would be installed"
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:516
+msgid ""
+"Don't actually install any packages, only simulate what would be installed"
 msgstr "No se instala ningún paquete, solo se indica cuáles serían instalados"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:521
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:519
 msgid "Do not install dependencies of the core packages"
 msgstr "No se instalan dependencias de los paquetes principales"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:522
 msgid "Do not display information or progress"
 msgstr "No se muestra información ni progreso"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:542
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 msgid "PackageKit Debuginfo Installer"
 msgstr "Instalador de depuración de errores de PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:554
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "ERROR: Debe especificar los nombres de los paquetes a instalar."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:592
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:590
 #, c-format
 msgid "Getting sources list"
 msgstr "Obteniendo lista desde las fuentes"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:602
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:677
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:805
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:872
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:916
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:870
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 msgid "FAILED."
-msgstr "FALLO."
+msgstr "FALLÓ."
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:617
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:692
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:776
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:820
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:615
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:655
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:774
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:929
 #, c-format
 msgid "OK."
-msgstr "OK."
+msgstr "CORRECTO."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:620
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:618
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Se han encontrado %i fuentes activas y %i fuentes deshabilitadas."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:627
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:625
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Buscando fuentes para depuración"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:660
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:658
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Se han encontrado %i repositorios deshabilitados para depuración."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:667
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:665
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Habilitando fuentes para depuración"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:695
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:693
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Se han habilitado %i fuentes para depuración."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:702
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Buscando paquetes de depuración."
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:714
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:712
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Falló al buscar el paquete %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:735
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Fallo al buscar el paquete de depuración %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:765
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:763
 #, c-format
 msgid "Found no packages to install."
 msgstr "No se han encontrado paquetes para instalar."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:779
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:777
 #, c-format
 msgid "Found %i packages:"
 msgstr "Se han encontrado %i paquetes:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:795
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:793
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Buscando paquetes que dependan de esos paquetes."
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:806
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "No se han podido encontrar paquetes dependientes: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:824
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:822
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Se han encontrado %i paquetes extra."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
 #, c-format
 msgid "No extra packages required."
 msgstr "No son necesarios paquetes extra."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:837
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:835
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Se han encontrado %i paquetes para instalar:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:850
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "No se instalan paquetes en modo de simulación"
 
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:862
-#: ../lib/packagekit-glib2/pk-console-shared.c:289
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../lib/packagekit-glib2/pk-console-shared.c:287
 #, c-format
 msgid "Installing packages"
 msgstr "Instalando paquetes"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:875
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "No se han podido instalar paquetes: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:905
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Deshabilitando fuentes previamente habilitadas"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:919
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:917
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "No es posible deshabilitar las fuentes para depuración:%s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:934
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:932
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Se han deshabilitado %i fuentes para la depuración. "
@@ -1111,604 +1140,619 @@ msgstr "Lista de paquetes de PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Paquete de servicio de PackageKit"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:65
+#: ../lib/packagekit-glib2/pk-console-shared.c:63
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Introduzca un número del 1 al %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:191
+#: ../lib/packagekit-glib2/pk-console-shared.c:189
 msgid "More than one package matches:"
 msgstr "Coincide más de un paquete:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:202
+#: ../lib/packagekit-glib2/pk-console-shared.c:200
 msgid "Please choose the correct package: "
 msgstr "Elija el paquete correcto: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:257
+#: ../lib/packagekit-glib2/pk-console-shared.c:255
 msgid "Unknown state"
 msgstr "Estado desconocido"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:261
+#: ../lib/packagekit-glib2/pk-console-shared.c:259
 msgid "Starting"
 msgstr "Comenzando"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:265
+#: ../lib/packagekit-glib2/pk-console-shared.c:263
 msgid "Waiting in queue"
 msgstr "Esperando en cola"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:269
+#: ../lib/packagekit-glib2/pk-console-shared.c:267
 msgid "Running"
 msgstr "Ejecutando"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:273
+#: ../lib/packagekit-glib2/pk-console-shared.c:271
 msgid "Querying"
 msgstr "Consultando"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:277
+#: ../lib/packagekit-glib2/pk-console-shared.c:275
 msgid "Getting information"
 msgstr "Obteniendo información"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:281
+#: ../lib/packagekit-glib2/pk-console-shared.c:279
 msgid "Removing packages"
 msgstr "Eliminando paquetes"
 
 #. TRANSLATORS: transaction state, downloading package files
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:285
-#: ../lib/packagekit-glib2/pk-console-shared.c:663
+#: ../lib/packagekit-glib2/pk-console-shared.c:283
+#: ../lib/packagekit-glib2/pk-console-shared.c:661
 msgid "Downloading packages"
 msgstr "Descargando paquetes"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:293
+#: ../lib/packagekit-glib2/pk-console-shared.c:291
 msgid "Refreshing software list"
 msgstr "Actualizando la lista de software"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:297
+#: ../lib/packagekit-glib2/pk-console-shared.c:295
 msgid "Installing updates"
 msgstr "Instalando actualizaciones"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:301
+#: ../lib/packagekit-glib2/pk-console-shared.c:299
 msgid "Cleaning up packages"
 msgstr "Limpiando paquetes"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:305
+#: ../lib/packagekit-glib2/pk-console-shared.c:303
 msgid "Obsoleting packages"
 msgstr "Paquetes obsoletos"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:309
+#: ../lib/packagekit-glib2/pk-console-shared.c:307
 msgid "Resolving dependencies"
 msgstr "Resolviendo dependencias"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:313
+#: ../lib/packagekit-glib2/pk-console-shared.c:311
 msgid "Checking signatures"
 msgstr "Comprobando firmas"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:317
-#: ../lib/packagekit-glib2/pk-console-shared.c:623
+#: ../lib/packagekit-glib2/pk-console-shared.c:315
+#: ../lib/packagekit-glib2/pk-console-shared.c:621
 msgid "Rolling back"
 msgstr "Retrocediendo"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:321
+#: ../lib/packagekit-glib2/pk-console-shared.c:319
 msgid "Testing changes"
 msgstr "Comprobando modificaciones"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:325
+#: ../lib/packagekit-glib2/pk-console-shared.c:323
 msgid "Committing changes"
 msgstr "Realizando modificaciones"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:329
+#: ../lib/packagekit-glib2/pk-console-shared.c:327
 msgid "Requesting data"
 msgstr "Solicitando datos"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:333
+#: ../lib/packagekit-glib2/pk-console-shared.c:331
 msgid "Finished"
 msgstr "Finalizado"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:337
+#: ../lib/packagekit-glib2/pk-console-shared.c:335
 msgid "Cancelling"
 msgstr "Cancelando"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:341
+#: ../lib/packagekit-glib2/pk-console-shared.c:339
 msgid "Downloading repository information"
 msgstr "Descargando información del repositorio"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:345
+#: ../lib/packagekit-glib2/pk-console-shared.c:343
 msgid "Downloading list of packages"
 msgstr "Descargando listas de paquetes"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:349
+#: ../lib/packagekit-glib2/pk-console-shared.c:347
 msgid "Downloading file lists"
 msgstr "Descargando listas de archivos"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:353
+#: ../lib/packagekit-glib2/pk-console-shared.c:351
 msgid "Downloading lists of changes"
 msgstr "Descargando listas de modificaciones"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:357
+#: ../lib/packagekit-glib2/pk-console-shared.c:355
 msgid "Downloading groups"
 msgstr "Descargando grupos"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:361
+#: ../lib/packagekit-glib2/pk-console-shared.c:359
 msgid "Downloading update information"
 msgstr "Descargando información de la actualización"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:365
+#: ../lib/packagekit-glib2/pk-console-shared.c:363
 msgid "Repackaging files"
 msgstr "Volviendo a empaquetar archivos"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:369
+#: ../lib/packagekit-glib2/pk-console-shared.c:367
 msgid "Loading cache"
 msgstr "Cargando caché"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:373
+#: ../lib/packagekit-glib2/pk-console-shared.c:371
 msgid "Scanning applications"
 msgstr "Escaneando aplicaciones"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:377
+#: ../lib/packagekit-glib2/pk-console-shared.c:375
 msgid "Generating package lists"
 msgstr "Generando la lista de paquetes"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:381
+#: ../lib/packagekit-glib2/pk-console-shared.c:379
 msgid "Waiting for package manager lock"
 msgstr "Esperando bloqueo del administrador de paquetes"
 
 #. TRANSLATORS: transaction state, waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:385
+#: ../lib/packagekit-glib2/pk-console-shared.c:383
 msgid "Waiting for authentication"
 msgstr "Esperando autenticación"
 
 #. TRANSLATORS: transaction state, we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:389
+#: ../lib/packagekit-glib2/pk-console-shared.c:387
 msgid "Updating running applications"
 msgstr "Actualizando aplicaciones ejecutadas"
 
 #. TRANSLATORS: transaction state, we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:393
+#: ../lib/packagekit-glib2/pk-console-shared.c:391
 msgid "Checking applications in use"
 msgstr "Comprobando aplicaciones en uso"
 
 #. TRANSLATORS: transaction state, we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:397
+#: ../lib/packagekit-glib2/pk-console-shared.c:395
 msgid "Checking libraries in use"
 msgstr "Comprobando bibliotecas en uso"
 
 #. TRANSLATORS: transaction state, we are copying package files before or after the transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
+#: ../lib/packagekit-glib2/pk-console-shared.c:399
 msgid "Copying files"
 msgstr "Copiando archivos"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:419
+#: ../lib/packagekit-glib2/pk-console-shared.c:417
 msgid "Trivial"
 msgstr "Trivial"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:423
+#: ../lib/packagekit-glib2/pk-console-shared.c:421
 msgid "Normal"
 msgstr "Normal"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:427
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
 msgid "Important"
 msgstr "Importante"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:431
+#: ../lib/packagekit-glib2/pk-console-shared.c:429
 msgid "Security"
 msgstr "Seguridad"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:435
+#: ../lib/packagekit-glib2/pk-console-shared.c:433
 msgid "Bug fix "
 msgstr "Solución de error"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:439
+#: ../lib/packagekit-glib2/pk-console-shared.c:437
 msgid "Enhancement"
 msgstr "Mejora"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:443
+#: ../lib/packagekit-glib2/pk-console-shared.c:441
 msgid "Blocked"
 msgstr "Bloqueado"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
-#: ../lib/packagekit-glib2/pk-console-shared.c:521
+#: ../lib/packagekit-glib2/pk-console-shared.c:446
+#: ../lib/packagekit-glib2/pk-console-shared.c:519
 msgid "Installed"
 msgstr "Instalado"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:453
+#: ../lib/packagekit-glib2/pk-console-shared.c:451
 msgid "Available"
 msgstr "Disponible"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:471
+#: ../lib/packagekit-glib2/pk-console-shared.c:469
 msgid "Downloading"
 msgstr "Descargando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:475
+#: ../lib/packagekit-glib2/pk-console-shared.c:473
 msgid "Updating"
 msgstr "Actualizando"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:479
-#: ../lib/packagekit-glib2/pk-console-shared.c:599
+#: ../lib/packagekit-glib2/pk-console-shared.c:477
+#: ../lib/packagekit-glib2/pk-console-shared.c:597
 msgid "Installing"
 msgstr "Instalando"
 
 #. TRANSLATORS: The action of the package, in present tense
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:483
-#: ../lib/packagekit-glib2/pk-console-shared.c:595
+#: ../lib/packagekit-glib2/pk-console-shared.c:481
+#: ../lib/packagekit-glib2/pk-console-shared.c:593
 msgid "Removing"
 msgstr "Eliminando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:487
+#: ../lib/packagekit-glib2/pk-console-shared.c:485
 msgid "Cleaning up"
 msgstr "Limpiando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:491
+#: ../lib/packagekit-glib2/pk-console-shared.c:489
 msgid "Obsoleting"
 msgstr "Obsoleto"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:495
+#: ../lib/packagekit-glib2/pk-console-shared.c:493
 msgid "Reinstalling"
 msgstr "Reinstalando"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:513
+#: ../lib/packagekit-glib2/pk-console-shared.c:511
 msgid "Downloaded"
 msgstr "Descargado"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:525
+#: ../lib/packagekit-glib2/pk-console-shared.c:523
 msgid "Removed"
 msgstr "Eliminados"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:529
+#: ../lib/packagekit-glib2/pk-console-shared.c:527
 msgid "Cleaned up"
 msgstr "Limpios"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:533
+#: ../lib/packagekit-glib2/pk-console-shared.c:531
 msgid "Obsoleted"
 msgstr "Obsoletos"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:537
+#: ../lib/packagekit-glib2/pk-console-shared.c:535
 msgid "Reinstalled"
 msgstr "Reinstalados"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:555
+#: ../lib/packagekit-glib2/pk-console-shared.c:553
 msgid "Unknown role type"
 msgstr "Tipo de función desconocido"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:559
+#: ../lib/packagekit-glib2/pk-console-shared.c:557
 msgid "Getting dependencies"
 msgstr "Obteniendo dependencias"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:563
+#: ../lib/packagekit-glib2/pk-console-shared.c:561
 msgid "Getting update details"
 msgstr "Obteniendo detalles de la actualización"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:567
+#: ../lib/packagekit-glib2/pk-console-shared.c:565
 msgid "Getting details"
 msgstr "Obteniendo detalles"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:571
+#: ../lib/packagekit-glib2/pk-console-shared.c:569
 msgid "Getting requires"
 msgstr "Obteniendo lo que requiere"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:575
+#: ../lib/packagekit-glib2/pk-console-shared.c:573
 msgid "Getting updates"
 msgstr "Obteniendo actualizaciones"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:579
+#: ../lib/packagekit-glib2/pk-console-shared.c:577
 msgid "Searching by details"
 msgstr "Buscando por detalles"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:583
+#: ../lib/packagekit-glib2/pk-console-shared.c:581
 msgid "Searching by file"
 msgstr "Buscando por archivos"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:587
+#: ../lib/packagekit-glib2/pk-console-shared.c:585
 msgid "Searching groups"
 msgstr "Buscando grupos"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:591
+#: ../lib/packagekit-glib2/pk-console-shared.c:589
 msgid "Searching by name"
 msgstr "Buscando por nombre"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:603
+#: ../lib/packagekit-glib2/pk-console-shared.c:601
 msgid "Installing files"
 msgstr "Instalando archivos"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:607
+#: ../lib/packagekit-glib2/pk-console-shared.c:605
 msgid "Refreshing cache"
 msgstr "Actualizando el caché"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:611
+#: ../lib/packagekit-glib2/pk-console-shared.c:609
 msgid "Updating packages"
 msgstr "Actualizando paquetes"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:615
+#: ../lib/packagekit-glib2/pk-console-shared.c:613
 msgid "Updating system"
 msgstr "Actualizando el sistema"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:619
+#: ../lib/packagekit-glib2/pk-console-shared.c:617
 msgid "Canceling"
 msgstr "Cancelando"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:627
+#: ../lib/packagekit-glib2/pk-console-shared.c:625
 msgid "Getting repositories"
 msgstr "Obteniendo repositorios"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:631
+#: ../lib/packagekit-glib2/pk-console-shared.c:629
 msgid "Enabling repository"
 msgstr "Habilitando repositorio"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:635
+#: ../lib/packagekit-glib2/pk-console-shared.c:633
 msgid "Setting data"
 msgstr "Definiendo los datos"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:639
+#: ../lib/packagekit-glib2/pk-console-shared.c:637
 msgid "Resolving"
 msgstr "Resolviendo"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:643
+#: ../lib/packagekit-glib2/pk-console-shared.c:641
 msgid "Getting file list"
 msgstr "Obteniendo lista de archivos"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:647
+#: ../lib/packagekit-glib2/pk-console-shared.c:645
 msgid "Getting provides"
 msgstr "Obteniendo lo que provee"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:651
+#: ../lib/packagekit-glib2/pk-console-shared.c:649
 msgid "Installing signature"
 msgstr "Instalando firma"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:655
+#: ../lib/packagekit-glib2/pk-console-shared.c:653
 msgid "Getting packages"
 msgstr "Obteniendo paquetes"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:659
+#: ../lib/packagekit-glib2/pk-console-shared.c:657
 msgid "Accepting EULA"
-msgstr "Aceptando el Acuerdo de licencia de usuario final (EULA, por las iniciales en inglés de End User License Agreement)"
+msgstr ""
+"Aceptando el Acuerdo de licencia de usuario final (EULA, por las iniciales "
+"en inglés de End User License Agreement)"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:667
+#: ../lib/packagekit-glib2/pk-console-shared.c:665
 msgid "Getting upgrades"
 msgstr "Obteniendo actualizaciones"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:671
+#: ../lib/packagekit-glib2/pk-console-shared.c:669
 msgid "Getting categories"
 msgstr "Obteniendo categorías"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:675
+#: ../lib/packagekit-glib2/pk-console-shared.c:673
 msgid "Getting transactions"
 msgstr "Obteniendo transacciones"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:679
-#: ../lib/packagekit-glib2/pk-console-shared.c:683
+#: ../lib/packagekit-glib2/pk-console-shared.c:677
+#: ../lib/packagekit-glib2/pk-console-shared.c:681
 msgid "Simulating install"
 msgstr "Simulando la instalación"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:687
+#: ../lib/packagekit-glib2/pk-console-shared.c:685
 msgid "Simulating remove"
 msgstr "Simulando eliminación"
 
 #. TRANSLATORS: The role of the transaction, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:691
+#: ../lib/packagekit-glib2/pk-console-shared.c:689
 msgid "Simulating update"
 msgstr "Simulando la actualización"
 
+#. TRANSLATORS: turn on all debugging
+#: ../lib/packagekit-glib2/pk-debug.c:133
+msgid "Show debugging information for all files"
+msgstr "Mostrar información de depuración para todos los archivos"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Debugging Options"
+msgstr "Opciones de depuración"
+
+#: ../lib/packagekit-glib2/pk-debug.c:201
+msgid "Show debugging options"
+msgstr "Mostrar información extra de depuración"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
-#: ../lib/packagekit-glib2/pk-task-text.c:69
+#: ../lib/packagekit-glib2/pk-task-text.c:67
 msgid "Do you want to allow installing of unsigned software?"
 msgstr "¿Desea permitir la instalación de software que no esté identificado?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:74
+#: ../lib/packagekit-glib2/pk-task-text.c:72
 msgid "The unsigned software will not be installed."
 msgstr "El software no identificado no será instalado."
 
 #. TRANSLATORS: the package repository is signed by a key that is not recognised
-#: ../lib/packagekit-glib2/pk-task-text.c:123
+#: ../lib/packagekit-glib2/pk-task-text.c:121
 msgid "Software source signature required"
 msgstr "Se necesita la firma de la fuente del software"
 
 #. TRANSLATORS: the package repository name
-#: ../lib/packagekit-glib2/pk-task-text.c:129
+#: ../lib/packagekit-glib2/pk-task-text.c:127
 msgid "Software source name"
 msgstr "Nombre de la fuente del software"
 
 #. TRANSLATORS: the key URL
-#: ../lib/packagekit-glib2/pk-task-text.c:132
+#: ../lib/packagekit-glib2/pk-task-text.c:130
 msgid "Key URL"
 msgstr "URL de la clave"
 
 #. TRANSLATORS: the username of the key
-#: ../lib/packagekit-glib2/pk-task-text.c:135
+#: ../lib/packagekit-glib2/pk-task-text.c:133
 msgid "Key user"
 msgstr "Usuario de la clave"
 
 #. TRANSLATORS: the key ID, usually a few hex digits
-#: ../lib/packagekit-glib2/pk-task-text.c:138
+#: ../lib/packagekit-glib2/pk-task-text.c:136
 msgid "Key ID"
 msgstr "ID de la clave"
 
 #. TRANSLATORS: the key fingerprint, again, yet more hex
-#: ../lib/packagekit-glib2/pk-task-text.c:141
+#: ../lib/packagekit-glib2/pk-task-text.c:139
 msgid "Key fingerprint"
 msgstr "Huella digital de la clave"
 
 #. TRANSLATORS: the timestamp (a bit like a machine readable time)
-#: ../lib/packagekit-glib2/pk-task-text.c:144
+#: ../lib/packagekit-glib2/pk-task-text.c:142
 msgid "Key Timestamp"
 msgstr "Fecha y hora de la clave"
 
 #. TRANSLATORS: ask the user if they want to import
-#: ../lib/packagekit-glib2/pk-task-text.c:157
+#: ../lib/packagekit-glib2/pk-task-text.c:155
 msgid "Do you accept this signature?"
 msgstr "¿Acepta esta firma?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:162
+#: ../lib/packagekit-glib2/pk-task-text.c:160
 msgid "The signature was not accepted."
 msgstr "No se aceptó la firma."
 
 #. TRANSLATORS: this is another name for a software licence that has to be read before installing
-#: ../lib/packagekit-glib2/pk-task-text.c:205
+#: ../lib/packagekit-glib2/pk-task-text.c:203
 msgid "End user licence agreement required"
 msgstr "Se necesita un acuerdo de licencia de usuario final"
 
 #. TRANSLATORS: the EULA text itself (long and boring)
-#: ../lib/packagekit-glib2/pk-task-text.c:214
+#: ../lib/packagekit-glib2/pk-task-text.c:212
 msgid "Agreement"
 msgstr "Acuerdo"
 
 #. TRANSLATORS: ask the user if they've read and accepted the EULA
-#: ../lib/packagekit-glib2/pk-task-text.c:223
+#: ../lib/packagekit-glib2/pk-task-text.c:221
 msgid "Do you accept this agreement?"
 msgstr "¿Acepta este acuerdo?"
 
 #. TRANSLATORS: tell the user we've not done anything
-#: ../lib/packagekit-glib2/pk-task-text.c:228
+#: ../lib/packagekit-glib2/pk-task-text.c:226
 msgid "The agreement was not accepted."
 msgstr "El acuerdo no fue aceptado."
 
 #. TRANSLATORS: the user needs to change media inserted into the computer
-#: ../lib/packagekit-glib2/pk-task-text.c:267
+#: ../lib/packagekit-glib2/pk-task-text.c:265
 msgid "Media change required"
 msgstr "Es necesario cambiar el medio"
 
 #. TRANSLATORS: the type, e.g. DVD, CD, etc
-#: ../lib/packagekit-glib2/pk-task-text.c:270
+#: ../lib/packagekit-glib2/pk-task-text.c:268
 msgid "Media type"
 msgstr "Tipo de medio"
 
 #. TRANSLATORS: the media label, usually like 'disk-1of3'
-#: ../lib/packagekit-glib2/pk-task-text.c:273
+#: ../lib/packagekit-glib2/pk-task-text.c:271
 msgid "Media label"
 msgstr "Etiqueta del medio"
 
 #. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
-#: ../lib/packagekit-glib2/pk-task-text.c:276
+#: ../lib/packagekit-glib2/pk-task-text.c:274
 msgid "Text"
 msgstr "Texto"
 
 #. TRANSLATORS: ask the user to insert the media
-#: ../lib/packagekit-glib2/pk-task-text.c:282
+#: ../lib/packagekit-glib2/pk-task-text.c:280
 msgid "Please insert the correct media"
 msgstr "Por favor, inserte el medio correcto "
 
 #. TRANSLATORS: tell the user we've not done anything as they are lazy
-#: ../lib/packagekit-glib2/pk-task-text.c:287
+#: ../lib/packagekit-glib2/pk-task-text.c:285
 msgid "The correct media was not inserted."
 msgstr "El medio correcto no fue insertado."
 
 #. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:302
+#: ../lib/packagekit-glib2/pk-task-text.c:300
 msgid "The following packages have to be removed:"
 msgstr "Los siguientes paquetes deben ser eliminados:"
 
 #. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:307
+#: ../lib/packagekit-glib2/pk-task-text.c:305
 msgid "The following packages have to be installed:"
 msgstr "Los siguientes paquetes tienen que ser instalados:"
 
 #. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:312
+#: ../lib/packagekit-glib2/pk-task-text.c:310
 msgid "The following packages have to be updated:"
 msgstr "Los siguientes paquetes tienen que ser actualizados:"
 
 #. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:317
+#: ../lib/packagekit-glib2/pk-task-text.c:315
 msgid "The following packages have to be reinstalled:"
 msgstr "Los siguientes paquetes tienen que ser reinstalados:"
 
 #. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../lib/packagekit-glib2/pk-task-text.c:322
+#: ../lib/packagekit-glib2/pk-task-text.c:320
 msgid "The following packages have to be downgraded:"
 msgstr "Los siguientes paquetes tienen que ser desactualizados:"
 
 #. TRANSLATORS: ask the user if the proposed changes are okay
-#: ../lib/packagekit-glib2/pk-task-text.c:382
+#: ../lib/packagekit-glib2/pk-task-text.c:380
 msgid "Proceed with changes?"
 msgstr "¿Continuar con las modificaciones?"
 
 #. TRANSLATORS: tell the user we didn't do anything
-#: ../lib/packagekit-glib2/pk-task-text.c:387
+#: ../lib/packagekit-glib2/pk-task-text.c:385
 msgid "The transaction did not proceed."
 msgstr "La transacción no pudo realizarse."
 
@@ -1727,20 +1771,30 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Es necesario autenticarse para aceptar un EULA"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to cancel a task that was not started by yourself"
-msgstr "Es necesario autenticarse para cancelar una tarea que usted no ha iniciado"
+msgid ""
+"Authentication is required to cancel a task that was not started by yourself"
+msgstr ""
+"Es necesario autenticarse para cancelar una tarea que usted no ha iniciado"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
-msgstr "Es necesario autenticarse para modificar parámetros de una fuente de software"
+msgstr ""
+"Es necesario autenticarse para modificar parámetros de una fuente de software"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to change the location used to decompress packages"
-msgstr "Es necesario autenticarse para modificar la ubicación utilizada para descomprimir paquetes"
+msgid ""
+"Authentication is required to change the location used to decompress packages"
+msgstr ""
+"Es necesario autenticarse para modificar la ubicación utilizada para "
+"descomprimir paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Authentication is required to consider a key used for signing packages as trusted"
-msgstr "Es necesario autenticarse para considerar confiable a una clave utilizada para identificar paquetes"
+msgid ""
+"Authentication is required to consider a key used for signing packages as "
+"trusted"
+msgstr ""
+"Es necesario autenticarse para considerar confiable a una clave utilizada "
+"para identificar paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:13
 msgid "Authentication is required to install a signed package"
@@ -1756,7 +1810,9 @@ msgstr "Es necesario autenticarse para actualizar las fuentes del sistema"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to reload the device with a new driver"
-msgstr "Es necesario autenticarse para recargar el dispositivo con un controlador nuevo"
+msgstr ""
+"Es necesario autenticarse para recargar el dispositivo con un controlador "
+"nuevo"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:17
 msgid "Authentication is required to remove packages"
@@ -1767,8 +1823,12 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "Es necesario autenticarse para deshacer una transacción"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Authentication is required to set the network proxy used for downloading packages"
-msgstr "Es necesario autenticarse para modificar el proxy de red utilizado para descargar paquetes"
+msgid ""
+"Authentication is required to set the network proxy used for downloading "
+"packages"
+msgstr ""
+"Es necesario autenticarse para modificar el proxy de red utilizado para "
+"descargar paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:20
 msgid "Authentication is required to update packages"
@@ -1905,12 +1965,17 @@ msgstr "Esto puede suceder por dos razones:"
 #. TRANSLATORS: only allowed to be owned by root
 #: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
-msgstr "El usuario correcto no esta iniciando el ejecutable (generalmente root)"
+msgstr ""
+"El usuario correcto no esta iniciando el ejecutable (generalmente root)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
-msgstr "El archivo org.freedesktop.PackageKit.conf no está instalado en el directorio del sistema:"
+msgid ""
+"The org.freedesktop.PackageKit.conf file is not installed in the system "
+"directory:"
+msgstr ""
+"El archivo org.freedesktop.PackageKit.conf no está instalado en el "
+"directorio del sistema:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
 #: ../src/pk-main.c:200
@@ -1953,35 +2018,41 @@ msgid "Cannot connect to the system bus"
 msgstr "No se pudo conectar con el bus del sistema"
 
 #. TRANSLATORS: cannot register on system bus, unknown reason -- geeky error follows
-#: ../src/pk-main.c:318
+#: ../src/pk-main.c:316
 msgid "Error trying to start:"
 msgstr "Error intentando iniciar:"
 
 #: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
-msgstr "Para poder instalar paquetes de depuración, es necesario habilitar nuevas fuentes"
+msgstr ""
+"Para poder instalar paquetes de depuración, es necesario habilitar nuevas "
+"fuentes"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:171
-#: ../src/pk-polkit-action-lookup.c:190
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "El software no proviene de una fuente confiable."
 
 #: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
-msgstr "No actualice este paquete a menos que sepa con certeza que es seguro hacerlo."
+msgstr ""
+"No actualice este paquete a menos que sepa con certeza que es seguro hacerlo."
 
 #: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
-msgstr "No actualice estos paquetes a menos que sepa con certeza que es seguro hacerlo."
+msgstr ""
+"No actualice estos paquetes a menos que sepa con certeza que es seguro "
+"hacerlo."
 
 #: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
-msgstr "No instale este paquete a menos que sepa con certeza que es seguro hacerlo."
+msgstr ""
+"No instale este paquete a menos que sepa con certeza que es seguro hacerlo."
 
 #: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
-msgstr "No instale estos paquetes a menos que sepa con certeza que es seguro hacerlo."
+msgstr ""
+"No instale estos paquetes a menos que sepa con certeza que es seguro hacerlo."
 
 #. TRANSLATORS: too many packages to list each one
 #: ../src/pk-polkit-action-lookup.c:273
@@ -1991,35 +2062,16 @@ msgstr "Varios paquetes"
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
 #: ../src/pk-polkit-action-lookup.c:339
 msgid "Only trusted"
-msgstr "Solo confiable"
-
-#. TRANSLATORS: turn on all debugging
-#: ../src/egg-debug.c:388
-msgid "Show debugging information for all files"
-msgstr "Mostrar información de depuración para todos los archivos"
-
-#. TRANSLATORS: a list of modules to debug
-#: ../src/egg-debug.c:458
-msgid "Debug these specific modules"
-msgstr "Depurar estos módulos específicos"
+msgstr "Sólo confiable"
 
-#. TRANSLATORS: a list of functions to debug
-#: ../src/egg-debug.c:461
-msgid "Debug these specific functions"
-msgstr "Depurar estas funciones específicas"
+#~ msgid "Debug these specific modules"
+#~ msgstr "Depurar estos módulos específicos"
 
-#. TRANSLATORS: save to a log
-#: ../src/egg-debug.c:464
-msgid "Log debugging data to a file"
-msgstr "Registrar en un archivo los datos de la depuración "
+#~ msgid "Debug these specific functions"
+#~ msgstr "Depurar estas funciones específicas"
 
-#: ../src/egg-debug.c:468
-msgid "Debugging Options"
-msgstr "Opciones de depuración"
-
-#: ../src/egg-debug.c:468
-msgid "Show debugging options"
-msgstr "Mostrar información extra de depuración"
+#~ msgid "Log debugging data to a file"
+#~ msgstr "Registrar en un archivo los datos de la depuración "
 
 #~ msgid "Malicious software can damage your computer or cause other harm."
 #~ msgstr ""
@@ -2232,9 +2284,6 @@ msgstr "Mostrar información extra de depuración"
 #~ msgid "Could not find package to remove"
 #~ msgstr "No se pudo encontrar el paquete a eliminar"
 
-#~ msgid "Could not find package to update"
-#~ msgstr "No se pudo encontrar el paquete a actualizar"
-
 #~ msgid "Could not find what packages require"
 #~ msgstr "No se pudo encontrar cuales paquetes requiere este paquete"
 
commit 73d0c2ce5758bc16ee1672b97d0017e9916e5613
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Nov 1 16:32:35 2010 +0000

    trivial: post release version bump

diff --git a/RELEASE b/RELEASE
index cea3120..6b50e2c 100644
--- a/RELEASE
+++ b/RELEASE
@@ -2,10 +2,10 @@ PackageKit Release Notes
 
 1. Write NEWS entries for PackageKit in the same format as usual.
 
-git shortlog PACKAGEKIT_0_6_9.. | grep -i -v trivial | grep -v Merge > NEWS.new
+git shortlog PACKAGEKIT_0_6_10.. | grep -i -v trivial | grep -v Merge > NEWS.new
 
 --------------------------------------------------------------------------------
-Version 0.6.10
+Version 0.6.11
 ~~~~~~~~~~~~~~
 Released: 2010-xx-xx
 
@@ -28,8 +28,8 @@ Bugfixes:
 
 4. Commit changes in PackageKit git:
 
-git commit -a -m "Release version 0.6.10"
-git tag -s -f -m "Release 0.6.10" PACKAGEKIT_0_6_10
+git commit -a -m "Release version 0.6.11"
+git tag -s -f -m "Release 0.6.11" PACKAGEKIT_0_6_11
 <gpg password>
 git push --tags
 git push
@@ -54,7 +54,7 @@ git push
 10. Send an email to packagekit at lists.freedesktop.org
 
 =================================================
-Subject: PackageKit 0.6.10 released!
+Subject: PackageKit 0.6.11 released!
 
 Tarballs available here: http://www.packagekit.org/releases/
 
diff --git a/configure.ac b/configure.ac
index 51cae63..9856af4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ(2.63)
 
 m4_define([pk_major_version], [0])
 m4_define([pk_minor_version], [6])
-m4_define([pk_micro_version], [10])
+m4_define([pk_micro_version], [11])
 m4_define([pk_version],
           [pk_major_version.pk_minor_version.pk_micro_version])
 


More information about the PackageKit-commit mailing list