[yum] update to latest head

Seth Vidal skvidal at fedoraproject.org
Thu Nov 4 20:52:51 UTC 2010


commit 0ecc9d9541d2135c8db23a32d02ba4516a58383f
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Thu Nov 4 16:52:45 2010 -0400

    update to latest head

 yum-HEAD.patch | 5051 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 4543 insertions(+), 508 deletions(-)
---
diff --git a/yum-HEAD.patch b/yum-HEAD.patch
index dad3273..bb3be4f 100644
--- a/yum-HEAD.patch
+++ b/yum-HEAD.patch
@@ -12,10 +12,18 @@ index 8065899..20f5629 100644
  
  test-skipbroken:
 diff --git a/cli.py b/cli.py
-index 9542b7a..b3b760e 100644
+index 9542b7a..b84183b 100644
 --- a/cli.py
 +++ b/cli.py
-@@ -139,7 +139,8 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+@@ -101,6 +101,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+         self.registerCommand(yumcommands.HistoryCommand())
+         self.registerCommand(yumcommands.CheckRpmdbCommand())
+         self.registerCommand(yumcommands.DistroSyncCommand())
++        self.registerCommand(yumcommands.LoadTransactionCommand())
+ 
+     def registerCommand(self, command):
+         for name in command.getNames():
+@@ -139,7 +140,8 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
          names and summary usages.
          """
          usage = 'yum [options] COMMAND\n\nList of Commands:\n\n'
@@ -25,7 +33,7 @@ index 9542b7a..b3b760e 100644
          commands.sort(key=lambda x: x.getNames()[0])
          for command in commands:
              # XXX Remove this when getSummary is common in plugins
-@@ -327,14 +328,34 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+@@ -327,14 +329,34 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
      
          self.yum_cli_commands[self.basecmd].doCheck(self, self.basecmd, self.extcmds)
  
@@ -60,7 +68,18 @@ index 9542b7a..b3b760e 100644
          return yumshell.result, yumshell.resultmsgs
  
      def errorSummary(self, errstring):
-@@ -777,14 +798,16 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+@@ -598,6 +620,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+             to not being installed, tell the user. """
+         # always_output is a wart due to update/remove not producing the
+         # same output.
++        # if it is a grouppattern then none of this is going to make any sense
++        # skip it.
++        if not arg or arg[0] == '@':
++            return
+         matches = self.doPackageLists(patterns=[arg], ignore_case=False)
+         if (matches.installed or (not matches.available and
+                                   self.returnInstalledPackagesByDep(arg))):
+@@ -777,14 +803,16 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
             to be erased/removed"""
          
          oldcount = len(self.tsInfo)
@@ -82,7 +101,7 @@ index 9542b7a..b3b760e 100644
              return 2, [msg]
          else:
              return 0, [_('No Packages marked for removal')]
-@@ -931,22 +954,71 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+@@ -931,22 +959,71 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
          searchlist = ['name', 'summary', 'description', 'url']
          dups = self.conf.showdupesfromrepos
          args = map(to_unicode, args)
@@ -159,7 +178,7 @@ index 9542b7a..b3b760e 100644
          for arg in args:
              if arg not in akeys:
                  self.logger.warning(_('Warning: No matches found for: %s'), arg)
-@@ -1327,6 +1399,7 @@ class YumOptionParser(OptionParser):
+@@ -1327,6 +1404,7 @@ class YumOptionParser(OptionParser):
                  self.base.conf.obsoletes = 1
  
              if opts.installroot:
@@ -167,7 +186,7 @@ index 9542b7a..b3b760e 100644
                  self.base.conf.installroot = opts.installroot
                  
              if opts.skipbroken:
-@@ -1395,6 +1468,7 @@ class YumOptionParser(OptionParser):
+@@ -1395,6 +1473,7 @@ class YumOptionParser(OptionParser):
              if opts.nogpgcheck:
                  self.base.conf.gpgcheck      = False
                  self.base.conf.repo_gpgcheck = False
@@ -175,7 +194,7 @@ index 9542b7a..b3b760e 100644
                  for repo in self.base.repos.listEnabled():
                      repo.gpgcheck      = False
                      repo.repo_gpgcheck = False
-@@ -1406,7 +1480,18 @@ class YumOptionParser(OptionParser):
+@@ -1406,7 +1485,18 @@ class YumOptionParser(OptionParser):
           
          return opts, cmds
  
@@ -313,7 +332,7 @@ index 281bf17..111cda6 100644
  Eliminate any cached data from the local rpmdb.
  
 diff --git a/docs/yum.conf.5 b/docs/yum.conf.5
-index 49d98c6..b48bdf6 100644
+index 49d98c6..899e950 100644
 --- a/docs/yum.conf.5
 +++ b/docs/yum.conf.5
 @@ -80,9 +80,13 @@ Full directory and file name for where yum should write its log file.
@@ -388,6 +407,15 @@ index 49d98c6..b48bdf6 100644
  \fBplugins \fR
  Either `0' or `1'. Global switch to enable or disable yum plugins. Default is
  `0' (plugins disabled). See the \fBPLUGINS\fR section of the \fByum(8)\fR man
+@@ -384,7 +403,7 @@ not update the metadata against the repository.  If you find that
+ yum is not downloading information on updates as often as you would like
+ lower the value of this option. You can also change from the default of using
+ seconds to using days, hours or minutes by appending a d, h or m respectively.
+-The default is 1.5 hours, to compliment yum-updatesd running once an hour.
++The default is 6 hours, to compliment yum-updatesd running once an hour.
+ It's also possible to use the word "never", meaning that the metadata will
+ never expire. Note that when using a metalink file the metalink must always
+ be newer than the metadata for the repository, due to the validation, so this
 @@ -734,6 +753,17 @@ If this is unset it inherits it from the global setting
  password for this proxy.
  If this is unset it inherits it from the global setting
@@ -520,7 +548,7 @@ index 3e6e243..303f190 100644
              ;;
          version)
 diff --git a/output.py b/output.py
-index 3a90995..a32a3a9 100755
+index 3a90995..983924a 100755
 --- a/output.py
 +++ b/output.py
 @@ -43,6 +43,8 @@ from yum.rpmtrans import RPMBaseCallback
@@ -1005,6 +1033,15 @@ index 3a90995..a32a3a9 100755
  
      matches = []
      def _cond_add(po):
+@@ -2030,7 +2239,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+ 
+     #  Installing things have pkg objects passed to the events, so only need to
+     # lookup for erased/obsoleted.
+-    def pkgname_ui(self, pkgname, ts_states=('e', None)):
++    def pkgname_ui(self, pkgname, ts_states=('e', 'od', 'ud', None)):
+         """ Get more information on a simple pkgname, if we can. """
+         return _pkgname_ui(self.ayum, pkgname, ts_states)
+ 
 diff --git a/po/es.po b/po/es.po
 index 4ac1f0a..0d6fc4d 100644
 --- a/po/es.po
@@ -29628,32 +29665,39 @@ index f1cbc2f..922be6f 100644
  #~ msgid "Erasing: %s %d/%d"
  #~ msgstr "Удаление: - %s - %d/%d"
  
-diff --git a/po/yum.pot b/po/yum.pot
-index f9a1d35..c9d7199 100644
---- a/po/yum.pot
-+++ b/po/yum.pot
-@@ -8,15 +8,16 @@ msgid ""
+diff --git a/po/sv.po b/po/sv.po
+index 48b836b..7578c68 100644
+--- a/po/sv.po
++++ b/po/sv.po
+@@ -3,21 +3,21 @@
+ # This file is distributed under the same license as the yum package.
+ # Göran Uddeborg <goeran at uddeborg.se>, 2009-2010.
+ #
+-# $Id: yum.po,v 1.12 2010-05-22 00:30:21+02 göran Exp $
++# $Id: yum.po,v 1.14 2010-10-21 21:26:32+02 göran Exp $
+ #
+ msgid ""
  msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
+ "Project-Id-Version: yum\n"
  "Report-Msgid-Bugs-To: \n"
 -"POT-Creation-Date: 2010-02-11 10:54-0500\n"
+-"PO-Revision-Date: 2010-05-22 00:30+0200\n"
 +"POT-Creation-Date: 2010-08-17 10:15-0400\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
- "Language-Team: LANGUAGE <LL at li.org>\n"
-+"Language: \n"
++"PO-Revision-Date: 2010-10-21 21:26+0200\n"
+ "Last-Translator: Göran Uddeborg <goeran at uddeborg.se>\n"
+ "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
  "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=CHARSET\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  
 -#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
 +#: ../callback.py:48 ../output.py:1027 ../yum/rpmtrans.py:72
  msgid "Updating"
- msgstr ""
+ msgstr "Uppdaterar"
  
-@@ -24,26 +25,26 @@ msgstr ""
+@@ -25,26 +25,26 @@ msgstr "Uppdaterar"
  msgid "Erasing"
- msgstr ""
+ msgstr "Raderar"
  
 -#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
 -#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
@@ -29661,110 +29705,110 @@ index f9a1d35..c9d7199 100644
 +#: ../output.py:1919 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
  #: ../yum/rpmtrans.py:77
  msgid "Installing"
- msgstr ""
+ msgstr "Installerar"
  
 -#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
 +#: ../callback.py:52 ../callback.py:58 ../output.py:1640 ../yum/rpmtrans.py:76
  msgid "Obsoleted"
- msgstr ""
+ msgstr "Utfasad"
  
 -#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
 +#: ../callback.py:54 ../output.py:1157 ../output.py:1518 ../output.py:1647
  msgid "Updated"
- msgstr ""
+ msgstr "Uppdaterade"
  
 -#: ../callback.py:55 ../output.py:1438
 +#: ../callback.py:55 ../output.py:1517
  msgid "Erased"
- msgstr ""
+ msgstr "Raderade"
  
 -#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
 -#: ../output.py:1434 ../output.py:1646
 +#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1155
 +#: ../output.py:1517 ../output.py:1519 ../output.py:1891
  msgid "Installed"
- msgstr ""
+ msgstr "Installerade"
  
-@@ -65,7 +66,7 @@ msgstr ""
+@@ -66,7 +66,7 @@ msgstr "Fel: ogiltig utdatatillstånd: %s för %s"
  msgid "Erased: %s"
- msgstr ""
+ msgstr "Raderade: %s"
  
 -#: ../callback.py:217 ../output.py:948 ../output.py:1648
 +#: ../callback.py:217 ../output.py:1028 ../output.py:1894
  msgid "Removing"
- msgstr ""
+ msgstr "Tar bort"
  
-@@ -73,316 +74,329 @@ msgstr ""
+@@ -74,65 +74,65 @@ msgstr "Tar bort"
  msgid "Cleanup"
- msgstr ""
+ msgstr "Rensar upp"
  
 -#: ../cli.py:107
 +#: ../cli.py:108
  #, python-format
  msgid "Command \"%s\" already defined"
- msgstr ""
+ msgstr "Kommando \"%s\" redan definierat"
  
 -#: ../cli.py:119
 +#: ../cli.py:120
  msgid "Setting up repositories"
- msgstr ""
+ msgstr "Gör i ordning förråd"
  
 -#: ../cli.py:130
 +#: ../cli.py:131
  msgid "Reading repository metadata in from local files"
- msgstr ""
+ msgstr "Läser in förrådsmetadata från lokala filer"
  
 -#: ../cli.py:194 ../utils.py:193
 +#: ../cli.py:234 ../utils.py:254
  #, python-format
  msgid "Config Error: %s"
- msgstr ""
+ msgstr "Konfigurationsfel: %s"
  
 -#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
 +#: ../cli.py:237 ../cli.py:1403 ../utils.py:257
  #, python-format
  msgid "Options Error: %s"
- msgstr ""
+ msgstr "Fel bland flaggor: %s"
  
 -#: ../cli.py:227
 +#: ../cli.py:267
  #, python-format
  msgid "  Installed: %s-%s at %s"
- msgstr ""
+ msgstr "  Installerade: %s-%s %s"
  
 -#: ../cli.py:229
 +#: ../cli.py:269
  #, python-format
  msgid "  Built    : %s at %s"
- msgstr ""
+ msgstr "  Byggde      : %s %s"
  
 -#: ../cli.py:231
 +#: ../cli.py:271
  #, python-format
  msgid "  Committed: %s at %s"
- msgstr ""
+ msgstr "  Verkställde : %s %s"
  
 -#: ../cli.py:270
 +#: ../cli.py:310
  msgid "You need to give some command"
- msgstr ""
+ msgstr "Du måste ange något kommando"
  
 -#: ../cli.py:284
 +#: ../cli.py:324
  #, python-format
  msgid "No such command: %s. Please use %s --help"
- msgstr ""
+ msgstr "Inget sådant kommando: %s.  Använd %s --help"
  
 -#: ../cli.py:314
 +#: ../cli.py:354
  msgid "Disk Requirements:\n"
- msgstr ""
+ msgstr "Diskbehov:\n"
  
 -#: ../cli.py:316
 +#: ../cli.py:356
  #, python-format
  msgid "  At least %dMB more space needed on the %s filesystem.\n"
- msgstr ""
+ msgstr "  Åtminstone %d MB mer utrymme behövs på filsystemet %s.\n"
  
  #. TODO: simplify the dependency errors?
  #. Fixup the summary
@@ -29773,303 +29817,310 @@ index f9a1d35..c9d7199 100644
  msgid ""
  "Error Summary\n"
  "-------------\n"
- msgstr ""
+@@ -140,60 +140,60 @@ msgstr ""
+ "Felsammandrag\n"
+ "-------------\n"
  
 -#: ../cli.py:364
 +#: ../cli.py:404
  msgid "Trying to run the transaction but nothing to do. Exiting."
- msgstr ""
+ msgstr "Försöker köra transaktionen men det finns inget att göra.  Avslutar."
  
 -#: ../cli.py:403
 +#: ../cli.py:451
  msgid "Exiting on user Command"
- msgstr ""
+ msgstr "Avslutar på användarens order"
  
 -#: ../cli.py:407
 +#: ../cli.py:455
  msgid "Downloading Packages:"
- msgstr ""
+ msgstr "Hämtar paket:"
  
 -#: ../cli.py:412
 +#: ../cli.py:460
  msgid "Error Downloading Packages:\n"
- msgstr ""
+ msgstr "Fel när paket hämtades:\n"
  
 -#: ../cli.py:426 ../yum/__init__.py:4195
 +#: ../cli.py:474 ../yum/__init__.py:4559
  msgid "Running rpm_check_debug"
- msgstr ""
+ msgstr "Kör rpm_check_debug"
  
 -#: ../cli.py:435 ../yum/__init__.py:4204
 +#: ../cli.py:483 ../yum/__init__.py:4568
  msgid "ERROR You need to update rpm to handle:"
- msgstr ""
+ msgstr "FEL Du behöver uppdatera rpm för att hantera:"
  
 -#: ../cli.py:437 ../yum/__init__.py:4207
 +#: ../cli.py:485 ../yum/__init__.py:4571
  msgid "ERROR with rpm_check_debug vs depsolve:"
- msgstr ""
+ msgstr "FEL med rpm_check_debug mot depsolve:"
  
 -#: ../cli.py:443
 +#: ../cli.py:491
  msgid "RPM needs to be updated"
- msgstr ""
+ msgstr "RPM behöver uppdateras"
  
 -#: ../cli.py:444
 +#: ../cli.py:492
  #, python-format
  msgid "Please report this error in %s"
- msgstr ""
+ msgstr "Vänligen rapportera detta fel i %s"
  
 -#: ../cli.py:450
 +#: ../cli.py:498
  msgid "Running Transaction Test"
- msgstr ""
+ msgstr "Kör transaktionstest"
  
 -#: ../cli.py:466
 +#: ../cli.py:514
  msgid "Transaction Check Error:\n"
- msgstr ""
+ msgstr "Transaktionskontrollfel:\n"
  
 -#: ../cli.py:473
 +#: ../cli.py:521
  msgid "Transaction Test Succeeded"
- msgstr ""
+ msgstr "Transaktionskontrollen lyckades"
  
 -#: ../cli.py:495
 +#: ../cli.py:543
  msgid "Running Transaction"
- msgstr ""
+ msgstr "Kör transaktionen"
  
 -#: ../cli.py:525
 +#: ../cli.py:573
  msgid ""
  "Refusing to automatically import keys when running unattended.\n"
  "Use \"-y\" to override."
- msgstr ""
+@@ -201,84 +201,93 @@ msgstr ""
+ "Vägrar att automatiskt importera nycklar vid oövervakad körning.\n"
+ "Använd \"-y\" för att åsidosätta."
  
 -#: ../cli.py:544 ../cli.py:578
 +#: ../cli.py:592 ../cli.py:626
  msgid "  * Maybe you meant: "
- msgstr ""
+ msgstr "  * Du kanske menade: "
  
 -#: ../cli.py:561 ../cli.py:569
 +#: ../cli.py:609 ../cli.py:617
  #, python-format
  msgid "Package(s) %s%s%s available, but not installed."
- msgstr ""
+ msgstr "Paket %s%s%s tillgängliga, men inte installerade."
  
 -#: ../cli.py:575 ../cli.py:607 ../cli.py:687
 +#: ../cli.py:623 ../cli.py:656 ../cli.py:810
  #, python-format
  msgid "No package %s%s%s available."
- msgstr ""
+ msgstr "Inget paket %s%s%s tillgängligt."
  
 -#: ../cli.py:612 ../cli.py:748
 +#: ../cli.py:663 ../cli.py:875
  msgid "Package(s) to install"
- msgstr ""
+ msgstr "Paket att installera"
  
 -#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
 -#: ../yumcommands.py:160
 +#: ../cli.py:666 ../cli.py:667 ../cli.py:816 ../cli.py:850 ../cli.py:876
 +#: ../yumcommands.py:179
  msgid "Nothing to do"
- msgstr ""
+ msgstr "Inget att göra"
  
 -#: ../cli.py:647
 +#: ../cli.py:701
  #, python-format
  msgid "%d packages marked for Update"
- msgstr ""
+ msgstr "%d paket noterade att uppdateras"
  
 -#: ../cli.py:650
 +#: ../cli.py:704
  msgid "No Packages marked for Update"
- msgstr ""
+ msgstr "Inga paket noterade att uppdateras"
  
 -#: ../cli.py:664
 +#: ../cli.py:770
 +#, python-format
 +msgid "%d packages marked for Distribution Synchronization"
-+msgstr ""
++msgstr "%d paket noterade för distributionssynkronisering"
 +
 +#: ../cli.py:773
 +msgid "No Packages marked for Distribution Synchronization"
-+msgstr ""
++msgstr "Inga paket noterade för distributionssynkronisering"
 +
 +#: ../cli.py:787
  #, python-format
  msgid "%d packages marked for removal"
- msgstr ""
+ msgstr "%d paket noterade att tas bort"
  
 -#: ../cli.py:667
 +#: ../cli.py:790
  msgid "No Packages marked for removal"
- msgstr ""
+ msgstr "Inga paket noterade att tas bort"
  
 -#: ../cli.py:692
 +#: ../cli.py:815
  msgid "Package(s) to downgrade"
- msgstr ""
+ msgstr "Paket att nedgradera"
  
 -#: ../cli.py:717
 +#: ../cli.py:840
  #, python-format
  msgid " (from %s)"
- msgstr ""
+ msgstr " (från %s)"
  
 -#: ../cli.py:719
 +#: ../cli.py:841
  #, python-format
  msgid "Installed package %s%s%s%s not available."
- msgstr ""
+ msgstr "Installerat paket %s%s%s%s inte tillgängligt."
  
 -#: ../cli.py:726
 +#: ../cli.py:849
  msgid "Package(s) to reinstall"
- msgstr ""
+ msgstr "Paket att ominstallera"
  
 -#: ../cli.py:739
 +#: ../cli.py:862
  msgid "No Packages Provided"
- msgstr ""
+ msgstr "Inga paket angivna"
  
 -#: ../cli.py:818
 +#: ../cli.py:945
  #, python-format
  msgid "Matched: %s"
- msgstr ""
+ msgstr "Matchade: %s"
  
 -#: ../cli.py:825
 +#: ../cli.py:952
  #, python-format
  msgid "Warning: No matches found for: %s"
- msgstr ""
+ msgstr "Varning: Ingen matchning hittades för: %s"
  
 -#: ../cli.py:828
 +#: ../cli.py:955
  msgid "No Matches found"
- msgstr ""
+ msgstr "Inga matchningar hittades"
  
 -#: ../cli.py:868
 +#: ../cli.py:995
  #, python-format
  msgid ""
  "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
- " You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
- msgstr ""
+@@ -288,112 +297,116 @@ msgstr ""
+ " Du kan använda \"%s*/%s%s\" och/eller \"%s*bin/%s%s\" för att få detta "
+ "beteende"
  
 -#: ../cli.py:884
 +#: ../cli.py:1011
  #, python-format
  msgid "No Package Found for %s"
- msgstr ""
+ msgstr "Inga paket hittades för %s"
  
 -#: ../cli.py:896
 +#: ../cli.py:1021
 +msgid "Cleaning repos: "
-+msgstr ""
++msgstr "Rensar förråd: "
 +
 +#: ../cli.py:1026
  msgid "Cleaning up Everything"
- msgstr ""
+ msgstr "Rensar upp allt"
  
 -#: ../cli.py:912
 +#: ../cli.py:1042
  msgid "Cleaning up Headers"
- msgstr ""
+ msgstr "Rensar upp huvuden"
  
 -#: ../cli.py:915
 +#: ../cli.py:1045
  msgid "Cleaning up Packages"
- msgstr ""
+ msgstr "Rensar upp paket"
  
 -#: ../cli.py:918
 +#: ../cli.py:1048
  msgid "Cleaning up xml metadata"
- msgstr ""
+ msgstr "Rensar upp xml-metadata"
  
 -#: ../cli.py:921
 +#: ../cli.py:1051
  msgid "Cleaning up database cache"
- msgstr ""
+ msgstr "Rensar upp databas-cache"
  
 -#: ../cli.py:924
 +#: ../cli.py:1054
  msgid "Cleaning up expire-cache metadata"
- msgstr ""
+ msgstr "Rensar upp expire-cache-metadata"
  
 -#: ../cli.py:927
 +#: ../cli.py:1057
  msgid "Cleaning up cached rpmdb data"
- msgstr ""
+ msgstr "Rensar upp cachad rpmdb-data"
  
 -#: ../cli.py:930
 +#: ../cli.py:1060
  msgid "Cleaning up plugins"
- msgstr ""
+ msgstr "Rensar upp insticksmoduler"
  
 -#: ../cli.py:955
 +#: ../cli.py:1085
  msgid "Installed Groups:"
- msgstr ""
+ msgstr "Installerade grupper:"
  
 -#: ../cli.py:967
 +#: ../cli.py:1097
  msgid "Available Groups:"
- msgstr ""
+ msgstr "Tillgängliga grupper:"
  
 -#: ../cli.py:977
 +#: ../cli.py:1107
  msgid "Done"
- msgstr ""
+ msgstr "Klart"
  
 -#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
 +#: ../cli.py:1118 ../cli.py:1136 ../cli.py:1142 ../yum/__init__.py:3069
  #, python-format
  msgid "Warning: Group %s does not exist."
- msgstr ""
+ msgstr "Varning: Grupp %s finns inte."
  
 -#: ../cli.py:1016
 +#: ../cli.py:1146
  msgid "No packages in any requested group available to install or update"
  msgstr ""
+ "Inget paket i någon begärd grupp är tillgängligt för installation eller "
+ "uppdatering"
  
 -#: ../cli.py:1018
 +#: ../cli.py:1148
  #, python-format
  msgid "%d Package(s) to Install"
- msgstr ""
+ msgstr "%d paket att installera"
  
 -#: ../cli.py:1028 ../yum/__init__.py:2800
 +#: ../cli.py:1158 ../yum/__init__.py:3081
  #, python-format
  msgid "No group named %s exists"
- msgstr ""
+ msgstr "Ingen grupp med namnet %s finns"
  
 -#: ../cli.py:1034
 +#: ../cli.py:1164
  msgid "No packages to remove from groups"
- msgstr ""
+ msgstr "Inget paket att ta bort från grupper"
  
 -#: ../cli.py:1036
 +#: ../cli.py:1166
  #, python-format
  msgid "%d Package(s) to remove"
- msgstr ""
+ msgstr "%d paket att ta bort"
  
 -#: ../cli.py:1078
 +#: ../cli.py:1208
  #, python-format
  msgid "Package %s is already installed, skipping"
- msgstr ""
+ msgstr "Paket %s är redan installerat, hoppar över"
  
 -#: ../cli.py:1089
 +#: ../cli.py:1219
  #, python-format
  msgid "Discarding non-comparable pkg %s.%s"
- msgstr ""
+ msgstr "Kastar ojämförbart paket %s.%s"
  
  #. we've not got any installed that match n or n+a
 -#: ../cli.py:1115
@@ -30077,511 +30128,528 @@ index f9a1d35..c9d7199 100644
  #, python-format
  msgid "No other %s installed, adding to list for potential install"
  msgstr ""
+ "Ingen annat %s installerat, lägger till listan för potentiell installation"
  
 -#: ../cli.py:1135
 +#: ../cli.py:1265
  msgid "Plugin Options"
- msgstr ""
+ msgstr "Insticksmodulsalternativ"
  
 -#: ../cli.py:1143
 +#: ../cli.py:1273
  #, python-format
  msgid "Command line error: %s"
- msgstr ""
+ msgstr "Kommandoradsfel: %s"
  
 -#: ../cli.py:1156
 +#: ../cli.py:1287
  #, python-format
  msgid ""
  "\n"
-@@ -390,114 +404,118 @@ msgid ""
- "%s: %s option requires an argument"
- msgstr ""
+@@ -404,114 +417,118 @@ msgstr ""
+ "\n"
+ "%s: flaggan %s behöver ett argument"
  
 -#: ../cli.py:1209
 +#: ../cli.py:1340
  msgid "--color takes one of: auto, always, never"
- msgstr ""
+ msgstr "--color tar en av: auto, always, never"
  
 -#: ../cli.py:1319
 +#: ../cli.py:1450
  msgid "show this help message and exit"
- msgstr ""
+ msgstr "visa detta hjälpmeddelande och avsluta"
  
 -#: ../cli.py:1323
 +#: ../cli.py:1454
  msgid "be tolerant of errors"
- msgstr ""
+ msgstr "var tolerant vid fel"
  
 -#: ../cli.py:1326
 +#: ../cli.py:1457
  msgid "run entirely from system cache, don't update cache"
- msgstr ""
+ msgstr "kör helt från systemets cache, uppdatera inte cachen"
  
 -#: ../cli.py:1329
 +#: ../cli.py:1460
  msgid "config file location"
- msgstr ""
+ msgstr "konfigurationsfilens plats"
  
 -#: ../cli.py:1332
 +#: ../cli.py:1463
  msgid "maximum command wait time"
- msgstr ""
+ msgstr "maximal tid att vänta på kommandon"
  
 -#: ../cli.py:1334
 +#: ../cli.py:1465
  msgid "debugging output level"
- msgstr ""
+ msgstr "nivå på felsökningsutskrifter"
  
 -#: ../cli.py:1338
 +#: ../cli.py:1469
  msgid "show duplicates, in repos, in list/search commands"
- msgstr ""
+ msgstr "visa dubletter, i förråd, i list-/search-kommandon"
  
 -#: ../cli.py:1340
 +#: ../cli.py:1471
  msgid "error output level"
- msgstr ""
+ msgstr "nivå på felutskrifter"
  
 -#: ../cli.py:1343
 +#: ../cli.py:1474
  msgid "debugging output level for rpm"
- msgstr ""
+ msgstr "nivå på felsökningsutskrifter för rpm"
  
 -#: ../cli.py:1346
 +#: ../cli.py:1477
  msgid "quiet operation"
- msgstr ""
+ msgstr "tyst operation"
  
 -#: ../cli.py:1348
 +#: ../cli.py:1479
  msgid "verbose operation"
- msgstr ""
+ msgstr "utförlig operation"
  
 -#: ../cli.py:1350
 +#: ../cli.py:1481
  msgid "answer yes for all questions"
- msgstr ""
+ msgstr "svara ja på alla frågor"
  
 -#: ../cli.py:1352
 +#: ../cli.py:1483
  msgid "show Yum version and exit"
- msgstr ""
+ msgstr "visa Yum-version och avsluta"
  
 -#: ../cli.py:1353
 +#: ../cli.py:1484
  msgid "set install root"
- msgstr ""
+ msgstr "ange installationsrot"
  
 -#: ../cli.py:1357
 +#: ../cli.py:1488
  msgid "enable one or more repositories (wildcards allowed)"
- msgstr ""
+ msgstr "aktivera ett eller flera förråd (jokrertecken tillåts)"
  
 -#: ../cli.py:1361
 +#: ../cli.py:1492
  msgid "disable one or more repositories (wildcards allowed)"
- msgstr ""
+ msgstr "inaktivera ett eller flera förråd (jokertecken tillåts)"
  
 -#: ../cli.py:1364
 +#: ../cli.py:1495
  msgid "exclude package(s) by name or glob"
- msgstr ""
+ msgstr "uteslut paket via namn eller mönster"
  
 -#: ../cli.py:1366
 +#: ../cli.py:1497
  msgid "disable exclude from main, for a repo or for everything"
- msgstr ""
+ msgstr "inaktivera uteslutningar från main, för ett förråd, eller för allt"
  
 -#: ../cli.py:1369
 +#: ../cli.py:1500
  msgid "enable obsoletes processing during updates"
- msgstr ""
+ msgstr "aktivera bearbetning av utfasningar under uppdateringar"
  
 -#: ../cli.py:1371
 +#: ../cli.py:1502
  msgid "disable Yum plugins"
- msgstr ""
+ msgstr "inaktivera Yum-insticksmoduler"
  
 -#: ../cli.py:1373
 +#: ../cli.py:1504
  msgid "disable gpg signature checking"
- msgstr ""
+ msgstr "inaktivera kontroll av gpg-signatur"
  
 -#: ../cli.py:1375
 +#: ../cli.py:1506
  msgid "disable plugins by name"
- msgstr ""
+ msgstr "inaktivera insticksmoduler efter namn"
  
 -#: ../cli.py:1378
 +#: ../cli.py:1509
  msgid "enable plugins by name"
- msgstr ""
+ msgstr "aktivera insticksmoduler efter namn"
  
 -#: ../cli.py:1381
 +#: ../cli.py:1512
  msgid "skip packages with depsolving problems"
- msgstr ""
+ msgstr "hoppa över paket med problem vid beroendeupplösning"
  
 -#: ../cli.py:1383
 +#: ../cli.py:1514
  msgid "control whether color is used"
- msgstr ""
+ msgstr "styr om färg skall användas"
  
 -#: ../cli.py:1385
 +#: ../cli.py:1516
  msgid "set value of $releasever in yum config and repo files"
- msgstr ""
+ msgstr "sätt värdet på $releasever i yum-konfigurations- och repo-filer"
  
 +#: ../cli.py:1518
 +msgid "set arbitrary config and repo options"
-+msgstr ""
++msgstr "sätt godtyckliga konfigurations- och förrådsalternativ"
 +
  #: ../output.py:305
  msgid "Jan"
- msgstr ""
-@@ -550,255 +568,255 @@ msgstr ""
+ msgstr "jan"
+@@ -564,104 +581,114 @@ msgstr "dec"
  msgid "Trying other mirror."
- msgstr ""
+ msgstr "Försöker med en annan spegel."
  
 -#: ../output.py:534
 +#: ../output.py:579
-+#, python-format
-+msgid "Name        : %s%s%s"
-+msgstr ""
-+
-+#: ../output.py:580
-+#, python-format
-+msgid "Arch        : %s"
-+msgstr ""
-+
-+#: ../output.py:582
  #, python-format
 -msgid "Name       : %s%s%s"
-+msgid "Epoch       : %s"
- msgstr ""
+-msgstr "Namn       : %s%s%s"
++msgid "Name        : %s%s%s"
++msgstr "Namn        : %s%s%s"
  
 -#: ../output.py:535
-+#: ../output.py:583
++#: ../output.py:580
  #, python-format
 -msgid "Arch       : %s"
-+msgid "Version     : %s"
- msgstr ""
+-msgstr "Arkitektur : %s"
++msgid "Arch        : %s"
++msgstr "Arkitektur  : %s"
  
 -#: ../output.py:537
-+#: ../output.py:584
++#: ../output.py:582
  #, python-format
 -msgid "Epoch      : %s"
-+msgid "Release     : %s"
- msgstr ""
+-msgstr "Epok       : %s"
++msgid "Epoch       : %s"
++msgstr "Epok        : %s"
  
 -#: ../output.py:538
-+#: ../output.py:585
++#: ../output.py:583
  #, python-format
 -msgid "Version    : %s"
-+msgid "Size        : %s"
- msgstr ""
+-msgstr "Version    : %s"
++msgid "Version     : %s"
++msgstr "Version     : %s"
  
 -#: ../output.py:539
-+#: ../output.py:586 ../output.py:890
++#: ../output.py:584
  #, python-format
 -msgid "Release    : %s"
-+msgid "Repo        : %s"
- msgstr ""
+-msgstr "Utgåva     : %s"
++msgid "Release     : %s"
++msgstr "Utgåva      : %s"
  
 -#: ../output.py:540
-+#: ../output.py:588
++#: ../output.py:585
  #, python-format
 -msgid "Size       : %s"
-+msgid "From repo   : %s"
- msgstr ""
+-msgstr "Storlek    : %s"
++msgid "Size        : %s"
++msgstr "Storlek     : %s"
  
 -#: ../output.py:541
-+#: ../output.py:590
++#: ../output.py:586 ../output.py:890
  #, python-format
 -msgid "Repo       : %s"
-+msgid "Committer   : %s"
- msgstr ""
+-msgstr "Förråd     : %s"
++msgid "Repo        : %s"
++msgstr "Förråd      : %s"
  
 -#: ../output.py:543
-+#: ../output.py:591
++#: ../output.py:588
  #, python-format
 -msgid "From repo  : %s"
-+msgid "Committime  : %s"
- msgstr ""
+-msgstr "Från förråd: %s"
++msgid "From repo   : %s"
++msgstr "Från förråd : %s"
  
 -#: ../output.py:545
-+#: ../output.py:592
++#: ../output.py:590
  #, python-format
 -msgid "Committer  : %s"
-+msgid "Buildtime   : %s"
- msgstr ""
++msgid "Committer   : %s"
+ msgstr "Verkställare: %s"
  
 -#: ../output.py:546
-+#: ../output.py:594
++#: ../output.py:591
  #, python-format
 -msgid "Committime : %s"
-+msgid "Install time: %s"
- msgstr ""
+-msgstr "Verkställt : %s"
++msgid "Committime  : %s"
++msgstr "Verkställt  : %s"
  
 -#: ../output.py:547
-+#: ../output.py:602
++#: ../output.py:592
  #, python-format
 -msgid "Buildtime  : %s"
-+msgid "Installed by: %s"
- msgstr ""
+-msgstr "Byggt      : %s"
++msgid "Buildtime   : %s"
++msgstr "Byggt       : %s"
  
 -#: ../output.py:549
-+#: ../output.py:609
++#: ../output.py:594
  #, python-format
 -msgid "Installtime: %s"
-+msgid "Changed by  : %s"
- msgstr ""
+-msgstr "Installerat: %s"
++msgid "Install time: %s"
++msgstr "Installerat : %s"
  
 -#: ../output.py:550
 -msgid "Summary    : "
-+#: ../output.py:610
-+msgid "Summary     : "
- msgstr ""
+-msgstr "Sammandrag : "
++#: ../output.py:602
++#, python-format
++msgid "Installed by: %s"
++msgstr "Installerat av: %s"
  
 -#: ../output.py:552
-+#: ../output.py:612 ../output.py:903
++#: ../output.py:609
  #, python-format
 -msgid "URL        : %s"
-+msgid "URL         : %s"
- msgstr ""
+-msgstr "URL        : %s"
++msgid "Changed by  : %s"
++msgstr "Ändrat av   : %s"
++
++#: ../output.py:610
++msgid "Summary     : "
++msgstr "Sammandrag  : "
  
 -#: ../output.py:553
 -msgid "License    : "
-+#: ../output.py:613
-+msgid "License     : "
- msgstr ""
+-msgstr "Licens     : "
++#: ../output.py:612 ../output.py:903
++#, python-format
++msgid "URL         : %s"
++msgstr "URL         : %s"
  
 -#: ../output.py:554
 -msgid "Description: "
-+#: ../output.py:614 ../output.py:900
-+msgid "Description : "
- msgstr ""
+-msgstr "Beskrivning: "
++#: ../output.py:613
++msgid "License     : "
++msgstr "Licens      : "
  
 -#: ../output.py:622
++#: ../output.py:614 ../output.py:900
++msgid "Description : "
++msgstr "Beskrivning : "
++
 +#: ../output.py:682
  msgid "y"
- msgstr ""
+ msgstr "j"
  
 -#: ../output.py:622
 +#: ../output.py:682
  msgid "yes"
- msgstr ""
+ msgstr "ja"
  
 -#: ../output.py:623
 +#: ../output.py:683
  msgid "n"
- msgstr ""
+ msgstr "n"
  
 -#: ../output.py:623
 +#: ../output.py:683
  msgid "no"
- msgstr ""
+ msgstr "nej"
  
 -#: ../output.py:627
 +#: ../output.py:687
  msgid "Is this ok [y/N]: "
- msgstr ""
+ msgstr "Är detta ok [j/N]: "
  
 -#: ../output.py:715
 +#: ../output.py:775
  #, python-format
  msgid ""
  "\n"
- "Group: %s"
- msgstr ""
+@@ -670,151 +697,141 @@ msgstr ""
+ "\n"
+ "Grupp: %s"
  
 -#: ../output.py:719
 +#: ../output.py:779
  #, python-format
  msgid " Group-Id: %s"
- msgstr ""
+ msgstr " Grupp-id: %s"
  
 -#: ../output.py:724
 +#: ../output.py:784
  #, python-format
  msgid " Description: %s"
- msgstr ""
+ msgstr " Beskrivning: %s"
  
 -#: ../output.py:726
 +#: ../output.py:786
  msgid " Mandatory Packages:"
- msgstr ""
+ msgstr " Obligatoriska paket:"
  
 -#: ../output.py:727
 +#: ../output.py:787
  msgid " Default Packages:"
- msgstr ""
+ msgstr " Standardpaket:"
  
 -#: ../output.py:728
 +#: ../output.py:788
  msgid " Optional Packages:"
- msgstr ""
+ msgstr " Valfria paket:"
  
 -#: ../output.py:729
 +#: ../output.py:789
  msgid " Conditional Packages:"
- msgstr ""
+ msgstr " Villkorliga paket:"
  
 -#: ../output.py:749
 +#: ../output.py:809
  #, python-format
  msgid "package: %s"
- msgstr ""
+ msgstr "paket: %s"
  
 -#: ../output.py:751
 +#: ../output.py:811
  msgid "  No dependencies for this package"
- msgstr ""
+ msgstr "  Inga beroenden för detta paket"
  
 -#: ../output.py:756
 +#: ../output.py:816
  #, python-format
  msgid "  dependency: %s"
- msgstr ""
+ msgstr "  beroende: %s"
  
 -#: ../output.py:758
 +#: ../output.py:818
  msgid "   Unsatisfied dependency"
- msgstr ""
+ msgstr "   Ej uppfyllt beroende"
  
 -#: ../output.py:830
 -#, python-format
 -msgid "Repo        : %s"
--msgstr ""
+-msgstr "Förråd      : %s"
 -
 -#: ../output.py:831
 +#: ../output.py:891
  msgid "Matched from:"
- msgstr ""
+ msgstr "Matchat från:"
  
 -#: ../output.py:840
 -msgid "Description : "
--msgstr ""
+-msgstr "Beskrivning : "
 -
 -#: ../output.py:843
 -#, python-format
 -msgid "URL         : %s"
--msgstr ""
+-msgstr "URL         : %s"
 -
 -#: ../output.py:846
 +#: ../output.py:906
  #, python-format
  msgid "License     : %s"
- msgstr ""
+ msgstr "Licens      : %s"
  
 -#: ../output.py:849
 +#: ../output.py:909
  #, python-format
  msgid "Filename    : %s"
- msgstr ""
+ msgstr "Filnamn     : %s"
  
 -#: ../output.py:853
 +#: ../output.py:913
  msgid "Other       : "
- msgstr ""
+ msgstr "Övrigt      : "
  
 -#: ../output.py:896
 +#: ../output.py:956
  msgid "There was an error calculating total download size"
- msgstr ""
+ msgstr "Ett fel uppstod vid beräkningen av total storlek att hämta"
  
 -#: ../output.py:901
 +#: ../output.py:961
  #, python-format
  msgid "Total size: %s"
- msgstr ""
+ msgstr "Total storlek: %s"
  
 -#: ../output.py:904
 +#: ../output.py:964
  #, python-format
  msgid "Total download size: %s"
- msgstr ""
+ msgstr "Total storlek att hämta: %s"
  
 -#: ../output.py:908
 +#: ../output.py:968 ../output.py:988
  #, python-format
  msgid "Installed size: %s"
- msgstr ""
+ msgstr "Installerad storlek: %s"
  
 -#: ../output.py:949
 +#: ../output.py:984
 +msgid "There was an error calculating installed size"
-+msgstr ""
++msgstr "Ett fel uppstod vid beräkningen av installerad storlek"
 +
 +#: ../output.py:1029
  msgid "Reinstalling"
- msgstr ""
+ msgstr "Ominstallerar"
  
 -#: ../output.py:950
 +#: ../output.py:1030
  msgid "Downgrading"
- msgstr ""
+ msgstr "Nedgraderar"
  
 -#: ../output.py:951
 +#: ../output.py:1031
  msgid "Installing for dependencies"
- msgstr ""
+ msgstr "Installerar på grund av beroenden"
  
 -#: ../output.py:952
 +#: ../output.py:1032
  msgid "Updating for dependencies"
- msgstr ""
+ msgstr "Uppdaterar på grund av beroenden"
  
 -#: ../output.py:953
 +#: ../output.py:1033
  msgid "Removing for dependencies"
- msgstr ""
+ msgstr "Tar bort på grund av beroenden"
  
 -#: ../output.py:960 ../output.py:1072
 +#: ../output.py:1040 ../output.py:1159
  msgid "Skipped (dependency problems)"
- msgstr ""
+ msgstr "Hoppas över (beroendeproblem)"
  
 -#: ../output.py:983
 +#: ../output.py:1063
  msgid "Package"
- msgstr ""
+ msgstr "Paket"
  
 -#: ../output.py:983
 +#: ../output.py:1063
  msgid "Arch"
- msgstr ""
+ msgstr "Ark"
  
 -#: ../output.py:984
 +#: ../output.py:1064
  msgid "Version"
- msgstr ""
+ msgstr "Version"
  
 -#: ../output.py:984
 +#: ../output.py:1064
  msgid "Repository"
- msgstr ""
+ msgstr "Förråd"
  
 -#: ../output.py:985
 +#: ../output.py:1065
  msgid "Size"
- msgstr ""
+ msgstr "Storl."
  
 -#: ../output.py:997
 +#: ../output.py:1077
  #, python-format
  msgid "     replacing  %s%s%s.%s %s\n"
- msgstr ""
+ msgstr "     ersätter  %s%s%s.%s %s\n"
  
 -#: ../output.py:1006
 +#: ../output.py:1086
  #, python-format
  msgid ""
  "\n"
-@@ -806,47 +824,57 @@ msgid ""
+@@ -825,52 +842,57 @@ msgstr ""
+ "Transaktionssammanfattning\n"
  "%s\n"
- msgstr ""
  
 -#: ../output.py:1013
 +#: ../output.py:1097
@@ -30589,8 +30657,11 @@ index f9a1d35..c9d7199 100644
 -msgid ""
 -"Install   %5.5s Package(s)\n"
 -"Upgrade   %5.5s Package(s)\n"
+-msgstr ""
+-"Installerar   %5.5s Paket\n"
+-"Uppdaterar    %5.5s Paket\n"
 +msgid "Install   %5.5s Package(s)\n"
- msgstr ""
++msgstr "Installerar   %5.5s paket\n"
  
 -#: ../output.py:1022
 +#: ../output.py:1101
@@ -30599,61 +30670,65 @@ index f9a1d35..c9d7199 100644
 -"Remove    %5.5s Package(s)\n"
 -"Reinstall %5.5s Package(s)\n"
 -"Downgrade %5.5s Package(s)\n"
+-msgstr ""
+-"Tar bort      %5.5s Paket\n"
+-"Ominstallerar %5.5s Paket\n"
+-"Nedgraderar   %5.5s Paket\n"
 +msgid "Upgrade   %5.5s Package(s)\n"
-+msgstr ""
++msgstr "Uppdaterar    %5.5s Paket\n"
 +
 +#: ../output.py:1105
 +#, python-format
 +msgid "Remove    %5.5s Package(s)\n"
-+msgstr ""
++msgstr "Tar bort      %5.5s paket\n"
 +
 +#: ../output.py:1109
 +#, python-format
 +msgid "Reinstall %5.5s Package(s)\n"
- msgstr ""
++msgstr "Ominstallerar %5.5s paket\n"
  
 -#: ../output.py:1066
 +#: ../output.py:1113
 +#, python-format
 +msgid "Downgrade %5.5s Package(s)\n"
-+msgstr ""
++msgstr "Nedgraderar   %5.5s paket\n"
 +
 +#: ../output.py:1153
  msgid "Removed"
- msgstr ""
+ msgstr "Borttagna"
  
 -#: ../output.py:1067
 +#: ../output.py:1154
  msgid "Dependency Removed"
- msgstr ""
+ msgstr "Borttagna beroenden"
  
 -#: ../output.py:1069
 +#: ../output.py:1156
  msgid "Dependency Installed"
- msgstr ""
+ msgstr "Installerade beroenden"
  
 -#: ../output.py:1071
 +#: ../output.py:1158
  msgid "Dependency Updated"
- msgstr ""
+ msgstr "Uppdaterade beroenden"
  
 -#: ../output.py:1073
 +#: ../output.py:1160
  msgid "Replaced"
- msgstr ""
+ msgstr "Ersatte"
  
 -#: ../output.py:1074
 +#: ../output.py:1161
  msgid "Failed"
- msgstr ""
+ msgstr "Misslyckade"
  
  #. Delta between C-c's so we treat as exit
 -#: ../output.py:1140
 +#: ../output.py:1245
  msgid "two"
- msgstr ""
+ msgstr "två"
  
-@@ -854,7 +882,7 @@ msgstr ""
+@@ -878,7 +900,7 @@ msgstr "två"
  #. Current download cancelled, interrupt (ctrl-c) again within two seconds
  #. to exit.
  #. Where "interupt (ctrl-c) again" and "two" are highlighted.
@@ -30662,229 +30737,232 @@ index f9a1d35..c9d7199 100644
  #, python-format
  msgid ""
  "\n"
-@@ -863,374 +891,448 @@ msgid ""
- "to exit.\n"
- msgstr ""
+@@ -890,360 +912,442 @@ msgstr ""
+ " Aktuell nedladdning avbröts, %savbryt (ctrl-c) igen%s inom %s%s%s sekunder\n"
+ "för att avsluta.\n"
  
 -#: ../output.py:1162
 +#: ../output.py:1267
  msgid "user interrupt"
- msgstr ""
+ msgstr "avbrott från användaren"
  
 -#: ../output.py:1180
 +#: ../output.py:1285
  msgid "Total"
- msgstr ""
+ msgstr "Totalt"
  
 -#: ../output.py:1202
 +#: ../output.py:1307
  msgid "I"
- msgstr ""
+ msgstr "I"
  
 -#: ../output.py:1203
 +#: ../output.py:1308
  msgid "O"
- msgstr ""
+ msgstr "UF"
  
 -#: ../output.py:1204
 +#: ../output.py:1309
  msgid "E"
- msgstr ""
+ msgstr "R"
  
 -#: ../output.py:1205
 +#: ../output.py:1310
  msgid "R"
- msgstr ""
+ msgstr "O"
  
 -#: ../output.py:1206
 +#: ../output.py:1311
  msgid "D"
- msgstr ""
+ msgstr "N"
  
 -#: ../output.py:1207
 +#: ../output.py:1312
  msgid "U"
- msgstr ""
+ msgstr "U"
  
 -#: ../output.py:1217
 +#: ../output.py:1323
  msgid "<unset>"
- msgstr ""
+ msgstr "<ej satt>"
  
 -#: ../output.py:1218
 +#: ../output.py:1324
  msgid "System"
- msgstr ""
+ msgstr "System"
  
 -#: ../output.py:1254
 +#: ../output.py:1368
  msgid "Bad transaction IDs, or package(s), given"
- msgstr ""
+ msgstr "Felaktiga transaktions ID:n, eller paket, angivna"
  
 -#: ../output.py:1266
 +#: ../output.py:1380
  msgid "ID"
- msgstr ""
+ msgstr "ID"
  
 -#: ../output.py:1267 ../output.py:1520
 +#: ../output.py:1381 ../output.py:1699
  msgid "Login user"
- msgstr ""
+ msgstr "Inloggad användare"
  
 -#: ../output.py:1268
 +#: ../output.py:1382
  msgid "Date and time"
- msgstr ""
+ msgstr "Datum och tid"
  
 -#: ../output.py:1269 ../output.py:1522
 +#: ../output.py:1383 ../output.py:1701
  msgid "Action(s)"
- msgstr ""
+ msgstr "Åtgärd(er)"
  
 -#: ../output.py:1270 ../output.py:1523
 +#: ../output.py:1384 ../output.py:1702
  msgid "Altered"
- msgstr ""
+ msgstr "Ändrade"
  
 -#: ../output.py:1310
 +#: ../output.py:1431 ../output.py:1760
  msgid "No transaction ID given"
- msgstr ""
+ msgstr "Inget transaktions-ID angivet"
  
 -#: ../output.py:1336
 +#: ../output.py:1457
  msgid "Bad transaction ID given"
- msgstr ""
+ msgstr "Felaktigt transaktions-ID angivet"
  
 -#: ../output.py:1341
 +#: ../output.py:1462
  msgid "Not found given transaction ID"
- msgstr ""
+ msgstr "Hittade inte angivet transaktions-ID"
  
 -#: ../output.py:1349
 +#: ../output.py:1470
  msgid "Found more than one transaction ID!"
- msgstr ""
+ msgstr "Hittade mer än ett transaktions-ID!"
  
 -#: ../output.py:1370
 +#: ../output.py:1491 ../output.py:1770
  msgid "No transaction ID, or package, given"
- msgstr ""
+ msgstr "Inget transaktions-ID, eller paket, angivet"
  
 -#: ../output.py:1396
 +#: ../output.py:1518 ../output.py:1645
 +msgid "Downgraded"
-+msgstr ""
++msgstr "Nedgraderade"
 +
 +#: ../output.py:1519
 +msgid "Not installed"
-+msgstr ""
++msgstr "Inte installerat"
 +
 +#: ../output.py:1520
 +msgid "Older"
-+msgstr ""
++msgstr "Äldre"
 +
 +#: ../output.py:1520
 +msgid "Newer"
-+msgstr ""
++msgstr "Nyare"
 +
 +#: ../output.py:1552
  msgid "Transaction ID :"
- msgstr ""
+ msgstr "Transaktions-ID:"
  
 -#: ../output.py:1398
 +#: ../output.py:1554
  msgid "Begin time     :"
- msgstr ""
+ msgstr "Starttid       :"
  
 -#: ../output.py:1401 ../output.py:1403
 +#: ../output.py:1557 ../output.py:1559
  msgid "Begin rpmdb    :"
- msgstr ""
+ msgstr "Start-rpmdb    :"
  
 -#: ../output.py:1417
 +#: ../output.py:1573
  #, python-format
  msgid "(%s seconds)"
- msgstr ""
+ msgstr "(%s sekunder)"
  
 -#: ../output.py:1418
 +#: ../output.py:1574
  msgid "End time       :"
- msgstr ""
+ msgstr "Sluttid        : "
  
 -#: ../output.py:1421 ../output.py:1423
 +#: ../output.py:1577 ../output.py:1579
  msgid "End rpmdb      :"
- msgstr ""
+ msgstr "Slut-rpmdb     :"
  
 -#: ../output.py:1424
 +#: ../output.py:1580
  msgid "User           :"
- msgstr ""
+ msgstr "Användare      :"
  
 -#: ../output.py:1426 ../output.py:1428 ../output.py:1430
 +#: ../output.py:1582 ../output.py:1584 ../output.py:1586
  msgid "Return-Code    :"
- msgstr ""
+ msgstr "Returkod       :"
  
 -#: ../output.py:1426
 +#: ../output.py:1582
  msgid "Aborted"
- msgstr ""
+ msgstr "Avbruten"
  
 -#: ../output.py:1428
 +#: ../output.py:1584
  msgid "Failure:"
- msgstr ""
+ msgstr "Misslyckades:"
  
 -#: ../output.py:1430
 +#: ../output.py:1586
  msgid "Success"
- msgstr ""
+ msgstr "Lyckades"
  
 -#: ../output.py:1431
 -msgid "Transaction performed with:"
+-msgstr "Transaktionen utförd med:"
 +#: ../output.py:1589
 +msgid "Command Line   :"
- msgstr ""
++msgstr "Kommandoradsfel:"
  
 -#: ../output.py:1444 ../output.py:1489
 -msgid "Downgraded"
+-msgstr "Nedgraderade"
 +#: ../output.py:1597
 +#, python-format
 +msgid "Additional non-default information stored: %d"
- msgstr ""
++msgstr "Ytterligare icke-standardinformation lagrad: %d"
  
 -#. multiple versions installed, both older and newer
 -#: ../output.py:1446
 -msgid "Weird"
+-msgstr "Mystisk"
 +#: ../output.py:1600
 +msgid "Transaction performed with:"
- msgstr ""
++msgstr "Transaktionen utförd med:"
  
 -#: ../output.py:1448
 +#: ../output.py:1603
  msgid "Packages Altered:"
- msgstr ""
+ msgstr "Ändrade paket:"
  
 -#: ../output.py:1451
 +#: ../output.py:1607
 +msgid "Packages Skipped:"
-+msgstr ""
++msgstr "Överhoppade paket:"
 +
 +#: ../output.py:1612
 +msgid "Rpmdb Problems:"
-+msgstr ""
++msgstr "Rpmdb-problem:"
 +
 +#: ../output.py:1620
  msgid "Scriptlet output:"
- msgstr ""
+ msgstr "Skriptutdata:"
  
 -#: ../output.py:1457
 +#: ../output.py:1626
  msgid "Errors:"
- msgstr ""
+ msgstr "Fel:"
  
 -#: ../output.py:1481 ../output.py:1482
 +#. Note that these don't use _simple_pkg() because we are showing what
@@ -30892,168 +30970,168 @@ index f9a1d35..c9d7199 100644
 +#. version in the transaction and now.
 +#: ../output.py:1637 ../output.py:1638
  msgid "Install"
- msgstr ""
+ msgstr "Installation"
  
 -#: ../output.py:1483
 +#: ../output.py:1639
  msgid "Dep-Install"
- msgstr ""
+ msgstr "Ber-inst"
  
 -#: ../output.py:1485
 +#: ../output.py:1641
  msgid "Obsoleting"
- msgstr ""
+ msgstr "Fasar ut"
  
 -#: ../output.py:1486
 +#: ../output.py:1642
  msgid "Erase"
- msgstr ""
+ msgstr "Radering"
  
 -#: ../output.py:1487
 +#: ../output.py:1643
  msgid "Reinstall"
- msgstr ""
+ msgstr "Ominstallation"
  
 -#: ../output.py:1488
 +#: ../output.py:1644
  msgid "Downgrade"
- msgstr ""
+ msgstr "Nedgradering"
  
 -#: ../output.py:1490
 +#: ../output.py:1646
  msgid "Update"
- msgstr ""
+ msgstr "Uppdatering"
  
 -#: ../output.py:1521
 +#: ../output.py:1700
  msgid "Time"
- msgstr ""
+ msgstr "Tid"
  
 -#: ../output.py:1547
 +#: ../output.py:1726
  msgid "Last day"
- msgstr ""
+ msgstr "Senaste dagen"
  
 -#: ../output.py:1548
 +#: ../output.py:1727
  msgid "Last week"
- msgstr ""
+ msgstr "Senaste veckan"
  
 -#: ../output.py:1549
 +#: ../output.py:1728
  msgid "Last 2 weeks"
- msgstr ""
+ msgstr "Senaste 2 veckorna"
  
  #. US default :p
 -#: ../output.py:1550
 +#: ../output.py:1729
  msgid "Last 3 months"
- msgstr ""
+ msgstr "Senaste 3 månaderna"
  
 -#: ../output.py:1551
 +#: ../output.py:1730
  msgid "Last 6 months"
- msgstr ""
+ msgstr "Senaste 6 månaderna"
  
 -#: ../output.py:1552
 +#: ../output.py:1731
  msgid "Last year"
- msgstr ""
+ msgstr "Senaste året"
  
 -#: ../output.py:1553
 +#: ../output.py:1732
  msgid "Over a year ago"
- msgstr ""
+ msgstr "Mer än ett år tillbaka"
  
 -#: ../output.py:1585
 +#: ../output.py:1774
 +#, python-format
 +msgid "No Transaction %s found"
-+msgstr ""
++msgstr "Ingen transaktion %s funnen"
 +
 +#: ../output.py:1780
 +msgid "Transaction ID:"
-+msgstr ""
++msgstr "Transaktions-ID:"
 +
 +#: ../output.py:1781
 +msgid "Available additional history information:"
-+msgstr ""
++msgstr "Tillgänglig ytterligare historieinformation"
 +
 +#: ../output.py:1793
 +#, python-format
 +msgid "%s: No additional data found by this name"
-+msgstr ""
++msgstr "%s: Inga ytterligare data finns med detta namn"
 +
 +#: ../output.py:1809
  msgid "installed"
- msgstr ""
+ msgstr "installeras"
  
 -#: ../output.py:1586
 +#: ../output.py:1810
  msgid "updated"
- msgstr ""
+ msgstr "uppdateras"
  
 -#: ../output.py:1587
 +#: ../output.py:1811
  msgid "obsoleted"
- msgstr ""
+ msgstr "utfasas"
  
 -#: ../output.py:1588
 +#: ../output.py:1812
  msgid "erased"
- msgstr ""
+ msgstr "raderas"
  
 -#: ../output.py:1592
 +#: ../output.py:1813
 +msgid "reinstalled"
-+msgstr ""
++msgstr "ominstalleras"
 +
 +#: ../output.py:1814
 +msgid "downgraded"
-+msgstr ""
++msgstr "nedgraderas"
 +
 +#: ../output.py:1818
  #, python-format
  msgid "---> Package %s.%s %s:%s-%s set to be %s"
- msgstr ""
+ msgstr "---> Paket %s.%s %s:%s-%s satt till att %s"
  
 -#: ../output.py:1599
 +#: ../output.py:1825
  msgid "--> Running transaction check"
- msgstr ""
+ msgstr "--> Kör transaktionskontroll"
  
 -#: ../output.py:1604
 +#: ../output.py:1830
  msgid "--> Restarting Dependency Resolution with new changes."
- msgstr ""
+ msgstr "--> Startar om beroendeupplösning med nya ändringar."
  
 -#: ../output.py:1609
 +#: ../output.py:1835
  msgid "--> Finished Dependency Resolution"
- msgstr ""
+ msgstr "--> Avslutade beroendeupplösning"
  
 -#: ../output.py:1614 ../output.py:1619
 +#: ../output.py:1840 ../output.py:1845
  #, python-format
  msgid "--> Processing Dependency: %s for package: %s"
- msgstr ""
+ msgstr "--> Bearbetar beroende: %s för paket: %s"
  
 -#: ../output.py:1623
 +#: ../output.py:1850
 +#, python-format
 +msgid "---> Keeping package: %s"
-+msgstr ""
++msgstr "---> Behåller paketet: %s"
 +
 +#: ../output.py:1853
  #, python-format
  msgid "--> Unresolved Dependency: %s"
- msgstr ""
+ msgstr "--> Ej upplöst beroende: %s"
  
 -#: ../output.py:1634
 +#: ../output.py:1864
  #, python-format
  msgid "Package: %s"
- msgstr ""
+ msgstr "Paket: %s"
  
 -#: ../output.py:1636
 +#: ../output.py:1866
@@ -31061,7 +31139,10 @@ index f9a1d35..c9d7199 100644
  msgid ""
  "\n"
  "    Requires: %s"
- msgstr ""
+-msgstr "\n    Behöver: %s"
++msgstr ""
++"\n"
++"    Behöver: %s"
  
 -#: ../output.py:1649 ../output.py:1660
 +#: ../output.py:1875
@@ -31069,7 +31150,10 @@ index f9a1d35..c9d7199 100644
  msgid ""
  "\n"
  "    %s: %s (%s)"
- msgstr ""
+-msgstr "\n    %s: %s (%s)"
++msgstr ""
++"\n"
++"    %s: %s (%s)"
  
 -#: ../output.py:1657
 +#: ../output.py:1880
@@ -31078,140 +31162,146 @@ index f9a1d35..c9d7199 100644
 +"\n"
 +"        %s"
 +msgstr ""
++"\n"
++"        %s"
 +
 +#: ../output.py:1882
 +msgid ""
 +"\n"
 +"        Not found"
 +msgstr ""
++"\n"
++"        Finns inte"
 +
 +#. These should be the only three things we care about:
 +#: ../output.py:1897
 +msgid "Updated By"
-+msgstr ""
++msgstr "Uppdaterat av"
 +
 +#: ../output.py:1898
 +msgid "Downgraded By"
-+msgstr ""
++msgstr "Nedgraderat av"
 +
 +#: ../output.py:1899
 +msgid "Obsoleted By"
-+msgstr ""
++msgstr "Utfasat av"
 +
 +#: ../output.py:1917
  msgid "Available"
- msgstr ""
+ msgstr "Tillgängliga"
  
 -#: ../output.py:1665 ../output.py:1670
 +#: ../output.py:1944 ../output.py:1949
  #, python-format
  msgid "--> Processing Conflict: %s conflicts %s"
- msgstr ""
+ msgstr "--> Bearbetar konflikt: %s står i konflikt med %s"
  
 -#: ../output.py:1674
 +#: ../output.py:1953
  msgid "--> Populating transaction set with selected packages. Please wait."
- msgstr ""
+ msgstr "--> Fyller transaktionsmängden med valda paket.  Var god dröj."
  
 -#: ../output.py:1678
 +#: ../output.py:1957
  #, python-format
  msgid "---> Downloading header for %s to pack into transaction set."
- msgstr ""
+ msgstr "---> Hämtar huvud för %s för att paketera i transaktionsmängden."
  
 -#: ../utils.py:93
 +#: ../utils.py:94
  msgid "Running"
- msgstr ""
+ msgstr "Kör"
  
 -#: ../utils.py:94
 +#: ../utils.py:95
  msgid "Sleeping"
- msgstr ""
+ msgstr "Sover"
  
 -#: ../utils.py:95
 +#: ../utils.py:96
  msgid "Uninterruptible"
- msgstr ""
+ msgstr "Oavbrytbar"
  
 -#: ../utils.py:96
 +#: ../utils.py:97
  msgid "Zombie"
- msgstr ""
+ msgstr "Zombie"
  
 -#: ../utils.py:97
 +#: ../utils.py:98
  msgid "Traced/Stopped"
- msgstr ""
+ msgstr "Spårad/Stoppad"
  
 -#: ../utils.py:98 ../yumcommands.py:917
 +#: ../utils.py:99 ../yumcommands.py:972
  msgid "Unknown"
- msgstr ""
+ msgstr "Okänd"
  
 -#: ../utils.py:109
 +#: ../utils.py:110
  msgid "  The other application is: PackageKit"
- msgstr ""
+ msgstr "  Det andra programmet är: PackageKit"
  
 -#: ../utils.py:111
 +#: ../utils.py:112
  #, python-format
  msgid "  The other application is: %s"
- msgstr ""
+ msgstr "  Det andra programmet är: %s"
  
 -#: ../utils.py:114
 +#: ../utils.py:115
  #, python-format
  msgid "    Memory : %5s RSS (%5sB VSZ)"
- msgstr ""
+ msgstr "    Minne   : %5s RSS (%5s B VSZ)"
  
 -#: ../utils.py:119
 +#: ../utils.py:120
  #, python-format
  msgid "    Started: %s - %s ago"
- msgstr ""
+ msgstr "    Startade: %s - för %s sedan"
  
 -#: ../utils.py:121
 +#: ../utils.py:122
  #, python-format
  msgid "    State  : %s, pid: %d"
- msgstr ""
+ msgstr "    Status  : %s, pid: %d"
  
 -#: ../utils.py:199
 -#, python-format
 -msgid "PluginExit Error: %s"
--msgstr ""
+-msgstr "Insticksmodulsavslutsfel: %s"
 -
 -#: ../utils.py:202
 -#, python-format
 -msgid "Yum Error: %s"
--msgstr ""
+-msgstr "Yum-fel: %s"
 -
 -#: ../utils.py:235 ../yummain.py:42
 +#: ../utils.py:143 ../yummain.py:42
  msgid ""
  "\n"
  "\n"
- "Exiting on user cancel"
- msgstr ""
+@@ -1253,7 +1357,7 @@ msgstr ""
+ "\n"
+ "Slutar efter att användaren avbröt"
  
 -#: ../utils.py:241 ../yummain.py:48
 +#: ../utils.py:149 ../yummain.py:48
  msgid ""
  "\n"
  "\n"
- "Exiting on Broken Pipe"
- msgstr ""
+@@ -1263,7 +1367,7 @@ msgstr ""
+ "\n"
+ "Slutar med brutet rör (pipe)"
  
 -#: ../utils.py:243 ../yummain.py:50
 +#: ../utils.py:151 ../yummain.py:50
  #, python-format
  msgid ""
  "\n"
-@@ -1238,7 +1340,47 @@ msgid ""
+@@ -1274,7 +1378,51 @@ msgstr ""
+ "\n"
  "%s"
- msgstr ""
  
 -#: ../utils.py:282 ../yummain.py:211
 +#: ../utils.py:201 ../yummain.py:107
@@ -31219,48 +31309,52 @@ index f9a1d35..c9d7199 100644
 +"Another app is currently holding the yum lock; exiting as configured by "
 +"exit_on_lock"
 +msgstr ""
++"Ett annat program håller för närvarande yum-låset, avslutar som konfigurerad "
++"av exit_on_lock"
 +
 +#: ../utils.py:260
 +#, python-format
 +msgid "PluginExit Error: %s"
-+msgstr ""
++msgstr "Insticksmodulsavslutsfel: %s"
 +
 +#: ../utils.py:263
 +#, python-format
 +msgid "Yum Error: %s"
-+msgstr ""
++msgstr "Yum-fel: %s"
 +
 +#: ../utils.py:315 ../yummain.py:134 ../yummain.py:173
 +#, python-format
 +msgid "Error: %s"
-+msgstr ""
++msgstr "Fel: %s"
 +
 +#: ../utils.py:319 ../yummain.py:177
 +msgid " You could try using --skip-broken to work around the problem"
-+msgstr ""
++msgstr " Du kan försöka använda --skip-broken för att gå runt problemet"
 +
 +#: ../utils.py:321 ../yummain.py:179 ../yummain.py:212
 +msgid " You could try running: rpm -Va --nofiles --nodigest"
-+msgstr ""
++msgstr " Du kan försöka köra: rpm -Va --nofiles --nodigest"
 +
 +#: ../utils.py:328 ../yummain.py:144 ../yummain.py:186
 +#, python-format
 +msgid "Unknown Error(s): Exit Code: %d:"
-+msgstr ""
++msgstr "Okänt fel: Felkod: %d:"
 +
 +#: ../utils.py:334 ../yummain.py:192
 +msgid ""
 +"\n"
 +"Dependencies Resolved"
 +msgstr ""
++"\n"
++"Beroenden upplösta"
 +
 +#: ../utils.py:349 ../yummain.py:215
  msgid "Complete!"
- msgstr ""
+ msgstr "Klart!"
  
-@@ -1305,403 +1447,398 @@ msgstr ""
+@@ -1354,294 +1502,312 @@ msgstr "Filen %s som gavs som ett argument till skalet finns inte."
  msgid "Error: more than one file given as argument to shell."
- msgstr ""
+ msgstr "Fel: mer än en fil angiven som argument till skalet."
  
 -#: ../yumcommands.py:170
 +#: ../yumcommands.py:138
@@ -31269,377 +31363,3731 @@ index f9a1d35..c9d7199 100644
 +" Run \"yum repolist all\" to see the repos you have.\n"
 +" You can enable repos with yum-config-manager --enable <repo>"
 +msgstr ""
++"Det finns inga aktiverade förråd.\n"
++" Kör ”yum repolist all” för att se vilka förråd du har.\n"
++" Du kan aktivera förråd med yum-config-manager --enable <förråd>"
 +
 +#: ../yumcommands.py:189
  msgid "PACKAGE..."
- msgstr ""
+ msgstr "PAKET..."
  
 -#: ../yumcommands.py:173
 +#: ../yumcommands.py:192
  msgid "Install a package or packages on your system"
- msgstr ""
+ msgstr "Installera ett eller flera paket på ditt system"
  
 -#: ../yumcommands.py:181
 +#: ../yumcommands.py:201
  msgid "Setting up Install Process"
- msgstr ""
+ msgstr "Förbereder installationsprocessen"
  
 -#: ../yumcommands.py:192
 +#: ../yumcommands.py:212 ../yumcommands.py:234
  msgid "[PACKAGE...]"
- msgstr ""
+ msgstr "[PAKET...]"
  
 -#: ../yumcommands.py:195
 +#: ../yumcommands.py:215
  msgid "Update a package or packages on your system"
- msgstr ""
+ msgstr "Uppdatera ett eller flera paket på ditt system"
  
 -#: ../yumcommands.py:202
 +#: ../yumcommands.py:223
  msgid "Setting up Update Process"
- msgstr ""
+ msgstr "Förbereder uppdateringsprocessen"
  
 -#: ../yumcommands.py:244
 +#: ../yumcommands.py:237
 +msgid "Synchronize installed packages to the latest available versions"
-+msgstr ""
++msgstr "Synkroniser installerade paket med de senaste tillgängliga versionerna"
 +
 +#: ../yumcommands.py:245
 +msgid "Setting up Distribution Synchronization Process"
-+msgstr ""
++msgstr "Förbereder distributionssynkroniseringsprocessen"
 +
 +#: ../yumcommands.py:288
  msgid "Display details about a package or group of packages"
- msgstr ""
+ msgstr "Visa detaljer om ett paket eller en grupp paket"
  
 -#: ../yumcommands.py:293
 +#: ../yumcommands.py:337
  msgid "Installed Packages"
- msgstr ""
+ msgstr "Installerade paket"
  
 -#: ../yumcommands.py:301
 +#: ../yumcommands.py:345
  msgid "Available Packages"
- msgstr ""
+ msgstr "Tillgängliga paket"
  
 -#: ../yumcommands.py:305
 +#: ../yumcommands.py:349
  msgid "Extra Packages"
- msgstr ""
+ msgstr "Extra paket"
  
 -#: ../yumcommands.py:309
 +#: ../yumcommands.py:353
  msgid "Updated Packages"
- msgstr ""
+ msgstr "Uppdaterade paket"
  
  #. This only happens in verbose mode
 -#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
 +#: ../yumcommands.py:361 ../yumcommands.py:368 ../yumcommands.py:655
  msgid "Obsoleting Packages"
- msgstr ""
+ msgstr "Fasar ut paket"
  
 -#: ../yumcommands.py:326
 +#: ../yumcommands.py:370
  msgid "Recently Added Packages"
- msgstr ""
+ msgstr "Nyligen tillagda paket"
  
 -#: ../yumcommands.py:333
 +#: ../yumcommands.py:377
  msgid "No matching Packages to list"
- msgstr ""
+ msgstr "Inga matchande paket att lista"
  
 -#: ../yumcommands.py:347
 +#: ../yumcommands.py:391
  msgid "List a package or groups of packages"
- msgstr ""
+ msgstr "Lista ett paket eller en grupp paket"
  
 -#: ../yumcommands.py:359
 +#: ../yumcommands.py:403
  msgid "Remove a package or packages from your system"
- msgstr ""
+ msgstr "Ta bort ett eller flera paket från ditt system"
  
 -#: ../yumcommands.py:366
 +#: ../yumcommands.py:410
  msgid "Setting up Remove Process"
- msgstr ""
+ msgstr "Förbereder processen att ta bort"
  
 -#: ../yumcommands.py:380
 +#: ../yumcommands.py:424
  msgid "Setting up Group Process"
- msgstr ""
+ msgstr "Förbereder grupprocessen"
  
 -#: ../yumcommands.py:386
 +#: ../yumcommands.py:430
  msgid "No Groups on which to run command"
- msgstr ""
+ msgstr "Inga grupper att köra kommandot på"
  
 -#: ../yumcommands.py:399
 +#: ../yumcommands.py:443
  msgid "List available package groups"
- msgstr ""
+ msgstr "Lista tillgängliga paketgrupper"
  
 -#: ../yumcommands.py:416
 +#: ../yumcommands.py:463
  msgid "Install the packages in a group on your system"
- msgstr ""
+ msgstr "Installera paketen i en grupp på ditt system"
  
 -#: ../yumcommands.py:438
 +#: ../yumcommands.py:486
  msgid "Remove the packages in a group from your system"
- msgstr ""
+ msgstr "Ta bort paketen in en grupp från ditt system"
  
 -#: ../yumcommands.py:465
 +#: ../yumcommands.py:514
  msgid "Display details about a package group"
- msgstr ""
+ msgstr "Visa detaljer om en paketgrupp"
  
 -#: ../yumcommands.py:489
 +#: ../yumcommands.py:539
  msgid "Generate the metadata cache"
- msgstr ""
+ msgstr "Generera metadata-cache:n"
  
 -#: ../yumcommands.py:495
 +#: ../yumcommands.py:545
  msgid "Making cache files for all metadata files."
- msgstr ""
+ msgstr "Skapar cache-filer för alla metadatafiler."
  
 -#: ../yumcommands.py:496
 +#: ../yumcommands.py:546
  msgid "This may take a while depending on the speed of this computer"
- msgstr ""
+ msgstr "Detta kan ta ett tag beroende på datorns fart"
  
 -#: ../yumcommands.py:517
 +#: ../yumcommands.py:567
  msgid "Metadata Cache Created"
- msgstr ""
+ msgstr "Metadata-cache skapad"
  
 -#: ../yumcommands.py:531
 +#: ../yumcommands.py:581
  msgid "Remove cached data"
- msgstr ""
+ msgstr "Ta bort cache:ade data"
  
 -#: ../yumcommands.py:551
 +#: ../yumcommands.py:602
  msgid "Find what package provides the given value"
- msgstr ""
+ msgstr "Ta reda på vilka paket som tillhandahåller det angivna värdet"
  
 -#: ../yumcommands.py:571
 +#: ../yumcommands.py:622
  msgid "Check for available package updates"
- msgstr ""
+ msgstr "Leta efter tillgängliga paketuppdateringar"
  
 -#: ../yumcommands.py:621
 +#: ../yumcommands.py:675
  msgid "Search package details for the given string"
- msgstr ""
+ msgstr "Sök i paketdetaljer efter den angivna strängen"
  
 -#: ../yumcommands.py:627
 +#: ../yumcommands.py:681
  msgid "Searching Packages: "
- msgstr ""
+ msgstr "Söker paket: "
  
 -#: ../yumcommands.py:644
 +#: ../yumcommands.py:698
  msgid "Update packages taking obsoletes into account"
- msgstr ""
+ msgstr "Uppdatera paket med hänsyn tagen till utfasningar"
  
 -#: ../yumcommands.py:652
 +#: ../yumcommands.py:707
  msgid "Setting up Upgrade Process"
- msgstr ""
+ msgstr "Förbereder uppgraderingsprocessen"
  
 -#: ../yumcommands.py:666
 +#: ../yumcommands.py:721
  msgid "Install a local RPM"
- msgstr ""
+ msgstr "Installera en lokal RPM"
  
 -#: ../yumcommands.py:674
 +#: ../yumcommands.py:729
  msgid "Setting up Local Package Process"
- msgstr ""
+ msgstr "Förbereder den lokala paketprocessen"
  
 -#: ../yumcommands.py:693
 +#: ../yumcommands.py:748
  msgid "Determine which package provides the given dependency"
- msgstr ""
+ msgstr "Avgör vilket paket som tillhandahåller ett angivet beroende"
  
 -#: ../yumcommands.py:696
 +#: ../yumcommands.py:751
  msgid "Searching Packages for Dependency:"
- msgstr ""
+ msgstr "Söker i paketen efter beroende:"
  
 -#: ../yumcommands.py:710
 +#: ../yumcommands.py:765
  msgid "Run an interactive yum shell"
- msgstr ""
+ msgstr "Kör ett interactivt yum-skal"
  
 -#: ../yumcommands.py:716
 +#: ../yumcommands.py:771
  msgid "Setting up Yum Shell"
- msgstr ""
+ msgstr "Förbereder ett yum-skal"
  
 -#: ../yumcommands.py:734
 +#: ../yumcommands.py:789
  msgid "List a package's dependencies"
- msgstr ""
+ msgstr "Lista ett pakets beroenden"
  
 -#: ../yumcommands.py:740
 +#: ../yumcommands.py:795
  msgid "Finding dependencies: "
- msgstr ""
+ msgstr "Letar efter beroenden: "
  
 -#: ../yumcommands.py:756
 +#: ../yumcommands.py:811
  msgid "Display the configured software repositories"
- msgstr ""
+ msgstr "Visa konfigurerade programvaruförråd"
  
 -#: ../yumcommands.py:822 ../yumcommands.py:823
 +#: ../yumcommands.py:877 ../yumcommands.py:878
  msgid "enabled"
- msgstr ""
+ msgstr "aktivt"
  
 -#: ../yumcommands.py:849 ../yumcommands.py:850
 +#: ../yumcommands.py:904 ../yumcommands.py:905
  msgid "disabled"
- msgstr ""
+ msgstr "inaktivt"
  
 -#: ../yumcommands.py:866
 +#: ../yumcommands.py:921
  msgid "Repo-id      : "
- msgstr ""
+ msgstr "Förråds-id      : "
  
 -#: ../yumcommands.py:867
 +#: ../yumcommands.py:922
  msgid "Repo-name    : "
- msgstr ""
+ msgstr "Förrådsnamn     : "
  
 -#: ../yumcommands.py:870
 +#: ../yumcommands.py:925
  msgid "Repo-status  : "
- msgstr ""
+ msgstr "Förrådsstatus   : "
  
 -#: ../yumcommands.py:873
 +#: ../yumcommands.py:928
  msgid "Repo-revision: "
- msgstr ""
+ msgstr "Förrådsversion  : "
  
 -#: ../yumcommands.py:877
 +#: ../yumcommands.py:932
  msgid "Repo-tags    : "
- msgstr ""
+ msgstr "Förrådstaggar   : "
  
 -#: ../yumcommands.py:883
 +#: ../yumcommands.py:938
  msgid "Repo-distro-tags: "
- msgstr ""
+ msgstr "Förråds-distro-taggar: "
  
 -#: ../yumcommands.py:888
 +#: ../yumcommands.py:943
  msgid "Repo-updated : "
- msgstr ""
+ msgstr "Förråd uppdaterat: "
  
 -#: ../yumcommands.py:890
 +#: ../yumcommands.py:945
  msgid "Repo-pkgs    : "
- msgstr ""
+ msgstr "Förrådspaket    : "
  
 -#: ../yumcommands.py:891
 +#: ../yumcommands.py:946
  msgid "Repo-size    : "
- msgstr ""
+ msgstr "Förrådstorlek   : "
  
 -#: ../yumcommands.py:898
 +#: ../yumcommands.py:953
  msgid "Repo-baseurl : "
- msgstr ""
+ msgstr "Förrådsbasurl   : "
  
 -#: ../yumcommands.py:906
 +#: ../yumcommands.py:961
  msgid "Repo-metalink: "
- msgstr ""
+ msgstr "Förrådsmetalänk : "
  
 -#: ../yumcommands.py:910
 +#: ../yumcommands.py:965
  msgid "  Updated    : "
- msgstr ""
+ msgstr "  Uppdaterat    :"
  
 -#: ../yumcommands.py:913
 +#: ../yumcommands.py:968
  msgid "Repo-mirrors : "
- msgstr ""
+ msgstr "Förrådspeglar   : "
  
 -#: ../yumcommands.py:923
 +#: ../yumcommands.py:978
  #, python-format
  msgid "Never (last: %s)"
- msgstr ""
+ msgstr "Aldrig (senast: %s)"
  
 -#: ../yumcommands.py:925
 +#: ../yumcommands.py:980
  #, python-format
  msgid "Instant (last: %s)"
- msgstr ""
+ msgstr "Omedelbart (senast: %s)"
  
 -#: ../yumcommands.py:928
 +#: ../yumcommands.py:983
  #, python-format
  msgid "%s second(s) (last: %s)"
- msgstr ""
+ msgstr "%s sekunder (senast: %s)"
  
 -#: ../yumcommands.py:930
 +#: ../yumcommands.py:985
  msgid "Repo-expire  : "
- msgstr ""
+ msgstr "Förråd går ut    : "
  
 -#: ../yumcommands.py:933
 +#: ../yumcommands.py:988
  msgid "Repo-exclude : "
- msgstr ""
+ msgstr "Förråd utesluter : "
  
 -#: ../yumcommands.py:937
 +#: ../yumcommands.py:992
  msgid "Repo-include : "
- msgstr ""
+ msgstr "Förråd inkluderar: "
  
 -#: ../yumcommands.py:941
 +#: ../yumcommands.py:996
  msgid "Repo-excluded: "
- msgstr ""
+ msgstr "Förråd uteslutet : "
  
  #. Work out the first (id) and last (enabled/disalbed/count),
  #. then chop the middle (name)...
 -#: ../yumcommands.py:951 ../yumcommands.py:980
 +#: ../yumcommands.py:1006 ../yumcommands.py:1035
  msgid "repo id"
- msgstr ""
+ msgstr "förråds-id"
  
 -#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
 +#: ../yumcommands.py:1023 ../yumcommands.py:1024 ../yumcommands.py:1042
  msgid "status"
- msgstr ""
+ msgstr "status"
  
 -#: ../yumcommands.py:981
 +#: ../yumcommands.py:1036
  msgid "repo name"
- msgstr ""
+ msgstr "förrådsnamn"
  
 -#: ../yumcommands.py:1018
 +#: ../yumcommands.py:1073
  msgid "Display a helpful usage message"
- msgstr ""
+ msgstr "Visa ett hjälpsamt meddelande om användning"
  
 -#: ../yumcommands.py:1052
 +#: ../yumcommands.py:1107
  #, python-format
  msgid "No help available for %s"
- msgstr ""
+ msgstr "Ingen hjälp tillgänglig för %s"
  
 -#: ../yumcommands.py:1057
 +#: ../yumcommands.py:1112
  msgid ""
  "\n"
  "\n"
- "aliases: "
+@@ -1651,7 +1817,7 @@ msgstr ""
+ "\n"
+ "alias: "
+ 
+-#: ../yumcommands.py:1059
++#: ../yumcommands.py:1114
+ msgid ""
+ "\n"
+ "\n"
+@@ -1661,106 +1827,84 @@ msgstr ""
+ "\n"
+ "alias: "
+ 
+-#: ../yumcommands.py:1087
++#: ../yumcommands.py:1143
+ msgid "Setting up Reinstall Process"
+ msgstr "Förbereder ominstallationsprocessen"
+ 
+-#: ../yumcommands.py:1095
++#: ../yumcommands.py:1151
+ msgid "reinstall a package"
+ msgstr "ominstallera ett paket"
+ 
+-#: ../yumcommands.py:1113
++#: ../yumcommands.py:1170
+ msgid "Setting up Downgrade Process"
+ msgstr "Förbereder nedgraderingsprocessen"
+ 
+-#: ../yumcommands.py:1120
++#: ../yumcommands.py:1177
+ msgid "downgrade a package"
+ msgstr "nedgradera ett paket"
+ 
+-#: ../yumcommands.py:1134
++#: ../yumcommands.py:1191
+ msgid "Display a version for the machine and/or available repos."
+ msgstr "Visa en version för maskinen och/eller tillgängliga förråd."
+ 
+-#: ../yumcommands.py:1173
++#: ../yumcommands.py:1230
+ msgid " Yum version groups:"
+ msgstr " Yum versionsgrupper:"
+ 
+-#: ../yumcommands.py:1183
++#: ../yumcommands.py:1240
+ msgid " Group   :"
+ msgstr " Grupp:"
+ 
+-#: ../yumcommands.py:1184
++#: ../yumcommands.py:1241
+ msgid " Packages:"
+ msgstr " Paket:"
+ 
+-#: ../yumcommands.py:1213
++#: ../yumcommands.py:1270
+ msgid "Installed:"
+ msgstr "Installerade:"
+ 
+-#: ../yumcommands.py:1218
++#: ../yumcommands.py:1278
+ msgid "Group-Installed:"
+ msgstr "Gruppinstallerade:"
+ 
+-#: ../yumcommands.py:1227
++#: ../yumcommands.py:1287
+ msgid "Available:"
+ msgstr "Tillgängliga:"
+ 
+-#: ../yumcommands.py:1233
++#: ../yumcommands.py:1296
+ msgid "Group-Available:"
+ msgstr "Grupptillgängliga:"
+ 
+-#: ../yumcommands.py:1272
++#: ../yumcommands.py:1335
+ msgid "Display, or use, the transaction history"
+ msgstr "Visa, eller använd, transaktionshistorien"
+ 
+-#: ../yumcommands.py:1300
++#: ../yumcommands.py:1363
+ #, python-format
+ msgid "Invalid history sub-command, use: %s."
+ msgstr "Ogiltigt underkommando till history, använd: %s."
+ 
+-#: ../yumcommands.py:1345
++#: ../yumcommands.py:1370
++msgid "You don't have access to the history DB."
++msgstr "Du har inte tillgång till historie-DB:n."
++
++#: ../yumcommands.py:1413
+ msgid "Check for problems in the rpmdb"
+ msgstr "Kontrollera om det finns problem i rpmdb:n"
+ 
+-#: ../yummain.py:102
++#: ../yummain.py:103
+ msgid ""
+ "Another app is currently holding the yum lock; waiting for it to exit..."
+ msgstr ""
+ "Ett annat program håller för närvarande yum-låset, väntar på att den skall "
+ "avsluta ..."
+ 
+-#: ../yummain.py:130 ../yummain.py:169
+-#, python-format
+-msgid "Error: %s"
+-msgstr "Fel: %s"
+-
+-#: ../yummain.py:140 ../yummain.py:182
+-#, python-format
+-msgid "Unknown Error(s): Exit Code: %d:"
+-msgstr "Okänt fel: Felkod: %d:"
+-
+ #. Depsolve stage
+-#: ../yummain.py:147
++#: ../yummain.py:151
+ msgid "Resolving Dependencies"
+ msgstr "Löser upp beroenden"
+ 
+-#: ../yummain.py:173
+-msgid " You could try using --skip-broken to work around the problem"
+-msgstr " Du kan försöka använda --skip-broken för att gå runt problemet"
+-
+-#: ../yummain.py:175 ../yummain.py:208
+-msgid " You could try running: rpm -Va --nofiles --nodigest"
+-msgstr " Du kan försöka köra: rpm -Va --nofiles --nodigest"
+-
+-#: ../yummain.py:188
+-msgid ""
+-"\n"
+-"Dependencies Resolved"
+-msgstr ""
+-"\n"
+-"Beroenden upplösta"
+-
+-#: ../yummain.py:265
++#: ../yummain.py:269
+ msgid ""
+ "\n"
+ "\n"
+@@ -1778,139 +1922,129 @@ msgstr "doTsSetup() kommer att försvinna i en framtida version av Yum.\n"
+ msgid "Setting up TransactionSets before config class is up"
+ msgstr "Förbereder transaktionsmängder före konfigurationsklass är uppe"
+ 
+-#: ../yum/depsolve.py:148
++#: ../yum/depsolve.py:151
+ #, python-format
+ msgid "Invalid tsflag in config file: %s"
+ msgstr "Ogiltig tsflag i konfigurationsfil: %s"
+ 
+-#: ../yum/depsolve.py:159
++#: ../yum/depsolve.py:162
+ #, python-format
+ msgid "Searching pkgSack for dep: %s"
+ msgstr "Söker pkgSack efter beroende: %s"
+ 
+-#: ../yum/depsolve.py:175
+-#, python-format
+-msgid "Potential match for %s from %s"
+-msgstr "Potentiell match av %s från %s"
+-
+-#: ../yum/depsolve.py:183
+-#, python-format
+-msgid "Matched %s to require for %s"
+-msgstr "Matchade %s mot behov från %s"
+-
+-#: ../yum/depsolve.py:225
++#: ../yum/depsolve.py:205
+ #, python-format
+ msgid "Member: %s"
+ msgstr "Medlem: %s"
+ 
+-#: ../yum/depsolve.py:239 ../yum/depsolve.py:754
++#: ../yum/depsolve.py:219 ../yum/depsolve.py:754
+ #, python-format
+ msgid "%s converted to install"
+ msgstr "%s konverterad till att installera"
+ 
+-#: ../yum/depsolve.py:246
++#: ../yum/depsolve.py:226
+ #, python-format
+ msgid "Adding Package %s in mode %s"
+ msgstr "Lägger till paket %s i läge %s"
+ 
+-#: ../yum/depsolve.py:256
++#: ../yum/depsolve.py:242
+ #, python-format
+ msgid "Removing Package %s"
+ msgstr "Tar bort paket %s"
+ 
+-#: ../yum/depsolve.py:278
++#: ../yum/depsolve.py:264
+ #, python-format
+ msgid "%s requires: %s"
+ msgstr "%s behöver: %s"
+ 
+-#: ../yum/depsolve.py:319
++#: ../yum/depsolve.py:305
+ #, python-format
+ msgid "%s requires %s"
+ msgstr "%s behöver %s"
+ 
+-#: ../yum/depsolve.py:346
++#: ../yum/depsolve.py:332
+ msgid "Needed Require has already been looked up, cheating"
+ msgstr "Nödvändigt behov har redan slagits upp, fuskar"
+ 
+-#: ../yum/depsolve.py:356
++#: ../yum/depsolve.py:342
+ #, python-format
+ msgid "Needed Require is not a package name. Looking up: %s"
+ msgstr "Nödvändigt behov är inte ett paketnamn.  Slår upp: %s"
+ 
+-#: ../yum/depsolve.py:363
++#: ../yum/depsolve.py:349
+ #, python-format
+ msgid "Potential Provider: %s"
+ msgstr "Potentiell tillhandahållare: %s"
+ 
+-#: ../yum/depsolve.py:386
++#: ../yum/depsolve.py:372
+ #, python-format
+ msgid "Mode is %s for provider of %s: %s"
+ msgstr "Läget är %s för tillhandahållare av %s: %s"
+ 
+-#: ../yum/depsolve.py:390
++#: ../yum/depsolve.py:376
+ #, python-format
+ msgid "Mode for pkg providing %s: %s"
+ msgstr "Läge för paket som tillhandahåller %s: %s"
+ 
+-#: ../yum/depsolve.py:394
++#: ../yum/depsolve.py:380
+ #, python-format
+ msgid "TSINFO: %s package requiring %s marked as erase"
+ msgstr "TSINFO: paket %s behöver %s noteras att raderas"
+ 
+-#: ../yum/depsolve.py:407
++#: ../yum/depsolve.py:393
+ #, python-format
+ msgid "TSINFO: Obsoleting %s with %s to resolve dep."
+ msgstr "TSINFO: Fasar ut %s med %s för att lösa upp beroenden."
+ 
+-#: ../yum/depsolve.py:410
++#: ../yum/depsolve.py:396
+ #, python-format
+ msgid "TSINFO: Updating %s to resolve dep."
+ msgstr "TSINFO: Uppdaterar %s för att lösa upp beroenden"
+ 
+-#: ../yum/depsolve.py:418
++#: ../yum/depsolve.py:404
+ #, python-format
+ msgid "Cannot find an update path for dep for: %s"
+ msgstr "Hittar ingen uppdateringsväg för beroende för: %s"
+ 
+-#: ../yum/depsolve.py:449
++#: ../yum/depsolve.py:435
+ #, python-format
+ msgid "Quick matched %s to require for %s"
+ msgstr "Snabb matcning av %s mot behov för %s"
+ 
+ #. is it already installed?
+-#: ../yum/depsolve.py:491
++#: ../yum/depsolve.py:477
+ #, python-format
+ msgid "%s is in providing packages but it is already installed, removing."
+ msgstr ""
+ "%s finns bland tillhandahållande paket men det är redan installerat, tar "
+ "bort."
+ 
+-#: ../yum/depsolve.py:507
++#: ../yum/depsolve.py:493
+ #, python-format
+ msgid "Potential resolving package %s has newer instance in ts."
+ msgstr "Potentiellt upplösande paket %s har nyare instans i ts."
+ 
+-#: ../yum/depsolve.py:518
++#: ../yum/depsolve.py:504
+ #, python-format
+ msgid "Potential resolving package %s has newer instance installed."
+ msgstr "Potentiellt upplösande paket %s har nyare instans installerad."
+ 
+-#: ../yum/depsolve.py:536
++#: ../yum/depsolve.py:522
+ #, python-format
+ msgid "%s already in ts, skipping this one"
+ msgstr "%s är redan i ts, hoppar över denna"
+ 
+-#: ../yum/depsolve.py:578
++#: ../yum/depsolve.py:571
+ #, python-format
+ msgid "TSINFO: Marking %s as update for %s"
+ msgstr "TSINFO: Noterar %s som en uppdatering av %s"
+ 
+-#: ../yum/depsolve.py:586
++#: ../yum/depsolve.py:580
+ #, python-format
+ msgid "TSINFO: Marking %s as install for %s"
+ msgstr "TSINFO: Noterar %s som en installation av %s"
+ 
+-#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
++#: ../yum/depsolve.py:690 ../yum/depsolve.py:780
+ msgid "Success - empty transaction"
+ msgstr "Klart - tom transaktion"
+ 
+@@ -1927,36 +2061,36 @@ msgstr "Beroendeprocessen avslutas"
+ msgid "%s from %s has depsolving problems"
+ msgstr "%s från %s har problem att lösa beroenden"
+ 
+-#: ../yum/depsolve.py:782
++#: ../yum/depsolve.py:781
+ msgid "Success - deps resolved"
+ msgstr "Klart - beroenden upplösta"
+ 
+-#: ../yum/depsolve.py:796
++#: ../yum/depsolve.py:802
+ #, python-format
+ msgid "Checking deps for %s"
+ msgstr "Kontrollerar beroenden för %s"
+ 
+-#: ../yum/depsolve.py:874
++#: ../yum/depsolve.py:888
+ #, python-format
+ msgid "looking for %s as a requirement of %s"
+ msgstr "letar efter %s som ett behov för %s"
+ 
+-#: ../yum/depsolve.py:1090
++#: ../yum/depsolve.py:1119
+ #, python-format
+ msgid "Running compare_providers() for %s"
+ msgstr "Kör compare_providers() för %s"
+ 
+-#: ../yum/depsolve.py:1117 ../yum/depsolve.py:1123
++#: ../yum/depsolve.py:1146 ../yum/depsolve.py:1152
+ #, python-format
+ msgid "better arch in po %s"
+ msgstr "bättre arkitektur i po %s"
+ 
+-#: ../yum/depsolve.py:1218
++#: ../yum/depsolve.py:1244
+ #, python-format
+ msgid "%s obsoletes %s"
+ msgstr "%s fasar ut %s"
+ 
+-#: ../yum/depsolve.py:1230
++#: ../yum/depsolve.py:1256
+ #, python-format
+ msgid ""
+ "archdist compared %s to %s on %s\n"
+@@ -1965,122 +2099,142 @@ msgstr ""
+ "arkitekturavstånd jämför %s med %s på %s\n"
+ "  Vinnare: %s"
+ 
+-#: ../yum/depsolve.py:1237
++#: ../yum/depsolve.py:1264
+ #, python-format
+ msgid "common sourcerpm %s and %s"
+ msgstr "samma käll-rpm %s och %s"
+ 
+-#: ../yum/depsolve.py:1241
++#: ../yum/depsolve.py:1268
+ #, python-format
+ msgid "base package %s is installed for %s"
+ msgstr "baspaket %s är installerat för %s"
+ 
+-#: ../yum/depsolve.py:1247
++#: ../yum/depsolve.py:1274
+ #, python-format
+ msgid "common prefix of %s between %s and %s"
+ msgstr "gemensamt prefix för %s mellan %s och %s"
+ 
+-#: ../yum/depsolve.py:1256
++#: ../yum/depsolve.py:1305
++#, python-format
++msgid "requires minimal: %d"
++msgstr "behöver minst: %d"
++
++#: ../yum/depsolve.py:1309
++#, python-format
++msgid " Winner: %s"
++msgstr "Vinnare: %s"
++
++#: ../yum/depsolve.py:1314
++#, python-format
++msgid " Loser(with %d): %s"
++msgstr " Förlorare(med %d): %s"
++
++#: ../yum/depsolve.py:1330
+ #, python-format
+ msgid "Best Order: %s"
+ msgstr "Bästa ordning: %s"
+ 
+-#: ../yum/__init__.py:192
++#: ../yum/__init__.py:214
+ msgid "doConfigSetup() will go away in a future version of Yum.\n"
+ msgstr "doConfigSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:424
++#: ../yum/__init__.py:453
++#, python-format
++msgid "Repository %r: Error parsing config: %s"
++msgstr "Förråd %r: Fel vid tolkning konfiguration: %s"
++
++#: ../yum/__init__.py:459
+ #, python-format
+ msgid "Repository %r is missing name in configuration, using id"
+ msgstr "Förrådet %r saknar namn i konfigurationen, använder id"
+ 
+-#: ../yum/__init__.py:462
++#: ../yum/__init__.py:497
+ msgid "plugins already initialised"
+ msgstr "insticksmoduler redan initierade"
+ 
+-#: ../yum/__init__.py:469
++#: ../yum/__init__.py:504
+ msgid "doRpmDBSetup() will go away in a future version of Yum.\n"
+ msgstr "doRpmDBSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:480
++#: ../yum/__init__.py:515
+ msgid "Reading Local RPMDB"
+ msgstr "Läser lokal RPMDB"
+ 
+-#: ../yum/__init__.py:504
++#: ../yum/__init__.py:538
+ msgid "doRepoSetup() will go away in a future version of Yum.\n"
+ msgstr "doRepoSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:524
++#: ../yum/__init__.py:577
+ msgid "doSackSetup() will go away in a future version of Yum.\n"
+ msgstr "doSackSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:554
++#: ../yum/__init__.py:607
+ msgid "Setting up Package Sacks"
+ msgstr "Förbereder paketsäckar"
+ 
+-#: ../yum/__init__.py:599
++#: ../yum/__init__.py:652
+ #, python-format
+ msgid "repo object for repo %s lacks a _resetSack method\n"
+ msgstr "förrådsobjekt för förrådet %s saknar en _resetSack-metod\n"
+ 
+-#: ../yum/__init__.py:600
++#: ../yum/__init__.py:653
+ msgid "therefore this repo cannot be reset.\n"
+ msgstr "därför kan inte detta förråd återställas.\n"
+ 
+-#: ../yum/__init__.py:605
++#: ../yum/__init__.py:658
+ msgid "doUpdateSetup() will go away in a future version of Yum.\n"
+ msgstr "doUpdateSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:617
++#: ../yum/__init__.py:670
+ msgid "Building updates object"
+ msgstr "Bygger uppdateringsobjekt"
+ 
+-#: ../yum/__init__.py:652
++#: ../yum/__init__.py:709
+ msgid "doGroupSetup() will go away in a future version of Yum.\n"
+ msgstr "doGroupSetup() kommer att försvinna i en framtida version av Yum.\n"
+ 
+-#: ../yum/__init__.py:677
++#: ../yum/__init__.py:734
+ msgid "Getting group metadata"
+ msgstr "Hämtar gruppmetadata"
+ 
+-#: ../yum/__init__.py:703
++#: ../yum/__init__.py:760
+ #, python-format
+ msgid "Adding group file from repository: %s"
+ msgstr "Lägger till gruppfil från förrådet: %s"
+ 
+-#: ../yum/__init__.py:712
++#: ../yum/__init__.py:769
+ #, python-format
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "Kunde inte lägga till gruppfil för förrådet: %s - %s"
+ 
+-#: ../yum/__init__.py:718
++#: ../yum/__init__.py:775
+ msgid "No Groups Available in any repository"
+ msgstr "Inga grupper tillgängliga i något förråd"
+ 
+-#: ../yum/__init__.py:730
++#: ../yum/__init__.py:787
+ msgid "Getting pkgtags metadata"
+ msgstr "Hämtar pakettaggsmetadata"
+ 
+-#: ../yum/__init__.py:740
++#: ../yum/__init__.py:797
+ #, python-format
+ msgid "Adding tags from repository: %s"
+ msgstr "Lägger till taggar från förrådet: %s"
+ 
+-#: ../yum/__init__.py:749
++#: ../yum/__init__.py:806
+ #, python-format
+ msgid "Failed to add Pkg Tags for repository: %s - %s"
+ msgstr "Kunde inte lägga till pakettaggar för förrådet: %s - %s"
+ 
+-#: ../yum/__init__.py:827
++#: ../yum/__init__.py:884
+ msgid "Importing additional filelist information"
+ msgstr "Importerar ytterligare fillisteinformation"
+ 
+-#: ../yum/__init__.py:841
++#: ../yum/__init__.py:898
+ #, python-format
+ msgid "The program %s%s%s is found in the yum-utils package."
+ msgstr "Programmet %s%s%s finns i paketet yum-utils."
+ 
+-#: ../yum/__init__.py:849
++#: ../yum/__init__.py:906
+ msgid ""
+ "There are unfinished transactions remaining. You might consider running yum-"
+ "complete-transaction first to finish them."
+@@ -2088,18 +2242,23 @@ msgstr ""
+ "Det finns oavslutade transaktioner kvar.  Du kan överväga att köra "
+ "yumcomplete-transaction först för att avsluta dem."
+ 
++#: ../yum/__init__.py:985
++#, python-format
++msgid "Trying to remove \"%s\", which is protected"
++msgstr "Försöker ta bort ”%s”, som är skyddad"
++
+ #. Kind of hacky
+-#: ../yum/__init__.py:922
++#: ../yum/__init__.py:1044
+ #, python-format
+ msgid "Skip-broken round %i"
+ msgstr "Hoppa-över-trasiga runda %i"
+ 
+-#: ../yum/__init__.py:975
++#: ../yum/__init__.py:1101
+ #, python-format
+ msgid "Skip-broken took %i rounds "
+ msgstr "Hoppa-över-trasiga tog %i rundor "
+ 
+-#: ../yum/__init__.py:976
++#: ../yum/__init__.py:1102
+ msgid ""
+ "\n"
+ "Packages skipped because of dependency problems:"
+@@ -2107,91 +2266,115 @@ msgstr ""
+ "\n"
+ "Paket hoppades över på grund av beroendeproblem:"
+ 
+-#: ../yum/__init__.py:980
++#: ../yum/__init__.py:1106
+ #, python-format
+ msgid "    %s from %s"
+ msgstr "    %s från %s"
+ 
+-#: ../yum/__init__.py:1121
++#. FIXME: _N()
++#: ../yum/__init__.py:1251
++#, python-format
++msgid "** Found %d pre-existing rpmdb problem(s), 'yum check' output follows:"
++msgstr "** Hittade %d redan befintliga tidigare rpmdb-problem, ”yum check”-utdata följer:"
++
++#: ../yum/__init__.py:1255
+ msgid "Warning: RPMDB altered outside of yum."
+ msgstr "Varning: RPMDB ändrad utanför yum."
+ 
+-#: ../yum/__init__.py:1126
++#: ../yum/__init__.py:1267
+ msgid "missing requires"
+ msgstr "saknade behov"
+ 
+-#: ../yum/__init__.py:1127
++#: ../yum/__init__.py:1268
+ msgid "installed conflict"
+ msgstr "installerade konflikter"
+ 
+-#: ../yum/__init__.py:1180
++#: ../yum/__init__.py:1366
+ msgid ""
+ "Warning: scriptlet or other non-fatal errors occurred during transaction."
+ msgstr ""
+ "Varning: skript- eller annat icke ödesdigert fel inträffade under "
+ "transaktionen."
+ 
+-#: ../yum/__init__.py:1198
++#: ../yum/__init__.py:1376
++msgid "Transaction couldn't start:"
++msgstr "Transaktionen kunde inte starta:"
++
++#. should this be 'to_unicoded'?
++#: ../yum/__init__.py:1379
++msgid "Could not run transaction."
++msgstr "Kunde inte köra transaktionen."
++
++#: ../yum/__init__.py:1392
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "Kunde inte ta bort transaktionsfilen %s"
+ 
+ #. maybe a file log here, too
+ #. but raising an exception is not going to do any good
+-#: ../yum/__init__.py:1227
++#: ../yum/__init__.py:1424
+ #, python-format
+ msgid "%s was supposed to be installed but is not!"
+ msgstr "%s skulle installerats men gjordes det inte!"
+ 
+ #. maybe a file log here, too
+ #. but raising an exception is not going to do any good
+-#: ../yum/__init__.py:1266
++#: ../yum/__init__.py:1486
+ #, python-format
+ msgid "%s was supposed to be removed but is not!"
+ msgstr "%s skulle tagits bort men det gjordes inte!"
+ 
++#: ../yum/__init__.py:1597
++#, python-format
++msgid "Could not open lock %s: %s"
++msgstr "Kunde inte öppna låset %s: %s "
++
+ #. Whoa. What the heck happened?
+-#: ../yum/__init__.py:1386
++#: ../yum/__init__.py:1614
+ #, python-format
+ msgid "Unable to check if PID %s is active"
+ msgstr "Kan inte kontrollera om PID %s är aktiv"
+ 
+ #. Another copy seems to be running.
+-#: ../yum/__init__.py:1390
++#: ../yum/__init__.py:1618
+ #, python-format
+ msgid "Existing lock %s: another copy is running as pid %s."
+ msgstr "Existerande lås %s: en annan kopia kör som pid %s."
+ 
+ #. Whoa. What the heck happened?
+-#: ../yum/__init__.py:1425
++#: ../yum/__init__.py:1653
+ #, python-format
+ msgid "Could not create lock at %s: %s "
+ msgstr "Kunde inte skapa lås av %s: %s "
+ 
+-#: ../yum/__init__.py:1470
++#: ../yum/__init__.py:1698
++#, python-format
+ msgid ""
+-"Package does not match intended download. Suggestion: run yum clean metadata"
+-msgstr "Paketet matchar inte den avsedda hämtningen.  Förslag: kör yum clean metadata"
++"Package does not match intended download. Suggestion: run yum --enablerepo="
++"%s clean metadata"
++msgstr ""
++"Paketet matchar inte den avsedda hämtningen.  Förslag: kör yum --enablerepo="
++"%s clean metadata"
+ 
+-#: ../yum/__init__.py:1486
++#: ../yum/__init__.py:1714
+ msgid "Could not perform checksum"
+ msgstr "Kunde inte utföra kontrollsummering"
+ 
+-#: ../yum/__init__.py:1489
++#: ../yum/__init__.py:1717
+ msgid "Package does not match checksum"
+ msgstr "Paketet stämmer inte med kontrollsumman"
+ 
+-#: ../yum/__init__.py:1531
++#: ../yum/__init__.py:1769
+ #, python-format
+ msgid "package fails checksum but caching is enabled for %s"
+ msgstr "paketet misslyckas med kontrollsumman men cachning är aktiverat för %s"
+ 
+-#: ../yum/__init__.py:1534 ../yum/__init__.py:1563
++#: ../yum/__init__.py:1772 ../yum/__init__.py:1801
+ #, python-format
+ msgid "using local copy of %s"
+ msgstr "använder lokal kopia av %s"
+ 
+-#: ../yum/__init__.py:1575
++#: ../yum/__init__.py:1813
+ #, python-format
+ msgid ""
+ "Insufficient space in download directory %s\n"
+@@ -2202,11 +2385,11 @@ msgstr ""
+ "    * fritt   %s\n"
+ "    * behovet %s"
+ 
+-#: ../yum/__init__.py:1624
++#: ../yum/__init__.py:1862
+ msgid "Header is not complete."
+ msgstr "Huvudet är inte komplett."
+ 
+-#: ../yum/__init__.py:1661
++#: ../yum/__init__.py:1899
+ #, python-format
+ msgid ""
+ "Header not in local cache and caching-only mode enabled. Cannot download %s"
+@@ -2214,246 +2397,277 @@ msgstr ""
+ "Huvudet finns inte i den lokala cachen och endast-cache-läget är aktiverat.  "
+ "Kan inte hämta %s"
+ 
+-#: ../yum/__init__.py:1716
++#: ../yum/__init__.py:1954
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "Den publika nyckeln för %s är inte installerad"
+ 
+-#: ../yum/__init__.py:1720
++#: ../yum/__init__.py:1958
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "Problem att öppna paketet %s"
+ 
+-#: ../yum/__init__.py:1728
++#: ../yum/__init__.py:1966
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "Den publika nyckeln för %s är inte betrodd"
+ 
+-#: ../yum/__init__.py:1732
++#: ../yum/__init__.py:1970
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "Paket %s är inte signerat"
+ 
+-#: ../yum/__init__.py:1770
++#: ../yum/__init__.py:2008
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "Det går inte att ta bort %s"
+ 
+-#: ../yum/__init__.py:1774
++#: ../yum/__init__.py:2012
+ #, python-format
+ msgid "%s removed"
+ msgstr "%s borttaget"
+ 
+ # Första %s blir ett oöversatt engelskt ord.
+ # Felrapporterat: http://yum.baseurl.org/ticket/41
+-#: ../yum/__init__.py:1820
++#: ../yum/__init__.py:2058
+ #, python-format
+ msgid "Cannot remove %s file %s"
+ msgstr "Det går inte att ta bort %s-filen %s"
+ 
+-#: ../yum/__init__.py:1824
++#: ../yum/__init__.py:2062
+ #, python-format
+ msgid "%s file %s removed"
+ msgstr "%s-filen %s borttagen"
+ 
+-#: ../yum/__init__.py:1826
++#: ../yum/__init__.py:2064
+ #, python-format
+ msgid "%d %s files removed"
+ msgstr "%d %s-filer borttagna"
+ 
+-#: ../yum/__init__.py:1895
++#: ../yum/__init__.py:2133
+ #, python-format
+ msgid "More than one identical match in sack for %s"
+ msgstr "Mer än en identisk matchning i säcken för %s"
+ 
+-#: ../yum/__init__.py:1901
++#: ../yum/__init__.py:2139
+ #, python-format
+ msgid "Nothing matches %s.%s %s:%s-%s from update"
+ msgstr "Ingenting matchar %s.%s %s:%s-%s från uppdateringarna"
+ 
+-#: ../yum/__init__.py:2180
++#: ../yum/__init__.py:2433
+ msgid ""
+-"searchPackages() will go away in a future version of "
+-"Yum.                      Use searchGenerator() instead. \n"
++"searchPackages() will go away in a future version of Yum.                    "
++"  Use searchGenerator() instead. \n"
+ msgstr ""
+-"searchPackages() kommer att försvinna i en framtida version av "
+-"Yum.                      Använd searchGenerator() istället. \n"
++"searchPackages() kommer att försvinna i en framtida version av Yum.          "
++"            Använd searchGenerator() istället. \n"
+ 
+-#: ../yum/__init__.py:2219
++#: ../yum/__init__.py:2472
+ #, python-format
+ msgid "Searching %d packages"
+ msgstr "Söker i %d paket"
+ 
+-#: ../yum/__init__.py:2223
++#: ../yum/__init__.py:2476
+ #, python-format
+ msgid "searching package %s"
+ msgstr "söker i paketet %s"
+ 
+-#: ../yum/__init__.py:2235
++#: ../yum/__init__.py:2488
+ msgid "searching in file entries"
+ msgstr "söker i filposter"
+ 
+-#: ../yum/__init__.py:2242
++#: ../yum/__init__.py:2495
+ msgid "searching in provides entries"
+ msgstr "söker i tillhandahållandeposter"
+ 
+-#: ../yum/__init__.py:2275
++#: ../yum/__init__.py:2528
+ #, python-format
+ msgid "Provides-match: %s"
+ msgstr "Tillhandahållandematchning: %s"
+ 
+-#: ../yum/__init__.py:2324
++#: ../yum/__init__.py:2577
+ msgid "No group data available for configured repositories"
+ msgstr "Inga gruppdata är tillgängliga för de konfigurerade förråden"
+ 
+-#: ../yum/__init__.py:2355 ../yum/__init__.py:2374 ../yum/__init__.py:2405
+-#: ../yum/__init__.py:2411 ../yum/__init__.py:2493 ../yum/__init__.py:2497
+-#: ../yum/__init__.py:2814
++#: ../yum/__init__.py:2608 ../yum/__init__.py:2627 ../yum/__init__.py:2658
++#: ../yum/__init__.py:2664 ../yum/__init__.py:2746 ../yum/__init__.py:2750
++#: ../yum/__init__.py:3095
+ #, python-format
+ msgid "No Group named %s exists"
+ msgstr "Det finns ingen grupp med namnet %s"
+ 
+-#: ../yum/__init__.py:2386 ../yum/__init__.py:2513
++#: ../yum/__init__.py:2639 ../yum/__init__.py:2766
+ #, python-format
+ msgid "package %s was not marked in group %s"
+ msgstr "paket %s noterades inte i gruppen %s"
+ 
+-#: ../yum/__init__.py:2433
++#: ../yum/__init__.py:2686
+ #, python-format
+ msgid "Adding package %s from group %s"
+ msgstr "Lägger till paket %s från grupp %s"
+ 
+-#: ../yum/__init__.py:2437
++#: ../yum/__init__.py:2690
+ #, python-format
+ msgid "No package named %s available to be installed"
+ msgstr "Inget paket med namnet %s är tillgängligt för installation"
+ 
+-#: ../yum/__init__.py:2539
++#. This can happen due to excludes after .up has
++#. happened.
++#: ../yum/__init__.py:2794
+ #, python-format
+ msgid "Package tuple %s could not be found in packagesack"
+ msgstr "Pakettupel %s fanns inte i paketsäcken"
+ 
+-#: ../yum/__init__.py:2558
++#: ../yum/__init__.py:2813
+ #, python-format
+ msgid "Package tuple %s could not be found in rpmdb"
+ msgstr "Pakettupel %s fanns inte i rpmdb"
+ 
+-#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
+-msgid "Invalid version flag"
+-msgstr "Ogiltig versionsflagga"
+-
+-#: ../yum/__init__.py:2634 ../yum/__init__.py:2639
++#: ../yum/__init__.py:2868 ../yum/__init__.py:2873
+ #, python-format
+ msgid "No Package found for %s"
+ msgstr "Inga paket hittades för %s"
+ 
+-#: ../yum/__init__.py:2855
++#: ../yum/__init__.py:2901
++msgid "Invalid version flag"
++msgstr "Ogiltig versionsflagga"
++
++#: ../yum/__init__.py:3145
+ msgid "Package Object was not a package object instance"
+ msgstr "Paketobjektet var inte en paketobjektinstans"
+ 
+-#: ../yum/__init__.py:2859
++#: ../yum/__init__.py:3149
+ msgid "Nothing specified to install"
+ msgstr "Inget angivet att installeras"
+ 
+-#: ../yum/__init__.py:2875 ../yum/__init__.py:3652
++#: ../yum/__init__.py:3168 ../yum/__init__.py:3992
+ #, python-format
+ msgid "Checking for virtual provide or file-provide for %s"
+ msgstr ""
+ "Kontrollerar virtuella tillhandahållanden eller filtillhandahållanden för %s"
+ 
+-#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
+-#: ../yum/__init__.py:3658
++#: ../yum/__init__.py:3174 ../yum/__init__.py:3504 ../yum/__init__.py:3684
++#: ../yum/__init__.py:3998
+ #, python-format
+ msgid "No Match for argument: %s"
+ msgstr "Ingen matchning för argument: %s"
+ 
+-#: ../yum/__init__.py:2957
++#: ../yum/__init__.py:3250
+ #, python-format
+ msgid "Package %s installed and not available"
+ msgstr "Paket %s installerat och inte tillgänligt"
+ 
+-#: ../yum/__init__.py:2960
++#: ../yum/__init__.py:3253
+ msgid "No package(s) available to install"
+ msgstr "Inga paket tillgängliga att installera"
+ 
+-#: ../yum/__init__.py:2972
++#: ../yum/__init__.py:3265
+ #, python-format
+ msgid "Package: %s  - already in transaction set"
+ msgstr "Paket: %s - redan i transaktionsmängden"
+ 
+-#: ../yum/__init__.py:2998
++#: ../yum/__init__.py:3291
+ #, python-format
+ msgid "Package %s is obsoleted by %s which is already installed"
+ msgstr "Paket %s fasas ut av %s, som redan är installerat"
+ 
+-#: ../yum/__init__.py:3001
++#: ../yum/__init__.py:3296
++#, python-format
++msgid ""
++"Package %s is obsoleted by %s, but obsoleting package does not provide for "
++"requirements"
++msgstr ""
++"Paket %s fasas ut av %s, men paketet som fasar ut tillhandahåller inte "
++"behoven"
++
++#: ../yum/__init__.py:3299
+ #, python-format
+ msgid "Package %s is obsoleted by %s, trying to install %s instead"
+ msgstr "Paket %s fasas ut av %s, försöker installera %s istället"
+ 
+-#: ../yum/__init__.py:3009
++#: ../yum/__init__.py:3307
+ #, python-format
+ msgid "Package %s already installed and latest version"
+ msgstr "Paket %s är redan installerat och senaste version"
+ 
+-#: ../yum/__init__.py:3023
++#: ../yum/__init__.py:3321
+ #, python-format
+ msgid "Package matching %s already installed. Checking for update."
+ msgstr "Paket som matchar %s är redan installerat.  Letar efter uppdatering."
+ 
+ #. update everything (the easy case)
+-#: ../yum/__init__.py:3126
++#: ../yum/__init__.py:3424
+ msgid "Updating Everything"
+ msgstr "Uppdaterar allt"
+ 
+-#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
+-#: ../yum/__init__.py:3315
++#: ../yum/__init__.py:3448 ../yum/__init__.py:3577 ../yum/__init__.py:3604
++#: ../yum/__init__.py:3630
+ #, python-format
+ msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s"
+ msgstr "Uppdaterar inte paket som redan är utfasade: %s.%s %s:%s-%s"
+ 
+-#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
++#: ../yum/__init__.py:3489 ../yum/__init__.py:3680
+ #, python-format
+ msgid "%s"
+ msgstr "%s"
+ 
+-#: ../yum/__init__.py:3253
++#: ../yum/__init__.py:3566
+ #, python-format
+ msgid "Package is already obsoleted: %s.%s %s:%s-%s"
+ msgstr "Paketet är redan utfasat: %s.%s %s:%s-%s"
+ 
+-#: ../yum/__init__.py:3284
++#: ../yum/__init__.py:3599
+ #, python-format
+ msgid "Not Updating Package that is obsoleted: %s"
+ msgstr "Uppdaterar inte paket som fasas ut: %s"
+ 
+-#: ../yum/__init__.py:3293 ../yum/__init__.py:3319
++#: ../yum/__init__.py:3608 ../yum/__init__.py:3634
+ #, python-format
+ msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
+ msgstr "Uppdaterar inte paket som redan är uppdaterat: %s.%s %s:%s-%s"
+ 
+-#: ../yum/__init__.py:3378
++#: ../yum/__init__.py:3697
+ msgid "No package matched to remove"
+ msgstr "Inget paket att tas bort matchar"
+ 
+-#: ../yum/__init__.py:3412
++#: ../yum/__init__.py:3703
++#, python-format
++msgid "Skipping the running kernel: %s"
++msgstr "Hoppar över den körande kärnan: %s"
++
++#: ../yum/__init__.py:3709
++#, python-format
++msgid "Removing %s from the transaction"
++msgstr "Ta bort %s från transaktionen"
++
++#: ../yum/__init__.py:3744
+ #, python-format
+ msgid "Cannot open: %s. Skipping."
+ msgstr "Det går inte att öppna: %s.  Hoppar över."
+ 
+-#: ../yum/__init__.py:3415 ../yum/__init__.py:3514 ../yum/__init__.py:3598
++#: ../yum/__init__.py:3747 ../yum/__init__.py:3859 ../yum/__init__.py:3935
+ #, python-format
+ msgid "Examining %s: %s"
+ msgstr "Undersöker %s: %s"
+ 
+-#: ../yum/__init__.py:3423 ../yum/__init__.py:3517 ../yum/__init__.py:3601
++#: ../yum/__init__.py:3751
++#, python-format
++msgid "Cannot localinstall deltarpm: %s. Skipping."
++msgstr "Det går inte att lokalinstallera deltarpm: %s.  Hoppar över."
++
++#: ../yum/__init__.py:3760 ../yum/__init__.py:3862 ../yum/__init__.py:3938
+ #, python-format
+ msgid "Cannot add package %s to transaction. Not a compatible architecture: %s"
+ msgstr ""
+ "Kan inte lägga till paket %s till transaktionen.  Inte en kompatibel "
+ "arkitektur: %s"
+ 
+-#: ../yum/__init__.py:3431
++#: ../yum/__init__.py:3766
++#, python-format
++msgid "Cannot install package %s. It is obsoleted by installed package %s"
++msgstr "Det går inte att installera paketet %s.  Det är fasas ut av det installerade paketet %s"
++
++#: ../yum/__init__.py:3774
+ #, python-format
+ msgid ""
+ "Package %s not installed, cannot update it. Run yum install to install it "
+@@ -2462,108 +2676,126 @@ msgstr ""
+ "Paket %s är inte installerat, kan inte uppdatera det.  Kör yum install för "
+ "att installera det istället."
+ 
+-#: ../yum/__init__.py:3460 ../yum/__init__.py:3522 ../yum/__init__.py:3606
++#: ../yum/__init__.py:3803 ../yum/__init__.py:3867 ../yum/__init__.py:3943
+ #, python-format
+ msgid "Excluding %s"
+ msgstr "Utesluter %s"
+ 
+-#: ../yum/__init__.py:3465
++#: ../yum/__init__.py:3808
+ #, python-format
+ msgid "Marking %s to be installed"
+ msgstr "Noterar %s för installation"
+ 
+-#: ../yum/__init__.py:3471
++#: ../yum/__init__.py:3814
+ #, python-format
+ msgid "Marking %s as an update to %s"
+ msgstr "Noterar %s som en uppdatering av %s"
+ 
+-#: ../yum/__init__.py:3478
++#: ../yum/__init__.py:3821
+ #, python-format
+ msgid "%s: does not update installed package."
+ msgstr "%s: uppdaterar inte ett installerat paket."
+ 
+-#: ../yum/__init__.py:3511 ../yum/__init__.py:3595
++#: ../yum/__init__.py:3856 ../yum/__init__.py:3932
+ #, python-format
+ msgid "Cannot open file: %s. Skipping."
+ msgstr "Det går inte att öppna filen: %s.  Hoppar över."
+ 
+-#: ../yum/__init__.py:3541
++#: ../yum/__init__.py:3886
+ msgid "Problem in reinstall: no package matched to remove"
+ msgstr "Problem att ominstallera: inget paket matchades att tas bort"
+ 
+-#: ../yum/__init__.py:3554 ../yum/__init__.py:3686
+-#, python-format
+-msgid "Package %s is allowed multiple installs, skipping"
+-msgstr "Paket %s tillåts multipla installationer, hoppar över"
+-
+-#: ../yum/__init__.py:3575
++#: ../yum/__init__.py:3912
+ #, python-format
+ msgid "Problem in reinstall: no package %s matched to install"
+ msgstr "Problem att ominstallera: inget paket %s matchades att installera"
+ 
+-#: ../yum/__init__.py:3678
++#: ../yum/__init__.py:4018
+ msgid "No package(s) available to downgrade"
+ msgstr "Inga paket tillgängliga att nedgradera"
+ 
+-#: ../yum/__init__.py:3731
++#: ../yum/__init__.py:4026
++#, python-format
++msgid "Package %s is allowed multiple installs, skipping"
++msgstr "Paket %s tillåts multipla installationer, hoppar över"
++
++#: ../yum/__init__.py:4072
+ #, python-format
+ msgid "No Match for available package: %s"
+ msgstr "Ingen matchning för tillgängliga paket: %s"
+ 
+-#: ../yum/__init__.py:3738
++#: ../yum/__init__.py:4079
+ #, python-format
+ msgid "Only Upgrade available on package: %s"
+ msgstr "Endast uppgradering tillgängliga för paket: %s"
+ 
+-#: ../yum/__init__.py:3808 ../yum/__init__.py:3845
++#: ../yum/__init__.py:4149 ../yum/__init__.py:4186
+ #, python-format
+ msgid "Failed to downgrade: %s"
+ msgstr "Misslyckades nedgradera: %s"
+ 
+-#: ../yum/__init__.py:3877
++#: ../yum/__init__.py:4218
+ #, python-format
+ msgid "Retrieving GPG key from %s"
+ msgstr "Hämtar GPG-nyckel från %s"
+ 
+-#: ../yum/__init__.py:3897
++#: ../yum/__init__.py:4238
+ msgid "GPG key retrieval failed: "
+ msgstr "Hämtandet av GPG-nyckeln misslyckades: "
+ 
+-#: ../yum/__init__.py:3903
++#: ../yum/__init__.py:4244
+ #, python-format
+ msgid "Invalid GPG Key from %s: %s"
+ msgstr "Ogiltig GPG-nyckel från %s: %s"
+ 
+-#: ../yum/__init__.py:3912
++#: ../yum/__init__.py:4253
+ #, python-format
+ msgid "GPG key parsing failed: key does not have value %s"
+ msgstr "GPG-nyckeltolkning misslyckades: nyckeln har inte värde %s"
+ 
+-#: ../yum/__init__.py:3944
++#: ../yum/__init__.py:4267
+ #, python-format
+-msgid "GPG key at %s (0x%s) is already installed"
+-msgstr "GPG-nyckel vid %s (0x%s) är redan installerad"
++msgid ""
++"Importing GPG key 0x%s:\n"
++" Userid : %s\n"
++" Package: %s (%s)\n"
++" From   : %s"
++msgstr ""
++"Importerar GPG-nyckel 0x%s:\n"
++" Användarid: %s\n"
++" Paket     : %s (%s)\n"
++" Från      : %s"
++
++#: ../yum/__init__.py:4275
++#, python-format
++msgid ""
++"Importing GPG key 0x%s:\n"
++" Userid: \"%s\"\n"
++" From  : %s"
++msgstr ""
++"Importerar GPG-nyckel 0x%s:\n"
++" Användarid: \"%s\"\n"
++" Från      : %s"
+ 
+-#. Try installing/updating GPG key
+-#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
++#: ../yum/__init__.py:4307
+ #, python-format
+-msgid "Importing GPG key 0x%s \"%s\" from %s"
+-msgstr "Importerar GPG-nyckel 0x%s \"%s\" från %s"
++msgid "GPG key at %s (0x%s) is already installed"
++msgstr "GPG-nyckel vid %s (0x%s) är redan installerad"
+ 
+-#: ../yum/__init__.py:3966
++#: ../yum/__init__.py:4326
+ msgid "Not installing key"
+ msgstr "Installerar inte nyckeln"
+ 
+-#: ../yum/__init__.py:3972
++#: ../yum/__init__.py:4332
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "Nyckelimport misslyckades (kod %d)"
+ 
+-#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
++#: ../yum/__init__.py:4333 ../yum/__init__.py:4389
+ msgid "Key imported successfully"
+ msgstr "Nyckelimport lyckades"
+ 
+-#: ../yum/__init__.py:3978 ../yum/__init__.py:4037
++#: ../yum/__init__.py:4338
+ #, python-format
+ msgid ""
+ "The GPG keys listed for the \"%s\" repository are already installed but they "
+@@ -2574,83 +2806,94 @@ msgstr ""
+ "inte korrekta för detta paket.\n"
+ "Kontrollera att de rätta nyckel-URL:erna är konfigurerade för detta förråd."
+ 
+-#: ../yum/__init__.py:3987
++#: ../yum/__init__.py:4347
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr "Import av nycklar hjälpte inte, fel nycklar?"
+ 
+-#: ../yum/__init__.py:4006
++#: ../yum/__init__.py:4366
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already imported"
+ msgstr "GPG-nyckel vid %s (0x%s) är redan importerad"
+ 
+-#: ../yum/__init__.py:4026
++#: ../yum/__init__.py:4383
+ #, python-format
+ msgid "Not installing key for repo %s"
+ msgstr "Installerar inte nyckel för förråd %s"
+ 
+-#: ../yum/__init__.py:4031
++#: ../yum/__init__.py:4388
+ msgid "Key import failed"
+ msgstr "Nyckelimport misslyckades"
+ 
+-#: ../yum/__init__.py:4157
++#: ../yum/__init__.py:4394
++#, python-format
++msgid ""
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct.\n"
++"Check that the correct key URLs are configured for this repository."
++msgstr ""
++"GPG-nycklarna uppräknade för förrådet \"%s\" är redan installerade men de är "
++"inte korrekta.\n"
++"Kontrollera att rätt nyckel-URL:ar är konfigurerade för detta förråd."
++
++#: ../yum/__init__.py:4521
+ msgid "Unable to find a suitable mirror."
+ msgstr "Kan inte hitta en lämplig spegel."
+ 
+-#: ../yum/__init__.py:4159
++#: ../yum/__init__.py:4523
+ msgid "Errors were encountered while downloading packages."
+ msgstr "Fel uppstod när paket hämtades."
+ 
+-#: ../yum/__init__.py:4209
++#: ../yum/__init__.py:4573
+ #, python-format
+ msgid "Please report this error at %s"
+ msgstr "Rapportera gärna detta fel till %s"
+ 
+-#: ../yum/__init__.py:4233
++#: ../yum/__init__.py:4597
+ msgid "Test Transaction Errors: "
+ msgstr "Transaktionstestfel: "
+ 
+-#: ../yum/__init__.py:4334
++#: ../yum/__init__.py:4700
+ #, python-format
+ msgid "Could not set cachedir: %s"
+ msgstr "Kunde inte sätta cache-katalog: %s"
+ 
+ #. Mostly copied from YumOutput._outKeyValFill()
+-#: ../yum/plugins.py:202
++#: ../yum/plugins.py:208
+ msgid "Loaded plugins: "
+ msgstr "Inlästa insticksmoduler: "
+ 
+-#: ../yum/plugins.py:216 ../yum/plugins.py:222
++#: ../yum/plugins.py:222 ../yum/plugins.py:228
+ #, python-format
+ msgid "No plugin match for: %s"
+ msgstr "Ingen insticksmodul matchar: %s"
+ 
+-#: ../yum/plugins.py:252
++#: ../yum/plugins.py:258
+ #, python-format
+ msgid "Not loading \"%s\" plugin, as it is disabled"
+ msgstr "Läser inte in insticksmodulen \"%s\" eftersom den är inaktiverad"
+ 
+ #. Give full backtrace:
+-#: ../yum/plugins.py:264
++#: ../yum/plugins.py:270
+ #, python-format
+ msgid "Plugin \"%s\" can't be imported"
+ msgstr "Insticksmodulen \"%s\" kan inte importeras"
+ 
+-#: ../yum/plugins.py:271
++#: ../yum/plugins.py:277
+ #, python-format
+ msgid "Plugin \"%s\" doesn't specify required API version"
+ msgstr "Insticksmodulen \"%s\" specificerare inte nödvändig API-version"
+ 
+-#: ../yum/plugins.py:276
++#: ../yum/plugins.py:282
+ #, python-format
+ msgid "Plugin \"%s\" requires API %s. Supported API is %s."
+ msgstr "Insticksmodulen \"%s\" kräver API %s.  API:er som stöds är %s."
+ 
+-#: ../yum/plugins.py:309
++#: ../yum/plugins.py:315
+ #, python-format
+ msgid "Loading \"%s\" plugin"
+ msgstr "Läser in insticksmodulen \"%s\""
+ 
+-#: ../yum/plugins.py:316
++#: ../yum/plugins.py:322
+ #, python-format
+ msgid ""
+ "Two or more plugins with the name \"%s\" exist in the plugin search path"
+@@ -2658,19 +2901,19 @@ msgstr ""
+ "Två eller flera insticksmoduler med namnet \"%s\" finns i sökvägen för "
+ "insticksmoduler"
+ 
+-#: ../yum/plugins.py:336
++#: ../yum/plugins.py:342
+ #, python-format
+ msgid "Configuration file %s not found"
+ msgstr "Konfigurationsfilen %s finns inte"
+ 
+ #. for
+ #. Configuration files for the plugin not found
+-#: ../yum/plugins.py:339
++#: ../yum/plugins.py:345
+ #, python-format
+ msgid "Unable to find configuration file for plugin %s"
+ msgstr "Kan inte hitta konfigurationsfil för insticksmodulen %s"
+ 
+-#: ../yum/plugins.py:501
++#: ../yum/plugins.py:507
+ msgid "registration of commands not supported"
+ msgstr "registrering av kommandon stöds inte"
+ 
+@@ -2687,6 +2930,16 @@ msgstr "har installerad konflikt"
+ msgid "%s is a duplicate with %s"
+ msgstr "%s är en dubblett med %s"
+ 
++#: ../yum/rpmsack.py:122
++#, python-format
++msgid "%s is obsoleted by %s"
++msgstr "%s fasas ut av %s"
++
++#: ../yum/rpmsack.py:130
++#, python-format
++msgid "%s provides %s but it cannot be found"
++msgstr "%s tillhandahåller %s men det kan inte hittas"
++
+ #: ../yum/rpmtrans.py:79
+ msgid "Repackaging"
+ msgstr "Paketerar om"
+diff --git a/po/yum.pot b/po/yum.pot
+index f9a1d35..c9d7199 100644
+--- a/po/yum.pot
++++ b/po/yum.pot
+@@ -8,15 +8,16 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2010-02-11 10:54-0500\n"
++"POT-Creation-Date: 2010-08-17 10:15-0400\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL at li.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CHARSET\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ 
+-#: ../callback.py:48 ../output.py:947 ../yum/rpmtrans.py:72
++#: ../callback.py:48 ../output.py:1027 ../yum/rpmtrans.py:72
+ msgid "Updating"
+ msgstr ""
+ 
+@@ -24,26 +25,26 @@ msgstr ""
+ msgid "Erasing"
+ msgstr ""
+ 
+-#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:946
+-#: ../output.py:1659 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
++#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:1026
++#: ../output.py:1919 ../yum/rpmtrans.py:74 ../yum/rpmtrans.py:75
+ #: ../yum/rpmtrans.py:77
+ msgid "Installing"
+ msgstr ""
+ 
+-#: ../callback.py:52 ../callback.py:58 ../output.py:1484 ../yum/rpmtrans.py:76
++#: ../callback.py:52 ../callback.py:58 ../output.py:1640 ../yum/rpmtrans.py:76
+ msgid "Obsoleted"
+ msgstr ""
+ 
+-#: ../callback.py:54 ../output.py:1070 ../output.py:1442 ../output.py:1491
++#: ../callback.py:54 ../output.py:1157 ../output.py:1518 ../output.py:1647
+ msgid "Updated"
+ msgstr ""
+ 
+-#: ../callback.py:55 ../output.py:1438
++#: ../callback.py:55 ../output.py:1517
+ msgid "Erased"
+ msgstr ""
+ 
+-#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1068
+-#: ../output.py:1434 ../output.py:1646
++#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:1155
++#: ../output.py:1517 ../output.py:1519 ../output.py:1891
+ msgid "Installed"
+ msgstr ""
+ 
+@@ -65,7 +66,7 @@ msgstr ""
+ msgid "Erased: %s"
+ msgstr ""
+ 
+-#: ../callback.py:217 ../output.py:948 ../output.py:1648
++#: ../callback.py:217 ../output.py:1028 ../output.py:1894
+ msgid "Removing"
+ msgstr ""
+ 
+@@ -73,316 +74,329 @@ msgstr ""
+ msgid "Cleanup"
+ msgstr ""
+ 
+-#: ../cli.py:107
++#: ../cli.py:108
+ #, python-format
+ msgid "Command \"%s\" already defined"
+ msgstr ""
+ 
+-#: ../cli.py:119
++#: ../cli.py:120
+ msgid "Setting up repositories"
+ msgstr ""
+ 
+-#: ../cli.py:130
++#: ../cli.py:131
+ msgid "Reading repository metadata in from local files"
+ msgstr ""
+ 
+-#: ../cli.py:194 ../utils.py:193
++#: ../cli.py:234 ../utils.py:254
+ #, python-format
+ msgid "Config Error: %s"
+ msgstr ""
+ 
+-#: ../cli.py:197 ../cli.py:1272 ../utils.py:196
++#: ../cli.py:237 ../cli.py:1403 ../utils.py:257
+ #, python-format
+ msgid "Options Error: %s"
+ msgstr ""
+ 
+-#: ../cli.py:227
++#: ../cli.py:267
+ #, python-format
+ msgid "  Installed: %s-%s at %s"
+ msgstr ""
+ 
+-#: ../cli.py:229
++#: ../cli.py:269
+ #, python-format
+ msgid "  Built    : %s at %s"
+ msgstr ""
+ 
+-#: ../cli.py:231
++#: ../cli.py:271
+ #, python-format
+ msgid "  Committed: %s at %s"
+ msgstr ""
+ 
+-#: ../cli.py:270
++#: ../cli.py:310
+ msgid "You need to give some command"
+ msgstr ""
+ 
+-#: ../cli.py:284
++#: ../cli.py:324
+ #, python-format
+ msgid "No such command: %s. Please use %s --help"
+ msgstr ""
+ 
+-#: ../cli.py:314
++#: ../cli.py:354
+ msgid "Disk Requirements:\n"
+ msgstr ""
+ 
+-#: ../cli.py:316
++#: ../cli.py:356
+ #, python-format
+ msgid "  At least %dMB more space needed on the %s filesystem.\n"
+ msgstr ""
+ 
+ #. TODO: simplify the dependency errors?
+ #. Fixup the summary
+-#: ../cli.py:321
++#: ../cli.py:361
+ msgid ""
+ "Error Summary\n"
+ "-------------\n"
+ msgstr ""
+ 
+-#: ../cli.py:364
++#: ../cli.py:404
+ msgid "Trying to run the transaction but nothing to do. Exiting."
+ msgstr ""
+ 
+-#: ../cli.py:403
++#: ../cli.py:451
+ msgid "Exiting on user Command"
+ msgstr ""
+ 
+-#: ../cli.py:407
++#: ../cli.py:455
+ msgid "Downloading Packages:"
+ msgstr ""
+ 
+-#: ../cli.py:412
++#: ../cli.py:460
+ msgid "Error Downloading Packages:\n"
+ msgstr ""
+ 
+-#: ../cli.py:426 ../yum/__init__.py:4195
++#: ../cli.py:474 ../yum/__init__.py:4559
+ msgid "Running rpm_check_debug"
+ msgstr ""
+ 
+-#: ../cli.py:435 ../yum/__init__.py:4204
++#: ../cli.py:483 ../yum/__init__.py:4568
+ msgid "ERROR You need to update rpm to handle:"
+ msgstr ""
+ 
+-#: ../cli.py:437 ../yum/__init__.py:4207
++#: ../cli.py:485 ../yum/__init__.py:4571
+ msgid "ERROR with rpm_check_debug vs depsolve:"
+ msgstr ""
+ 
+-#: ../cli.py:443
++#: ../cli.py:491
+ msgid "RPM needs to be updated"
+ msgstr ""
+ 
+-#: ../cli.py:444
++#: ../cli.py:492
+ #, python-format
+ msgid "Please report this error in %s"
+ msgstr ""
+ 
+-#: ../cli.py:450
++#: ../cli.py:498
+ msgid "Running Transaction Test"
+ msgstr ""
+ 
+-#: ../cli.py:466
++#: ../cli.py:514
+ msgid "Transaction Check Error:\n"
+ msgstr ""
+ 
+-#: ../cli.py:473
++#: ../cli.py:521
+ msgid "Transaction Test Succeeded"
+ msgstr ""
+ 
+-#: ../cli.py:495
++#: ../cli.py:543
+ msgid "Running Transaction"
+ msgstr ""
+ 
+-#: ../cli.py:525
++#: ../cli.py:573
+ msgid ""
+ "Refusing to automatically import keys when running unattended.\n"
+ "Use \"-y\" to override."
+ msgstr ""
+ 
+-#: ../cli.py:544 ../cli.py:578
++#: ../cli.py:592 ../cli.py:626
+ msgid "  * Maybe you meant: "
+ msgstr ""
+ 
+-#: ../cli.py:561 ../cli.py:569
++#: ../cli.py:609 ../cli.py:617
+ #, python-format
+ msgid "Package(s) %s%s%s available, but not installed."
+ msgstr ""
+ 
+-#: ../cli.py:575 ../cli.py:607 ../cli.py:687
++#: ../cli.py:623 ../cli.py:656 ../cli.py:810
+ #, python-format
+ msgid "No package %s%s%s available."
+ msgstr ""
+ 
+-#: ../cli.py:612 ../cli.py:748
++#: ../cli.py:663 ../cli.py:875
+ msgid "Package(s) to install"
+ msgstr ""
+ 
+-#: ../cli.py:613 ../cli.py:693 ../cli.py:727 ../cli.py:749
+-#: ../yumcommands.py:160
++#: ../cli.py:666 ../cli.py:667 ../cli.py:816 ../cli.py:850 ../cli.py:876
++#: ../yumcommands.py:179
+ msgid "Nothing to do"
+ msgstr ""
+ 
+-#: ../cli.py:647
++#: ../cli.py:701
+ #, python-format
+ msgid "%d packages marked for Update"
+ msgstr ""
+ 
+-#: ../cli.py:650
++#: ../cli.py:704
+ msgid "No Packages marked for Update"
+ msgstr ""
+ 
+-#: ../cli.py:664
++#: ../cli.py:770
++#, python-format
++msgid "%d packages marked for Distribution Synchronization"
++msgstr ""
++
++#: ../cli.py:773
++msgid "No Packages marked for Distribution Synchronization"
++msgstr ""
++
++#: ../cli.py:787
+ #, python-format
+ msgid "%d packages marked for removal"
+ msgstr ""
+ 
+-#: ../cli.py:667
++#: ../cli.py:790
+ msgid "No Packages marked for removal"
+ msgstr ""
+ 
+-#: ../cli.py:692
++#: ../cli.py:815
+ msgid "Package(s) to downgrade"
+ msgstr ""
+ 
+-#: ../cli.py:717
++#: ../cli.py:840
+ #, python-format
+ msgid " (from %s)"
+ msgstr ""
+ 
+-#: ../cli.py:719
++#: ../cli.py:841
+ #, python-format
+ msgid "Installed package %s%s%s%s not available."
+ msgstr ""
+ 
+-#: ../cli.py:726
++#: ../cli.py:849
+ msgid "Package(s) to reinstall"
+ msgstr ""
+ 
+-#: ../cli.py:739
++#: ../cli.py:862
+ msgid "No Packages Provided"
+ msgstr ""
+ 
+-#: ../cli.py:818
++#: ../cli.py:945
+ #, python-format
+ msgid "Matched: %s"
+ msgstr ""
+ 
+-#: ../cli.py:825
++#: ../cli.py:952
+ #, python-format
+ msgid "Warning: No matches found for: %s"
+ msgstr ""
+ 
+-#: ../cli.py:828
++#: ../cli.py:955
+ msgid "No Matches found"
+ msgstr ""
+ 
+-#: ../cli.py:868
++#: ../cli.py:995
+ #, python-format
+ msgid ""
+ "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
+ " You can use \"%s*/%s%s\" and/or \"%s*bin/%s%s\" to get that behaviour"
+ msgstr ""
+ 
+-#: ../cli.py:884
++#: ../cli.py:1011
+ #, python-format
+ msgid "No Package Found for %s"
+ msgstr ""
+ 
+-#: ../cli.py:896
++#: ../cli.py:1021
++msgid "Cleaning repos: "
++msgstr ""
++
++#: ../cli.py:1026
+ msgid "Cleaning up Everything"
+ msgstr ""
+ 
+-#: ../cli.py:912
++#: ../cli.py:1042
+ msgid "Cleaning up Headers"
+ msgstr ""
+ 
+-#: ../cli.py:915
++#: ../cli.py:1045
+ msgid "Cleaning up Packages"
+ msgstr ""
+ 
+-#: ../cli.py:918
++#: ../cli.py:1048
+ msgid "Cleaning up xml metadata"
+ msgstr ""
+ 
+-#: ../cli.py:921
++#: ../cli.py:1051
+ msgid "Cleaning up database cache"
+ msgstr ""
+ 
+-#: ../cli.py:924
++#: ../cli.py:1054
+ msgid "Cleaning up expire-cache metadata"
+ msgstr ""
+ 
+-#: ../cli.py:927
++#: ../cli.py:1057
+ msgid "Cleaning up cached rpmdb data"
+ msgstr ""
+ 
+-#: ../cli.py:930
++#: ../cli.py:1060
+ msgid "Cleaning up plugins"
+ msgstr ""
+ 
+-#: ../cli.py:955
++#: ../cli.py:1085
+ msgid "Installed Groups:"
+ msgstr ""
+ 
+-#: ../cli.py:967
++#: ../cli.py:1097
+ msgid "Available Groups:"
+ msgstr ""
+ 
+-#: ../cli.py:977
++#: ../cli.py:1107
+ msgid "Done"
+ msgstr ""
+ 
+-#: ../cli.py:988 ../cli.py:1006 ../cli.py:1012 ../yum/__init__.py:2788
++#: ../cli.py:1118 ../cli.py:1136 ../cli.py:1142 ../yum/__init__.py:3069
+ #, python-format
+ msgid "Warning: Group %s does not exist."
+ msgstr ""
+ 
+-#: ../cli.py:1016
++#: ../cli.py:1146
+ msgid "No packages in any requested group available to install or update"
+ msgstr ""
+ 
+-#: ../cli.py:1018
++#: ../cli.py:1148
+ #, python-format
+ msgid "%d Package(s) to Install"
+ msgstr ""
+ 
+-#: ../cli.py:1028 ../yum/__init__.py:2800
++#: ../cli.py:1158 ../yum/__init__.py:3081
+ #, python-format
+ msgid "No group named %s exists"
+ msgstr ""
+ 
+-#: ../cli.py:1034
++#: ../cli.py:1164
+ msgid "No packages to remove from groups"
+ msgstr ""
+ 
+-#: ../cli.py:1036
++#: ../cli.py:1166
+ #, python-format
+ msgid "%d Package(s) to remove"
+ msgstr ""
+ 
+-#: ../cli.py:1078
++#: ../cli.py:1208
+ #, python-format
+ msgid "Package %s is already installed, skipping"
+ msgstr ""
+ 
+-#: ../cli.py:1089
++#: ../cli.py:1219
+ #, python-format
+ msgid "Discarding non-comparable pkg %s.%s"
+ msgstr ""
+ 
+ #. we've not got any installed that match n or n+a
+-#: ../cli.py:1115
++#: ../cli.py:1245
+ #, python-format
+ msgid "No other %s installed, adding to list for potential install"
+ msgstr ""
+ 
+-#: ../cli.py:1135
++#: ../cli.py:1265
+ msgid "Plugin Options"
+ msgstr ""
+ 
+-#: ../cli.py:1143
++#: ../cli.py:1273
+ #, python-format
+ msgid "Command line error: %s"
+ msgstr ""
+ 
+-#: ../cli.py:1156
++#: ../cli.py:1287
+ #, python-format
+ msgid ""
+ "\n"
+@@ -390,114 +404,118 @@ msgid ""
+ "%s: %s option requires an argument"
+ msgstr ""
+ 
+-#: ../cli.py:1209
++#: ../cli.py:1340
+ msgid "--color takes one of: auto, always, never"
+ msgstr ""
+ 
+-#: ../cli.py:1319
++#: ../cli.py:1450
+ msgid "show this help message and exit"
+ msgstr ""
+ 
+-#: ../cli.py:1323
++#: ../cli.py:1454
+ msgid "be tolerant of errors"
+ msgstr ""
+ 
+-#: ../cli.py:1326
++#: ../cli.py:1457
+ msgid "run entirely from system cache, don't update cache"
+ msgstr ""
+ 
+-#: ../cli.py:1329
++#: ../cli.py:1460
+ msgid "config file location"
+ msgstr ""
+ 
+-#: ../cli.py:1332
++#: ../cli.py:1463
+ msgid "maximum command wait time"
+ msgstr ""
+ 
+-#: ../cli.py:1334
++#: ../cli.py:1465
+ msgid "debugging output level"
+ msgstr ""
+ 
+-#: ../cli.py:1338
++#: ../cli.py:1469
+ msgid "show duplicates, in repos, in list/search commands"
+ msgstr ""
+ 
+-#: ../cli.py:1340
++#: ../cli.py:1471
+ msgid "error output level"
+ msgstr ""
+ 
+-#: ../cli.py:1343
++#: ../cli.py:1474
+ msgid "debugging output level for rpm"
+ msgstr ""
+ 
+-#: ../cli.py:1346
++#: ../cli.py:1477
+ msgid "quiet operation"
+ msgstr ""
+ 
+-#: ../cli.py:1348
++#: ../cli.py:1479
+ msgid "verbose operation"
+ msgstr ""
+ 
+-#: ../cli.py:1350
++#: ../cli.py:1481
+ msgid "answer yes for all questions"
+ msgstr ""
+ 
+-#: ../cli.py:1352
++#: ../cli.py:1483
+ msgid "show Yum version and exit"
+ msgstr ""
+ 
+-#: ../cli.py:1353
++#: ../cli.py:1484
+ msgid "set install root"
+ msgstr ""
+ 
+-#: ../cli.py:1357
++#: ../cli.py:1488
+ msgid "enable one or more repositories (wildcards allowed)"
+ msgstr ""
+ 
+-#: ../cli.py:1361
++#: ../cli.py:1492
+ msgid "disable one or more repositories (wildcards allowed)"
+ msgstr ""
+ 
+-#: ../cli.py:1364
++#: ../cli.py:1495
+ msgid "exclude package(s) by name or glob"
+ msgstr ""
+ 
+-#: ../cli.py:1366
++#: ../cli.py:1497
+ msgid "disable exclude from main, for a repo or for everything"
+ msgstr ""
+ 
+-#: ../cli.py:1369
++#: ../cli.py:1500
+ msgid "enable obsoletes processing during updates"
+ msgstr ""
+ 
+-#: ../cli.py:1371
++#: ../cli.py:1502
+ msgid "disable Yum plugins"
+ msgstr ""
+ 
+-#: ../cli.py:1373
++#: ../cli.py:1504
+ msgid "disable gpg signature checking"
+ msgstr ""
+ 
+-#: ../cli.py:1375
++#: ../cli.py:1506
+ msgid "disable plugins by name"
+ msgstr ""
+ 
+-#: ../cli.py:1378
++#: ../cli.py:1509
+ msgid "enable plugins by name"
+ msgstr ""
+ 
+-#: ../cli.py:1381
++#: ../cli.py:1512
+ msgid "skip packages with depsolving problems"
+ msgstr ""
+ 
+-#: ../cli.py:1383
++#: ../cli.py:1514
+ msgid "control whether color is used"
+ msgstr ""
+ 
+-#: ../cli.py:1385
++#: ../cli.py:1516
+ msgid "set value of $releasever in yum config and repo files"
+ msgstr ""
+ 
++#: ../cli.py:1518
++msgid "set arbitrary config and repo options"
++msgstr ""
++
+ #: ../output.py:305
+ msgid "Jan"
+ msgstr ""
+@@ -550,255 +568,255 @@ msgstr ""
+ msgid "Trying other mirror."
+ msgstr ""
+ 
+-#: ../output.py:534
++#: ../output.py:579
++#, python-format
++msgid "Name        : %s%s%s"
++msgstr ""
++
++#: ../output.py:580
++#, python-format
++msgid "Arch        : %s"
++msgstr ""
++
++#: ../output.py:582
+ #, python-format
+-msgid "Name       : %s%s%s"
++msgid "Epoch       : %s"
+ msgstr ""
+ 
+-#: ../output.py:535
++#: ../output.py:583
+ #, python-format
+-msgid "Arch       : %s"
++msgid "Version     : %s"
+ msgstr ""
+ 
+-#: ../output.py:537
++#: ../output.py:584
+ #, python-format
+-msgid "Epoch      : %s"
++msgid "Release     : %s"
+ msgstr ""
+ 
+-#: ../output.py:538
++#: ../output.py:585
+ #, python-format
+-msgid "Version    : %s"
++msgid "Size        : %s"
+ msgstr ""
+ 
+-#: ../output.py:539
++#: ../output.py:586 ../output.py:890
+ #, python-format
+-msgid "Release    : %s"
++msgid "Repo        : %s"
+ msgstr ""
+ 
+-#: ../output.py:540
++#: ../output.py:588
+ #, python-format
+-msgid "Size       : %s"
++msgid "From repo   : %s"
+ msgstr ""
+ 
+-#: ../output.py:541
++#: ../output.py:590
+ #, python-format
+-msgid "Repo       : %s"
++msgid "Committer   : %s"
+ msgstr ""
+ 
+-#: ../output.py:543
++#: ../output.py:591
+ #, python-format
+-msgid "From repo  : %s"
++msgid "Committime  : %s"
+ msgstr ""
+ 
+-#: ../output.py:545
++#: ../output.py:592
+ #, python-format
+-msgid "Committer  : %s"
++msgid "Buildtime   : %s"
+ msgstr ""
+ 
+-#: ../output.py:546
++#: ../output.py:594
+ #, python-format
+-msgid "Committime : %s"
++msgid "Install time: %s"
+ msgstr ""
+ 
+-#: ../output.py:547
++#: ../output.py:602
+ #, python-format
+-msgid "Buildtime  : %s"
++msgid "Installed by: %s"
+ msgstr ""
+ 
+-#: ../output.py:549
++#: ../output.py:609
+ #, python-format
+-msgid "Installtime: %s"
++msgid "Changed by  : %s"
+ msgstr ""
+ 
+-#: ../output.py:550
+-msgid "Summary    : "
++#: ../output.py:610
++msgid "Summary     : "
+ msgstr ""
+ 
+-#: ../output.py:552
++#: ../output.py:612 ../output.py:903
+ #, python-format
+-msgid "URL        : %s"
++msgid "URL         : %s"
+ msgstr ""
+ 
+-#: ../output.py:553
+-msgid "License    : "
++#: ../output.py:613
++msgid "License     : "
+ msgstr ""
+ 
+-#: ../output.py:554
+-msgid "Description: "
++#: ../output.py:614 ../output.py:900
++msgid "Description : "
+ msgstr ""
+ 
+-#: ../output.py:622
++#: ../output.py:682
+ msgid "y"
+ msgstr ""
+ 
+-#: ../output.py:622
++#: ../output.py:682
+ msgid "yes"
+ msgstr ""
+ 
+-#: ../output.py:623
++#: ../output.py:683
+ msgid "n"
+ msgstr ""
+ 
+-#: ../output.py:623
++#: ../output.py:683
+ msgid "no"
+ msgstr ""
+ 
+-#: ../output.py:627
++#: ../output.py:687
+ msgid "Is this ok [y/N]: "
+ msgstr ""
+ 
+-#: ../output.py:715
++#: ../output.py:775
+ #, python-format
+ msgid ""
+ "\n"
+ "Group: %s"
+ msgstr ""
+ 
+-#: ../output.py:719
++#: ../output.py:779
+ #, python-format
+ msgid " Group-Id: %s"
+ msgstr ""
+ 
+-#: ../output.py:724
++#: ../output.py:784
+ #, python-format
+ msgid " Description: %s"
+ msgstr ""
+ 
+-#: ../output.py:726
++#: ../output.py:786
+ msgid " Mandatory Packages:"
+ msgstr ""
+ 
+-#: ../output.py:727
++#: ../output.py:787
+ msgid " Default Packages:"
+ msgstr ""
+ 
+-#: ../output.py:728
++#: ../output.py:788
+ msgid " Optional Packages:"
+ msgstr ""
+ 
+-#: ../output.py:729
++#: ../output.py:789
+ msgid " Conditional Packages:"
+ msgstr ""
+ 
+-#: ../output.py:749
++#: ../output.py:809
+ #, python-format
+ msgid "package: %s"
+ msgstr ""
+ 
+-#: ../output.py:751
++#: ../output.py:811
+ msgid "  No dependencies for this package"
+ msgstr ""
+ 
+-#: ../output.py:756
++#: ../output.py:816
+ #, python-format
+ msgid "  dependency: %s"
+ msgstr ""
+ 
+-#: ../output.py:758
++#: ../output.py:818
+ msgid "   Unsatisfied dependency"
+ msgstr ""
+ 
+-#: ../output.py:830
+-#, python-format
+-msgid "Repo        : %s"
+-msgstr ""
+-
+-#: ../output.py:831
++#: ../output.py:891
+ msgid "Matched from:"
+ msgstr ""
+ 
+-#: ../output.py:840
+-msgid "Description : "
+-msgstr ""
+-
+-#: ../output.py:843
+-#, python-format
+-msgid "URL         : %s"
+-msgstr ""
+-
+-#: ../output.py:846
++#: ../output.py:906
+ #, python-format
+ msgid "License     : %s"
+ msgstr ""
+ 
+-#: ../output.py:849
++#: ../output.py:909
+ #, python-format
+ msgid "Filename    : %s"
+ msgstr ""
+ 
+-#: ../output.py:853
++#: ../output.py:913
+ msgid "Other       : "
+ msgstr ""
+ 
+-#: ../output.py:896
++#: ../output.py:956
+ msgid "There was an error calculating total download size"
+ msgstr ""
+ 
+-#: ../output.py:901
++#: ../output.py:961
+ #, python-format
+ msgid "Total size: %s"
+ msgstr ""
+ 
+-#: ../output.py:904
++#: ../output.py:964
+ #, python-format
+ msgid "Total download size: %s"
+ msgstr ""
+ 
+-#: ../output.py:908
++#: ../output.py:968 ../output.py:988
+ #, python-format
+ msgid "Installed size: %s"
+ msgstr ""
+ 
+-#: ../output.py:949
++#: ../output.py:984
++msgid "There was an error calculating installed size"
++msgstr ""
++
++#: ../output.py:1029
+ msgid "Reinstalling"
+ msgstr ""
+ 
+-#: ../output.py:950
++#: ../output.py:1030
+ msgid "Downgrading"
+ msgstr ""
+ 
+-#: ../output.py:951
++#: ../output.py:1031
+ msgid "Installing for dependencies"
+ msgstr ""
+ 
+-#: ../output.py:952
++#: ../output.py:1032
+ msgid "Updating for dependencies"
+ msgstr ""
+ 
+-#: ../output.py:953
++#: ../output.py:1033
+ msgid "Removing for dependencies"
+ msgstr ""
+ 
+-#: ../output.py:960 ../output.py:1072
++#: ../output.py:1040 ../output.py:1159
+ msgid "Skipped (dependency problems)"
+ msgstr ""
+ 
+-#: ../output.py:983
++#: ../output.py:1063
+ msgid "Package"
+ msgstr ""
+ 
+-#: ../output.py:983
++#: ../output.py:1063
+ msgid "Arch"
+ msgstr ""
+ 
+-#: ../output.py:984
++#: ../output.py:1064
+ msgid "Version"
+ msgstr ""
+ 
+-#: ../output.py:984
++#: ../output.py:1064
+ msgid "Repository"
+ msgstr ""
+ 
+-#: ../output.py:985
++#: ../output.py:1065
+ msgid "Size"
+ msgstr ""
+ 
+-#: ../output.py:997
++#: ../output.py:1077
+ #, python-format
+ msgid "     replacing  %s%s%s.%s %s\n"
+ msgstr ""
+ 
+-#: ../output.py:1006
++#: ../output.py:1086
+ #, python-format
+ msgid ""
+ "\n"
+@@ -806,47 +824,57 @@ msgid ""
+ "%s\n"
+ msgstr ""
+ 
+-#: ../output.py:1013
++#: ../output.py:1097
+ #, python-format
+-msgid ""
+-"Install   %5.5s Package(s)\n"
+-"Upgrade   %5.5s Package(s)\n"
++msgid "Install   %5.5s Package(s)\n"
+ msgstr ""
+ 
+-#: ../output.py:1022
++#: ../output.py:1101
+ #, python-format
+-msgid ""
+-"Remove    %5.5s Package(s)\n"
+-"Reinstall %5.5s Package(s)\n"
+-"Downgrade %5.5s Package(s)\n"
++msgid "Upgrade   %5.5s Package(s)\n"
++msgstr ""
++
++#: ../output.py:1105
++#, python-format
++msgid "Remove    %5.5s Package(s)\n"
++msgstr ""
++
++#: ../output.py:1109
++#, python-format
++msgid "Reinstall %5.5s Package(s)\n"
+ msgstr ""
+ 
+-#: ../output.py:1066
++#: ../output.py:1113
++#, python-format
++msgid "Downgrade %5.5s Package(s)\n"
++msgstr ""
++
++#: ../output.py:1153
+ msgid "Removed"
+ msgstr ""
+ 
+-#: ../output.py:1067
++#: ../output.py:1154
+ msgid "Dependency Removed"
+ msgstr ""
+ 
+-#: ../output.py:1069
++#: ../output.py:1156
+ msgid "Dependency Installed"
+ msgstr ""
+ 
+-#: ../output.py:1071
++#: ../output.py:1158
+ msgid "Dependency Updated"
+ msgstr ""
+ 
+-#: ../output.py:1073
++#: ../output.py:1160
+ msgid "Replaced"
+ msgstr ""
+ 
+-#: ../output.py:1074
++#: ../output.py:1161
+ msgid "Failed"
+ msgstr ""
+ 
+ #. Delta between C-c's so we treat as exit
+-#: ../output.py:1140
++#: ../output.py:1245
+ msgid "two"
+ msgstr ""
+ 
+@@ -854,7 +882,7 @@ msgstr ""
+ #. Current download cancelled, interrupt (ctrl-c) again within two seconds
+ #. to exit.
+ #. Where "interupt (ctrl-c) again" and "two" are highlighted.
+-#: ../output.py:1151
++#: ../output.py:1256
+ #, python-format
+ msgid ""
+ "\n"
+@@ -863,374 +891,448 @@ msgid ""
+ "to exit.\n"
+ msgstr ""
+ 
+-#: ../output.py:1162
++#: ../output.py:1267
+ msgid "user interrupt"
+ msgstr ""
+ 
+-#: ../output.py:1180
++#: ../output.py:1285
+ msgid "Total"
+ msgstr ""
+ 
+-#: ../output.py:1202
++#: ../output.py:1307
+ msgid "I"
+ msgstr ""
+ 
+-#: ../output.py:1203
++#: ../output.py:1308
+ msgid "O"
+ msgstr ""
+ 
+-#: ../output.py:1204
++#: ../output.py:1309
+ msgid "E"
+ msgstr ""
+ 
+-#: ../output.py:1205
++#: ../output.py:1310
+ msgid "R"
+ msgstr ""
+ 
+-#: ../output.py:1206
++#: ../output.py:1311
+ msgid "D"
+ msgstr ""
+ 
+-#: ../output.py:1207
++#: ../output.py:1312
+ msgid "U"
+ msgstr ""
+ 
+-#: ../output.py:1217
++#: ../output.py:1323
+ msgid "<unset>"
+ msgstr ""
+ 
+-#: ../output.py:1218
++#: ../output.py:1324
+ msgid "System"
+ msgstr ""
+ 
+-#: ../output.py:1254
++#: ../output.py:1368
+ msgid "Bad transaction IDs, or package(s), given"
+ msgstr ""
+ 
+-#: ../output.py:1266
++#: ../output.py:1380
+ msgid "ID"
+ msgstr ""
+ 
+-#: ../output.py:1267 ../output.py:1520
++#: ../output.py:1381 ../output.py:1699
+ msgid "Login user"
+ msgstr ""
+ 
+-#: ../output.py:1268
++#: ../output.py:1382
+ msgid "Date and time"
+ msgstr ""
+ 
+-#: ../output.py:1269 ../output.py:1522
++#: ../output.py:1383 ../output.py:1701
+ msgid "Action(s)"
+ msgstr ""
+ 
+-#: ../output.py:1270 ../output.py:1523
++#: ../output.py:1384 ../output.py:1702
+ msgid "Altered"
+ msgstr ""
+ 
+-#: ../output.py:1310
++#: ../output.py:1431 ../output.py:1760
+ msgid "No transaction ID given"
+ msgstr ""
+ 
+-#: ../output.py:1336
++#: ../output.py:1457
+ msgid "Bad transaction ID given"
+ msgstr ""
+ 
+-#: ../output.py:1341
++#: ../output.py:1462
+ msgid "Not found given transaction ID"
+ msgstr ""
+ 
+-#: ../output.py:1349
++#: ../output.py:1470
+ msgid "Found more than one transaction ID!"
+ msgstr ""
+ 
+-#: ../output.py:1370
++#: ../output.py:1491 ../output.py:1770
+ msgid "No transaction ID, or package, given"
+ msgstr ""
+ 
+-#: ../output.py:1396
++#: ../output.py:1518 ../output.py:1645
++msgid "Downgraded"
++msgstr ""
++
++#: ../output.py:1519
++msgid "Not installed"
++msgstr ""
++
++#: ../output.py:1520
++msgid "Older"
++msgstr ""
++
++#: ../output.py:1520
++msgid "Newer"
++msgstr ""
++
++#: ../output.py:1552
+ msgid "Transaction ID :"
+ msgstr ""
+ 
+-#: ../output.py:1398
++#: ../output.py:1554
+ msgid "Begin time     :"
+ msgstr ""
+ 
+-#: ../output.py:1401 ../output.py:1403
++#: ../output.py:1557 ../output.py:1559
+ msgid "Begin rpmdb    :"
+ msgstr ""
+ 
+-#: ../output.py:1417
++#: ../output.py:1573
+ #, python-format
+ msgid "(%s seconds)"
+ msgstr ""
+ 
+-#: ../output.py:1418
++#: ../output.py:1574
+ msgid "End time       :"
+ msgstr ""
+ 
+-#: ../output.py:1421 ../output.py:1423
++#: ../output.py:1577 ../output.py:1579
+ msgid "End rpmdb      :"
+ msgstr ""
+ 
+-#: ../output.py:1424
++#: ../output.py:1580
+ msgid "User           :"
+ msgstr ""
+ 
+-#: ../output.py:1426 ../output.py:1428 ../output.py:1430
++#: ../output.py:1582 ../output.py:1584 ../output.py:1586
+ msgid "Return-Code    :"
+ msgstr ""
+ 
+-#: ../output.py:1426
++#: ../output.py:1582
+ msgid "Aborted"
+ msgstr ""
+ 
+-#: ../output.py:1428
++#: ../output.py:1584
+ msgid "Failure:"
+ msgstr ""
+ 
+-#: ../output.py:1430
++#: ../output.py:1586
+ msgid "Success"
+ msgstr ""
+ 
+-#: ../output.py:1431
+-msgid "Transaction performed with:"
++#: ../output.py:1589
++msgid "Command Line   :"
+ msgstr ""
+ 
+-#: ../output.py:1444 ../output.py:1489
+-msgid "Downgraded"
++#: ../output.py:1597
++#, python-format
++msgid "Additional non-default information stored: %d"
+ msgstr ""
+ 
+-#. multiple versions installed, both older and newer
+-#: ../output.py:1446
+-msgid "Weird"
++#: ../output.py:1600
++msgid "Transaction performed with:"
+ msgstr ""
+ 
+-#: ../output.py:1448
++#: ../output.py:1603
+ msgid "Packages Altered:"
+ msgstr ""
+ 
+-#: ../output.py:1451
++#: ../output.py:1607
++msgid "Packages Skipped:"
++msgstr ""
++
++#: ../output.py:1612
++msgid "Rpmdb Problems:"
++msgstr ""
++
++#: ../output.py:1620
+ msgid "Scriptlet output:"
+ msgstr ""
+ 
+-#: ../output.py:1457
++#: ../output.py:1626
+ msgid "Errors:"
+ msgstr ""
+ 
+-#: ../output.py:1481 ../output.py:1482
++#. Note that these don't use _simple_pkg() because we are showing what
++#. happened to them in the transaction ... not the difference between the
++#. version in the transaction and now.
++#: ../output.py:1637 ../output.py:1638
+ msgid "Install"
+ msgstr ""
+ 
+-#: ../output.py:1483
++#: ../output.py:1639
+ msgid "Dep-Install"
+ msgstr ""
+ 
+-#: ../output.py:1485
++#: ../output.py:1641
+ msgid "Obsoleting"
+ msgstr ""
+ 
+-#: ../output.py:1486
++#: ../output.py:1642
+ msgid "Erase"
+ msgstr ""
+ 
+-#: ../output.py:1487
++#: ../output.py:1643
+ msgid "Reinstall"
+ msgstr ""
+ 
+-#: ../output.py:1488
++#: ../output.py:1644
+ msgid "Downgrade"
+ msgstr ""
+ 
+-#: ../output.py:1490
++#: ../output.py:1646
+ msgid "Update"
+ msgstr ""
+ 
+-#: ../output.py:1521
++#: ../output.py:1700
+ msgid "Time"
+ msgstr ""
+ 
+-#: ../output.py:1547
++#: ../output.py:1726
+ msgid "Last day"
+ msgstr ""
+ 
+-#: ../output.py:1548
++#: ../output.py:1727
+ msgid "Last week"
+ msgstr ""
+ 
+-#: ../output.py:1549
++#: ../output.py:1728
+ msgid "Last 2 weeks"
+ msgstr ""
+ 
+ #. US default :p
+-#: ../output.py:1550
++#: ../output.py:1729
+ msgid "Last 3 months"
+ msgstr ""
+ 
+-#: ../output.py:1551
++#: ../output.py:1730
+ msgid "Last 6 months"
+ msgstr ""
+ 
+-#: ../output.py:1552
++#: ../output.py:1731
+ msgid "Last year"
+ msgstr ""
+ 
+-#: ../output.py:1553
++#: ../output.py:1732
+ msgid "Over a year ago"
+ msgstr ""
+ 
+-#: ../output.py:1585
++#: ../output.py:1774
++#, python-format
++msgid "No Transaction %s found"
++msgstr ""
++
++#: ../output.py:1780
++msgid "Transaction ID:"
++msgstr ""
++
++#: ../output.py:1781
++msgid "Available additional history information:"
++msgstr ""
++
++#: ../output.py:1793
++#, python-format
++msgid "%s: No additional data found by this name"
++msgstr ""
++
++#: ../output.py:1809
+ msgid "installed"
+ msgstr ""
+ 
+-#: ../output.py:1586
++#: ../output.py:1810
+ msgid "updated"
+ msgstr ""
+ 
+-#: ../output.py:1587
++#: ../output.py:1811
+ msgid "obsoleted"
+ msgstr ""
+ 
+-#: ../output.py:1588
++#: ../output.py:1812
+ msgid "erased"
+ msgstr ""
+ 
+-#: ../output.py:1592
++#: ../output.py:1813
++msgid "reinstalled"
++msgstr ""
++
++#: ../output.py:1814
++msgid "downgraded"
++msgstr ""
++
++#: ../output.py:1818
+ #, python-format
+ msgid "---> Package %s.%s %s:%s-%s set to be %s"
+ msgstr ""
+ 
+-#: ../output.py:1599
++#: ../output.py:1825
+ msgid "--> Running transaction check"
+ msgstr ""
+ 
+-#: ../output.py:1604
++#: ../output.py:1830
+ msgid "--> Restarting Dependency Resolution with new changes."
+ msgstr ""
+ 
+-#: ../output.py:1609
++#: ../output.py:1835
+ msgid "--> Finished Dependency Resolution"
+ msgstr ""
+ 
+-#: ../output.py:1614 ../output.py:1619
++#: ../output.py:1840 ../output.py:1845
+ #, python-format
+ msgid "--> Processing Dependency: %s for package: %s"
+ msgstr ""
+ 
+-#: ../output.py:1623
++#: ../output.py:1850
++#, python-format
++msgid "---> Keeping package: %s"
++msgstr ""
++
++#: ../output.py:1853
+ #, python-format
+ msgid "--> Unresolved Dependency: %s"
+ msgstr ""
+ 
+-#: ../output.py:1634
++#: ../output.py:1864
+ #, python-format
+ msgid "Package: %s"
+ msgstr ""
+ 
+-#: ../output.py:1636
++#: ../output.py:1866
+ #, python-format
+ msgid ""
+ "\n"
+ "    Requires: %s"
+ msgstr ""
+ 
+-#: ../output.py:1649 ../output.py:1660
++#: ../output.py:1875
+ #, python-format
+ msgid ""
+ "\n"
+ "    %s: %s (%s)"
+ msgstr ""
+ 
+-#: ../output.py:1657
++#: ../output.py:1880
++#, python-format
++msgid ""
++"\n"
++"        %s"
++msgstr ""
++
++#: ../output.py:1882
++msgid ""
++"\n"
++"        Not found"
++msgstr ""
++
++#. These should be the only three things we care about:
++#: ../output.py:1897
++msgid "Updated By"
++msgstr ""
++
++#: ../output.py:1898
++msgid "Downgraded By"
++msgstr ""
++
++#: ../output.py:1899
++msgid "Obsoleted By"
++msgstr ""
++
++#: ../output.py:1917
+ msgid "Available"
+ msgstr ""
+ 
+-#: ../output.py:1665 ../output.py:1670
++#: ../output.py:1944 ../output.py:1949
+ #, python-format
+ msgid "--> Processing Conflict: %s conflicts %s"
+ msgstr ""
+ 
+-#: ../output.py:1674
++#: ../output.py:1953
+ msgid "--> Populating transaction set with selected packages. Please wait."
+ msgstr ""
+ 
+-#: ../output.py:1678
++#: ../output.py:1957
+ #, python-format
+ msgid "---> Downloading header for %s to pack into transaction set."
+ msgstr ""
+ 
+-#: ../utils.py:93
++#: ../utils.py:94
+ msgid "Running"
+ msgstr ""
+ 
+-#: ../utils.py:94
++#: ../utils.py:95
+ msgid "Sleeping"
+ msgstr ""
+ 
+-#: ../utils.py:95
++#: ../utils.py:96
+ msgid "Uninterruptible"
+ msgstr ""
+ 
+-#: ../utils.py:96
++#: ../utils.py:97
+ msgid "Zombie"
+ msgstr ""
+ 
+-#: ../utils.py:97
++#: ../utils.py:98
+ msgid "Traced/Stopped"
+ msgstr ""
+ 
+-#: ../utils.py:98 ../yumcommands.py:917
++#: ../utils.py:99 ../yumcommands.py:972
+ msgid "Unknown"
+ msgstr ""
+ 
+-#: ../utils.py:109
++#: ../utils.py:110
+ msgid "  The other application is: PackageKit"
+ msgstr ""
+ 
+-#: ../utils.py:111
++#: ../utils.py:112
+ #, python-format
+ msgid "  The other application is: %s"
+ msgstr ""
+ 
+-#: ../utils.py:114
++#: ../utils.py:115
+ #, python-format
+ msgid "    Memory : %5s RSS (%5sB VSZ)"
+ msgstr ""
+ 
+-#: ../utils.py:119
++#: ../utils.py:120
+ #, python-format
+ msgid "    Started: %s - %s ago"
+ msgstr ""
+ 
+-#: ../utils.py:121
++#: ../utils.py:122
+ #, python-format
+ msgid "    State  : %s, pid: %d"
+ msgstr ""
+ 
+-#: ../utils.py:199
+-#, python-format
+-msgid "PluginExit Error: %s"
+-msgstr ""
+-
+-#: ../utils.py:202
+-#, python-format
+-msgid "Yum Error: %s"
+-msgstr ""
+-
+-#: ../utils.py:235 ../yummain.py:42
++#: ../utils.py:143 ../yummain.py:42
+ msgid ""
+ "\n"
+ "\n"
+ "Exiting on user cancel"
+ msgstr ""
+ 
+-#: ../utils.py:241 ../yummain.py:48
++#: ../utils.py:149 ../yummain.py:48
+ msgid ""
+ "\n"
+ "\n"
+ "Exiting on Broken Pipe"
+ msgstr ""
+ 
+-#: ../utils.py:243 ../yummain.py:50
++#: ../utils.py:151 ../yummain.py:50
+ #, python-format
+ msgid ""
+ "\n"
+@@ -1238,7 +1340,47 @@ msgid ""
+ "%s"
+ msgstr ""
+ 
+-#: ../utils.py:282 ../yummain.py:211
++#: ../utils.py:201 ../yummain.py:107
++msgid ""
++"Another app is currently holding the yum lock; exiting as configured by "
++"exit_on_lock"
++msgstr ""
++
++#: ../utils.py:260
++#, python-format
++msgid "PluginExit Error: %s"
++msgstr ""
++
++#: ../utils.py:263
++#, python-format
++msgid "Yum Error: %s"
++msgstr ""
++
++#: ../utils.py:315 ../yummain.py:134 ../yummain.py:173
++#, python-format
++msgid "Error: %s"
++msgstr ""
++
++#: ../utils.py:319 ../yummain.py:177
++msgid " You could try using --skip-broken to work around the problem"
++msgstr ""
++
++#: ../utils.py:321 ../yummain.py:179 ../yummain.py:212
++msgid " You could try running: rpm -Va --nofiles --nodigest"
++msgstr ""
++
++#: ../utils.py:328 ../yummain.py:144 ../yummain.py:186
++#, python-format
++msgid "Unknown Error(s): Exit Code: %d:"
++msgstr ""
++
++#: ../utils.py:334 ../yummain.py:192
++msgid ""
++"\n"
++"Dependencies Resolved"
++msgstr ""
++
++#: ../utils.py:349 ../yummain.py:215
+ msgid "Complete!"
+ msgstr ""
+ 
+@@ -1305,403 +1447,398 @@ msgstr ""
+ msgid "Error: more than one file given as argument to shell."
+ msgstr ""
+ 
+-#: ../yumcommands.py:170
++#: ../yumcommands.py:138
++msgid ""
++"There are no enabled repos.\n"
++" Run \"yum repolist all\" to see the repos you have.\n"
++" You can enable repos with yum-config-manager --enable <repo>"
++msgstr ""
++
++#: ../yumcommands.py:189
+ msgid "PACKAGE..."
+ msgstr ""
+ 
+-#: ../yumcommands.py:173
++#: ../yumcommands.py:192
+ msgid "Install a package or packages on your system"
+ msgstr ""
+ 
+-#: ../yumcommands.py:181
++#: ../yumcommands.py:201
+ msgid "Setting up Install Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:192
++#: ../yumcommands.py:212 ../yumcommands.py:234
+ msgid "[PACKAGE...]"
+ msgstr ""
+ 
+-#: ../yumcommands.py:195
++#: ../yumcommands.py:215
+ msgid "Update a package or packages on your system"
+ msgstr ""
+ 
+-#: ../yumcommands.py:202
++#: ../yumcommands.py:223
+ msgid "Setting up Update Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:244
++#: ../yumcommands.py:237
++msgid "Synchronize installed packages to the latest available versions"
++msgstr ""
++
++#: ../yumcommands.py:245
++msgid "Setting up Distribution Synchronization Process"
++msgstr ""
++
++#: ../yumcommands.py:288
+ msgid "Display details about a package or group of packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:293
++#: ../yumcommands.py:337
+ msgid "Installed Packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:301
++#: ../yumcommands.py:345
+ msgid "Available Packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:305
++#: ../yumcommands.py:349
+ msgid "Extra Packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:309
++#: ../yumcommands.py:353
+ msgid "Updated Packages"
+ msgstr ""
+ 
+ #. This only happens in verbose mode
+-#: ../yumcommands.py:317 ../yumcommands.py:324 ../yumcommands.py:601
++#: ../yumcommands.py:361 ../yumcommands.py:368 ../yumcommands.py:655
+ msgid "Obsoleting Packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:326
++#: ../yumcommands.py:370
+ msgid "Recently Added Packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:333
++#: ../yumcommands.py:377
+ msgid "No matching Packages to list"
+ msgstr ""
+ 
+-#: ../yumcommands.py:347
++#: ../yumcommands.py:391
+ msgid "List a package or groups of packages"
+ msgstr ""
+ 
+-#: ../yumcommands.py:359
++#: ../yumcommands.py:403
+ msgid "Remove a package or packages from your system"
+ msgstr ""
+ 
+-#: ../yumcommands.py:366
++#: ../yumcommands.py:410
+ msgid "Setting up Remove Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:380
++#: ../yumcommands.py:424
+ msgid "Setting up Group Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:386
++#: ../yumcommands.py:430
+ msgid "No Groups on which to run command"
+ msgstr ""
+ 
+-#: ../yumcommands.py:399
++#: ../yumcommands.py:443
+ msgid "List available package groups"
+ msgstr ""
+ 
+-#: ../yumcommands.py:416
++#: ../yumcommands.py:463
+ msgid "Install the packages in a group on your system"
+ msgstr ""
+ 
+-#: ../yumcommands.py:438
++#: ../yumcommands.py:486
+ msgid "Remove the packages in a group from your system"
+ msgstr ""
+ 
+-#: ../yumcommands.py:465
++#: ../yumcommands.py:514
+ msgid "Display details about a package group"
+ msgstr ""
+ 
+-#: ../yumcommands.py:489
++#: ../yumcommands.py:539
+ msgid "Generate the metadata cache"
+ msgstr ""
+ 
+-#: ../yumcommands.py:495
++#: ../yumcommands.py:545
+ msgid "Making cache files for all metadata files."
+ msgstr ""
+ 
+-#: ../yumcommands.py:496
++#: ../yumcommands.py:546
+ msgid "This may take a while depending on the speed of this computer"
+ msgstr ""
+ 
+-#: ../yumcommands.py:517
++#: ../yumcommands.py:567
+ msgid "Metadata Cache Created"
+ msgstr ""
+ 
+-#: ../yumcommands.py:531
++#: ../yumcommands.py:581
+ msgid "Remove cached data"
+ msgstr ""
+ 
+-#: ../yumcommands.py:551
++#: ../yumcommands.py:602
+ msgid "Find what package provides the given value"
+ msgstr ""
+ 
+-#: ../yumcommands.py:571
++#: ../yumcommands.py:622
+ msgid "Check for available package updates"
+ msgstr ""
+ 
+-#: ../yumcommands.py:621
++#: ../yumcommands.py:675
+ msgid "Search package details for the given string"
+ msgstr ""
+ 
+-#: ../yumcommands.py:627
++#: ../yumcommands.py:681
+ msgid "Searching Packages: "
+ msgstr ""
+ 
+-#: ../yumcommands.py:644
++#: ../yumcommands.py:698
+ msgid "Update packages taking obsoletes into account"
+ msgstr ""
+ 
+-#: ../yumcommands.py:652
++#: ../yumcommands.py:707
+ msgid "Setting up Upgrade Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:666
++#: ../yumcommands.py:721
+ msgid "Install a local RPM"
+ msgstr ""
+ 
+-#: ../yumcommands.py:674
++#: ../yumcommands.py:729
+ msgid "Setting up Local Package Process"
+ msgstr ""
+ 
+-#: ../yumcommands.py:693
++#: ../yumcommands.py:748
+ msgid "Determine which package provides the given dependency"
+ msgstr ""
+ 
+-#: ../yumcommands.py:696
++#: ../yumcommands.py:751
+ msgid "Searching Packages for Dependency:"
+ msgstr ""
+ 
+-#: ../yumcommands.py:710
++#: ../yumcommands.py:765
+ msgid "Run an interactive yum shell"
+ msgstr ""
+ 
+-#: ../yumcommands.py:716
++#: ../yumcommands.py:771
+ msgid "Setting up Yum Shell"
+ msgstr ""
+ 
+-#: ../yumcommands.py:734
++#: ../yumcommands.py:789
+ msgid "List a package's dependencies"
+ msgstr ""
+ 
+-#: ../yumcommands.py:740
++#: ../yumcommands.py:795
+ msgid "Finding dependencies: "
+ msgstr ""
+ 
+-#: ../yumcommands.py:756
++#: ../yumcommands.py:811
+ msgid "Display the configured software repositories"
+ msgstr ""
+ 
+-#: ../yumcommands.py:822 ../yumcommands.py:823
++#: ../yumcommands.py:877 ../yumcommands.py:878
+ msgid "enabled"
+ msgstr ""
+ 
+-#: ../yumcommands.py:849 ../yumcommands.py:850
++#: ../yumcommands.py:904 ../yumcommands.py:905
+ msgid "disabled"
+ msgstr ""
+ 
+-#: ../yumcommands.py:866
++#: ../yumcommands.py:921
+ msgid "Repo-id      : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:867
++#: ../yumcommands.py:922
+ msgid "Repo-name    : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:870
++#: ../yumcommands.py:925
+ msgid "Repo-status  : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:873
++#: ../yumcommands.py:928
+ msgid "Repo-revision: "
+ msgstr ""
+ 
+-#: ../yumcommands.py:877
++#: ../yumcommands.py:932
+ msgid "Repo-tags    : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:883
++#: ../yumcommands.py:938
+ msgid "Repo-distro-tags: "
+ msgstr ""
+ 
+-#: ../yumcommands.py:888
++#: ../yumcommands.py:943
+ msgid "Repo-updated : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:890
++#: ../yumcommands.py:945
+ msgid "Repo-pkgs    : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:891
++#: ../yumcommands.py:946
+ msgid "Repo-size    : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:898
++#: ../yumcommands.py:953
+ msgid "Repo-baseurl : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:906
++#: ../yumcommands.py:961
+ msgid "Repo-metalink: "
+ msgstr ""
+ 
+-#: ../yumcommands.py:910
++#: ../yumcommands.py:965
+ msgid "  Updated    : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:913
++#: ../yumcommands.py:968
+ msgid "Repo-mirrors : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:923
++#: ../yumcommands.py:978
+ #, python-format
+ msgid "Never (last: %s)"
+ msgstr ""
+ 
+-#: ../yumcommands.py:925
++#: ../yumcommands.py:980
+ #, python-format
+ msgid "Instant (last: %s)"
+ msgstr ""
+ 
+-#: ../yumcommands.py:928
++#: ../yumcommands.py:983
+ #, python-format
+ msgid "%s second(s) (last: %s)"
+ msgstr ""
+ 
+-#: ../yumcommands.py:930
++#: ../yumcommands.py:985
+ msgid "Repo-expire  : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:933
++#: ../yumcommands.py:988
+ msgid "Repo-exclude : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:937
++#: ../yumcommands.py:992
+ msgid "Repo-include : "
+ msgstr ""
+ 
+-#: ../yumcommands.py:941
++#: ../yumcommands.py:996
+ msgid "Repo-excluded: "
+ msgstr ""
+ 
+ #. Work out the first (id) and last (enabled/disalbed/count),
+ #. then chop the middle (name)...
+-#: ../yumcommands.py:951 ../yumcommands.py:980
++#: ../yumcommands.py:1006 ../yumcommands.py:1035
+ msgid "repo id"
+ msgstr ""
+ 
+-#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
++#: ../yumcommands.py:1023 ../yumcommands.py:1024 ../yumcommands.py:1042
+ msgid "status"
+ msgstr ""
+ 
+-#: ../yumcommands.py:981
++#: ../yumcommands.py:1036
+ msgid "repo name"
+ msgstr ""
+ 
+-#: ../yumcommands.py:1018
++#: ../yumcommands.py:1073
+ msgid "Display a helpful usage message"
+ msgstr ""
+ 
+-#: ../yumcommands.py:1052
++#: ../yumcommands.py:1107
+ #, python-format
+ msgid "No help available for %s"
+ msgstr ""
+ 
+-#: ../yumcommands.py:1057
++#: ../yumcommands.py:1112
+ msgid ""
+ "\n"
+ "\n"
+ "aliases: "
  msgstr ""
  
 -#: ../yumcommands.py:1059
@@ -33873,6 +37321,18 @@ index 0000000..569ba8d
 +        self.testUpRmInuMerge2(xstate='Obsoleting')
 +        self.testUpRmInuMerge2(ystate='Obsoleting')
 +        self.testUpRmInuMerge2(xstate='Obsoleting', ystate='Obsoleting')
+diff --git a/test/misc-tests.py b/test/misc-tests.py
+index d6e49d8..d34c161 100644
+--- a/test/misc-tests.py
++++ b/test/misc-tests.py
+@@ -93,6 +93,7 @@ class MiscTests(DepsolveTests):
+     
+     def resolveCode(self,skip = False):
+         solver = YumBase()
++        solver.save_ts = save_ts
+         solver.conf = FakeConf()
+         solver.arch.setup_arch('x86_64')
+         solver.conf.skip_broken = skip
 diff --git a/test/packagetests.py b/test/packagetests.py
 index dac8abd..1e3302b 100644
 --- a/test/packagetests.py
@@ -34054,11 +37514,34 @@ index df641f7..6bc2efe 100644
 +                                     [pa1, pa2], multi_cmds=True)
 +        self.assert_(res=='ok', msg)
 +        self.assertResult((pa1, pa2))
+diff --git a/test/skipbroken-tests.py b/test/skipbroken-tests.py
+index 43b0726..c1d0c1f 100644
+--- a/test/skipbroken-tests.py
++++ b/test/skipbroken-tests.py
+@@ -626,6 +626,7 @@ class SkipBrokenTests(DepsolveTests):
+     
+     def resolveCode(self,skip = False):
+         solver = YumBase()
++        solver.save_ts  =  save_ts
+         solver.arch.setup_arch('x86_64')
+         solver.conf = FakeConf()
+         solver.conf.skip_broken = skip
 diff --git a/test/testbase.py b/test/testbase.py
-index f91fbf1..30cf177 100644
+index f91fbf1..81591ad 100644
 --- a/test/testbase.py
 +++ b/test/testbase.py
-@@ -128,8 +128,10 @@ class DepSolveProgressCallBack:
+@@ -27,6 +27,10 @@ from rpmUtils.transaction import initReadOnlyTransaction
+ def _(msg):
+     return msg
+ 
++# dummy save_ts to avoid lots of errors
++def save_ts(*args, **kwargs):
++    pass
++
+ class FakeConf(object):
+ 
+     def __init__(self):
+@@ -128,8 +132,10 @@ class DepSolveProgressCallBack:
      def pkgAdded(self, pkgtup, mode):
          modedict = { 'i': _('installed'),
                       'u': _('updated'),
@@ -34071,7 +37554,18 @@ index f91fbf1..30cf177 100644
          (n, a, e, v, r) = pkgtup
          modeterm = modedict[mode]
          self.verbose_logger.log(logginglevels.INFO_2,
-@@ -399,7 +401,7 @@ class OperationsTests(_DepsolveTestsBase):
+@@ -356,9 +362,9 @@ class DepsolveTests(_DepsolveTestsBase):
+     def resetTsInfo(self):
+         self.tsInfo = transactioninfo.TransactionData()
+         
+-
+     def resolveCode(self):
+         solver = YumBase()
++        solver.save_ts  = save_ts
+         solver.conf = FakeConf()
+         solver.arch.setup_arch('x86_64')
+         solver.tsInfo = solver._tsInfo = self.tsInfo
+@@ -399,7 +405,7 @@ class OperationsTests(_DepsolveTestsBase):
      """
  
      def runOperation(self, args, installed=[], available=[],
@@ -34080,7 +37574,15 @@ index f91fbf1..30cf177 100644
          """Sets up and runs the depsolver. args[0] must be a valid yum command
          ("install", "update", ...). It might be followed by pkg names as on the
          yum command line. The pkg objects in installed are added to self.rpmdb and
-@@ -428,9 +430,18 @@ class OperationsTests(_DepsolveTestsBase):
+@@ -407,6 +413,7 @@ class OperationsTests(_DepsolveTestsBase):
+         requirements from.
+         """
+         depsolver = YumBaseCli()
++        depsolver.save_ts = save_ts
+         depsolver.arch.setup_arch('x86_64')
+         self.rpmdb = depsolver.rpmdb = FakeRpmDb()
+         self.xsack = depsolver._pkgSack  = packageSack.PackageSack()
+@@ -428,9 +435,18 @@ class OperationsTests(_DepsolveTestsBase):
              po.repoid = po.repo.id
              self.depsolver._pkgSack.addPackage(po)
  
@@ -34157,7 +37659,7 @@ index c3c7133..fc05aa6 100644
  Requires: python-iniparse
  Requires: pygpgme
 diff --git a/yum/__init__.py b/yum/__init__.py
-index 2ea9f20..14eabc9 100644
+index 2ea9f20..234b599 100644
 --- a/yum/__init__.py
 +++ b/yum/__init__.py
 @@ -21,6 +21,19 @@ The Yum RPM software updater.
@@ -34180,6 +37682,15 @@ index 2ea9f20..14eabc9 100644
  import re
  import types
  import errno
+@@ -30,7 +43,7 @@ import fnmatch
+ import logging
+ import logging.config
+ import operator
+-
++import tempfile
+ 
+ import yum.i18n
+ _ = yum.i18n._
 @@ -86,6 +99,7 @@ __version_info__ = tuple([ int(num) for num in __version__.split('.')])
  # multiple YumBase() objects.
  default_grabber.opts.user_agent += " yum/" + __version__
@@ -34188,7 +37699,15 @@ index 2ea9f20..14eabc9 100644
  class _YumPreBaseConf:
      """This is the configuration interface for the YumBase configuration.
         So if you want to change if plugins are on/off, or debuglevel/etc.
-@@ -294,6 +308,11 @@ class YumBase(depsolve.Depsolve):
+@@ -164,6 +178,7 @@ class YumBase(depsolve.Depsolve):
+         self._pkgSack = None
+         self._lockfile = None
+         self._tags = None
++        self._ts_save_file = None
+         self.skipped_packages = []   # packages skip by the skip-broken code
+         self.logger = logging.getLogger("yum.YumBase")
+         self.verbose_logger = logging.getLogger("yum.verbose.YumBase")
+@@ -294,6 +309,11 @@ class YumBase(depsolve.Depsolve):
              startupconf.syslog_facility = syslog_facility
          if syslog_device != None:
              startupconf.syslog_device = syslog_device
@@ -34200,7 +37719,16 @@ index 2ea9f20..14eabc9 100644
          if releasever != None:
              startupconf.releasever = releasever
  
-@@ -442,7 +461,11 @@ class YumBase(depsolve.Depsolve):
+@@ -395,7 +415,7 @@ class YumBase(depsolve.Depsolve):
+             else:
+                 thisrepo.repo_config_age = repo_age
+                 thisrepo.repofile = repofn
+-
++                
+             if thisrepo.id in self.repo_setopts:
+                 for opt in self.repo_setopts[thisrepo.id].items:
+                     setattr(thisrepo, opt, getattr(self.repo_setopts[thisrepo.id], opt))
+@@ -442,7 +462,11 @@ class YumBase(depsolve.Depsolve):
          @return: YumRepository instance.
          '''
          repo = yumRepo.YumRepository(section)
@@ -34213,7 +37741,7 @@ index 2ea9f20..14eabc9 100644
  
          # Ensure that the repo name is set
          if not repo.name:
-@@ -752,7 +775,7 @@ class YumBase(depsolve.Depsolve):
+@@ -752,7 +776,7 @@ class YumBase(depsolve.Depsolve):
              groupfile = repo.getGroups()
              # open it up as a file object so iterparse can cope with our compressed file
              if groupfile:
@@ -34222,7 +37750,7 @@ index 2ea9f20..14eabc9 100644
                  
              try:
                  self._comps.add(groupfile)
-@@ -790,7 +813,8 @@ class YumBase(depsolve.Depsolve):
+@@ -790,7 +814,8 @@ class YumBase(depsolve.Depsolve):
                  # fetch the sqlite tagdb
                  try:
                      tag_md = repo.retrieveMD('pkgtags')
@@ -34232,16 +37760,18 @@ index 2ea9f20..14eabc9 100644
                      # feed it into _tags.add()
                      self._tags.add(repo.id, tag_sqlite)
                  except (Errors.RepoError, Errors.PkgTagsError), e:
-@@ -976,8 +1000,6 @@ class YumBase(depsolve.Depsolve):
+@@ -976,8 +1001,8 @@ class YumBase(depsolve.Depsolve):
                  restring.append(_('Trying to remove "%s", which is protected') %
                                  pkgname)
  
 -        self.rpmdb.dropCachedData()
 -
++        if rescode == 2:
++            self.save_ts(auto=True)
          self.verbose_logger.debug('Depsolve time: %0.3f' % (time.time() - ds_st))
          return rescode, restring
  
-@@ -1311,7 +1333,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1311,7 +1336,10 @@ class YumBase(depsolve.Depsolve):
                  self.run_with_package_names.add('yum-metadata-parser')
                  break
  
@@ -34253,7 +37783,7 @@ index 2ea9f20..14eabc9 100644
              using_pkgs_pats = list(self.run_with_package_names)
              using_pkgs = self.rpmdb.returnPackages(patterns=using_pkgs_pats)
              rpmdbv  = self.rpmdb.simpleVersion(main_only=True)[0]
-@@ -1330,10 +1355,14 @@ class YumBase(depsolve.Depsolve):
+@@ -1330,10 +1358,14 @@ class YumBase(depsolve.Depsolve):
                  cmdline = ' '.join(self.args)
              elif hasattr(self, 'cmds') and self.cmds:
                  cmdline = ' '.join(self.cmds)
@@ -34268,26 +37798,35 @@ index 2ea9f20..14eabc9 100644
              
              self.plugins.run('historybegin')
          #  Just before we update the transaction, update what we think the
-@@ -1341,7 +1370,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1341,8 +1373,15 @@ class YumBase(depsolve.Depsolve):
          # "something" happens and the rpmdb is different from what we think it
          # will be we store what we thought, not what happened (so it'll be an
          # invalid cache).
 -        self.rpmdb.transactionResultVersion(self.tsInfo.futureRpmDBVersion())
 +        self.rpmdb.transactionResultVersion(frpmdbv)
  
++        # transaction has started - all bets are off on our saved ts file
++        try:
++            os.unlink(self._ts_save_file)
++        except (IOError, OSError), e:
++            pass
++        self._ts_save_file = None
++        
          errors = self.ts.run(cb.callback, '')
          # ts.run() exit codes are, hmm, "creative": None means all ok, empty 
-@@ -1382,7 +1411,8 @@ class YumBase(depsolve.Depsolve):
+         # list means some errors happened in the transaction and non-empty 
+@@ -1382,7 +1421,9 @@ class YumBase(depsolve.Depsolve):
                  except (IOError, OSError), e:
                      self.logger.critical(_('Failed to remove transaction file %s') % fn)
  
 -        self.rpmdb.dropCachedData() # drop out the rpm cache so we don't step on bad hdr indexes
++        
 +        # drop out the rpm cache so we don't step on bad hdr indexes
 +        self.rpmdb.dropCachedDataPostTransaction(list(self.tsInfo))
          self.plugins.run('posttrans')
          # sync up what just happened versus what is in the rpmdb
          if not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
-@@ -1403,8 +1433,8 @@ class YumBase(depsolve.Depsolve):
+@@ -1403,8 +1444,8 @@ class YumBase(depsolve.Depsolve):
          #    that there is not also an install of this pkg in the tsInfo (reinstall)
          # for any kind of install add from_repo to the yumdb, and the cmdline
          # and the install reason
@@ -34298,7 +37837,7 @@ index 2ea9f20..14eabc9 100644
          self.plugins.run('preverifytrans')
          for txmbr in self.tsInfo:
              if txmbr.output_state in TS_INSTALL_STATES:
-@@ -1482,13 +1512,15 @@ class YumBase(depsolve.Depsolve):
+@@ -1482,13 +1523,15 @@ class YumBase(depsolve.Depsolve):
                  self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
  
          self.plugins.run('postverifytrans')
@@ -34315,7 +37854,7 @@ index 2ea9f20..14eabc9 100644
  
      def costExcludePackages(self):
          """ Create an excluder for repos. with higher cost. Eg.
-@@ -1836,6 +1868,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1836,6 +1879,10 @@ class YumBase(depsolve.Depsolve):
  
          self.plugins.run('postdownload', pkglist=pkglist, errors=errors)
  
@@ -34326,7 +37865,7 @@ index 2ea9f20..14eabc9 100644
          return errors
  
      def verifyHeader(self, fo, po, raiseError):
-@@ -1919,7 +1955,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1919,7 +1966,7 @@ class YumBase(depsolve.Depsolve):
              - 2 - Fatal GPG verification error, give up.
          '''
          if hasattr(po, 'pkgtype') and po.pkgtype == 'local':
@@ -34335,7 +37874,102 @@ index 2ea9f20..14eabc9 100644
              hasgpgkey = 0
          else:
              repo = self.repos.getRepo(po.repoid)
-@@ -3100,6 +3136,9 @@ class YumBase(depsolve.Depsolve):
+@@ -2276,7 +2323,8 @@ class YumBase(depsolve.Depsolve):
+         return results
+     
+     # pre 3.2.10 API used to always showdups, so that's the default atm.
+-    def searchGenerator(self, fields, criteria, showdups=True, keys=False):
++    def searchGenerator(self, fields, criteria, showdups=True, keys=False, 
++                                             searchtags=True, searchrpmdb=True):
+         """Generator method to lighten memory load for some searches.
+            This is the preferred search function to use. Setting keys to True
+            will use the search keys that matched in the sorting, and return
+@@ -2322,41 +2370,45 @@ class YumBase(depsolve.Depsolve):
+ 
+                 if len(tmpvalues) > 0:
+                     sorted_lists[count].append((po, tmpkeys, tmpvalues))
++
+         results2sorted_lists(tmpres, sorted_lists)
+ 
+-        tmpres = self.rpmdb.searchPrimaryFieldsMultipleStrings(fields,
+-                                                               real_crit_lower,
+-                                                               lowered=True)
+-        # close our rpmdb connection so we can ctrl-c, kthxbai
+-        self.closeRpmDB()
++        if searchrpmdb:
++            tmpres = self.rpmdb.searchPrimaryFieldsMultipleStrings(fields,
++                                                                   real_crit_lower,
++                                                                   lowered=True)
++            # close our rpmdb connection so we can ctrl-c, kthxbai
++            self.closeRpmDB()
+ 
+-        results2sorted_lists(tmpres, sorted_lists)
+-        del tmpres
++            results2sorted_lists(tmpres, sorted_lists)
++            del tmpres
+ 
+-        tmpres = self.searchPackageTags(real_crit_lower)
+-        
+         results_by_pkg = {} # pkg=[list_of_tuples_of_values]
+-        
+-        for pkg in tmpres:
+-            count = 0
+-            matchkeys = []
+-            tagresults = []
+-            for (match, taglist) in tmpres[pkg]:
+-                count += len(taglist)
+-                matchkeys.append(rcl2c[match])
+-                tagresults.extend(taglist)
+-                if pkg not in results_by_pkg:
+-                    results_by_pkg[pkg] = []
+-                results_by_pkg[pkg].append((matchkeys, tagresults))
+-
+-        del tmpres
+-
+-        # do the ones we already have
+-        for item in sorted_lists.values():
+-            for pkg, k, v in item:
+-                if pkg not in results_by_pkg:
+-                    results_by_pkg[pkg] = []
+-                results_by_pkg[pkg].append((k,v))
++        if searchtags:
++            tmpres = self.searchPackageTags(real_crit_lower)
++            
++            
++            for pkg in tmpres:
++                count = 0
++                matchkeys = []
++                tagresults = []
++                for (match, taglist) in tmpres[pkg]:
++                    count += len(taglist)
++                    matchkeys.append(rcl2c[match])
++                    tagresults.extend(taglist)
++                    if pkg not in results_by_pkg:
++                        results_by_pkg[pkg] = []
++                    results_by_pkg[pkg].append((matchkeys, tagresults))
++
++            del tmpres
++
++        if sorted_lists.values():
++            # do the ones we already have
++            for item in sorted_lists.values():
++                for pkg, k, v in item:
++                    if pkg not in results_by_pkg:
++                        results_by_pkg[pkg] = []
++                    results_by_pkg[pkg].append((k,v))
+ 
+         # take our existing dict-by-pkg and make the dict-by-count for 
+         # this bizarro sorted_lists format
+@@ -2887,7 +2939,7 @@ class YumBase(depsolve.Depsolve):
+                 if len(dep_split) == 3:
+                     depname, flagsymbol, depver = dep_split
+                     if not flagsymbol in SYMBOLFLAGS:
+-                        raise Errors.YumBaseError, _('Invalid version flag')
++                        raise Errors.YumBaseError, _('Invalid version flag from: %s') % str(depstring)
+                     depflags = SYMBOLFLAGS[flagsymbol]
+ 
+         return self.rpmdb.getProvides(depname, depflags, depver).keys()
+@@ -3100,6 +3152,9 @@ class YumBase(depsolve.Depsolve):
  
      def _find_obsoletees(self, po):
          """ Return the pkgs. that are obsoleted by the po we pass in. """
@@ -34345,7 +37979,7 @@ index 2ea9f20..14eabc9 100644
          if not isinstance(po, YumLocalPackage):
              for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name):
                  if po.pkgtup == obstup:
-@@ -3160,7 +3199,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3160,7 +3215,7 @@ class YumBase(depsolve.Depsolve):
                      try:
                          mypkgs = self.returnPackagesByDep(arg)
                      except yum.Errors.YumBaseError, e:
@@ -34354,7 +37988,7 @@ index 2ea9f20..14eabc9 100644
                      else:
                          # install MTA* == fail, because provides don't do globs
                          # install /usr/kerberos/bin/* == success (and we want
-@@ -3490,7 +3529,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3490,7 +3545,7 @@ class YumBase(depsolve.Depsolve):
              availpkgs.extend(m)
  
              if not availpkgs and not instpkgs:
@@ -34363,7 +37997,7 @@ index 2ea9f20..14eabc9 100644
          
          else: # we have kwargs, sort them out.
              nevra_dict = self._nevra_kwarg_parse(kwargs)
-@@ -3576,6 +3615,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3576,6 +3631,9 @@ class YumBase(depsolve.Depsolve):
                          self.tsInfo.addObsoleted(obsoletee, po)
                          tx_return.append(txmbr)
                  else:
@@ -34373,7 +38007,7 @@ index 2ea9f20..14eabc9 100644
                      txmbr = self._add_up_txmbr(requiringPo, po, installed_pkg)
                      tx_return.append(txmbr)
                          
-@@ -3599,6 +3641,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3599,6 +3657,9 @@ class YumBase(depsolve.Depsolve):
                  
                  else:
                      updated_pkg =  self.getInstalledPackageObject(updated)
@@ -34383,7 +38017,7 @@ index 2ea9f20..14eabc9 100644
                      txmbr = self._add_up_txmbr(requiringPo,
                                                 available_pkg, updated_pkg)
                      tx_return.append(txmbr)
-@@ -3669,7 +3714,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3669,7 +3730,8 @@ class YumBase(depsolve.Depsolve):
                          self.logger.critical(_('%s') % e)
                      
                      if not depmatches:
@@ -34393,7 +38027,7 @@ index 2ea9f20..14eabc9 100644
                      else:
                          pkgs.extend(depmatches)
                  
-@@ -3690,6 +3736,14 @@ class YumBase(depsolve.Depsolve):
+@@ -3690,6 +3752,14 @@ class YumBase(depsolve.Depsolve):
              if self.conf.protected_packages and po.pkgtup == kern_pkgtup:
                  self.logger.warning(_("Skipping the running kernel: %s") % po)
                  continue
@@ -34408,7 +38042,7 @@ index 2ea9f20..14eabc9 100644
              txmbr = self.tsInfo.addErase(po)
              tx_return.append(txmbr)
          
-@@ -3952,7 +4006,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3952,7 +4022,7 @@ class YumBase(depsolve.Depsolve):
              EOL """
  
          if not po and not kwargs:
@@ -34417,7 +38051,7 @@ index 2ea9f20..14eabc9 100644
  
          doing_group_pkgs = False
          if po:
-@@ -3975,7 +4029,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3975,7 +4045,7 @@ class YumBase(depsolve.Depsolve):
                      try:
                          apkgs = self.returnPackagesByDep(arg)
                      except yum.Errors.YumBaseError, e:
@@ -34426,7 +38060,7 @@ index 2ea9f20..14eabc9 100644
  
          else:
              nevra_dict = self._nevra_kwarg_parse(kwargs)
-@@ -4196,23 +4250,20 @@ class YumBase(depsolve.Depsolve):
+@@ -4196,23 +4266,20 @@ class YumBase(depsolve.Depsolve):
          key_installed = False
  
          self.logger.info(_('Retrieving GPG key from %s') % keyurl)
@@ -34456,7 +38090,7 @@ index 2ea9f20..14eabc9 100644
  
          except urlgrabber.grabber.URLGrabError, e:
              raise Errors.YumBaseError(_('GPG key retrieval failed: ') +
-@@ -4276,12 +4327,11 @@ class YumBase(depsolve.Depsolve):
+@@ -4276,12 +4343,11 @@ class YumBase(depsolve.Depsolve):
          keyurls = repo.gpgkey
          key_installed = False
  
@@ -34470,7 +38104,7 @@ index 2ea9f20..14eabc9 100644
                  # Check if key is already installed
                  if misc.keyInstalled(ts, info['keyid'], info['timestamp']) >= 0:
                      self.logger.info(_('GPG key at %s (0x%s) is already installed') % (
-@@ -4306,6 +4356,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4306,6 +4372,7 @@ class YumBase(depsolve.Depsolve):
                      raise Errors.YumBaseError, _("Not installing key")
                  
                  # Import the key
@@ -34478,6 +38112,229 @@ index 2ea9f20..14eabc9 100644
                  result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key']))
                  if result != 0:
                      raise Errors.YumBaseError, \
+@@ -4626,6 +4693,7 @@ class YumBase(depsolve.Depsolve):
+         newrepo = yumRepo.YumRepository(repoid)
+         newrepo.name = repoid
+         newrepo.basecachedir = self.conf.cachedir
++
+         var_convert = kwargs.get('variable_convert', True)
+         
+         if baseurls:
+@@ -4722,3 +4790,214 @@ class YumBase(depsolve.Depsolve):
+         self.plugins.run('verify_package', verify_package=verify_package)
+         return verify_package
+ 
++    def save_ts(self, filename=None, auto=False):
++        """saves out a transaction to .yumtx file to be loaded later"""
++        
++        if self.tsInfo._unresolvedMembers:
++            if auto:
++                self.logger.critical(_("Dependencies not solved. Will not save unresolved transaction."))
++                return
++            raise Errors.YumBaseError(_("Dependencies not solved. Will not save unresolved transaction."))
++        
++        if not filename:
++            prefix = 'yum_save_tx-%s' % time.strftime('%Y-%m-%d-%H-%M')
++            fd,filename = tempfile.mkstemp(suffix='.yumtx', prefix=prefix)
++            f = os.fdopen(fd, 'w')
++        else:
++            f = open(filename, 'w')
++        
++        self._ts_save_file = filename
++        
++        msg = "%s\n" % self.rpmdb.simpleVersion(main_only=True)[0]
++        msg += "%s\n" % self.ts.getTsFlags()
++        msg += "%s\n" % len(self.repos.listEnabled())
++        for r in self.repos.listEnabled():
++            msg += "%s:%s:%s\n" % (r.id, len(r.sack), r.repoXML.revision)
++        msg += "%s\n" % len(self.tsInfo.getMembers())
++        for txmbr in self.tsInfo.getMembers():
++            msg += txmbr._dump()
++        try:
++            f.write(msg)
++            f.close()
++        except (IOError, OSError), e:
++            self._ts_save_file = None
++            if auto:
++                self.logger.critical(_("Could not save transaction file %s: %s") % (filename, str(e)))
++            else:
++                raise Errors.YumBaseError(_("Could not save transaction file %s: %s") % (filename, str(e)))
++
++        
++    def load_ts(self, filename, ignorerpm=None, ignoremissing=None):
++        """loads a transaction from a .yumtx file"""
++        # check rpmversion - if not match throw a fit
++        # check repoversions  (and repos)- if not match throw a fit
++        # load each txmbr - if pkgs being updated don't exist, bail w/error
++        # setup any ts flags
++        # setup cmds for history/yumdb to know about
++        # return txmbrs loaded
++        try:
++            data = open(filename, 'r').readlines()
++        except (IOError, OSError), e:
++            raise Errors.YumBaseError(_("Could not access/read saved transaction %s : %s") % (filename, str(e)))
++            
++
++        if ignorerpm is None:
++            ignorerpm = self.conf.loadts_ignorerpm
++        if ignoremissing is None:
++            ignoremissing = self.conf.loadts_ignoremissing
++            
++        # data format
++        # 0 == rpmdb version
++        # 1 == tsflags
++        # 2 == numrepos
++        # 3:numrepos = repos
++        # 3+numrepos = num pkgs
++        # 3+numrepos+1 -> EOF= txmembers
++        
++        # rpm db ver
++        rpmv = data[0].strip()
++        if rpmv != str(self.rpmdb.simpleVersion(main_only=True)[0]):
++            msg = _("rpmdb ver mismatched saved transaction version, ")
++            if ignorerpm:
++                msg += _(" ignoring, as requested.")
++                self.logger.critical(_(msg))
++            else:
++                msg += _(" aborting.")
++                raise Errors.YumBaseError(msg)
++        
++        # tsflags
++        # FIXME - probably should let other tsflags play nicely together
++        #         so someone can add --nogpgcheck or --nodocs or --nodiskspace or some nonsense and have it work
++        try:
++            tsflags = int(data[1].strip())
++        except (ValueError, IndexError), e:
++            msg = _("cannot find tsflags or tsflags not integer.")
++            raise Errors.YumBaseError(msg)
++
++        self.ts.setFlags(tsflags)
++        
++        # repos
++        numrepos = int(data[2].strip())
++        repos = []
++        rindex=3+numrepos
++        for r in data[3:rindex]:
++            repos.append(r.strip().split(':'))
++
++        # pkgs/txmbrs
++        numpkgs = int(data[rindex].strip())
++
++        pkgstart = rindex + 1
++        
++        pkgcount = 0
++        pkgprob = False
++        curpkg = None
++        for l in data[pkgstart:]:
++            l = l.rstrip()
++            # our main txmbrs
++            if l.startswith('mbr:'):
++                if curpkg:
++                    self.tsInfo.add(curpkg)
++                    if curpkg in self.tsInfo._unresolvedMembers and not missingany:
++                        self.tsInfo._unresolvedMembers.remove(curpkg)
++
++                missingany = False
++                pkgtup, current_state = l.split(':')[1].strip().split(' ')
++                current_state = int(current_state.strip())
++                pkgtup = tuple(pkgtup.strip().split(','))
++                try:
++                    if current_state == TS_INSTALL:
++                        po = self.getInstalledPackageObject(pkgtup)
++                    elif current_state == TS_AVAILABLE:
++                        po = self.getPackageObject(pkgtup)
++                    else:
++                        msg = _("Found txmbr in unknown current state: %s" % current_state)
++                        raise Errors.YumBaseError(msg)
++                except Errors.YumBaseError, e:
++                    missingany = True
++                    msg = _("Could not find txmbr: %s in state %s" % (str(pkgtup), current_state))
++                    if not ignoremissing:
++                        raise Errors.YumBaseError(msg)
++                    else:
++                        self.logger.critical(msg)
++                else:
++                    pkgcount += 1
++                    curpkg = transactioninfo.TransactionMember(po)
++                    curpkg.current_state = current_state
++                    continue
++
++            l = l.strip()
++            k,v = l.split(':', 1)
++            v = v.lstrip()
++            # attributes of our txmbrs
++            if k in ('isDep', 'reinstall'):
++                v = v.strip().lower()
++                if v == 'false':
++                    setattr(curpkg, k, False)
++                elif v == 'true':
++                    setattr(curpkg, k, True)
++            elif k in ('output_state'):
++                setattr(curpkg, k, int(v.strip()))
++            elif k in ('groups'):
++                curpkg.groups.extend(v.split(' '))
++            # the relationships to our main txmbrs
++            elif k in ('updated_by', 'obsoleted_by', 'downgraded_by', 
++                       'downgrades', 'updates', 'obsoletes', 'depends_on'):
++                for pkgspec in v.strip().split(' '):
++                    pkgtup, origin  = pkgspec.split('@')
++                    try:
++                        if origin == 'i':
++                            po = self.getInstalledPackageObject(tuple(pkgtup.split(',')))
++                        else:
++                            po = self.getPackageObject(tuple(pkgtup.split(',')))
++                    except Errors.YumBaseError, e:
++                        msg = _("Could not find txmbr: %s from origin: %s" % (str(pkgtup), origin))
++                        self.logger.critical(msg)
++                        missingany = True
++                    else:
++                        curlist = getattr(curpkg, k)
++                        curlist.append(po)
++                        setattr(curpkg, k, curlist)
++            elif k in ('relatedto'):
++                for item in v.split(' '):
++                    pkgspec, rel = item.split(':')
++                    pkgtup,origin = pkgspec.split('@')
++                    try:
++                        if origin == 'i':
++                            po = self.getInstalledPackageObject(tuple(pkgtup.split(',')))
++                        else:
++                            po = self.getPackageObject(tuple(pkgtup.split(',')))
++                    except Errors.YumBaseError, e:
++                        msg = _("Could not find txmbr: %s from origin: %s" % (str(pkgtup), origin))
++                        self.logger.critical(msg)
++                        missingany = True
++                    else:
++                        curlist = getattr(curpkg, k)
++                        curlist.append((po,rel))
++                        setattr(curpkg, k, curlist)
++                        
++            # the plain strings
++            else: #ts_state, reason
++                setattr(curpkg, k, v.strip())
++            
++            if missingany:
++                pkgprob = True
++                
++        # make sure we get the last one in!
++        self.tsInfo.add(curpkg)
++        if curpkg in self.tsInfo._unresolvedMembers:
++            self.tsInfo._unresolvedMembers.remove(curpkg)
++
++            
++        if numpkgs != pkgcount:
++            pkgprob = True
++            
++        if pkgprob:
++            msg = _("Transaction members, relations are missing or ts has been modified,")
++            if ignoremissing:
++                msg += _(" ignoring, as requested. You must redepsolve!")
++                self.logger.critical(msg)
++            else:
++                msg += _(" aborting.")
++                raise Errors.YumBaseError(msg)
++            
++        return self.tsInfo.getMembers()
 diff --git a/yum/comps.py b/yum/comps.py
 index 5ccfba2..408bb1c 100755
 --- a/yum/comps.py
@@ -34488,7 +38345,7 @@ index 5ccfba2..408bb1c 100755
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 2 of the License, or
 diff --git a/yum/config.py b/yum/config.py
-index 650d7b9..2118792 100644
+index 650d7b9..2f133ef 100644
 --- a/yum/config.py
 +++ b/yum/config.py
 @@ -645,6 +645,8 @@ class YumConf(StartupConf):
@@ -34508,7 +38365,17 @@ index 650d7b9..2118792 100644
      obsoletes = BoolOption(True)
      showdupesfromrepos = BoolOption(False)
      enabled = BoolOption(True)
-@@ -794,6 +797,8 @@ class RepoConf(BaseConfig):
+@@ -737,6 +740,9 @@ class YumConf(StartupConf):
+                                     parse_default=True)
+     exit_on_lock = BoolOption(False)
+     
++    loadts_ignoremissing = BoolOption(False)
++    loadts_ignorerpm = BoolOption(False)
++    
+     _reposlist = []
+ 
+     def dump(self):
+@@ -794,6 +800,8 @@ class RepoConf(BaseConfig):
      proxy_password = Inherit(YumConf.proxy_password)
      retries = Inherit(YumConf.retries)
      failovermethod = Inherit(YumConf.failovermethod)
@@ -34527,7 +38394,7 @@ index 06d5a6b..5c728d4 100644
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 2 of the License, or
 diff --git a/yum/depsolve.py b/yum/depsolve.py
-index e9b3fa7..cba0fc5 100644
+index e9b3fa7..3cc7a7f 100644
 --- a/yum/depsolve.py
 +++ b/yum/depsolve.py
 @@ -38,7 +38,7 @@ import Errors
@@ -34589,7 +38456,15 @@ index e9b3fa7..cba0fc5 100644
                  if txmbrs[0].output_state == TS_OBSOLETED:
                      self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: Obsoleting %s with %s to resolve dep.'),
                                              requiringPo, txmbrs[0].obsoleted_by[0])
-@@ -795,8 +822,11 @@ class Depsolve(object):
+@@ -778,6 +805,7 @@ class Depsolve(object):
+ 
+         if not len(self.tsInfo):
+             return (0, [_('Success - empty transaction')])
++        
+         return (2, [_('Success - deps resolved')])
+ 
+     def _resolveRequires(self, errors):
+@@ -795,8 +823,11 @@ class Depsolve(object):
                      dscb_ts_state = 'd'
                  if dscb_ts_state == 'u' and txmbr.reinstall:
                      dscb_ts_state = 'r'
@@ -34603,7 +38478,7 @@ index e9b3fa7..cba0fc5 100644
                  self.dsCallback.pkgAdded(txmbr.pkgtup, dscb_ts_state)
              self.verbose_logger.log(logginglevels.DEBUG_2,
                                      _("Checking deps for %s") %(txmbr,))
-@@ -1092,6 +1122,10 @@ class Depsolve(object):
+@@ -1092,6 +1123,10 @@ class Depsolve(object):
                          continue
                      ret.append( (po, self._prco_req_nfv2req(r, f, v),
                                   conflicting_po) )
@@ -34614,7 +38489,7 @@ index e9b3fa7..cba0fc5 100644
          self.rpmdb.transactionCacheConflictPackages(cpkgs)
          return ret
  
-@@ -1195,6 +1229,10 @@ class Depsolve(object):
+@@ -1195,6 +1230,10 @@ class Depsolve(object):
                      #  We get here from bestPackagesFromList(), give a giant
                      # bump to stuff that is already installed.
                      pkgresults[pkg] += 1000
@@ -35250,7 +39125,7 @@ index d822394..153edbb 100644
  
      def getProvides(self, name, flags=None, version=(None, None, None)):
 diff --git a/yum/packages.py b/yum/packages.py
-index b5a7d40..38f305c 100644
+index b5a7d40..093d3c8 100644
 --- a/yum/packages.py
 +++ b/yum/packages.py
 @@ -290,8 +290,9 @@ class PackageObject(object):
@@ -35289,6 +39164,15 @@ index b5a7d40..38f305c 100644
  
          return hdr
  
+@@ -1571,7 +1575,7 @@ class _RPMVerifyPackageFile(YUMVerifyPackageFile):
+         if vflags & _RPMVERIFY_DIGEST:
+             self.digest    = (csum_type, filetuple[12])
+ 
+-        if self.ftype == 'symlnk' and vflags & _RPMVERIFY_LINKTO:
++        if self.ftype == 'symlink' and vflags & _RPMVERIFY_LINKTO:
+             self.readlink = fi.FLink() # fi.foo is magic, don't think about it
+         elif vflags & _RPMVERIFY_LINKTO:
+             self.readlink = ''
 diff --git a/yum/parser.py b/yum/parser.py
 index dd45d6d..e46d611 100644
 --- a/yum/parser.py
@@ -35366,7 +39250,7 @@ index afc7947..31b1080 100755
                  if cpeid:
                      tag = """   <distro cpeid="%s">%s</distro>\n""" % (
 diff --git a/yum/rpmsack.py b/yum/rpmsack.py
-index ae73c32..6d6bf1c 100644
+index ae73c32..346decc 100644
 --- a/yum/rpmsack.py
 +++ b/yum/rpmsack.py
 @@ -195,13 +195,20 @@ class RPMDBPackageSack(PackageSackBase):
@@ -35402,7 +39286,7 @@ index ae73c32..6d6bf1c 100644
          self._idx2pkg = {}
          self._name2pkg = {}
          self._pkgnames_loaded = set()
-@@ -236,6 +247,73 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -236,6 +247,80 @@ class RPMDBPackageSack(PackageSackBase):
          self.transactionReset() # Should do nothing, but meh...
          self._cached_rpmdb_mtime = None
  
@@ -35441,18 +39325,24 @@ index ae73c32..6d6bf1c 100644
 +        rpmdbfname  = self.root + "/var/lib/rpm/Packages"
 +        self._cached_rpmdb_mtime = os.path.getmtime(rpmdbfname)
 +
++        def _safe_del(x, y):
++            """ Make sure we never traceback here, because it screws our yumdb
++                if we do. """
++            # Maybe use x.pop(y, None) ?
++            if y in x:
++                del x[y]
++
 +        precache = []
 +        for txmbr in txmbrs:
 +            self._pkgnames_loaded.discard(txmbr.name)
-+            if txmbr.name in self._name2pkg:
-+                del self._name2pkg[txmbr.name]
++            _safe_del(self._name2pkg, txmbr.name)
 +
 +            if txmbr.output_state in constants.TS_INSTALL_STATES:
 +                self._pkgname_fails.discard(txmbr.name)
 +                precache.append(txmbr)
 +            if txmbr.output_state in constants.TS_REMOVE_STATES:
-+                del self._idx2pkg[txmbr.po.idx]
-+                del self._tup2pkg[txmbr.pkgtup]
++                _safe_del(self._idx2pkg, txmbr.po.idx)
++                _safe_del(self._tup2pkg, txmbr.pkgtup)
 +
 +        for txmbr in precache:
 +            (n, a, e, v, r) = txmbr.pkgtup
@@ -35460,6 +39350,7 @@ index ae73c32..6d6bf1c 100644
 +            if not pkg:
 +                # Wibble?
 +                self._deal_with_bad_rpmdbcache("dCDPT(pkg checksums)")
++                continue
 +
 +            pkg = pkg[0]
 +            csum = txmbr.po.returnIdSum()
@@ -35476,7 +39367,7 @@ index ae73c32..6d6bf1c 100644
      def setCacheDir(self, cachedir):
          """ Sets the internal cachedir value for the rpmdb, to be the
              "rpmdb-indexes" directory in the persisent yum storage. """
-@@ -244,6 +322,10 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -244,6 +329,10 @@ class RPMDBPackageSack(PackageSackBase):
          else:
              self._cachedir = '/' + cachedir
  
@@ -35487,7 +39378,15 @@ index ae73c32..6d6bf1c 100644
      def readOnlyTS(self):
          if not self.ts:
              self.ts =  initReadOnlyTransaction(root=self.root)
-@@ -511,12 +593,34 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -293,6 +382,7 @@ class RPMDBPackageSack(PackageSackBase):
+         ts = self.readOnlyTS()
+         result = {}
+         
++        name = os.path.normpath(name)
+         mi = ts.dbMatch('basenames', name)
+         for hdr in mi:
+             if hdr['name'] == 'gpg-pubkey':
+@@ -511,12 +601,34 @@ class RPMDBPackageSack(PackageSackBase):
          return pkgobjlist
  
      def _uncached_returnConflictPackages(self):
@@ -35527,7 +39426,7 @@ index ae73c32..6d6bf1c 100644
          return self._cached_conflicts_data
  
      def _write_conflicts_new(self, pkgs, rpmdbv):
-@@ -543,7 +647,7 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -543,7 +655,7 @@ class RPMDBPackageSack(PackageSackBase):
          misc.unlink_f(self._cachedir + "/version")
          misc.unlink_f(self._cachedir + '/conflicts')
          misc.unlink_f(self._cachedir + '/file-requires')
@@ -35536,7 +39435,7 @@ index ae73c32..6d6bf1c 100644
          #  We have a couple of options here, we can:
          #
          # . Ignore it and continue - least invasive, least likely to get any
-@@ -627,8 +731,8 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -627,8 +739,8 @@ class RPMDBPackageSack(PackageSackBase):
              data = self._trans_cache_store['file-requires']
              self._write_file_requires(rpmdbv, data)
  
@@ -35547,7 +39446,7 @@ index ae73c32..6d6bf1c 100644
              self._write_package_checksums(rpmdbv, data)
  
          self._trans_cache_store = {}
-@@ -803,22 +907,23 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -803,22 +915,23 @@ class RPMDBPackageSack(PackageSackBase):
          os.rename(self._cachedir + '/file-requires.tmp',
                    self._cachedir + '/file-requires')
  
@@ -35575,7 +39474,7 @@ index ae73c32..6d6bf1c 100644
          frpmdbv = fo.readline()
          if not frpmdbv or rpmdbv != frpmdbv[:-1]:
              return
-@@ -837,7 +942,10 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -837,7 +950,10 @@ class RPMDBPackageSack(PackageSackBase):
  
                  T = _read_str(fo)
                  D = _read_str(fo)
@@ -35587,7 +39486,7 @@ index ae73c32..6d6bf1c 100644
  
              if fo.readline() != '': # Should be EOF
                  return
-@@ -845,7 +953,13 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -845,7 +961,13 @@ class RPMDBPackageSack(PackageSackBase):
              self._deal_with_bad_rpmdbcache("pkg checksums")
              return
  
@@ -35601,7 +39500,7 @@ index ae73c32..6d6bf1c 100644
              (n, a, e, v, r) = pkgtup
              pkg = self.searchNevra(n, e, v, r, a)
              if not pkg:
-@@ -863,24 +977,26 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -863,24 +985,26 @@ class RPMDBPackageSack(PackageSackBase):
          if not self.__cache_rpmdb__:
              return
  
@@ -35632,7 +39531,7 @@ index ae73c32..6d6bf1c 100644
  
      def _get_cached_simpleVersion_main(self):
          """ Return the cached string of the main rpmdbv. """
-@@ -1046,7 +1162,6 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -1046,7 +1170,6 @@ class RPMDBPackageSack(PackageSackBase):
          if self.auto_close:
              self.ts.close()
  
@@ -35640,7 +39539,7 @@ index ae73c32..6d6bf1c 100644
      def _header_from_index(self, idx):
          """returns a package header having been given an index"""
          warnings.warn('_header_from_index() will go away in a future version of Yum.\n',
-@@ -1422,9 +1537,10 @@ class RPMDBAdditionalData(object):
+@@ -1422,9 +1545,10 @@ class RPMDBAdditionalData(object):
      # dirs have files per piece of info we're keeping
      #    repoid, install reason, status, blah, (group installed for?), notes?
      
@@ -35652,7 +39551,7 @@ index ae73c32..6d6bf1c 100644
          self.conf.writable = False
          
          self._packages = {} # pkgid = dir
-@@ -1566,7 +1682,6 @@ class RPMDBAdditionalDataPackage(object):
+@@ -1566,7 +1690,6 @@ class RPMDBAdditionalDataPackage(object):
  
          self._yumdb_cache['attr'][value][2].add(fn)
          self._yumdb_cache[fn] = value
@@ -35660,7 +39559,7 @@ index ae73c32..6d6bf1c 100644
  
          return True
  
-@@ -1587,6 +1702,11 @@ class RPMDBAdditionalDataPackage(object):
+@@ -1587,6 +1710,11 @@ class RPMDBAdditionalDataPackage(object):
          if attr.endswith('.tmp'):
              raise AttributeError, "Cannot set attribute %s on %s" % (attr, self)
  
@@ -35673,10 +39572,26 @@ index ae73c32..6d6bf1c 100644
          if self._link_yumdb_cache(fn, value):
              return
 diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
-index 820f003..fb8333f 100644
+index 820f003..ed681fb 100644
 --- a/yum/sqlitesack.py
 +++ b/yum/sqlitesack.py
-@@ -1263,7 +1263,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -845,6 +845,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+     @catchSqliteException
+     def _search_primary_files(self, name):
+         querytype = 'glob'
++        name = os.path.normpath(name)
+         if not misc.re_glob(name):
+             querytype = '='        
+         results = []
+@@ -898,6 +899,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+         glob = True
+         file_glob = True
+         querytype = 'glob'
++        name = os.path.normpath(name)
+         dirname  = os.path.dirname(name)
+         filename = os.path.basename(name)
+         if strict or not misc.re_glob(name):
+@@ -1263,7 +1265,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
          return self._search("requires", name, flags, version)
  
      @catchSqliteException
@@ -35685,7 +39600,7 @@ index 820f003..fb8333f 100644
          """return a list of packages matching any of the given names. This is 
             only a match on package name, nothing else"""
          
-@@ -1283,6 +1283,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1283,6 +1285,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
              else:
                  names.append(pkgname)
  
@@ -35694,7 +39609,7 @@ index 820f003..fb8333f 100644
          if not names:
              return returnList
  
-@@ -1290,7 +1292,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1290,7 +1294,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
          if len(names) > max_entries:
              # Unique is done at user_names time, above.
              for names in seq_max_split(names, max_entries):
@@ -35703,7 +39618,7 @@ index 820f003..fb8333f 100644
              return returnList
  
          pat_sqls = []
-@@ -1304,10 +1306,19 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1304,10 +1308,19 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
              cur = cache.cursor()
              executeSQL(cur, qsql, names)
  
@@ -35726,7 +39641,7 @@ index 820f003..fb8333f 100644
          return returnList
   
 diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
-index 31d3569..4c59301 100644
+index 31d3569..b0c7ddd 100644
 --- a/yum/transactioninfo.py
 +++ b/yum/transactioninfo.py
 @@ -1,3 +1,4 @@
@@ -35795,7 +39710,7 @@ index 31d3569..4c59301 100644
          txmbr.relatedto.append((obsoleting_po, 'obsoletedby'))
          txmbr.obsoleted_by.append(obsoleting_po)
          self.add(txmbr)
-@@ -645,12 +650,26 @@ class TransactionData:
+@@ -645,12 +650,25 @@ class TransactionData:
              csum = None
              if 'checksum_type' in ydbi and 'checksum_data' in ydbi:
                  csum = (ydbi.checksum_type, ydbi.checksum_data)
@@ -35819,14 +39734,84 @@ index 31d3569..4c59301 100644
 +                    self.addObsoleted(pkg, txmbr.po)
 +                    txmbr.output_state = TS_OBSOLETING
 +                    txmbr.po.state = TS_OBSOLETING
-+
  
  class ConditionalTransactionData(TransactionData):
      """A transaction data implementing conditional package addition"""
+@@ -722,7 +740,7 @@ class TransactionMember:
+         self.output_state = None # what state to list if printing it
+         self.isDep = 0
+         self.reason = 'user' # reason for it to be in the transaction set
+-        self.process = None # 
++        self.process = None #  I think this is used nowhere by nothing - skv 2010/11/03
+         self.relatedto = [] # ([relatedpkg, relationship)]
+         self.depends_on = []
+         self.obsoletes = []
+@@ -769,14 +787,42 @@ class TransactionMember:
+ 
+     def __repr__(self):
+         return "<%s : %s (%s)>" % (self.__class__.__name__, str(self),hex(id(self))) 
+-        
+-    # This is the tricky part - how do we nicely setup all this data w/o going insane
+-    # we could make the txmember object be created from a YumPackage base object
+-    # we still may need to pass in 'groups', 'ts_state', 'output_state', 'reason', 'current_state'
+-    # and any related packages. A world of fun that will be, you betcha
+     
+-    
+-    # definitions
+-    # current and output states are defined in constants
+-    # relationships are defined in constants
+-    # ts states are: u, i, e
++    def _dump(self):
++        msg = "mbr: %s,%s,%s,%s,%s %s\n" % (self.name, self.arch, self.epoch, 
++                     self.version, self.release, self.current_state)
++        msg += "  repo: %s\n" % self.po.repo.id
++        msg += "  ts_state: %s\n" % self.ts_state
++        msg += "  output_state: %s\n" %  self.output_state
++        msg += "  isDep: %s\n" %  bool(self.isDep)
++        msg += "  reason: %s\n" % self.reason
++        #msg += "  process: %s\n" % self.process
++        msg += "  reinstall: %s\n" % bool(self.reinstall)
++        
++        if self.relatedto:
++            msg += "  relatedto:"
++            for (po, rel) in self.relatedto:
++                pkgorigin = 'a'
++                if isinstance(po, YumInstalledPackage):
++                    pkgorigin = 'i'
++                msg += " %s,%s,%s,%s,%s@%s:%s" % (po.name, po.arch, po.epoch, 
++                      po.version, po.release, pkgorigin, rel)
++            msg += "\n"
++            
++        for lst in ['depends_on', 'obsoletes', 'obsoleted_by', 'downgrades',
++                    'downgraded_by', 'updates', 'updated_by']:
++            thislist = getattr(self, lst)
++            if thislist:
++                msg += "  %s:" % lst
++                for po in thislist:
++                    pkgorigin = 'a'
++                    if isinstance(po, YumInstalledPackage):
++                        pkgorigin = 'i'
++                    msg += " %s,%s,%s,%s,%s@%s" % (po.name, po.arch, po.epoch, 
++                        po.version, po.release, pkgorigin)
++                msg += "\n"
++                
++        if self.groups:
++            msg += "  groups: %s\n" % ' '.join(self.groups)
++
++        return msg
 diff --git a/yum/update_md.py b/yum/update_md.py
-index 9e492ba..74db5ad 100644
+index 9e492ba..56b5307 100644
 --- a/yum/update_md.py
 +++ b/yum/update_md.py
+@@ -26,7 +26,7 @@ import sys
+ from yum.i18n import utf8_text_wrap, to_utf8
+ from yum.yumRepo import YumRepository
+ from yum.packages import FakeRepository
+-from yum.misc import to_xml, decompress
++from yum.misc import to_xml, decompress, repo_gen_decompress
+ from yum.misc import cElementTree_iterparse as iterparse 
+ import Errors
+ 
 @@ -56,6 +56,10 @@ class UpdateNotice(object):
              'issued'           : '',
              'updated'          : '',
@@ -35843,7 +39828,7 @@ index 9e492ba..74db5ad 100644
          self._md[item] = val
  
 -    def __str__(self):
-+    def text(self, skip_data=('files',)):
++    def text(self, skip_data=('files', 'summary', 'solution')):
          head = """
  ===============================================================================
    %(title)s
@@ -35974,6 +39959,15 @@ index 9e492ba..74db5ad 100644
          if self._md['references']:
              msg += """  <references>\n"""
              for ref in self._md['references']:
+@@ -384,7 +438,7 @@ class UpdateMetadata(object):
+                 md = obj.retrieveMD(mdtype)
+                 if not md:
+                     raise UpdateNoticeException()
+-                unfile = decompress(md)
++                unfile = repo_gen_decompress(md, 'updateinfo.xml')
+                 infile = open(unfile, 'rt')
+         elif isinstance(obj, FakeRepository):
+             raise Errors.RepoMDError, "No updateinfo for local pkg"
 diff --git a/yum/yumRepo.py b/yum/yumRepo.py
 index dd595f0..b0e23c6 100644
 --- a/yum/yumRepo.py
@@ -36034,7 +40028,7 @@ index dd595f0..b0e23c6 100644
                  continue
  
 diff --git a/yumcommands.py b/yumcommands.py
-index a7f5d9e..3c009f8 100644
+index a7f5d9e..ecce347 100644
 --- a/yumcommands.py
 +++ b/yumcommands.py
 @@ -122,10 +122,30 @@ def checkShellArg(base, basecmd, extcmds):
@@ -36231,8 +40225,40 @@ index a7f5d9e..3c009f8 100644
  
          rc = 0
          if base._rpmdb_warn_checks(out=_out, warn=False, chkcmd=chkcmd,
+@@ -1394,3 +1440,31 @@ class CheckRpmdbCommand(YumCommand):
+     def needTs(self, base, basecmd, extcmds):
+         return False
+ 
++class LoadTransactionCommand(YumCommand):
++    def getNames(self):
++        return ['load-transaction', 'load-ts']
++
++    def getUsage(self):
++        return "filename"
++
++    def getSummary(self):
++        return _("load a saved transaction from filename")
++
++    def doCommand(self, base, basecmd, extcmds):
++        if not extcmds:
++            base.logger.critical(_("No saved transaction file specified."))
++            raise cli.CliError
++        
++        load_file = extcmds[0]
++        self.doneCommand(base, _("loading transaction from %s") % load_file)
++        
++        try:
++            base.load_ts(load_file)
++        except yum.Errors.YumBaseError, e:
++            return 1, [to_unicode(e)]
++        return 2, [_('Transaction loaded from %s with %s members') % (load_file, len(base.tsInfo.getMembers()))]
++
++
++    def needTs(self, base, basecmd, extcmds):
++        return True
++
 diff --git a/yummain.py b/yummain.py
-index 95c7462..2892c34 100755
+index 95c7462..0241684 100755
 --- a/yummain.py
 +++ b/yummain.py
 @@ -101,8 +101,10 @@ def main(args):
@@ -36248,3 +40274,12 @@ index 95c7462..2892c34 100755
              else:
                  logger.critical(_("Another app is currently holding the yum lock; exiting as configured by exit_on_lock"))
                  return 1
+@@ -211,6 +213,8 @@ def main(args):
+         if not base._rpmdb_warn_checks(out=verbose_logger.info, warn=False):
+             verbose_logger.info(_(" You could try running: rpm -Va --nofiles --nodigest"))
+         return_code = result
++        if base._ts_save_file:
++            verbose_logger.info(_("Your transaction was saved, rerun it with: yum load-transaction %s") % base._ts_save_file)
+     else:
+         verbose_logger.log(logginglevels.INFO_2, _('Complete!'))
+ 


More information about the scm-commits mailing list