[yum] latest head

Seth Vidal skvidal at fedoraproject.org
Tue Jan 4 22:08:27 UTC 2011


commit 42688de5b6cb17c462875ecb149a638def32cd88
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Tue Jan 4 17:08:12 2011 -0500

    latest head

 yum-HEAD.patch | 6584 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 yum.spec       |    6 +-
 2 files changed, 5823 insertions(+), 767 deletions(-)
---
diff --git a/yum-HEAD.patch b/yum-HEAD.patch
index 26569a4..642b889 100644
--- a/yum-HEAD.patch
+++ b/yum-HEAD.patch
@@ -12,7 +12,7 @@ index 8065899..20f5629 100644
  
  test-skipbroken:
 diff --git a/cli.py b/cli.py
-index 9542b7a..0c5d8ed 100644
+index 9542b7a..06bfb68 100644
 --- a/cli.py
 +++ b/cli.py
 @@ -101,6 +101,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
@@ -96,7 +96,15 @@ index 9542b7a..0c5d8ed 100644
          return yumshell.result, yumshell.resultmsgs
  
      def errorSummary(self, errstring):
-@@ -598,6 +634,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+@@ -591,13 +627,17 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+         if matches:
+             msg = self.fmtKeyValFill(_('  * Maybe you meant: '),
+                                      ", ".join(matches))
+-            self.verbose_logger.log(yum.logginglevels.INFO_2, msg)
++            self.verbose_logger.log(yum.logginglevels.INFO_2, to_unicode(msg))
+ 
+     def _checkMaybeYouMeant(self, arg, always_output=True):
+         """ If the update/remove argument doesn't match with case, or due
              to not being installed, tell the user. """
          # always_output is a wart due to update/remove not producing the
          # same output.
@@ -206,7 +214,70 @@ index 9542b7a..0c5d8ed 100644
          for arg in args:
              if arg not in akeys:
                  self.logger.warning(_('Warning: No matches found for: %s'), arg)
-@@ -1278,7 +1369,9 @@ class YumOptionParser(OptionParser):
+@@ -1080,29 +1171,39 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+         installed, available = self.doGroupLists(uservisible=uservisible,
+                                                  patterns=userlist)
+         
+-        if len(installed) > 0:
+-            self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                _('Installed Groups:'))
+-            for group in installed:
+-                if self.verbose_logger.isEnabledFor(yum.logginglevels.DEBUG_3):
+-                    self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                                            '   %s (%s)', group.ui_name,
+-                                            group.groupid)
+-                else:
+-                    self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                                            '   %s', group.ui_name)
+-        
+-        if len(available) > 0:
+-            self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                _('Available Groups:'))
+-            for group in available:
+-                if self.verbose_logger.isEnabledFor(yum.logginglevels.DEBUG_3):
+-                    self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                                            '   %s (%s)', group.ui_name,
+-                                            group.groupid)
+-                else:
+-                    self.verbose_logger.log(yum.logginglevels.INFO_2,
+-                                            '   %s', group.ui_name)
++        def _out_grp(sect, group):
++            if not done:
++                self.verbose_logger.log(yum.logginglevels.INFO_2, sect)
++            msg = '   %s' % group.ui_name
++            if self.verbose_logger.isEnabledFor(yum.logginglevels.DEBUG_3):
++                msg += ' (%s)' % group.groupid
++            if group.langonly:
++                msg += ' [%s]' % group.langonly
++            self.verbose_logger.log(yum.logginglevels.INFO_2, '%s', msg)
++
++        done = False
++        for group in installed:
++            if group.langonly: continue
++            _out_grp(_('Installed Groups:'), group)
++            done = True
++
++        done = False
++        for group in installed:
++            if not group.langonly: continue
++            _out_grp(_('Installed Language Groups:'), group)
++            done = True
++
++        done = False
++        for group in available:
++            if group.langonly: continue
++            _out_grp(_('Available Groups:'), group)
++            done = True
++
++        done = False
++        for group in available:
++            if not group.langonly: continue
++            _out_grp(_('Available Language Groups:'), group)
++            done = True
+ 
+         return 0, [_('Done')]
+     
+@@ -1278,7 +1379,9 @@ class YumOptionParser(OptionParser):
          try:
              args = _filtercmdline(
                          ('--noplugins','--version','-q', '-v', "--quiet", "--verbose"), 
@@ -217,7 +288,7 @@ index 9542b7a..0c5d8ed 100644
                           '--disableplugin', '--enableplugin', '--releasever',
                           '--setopt'), 
                          args)
-@@ -1327,6 +1420,7 @@ class YumOptionParser(OptionParser):
+@@ -1327,6 +1430,7 @@ class YumOptionParser(OptionParser):
                  self.base.conf.obsoletes = 1
  
              if opts.installroot:
@@ -225,15 +296,23 @@ index 9542b7a..0c5d8ed 100644
                  self.base.conf.installroot = opts.installroot
                  
              if opts.skipbroken:
-@@ -1395,6 +1489,7 @@ class YumOptionParser(OptionParser):
+@@ -1393,11 +1497,11 @@ class YumOptionParser(OptionParser):
+ 
+             # Disable all gpg key checking, if requested.
              if opts.nogpgcheck:
-                 self.base.conf.gpgcheck      = False
-                 self.base.conf.repo_gpgcheck = False
-+                self.base.conf.localpkg_gpgcheck = False                
+-                self.base.conf.gpgcheck      = False
+-                self.base.conf.repo_gpgcheck = False
++                #  Altering the normal configs. doesn't work too well, esp. with
++                # regard to dynamically enabled repos.
++                self._override_sigchecks = True
                  for repo in self.base.repos.listEnabled():
-                     repo.gpgcheck      = False
-                     repo.repo_gpgcheck = False
-@@ -1406,7 +1501,18 @@ class YumOptionParser(OptionParser):
+-                    repo.gpgcheck      = False
+-                    repo.repo_gpgcheck = False
++                    repo._override_sigchecks = True
+                             
+         except ValueError, e:
+             self.logger.critical(_('Options Error: %s'), e)
+@@ -1406,7 +1510,18 @@ class YumOptionParser(OptionParser):
           
          return opts, cmds
  
@@ -312,7 +391,7 @@ index 0000000..643eff1
 +
 +<!ELEMENT database_version (#PCDATA)>
 diff --git a/docs/yum.8 b/docs/yum.8
-index 281bf17..111cda6 100644
+index 281bf17..52f6b53 100644
 --- a/docs/yum.8
 +++ b/docs/yum.8
 @@ -155,9 +155,14 @@ or file. Just use a specific name or a file-glob-syntax wildcards to list
@@ -333,6 +412,15 @@ index 281bf17..111cda6 100644
  .IP 
  .IP "\fBinfo\fP"
  Is used to list a description and summary information about available
+@@ -257,7 +262,7 @@ listed. If the first argument is 'enabled', 'disabled' or 'all' then the command
+ will list those types of repos.
+ 
+ You can pass repo id or name arguments, or wildcards which to match against
+-both of those. However if the ir or name matches exactly then the repo will
++both of those. However if the id or name matches exactly then the repo will
+ be listed even if you are listing enabled repos. and it is disabled.
+ 
+ In non-verbose mode the first column will start with a '*' if the repo. has
 @@ -334,6 +339,13 @@ if there was something not good with the transaction.
  Checks the local rpmdb and produces information on any problems it finds. You
  can pass the check command the arguments "dependencies" or "duplicates", to
@@ -371,7 +459,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..ff10251 100644
+index 49d98c6..0281f1a 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.
@@ -472,7 +560,22 @@ index 49d98c6..ff10251 100644
  .SH "[repository] OPTIONS"
  .LP 
  The repository section(s) take the following form:
-@@ -734,6 +763,17 @@ If this is unset it inherits it from the global setting
+@@ -629,6 +658,14 @@ option (above). If a GPG key is required to install a package from a
+ repository, all keys specified for that repository will be installed.
+ 
+ .IP
++\fBgpgcakey\fR
++A URL pointing to the ASCII-armored CA key file for the repository. This is a normal 
++gpg public key - but this key will be used to validate detached signatures of all
++other keys. The idea is you are asked to confirm import for this key. After that any other 
++gpg key needed for package or repository verification, if it has a detached signature which matches this
++key will be automatically imported without user confirmation.
++
++.IP
+ \fBexclude\fR
+ Same as the [main] \fBexclude\fR option but only for this repository.
+ Substitution variables, described below, are honored here.
+@@ -734,6 +771,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
  
@@ -491,10 +594,117 @@ index 49d98c6..ff10251 100644
  \fBcost \fR
  relative cost of accessing this repository. Useful for weighing one repo's packages
 diff --git a/etc/yum.bash b/etc/yum.bash
-index 3e6e243..303f190 100644
+index 3e6e243..f4be628 100644
 --- a/etc/yum.bash
 +++ b/etc/yum.bash
-@@ -79,18 +79,20 @@ _yum()
+@@ -72,6 +72,106 @@ _yum_binrpmfiles()
+     COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -X '*.nosrc.rpm' ) )
+ }
+ 
++_yum_baseopts()
++{
++    local opts='--help --tolerant --cacheonly --config --randomwait
++        --debuglevel --showduplicates --errorlevel --rpmverbosity --quiet
++        --verbose --assumeyes --version --installroot --enablerepo
++        --disablerepo --exclude --disableexcludes --obsoletes --noplugins
++        --nogpgcheck --skip-broken --color --releasever --setopt'
++    [[ $COMP_LINE == *--noplugins* ]] || \
++        opts="$opts --disableplugin --enableplugin"
++    printf %s "$opts"
++}
++
++# arguments:
++#   1 = current word to be completed
++#   2 = previous word
++# return 0 if no more completions should be sought, 1 otherwise
++_yum_complete_baseopts()
++{
++    local split=false
++    type _split_longopt &>/dev/null && _split_longopt && split=true
++
++    case $2 in
++
++        -d|--debuglevel|-e|--errorlevel)
++            COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$1" ) )
++            return 0
++            ;;
++
++        --rpmverbosity)
++            COMPREPLY=( $( compgen -W 'info critical emergency error warn
++                debug' -- "$1" ) )
++            return 0
++            ;;
++
++        -c|--config)
++            COMPREPLY=( $( compgen -f -o plusdirs -X "!*.conf" -- "$1" ) )
++            return 0
++            ;;
++
++        --installroot|--downloaddir)
++            COMPREPLY=( $( compgen -d -- "$1" ) )
++            return 0
++            ;;
++
++        --enablerepo)
++            _yum_repolist disabled "$1"
++            return 0
++            ;;
++
++        --disablerepo)
++            _yum_repolist enabled "$1"
++            return 0
++            ;;
++
++        --disableexcludes)
++            _yum_repolist all "$1"
++            COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all main' -- "$1" ) )
++            return 0
++            ;;
++
++        --enableplugin)
++            _yum_plugins 0 "$1"
++            return 0
++            ;;
++
++        --disableplugin)
++            _yum_plugins 1 "$1"
++            return 0
++            ;;
++
++        --color)
++            COMPREPLY=( $( compgen -W 'always auto never' -- "$1" ) )
++            return 0
++            ;;
++
++        -R|--randomwait|-x|--exclude|-h|--help|--version|--releasever|--cve|\
++        --bz|--advisory|--tmprepo|--verify-filenames|--setopt)
++            return 0
++            ;;
++
++        --download-order)
++            COMPREPLY=( $( compgen -W 'default smallestfirst largestfirst' \
++                -- "$1" ) )
++            return 0
++            ;;
++
++        --override-protection)
++            _yum_list installed "$1"
++            return 0
++            ;;
++
++        --verify-configuration-files)
++            COMPREPLY=( $( compgen -W '1 0' -- "$1" ) )
++            return 0
++            ;;
++    esac
++
++    $split && return 0 || return 1
++}
++
+ _yum()
+ {
+     COMPREPLY=()
+@@ -79,18 +179,20 @@ _yum()
      local cur
      type _get_cword &>/dev/null && cur=`_get_cword` || cur=$2
      local prev=$3
@@ -526,7 +736,7 @@ index 3e6e243..303f190 100644
      done
  
      case $cmd in
-@@ -115,20 +117,14 @@ _yum()
+@@ -115,20 +217,14 @@ _yum()
              ;;
  
          deplist)
@@ -551,7 +761,7 @@ index 3e6e243..303f190 100644
              return 0
              ;;
  
-@@ -153,15 +149,21 @@ _yum()
+@@ -153,15 +249,21 @@ _yum()
              case $prev in
                  history)
                      COMPREPLY=( $( compgen -W 'info list summary undo redo
@@ -575,7 +785,7 @@ index 3e6e243..303f190 100644
              return 0
              ;;
  
-@@ -171,11 +173,8 @@ _yum()
+@@ -171,11 +273,8 @@ _yum()
              ;;
  
          install)
@@ -589,7 +799,7 @@ index 3e6e243..303f190 100644
              return 0
              ;;
  
-@@ -207,11 +206,8 @@ _yum()
+@@ -207,11 +306,8 @@ _yum()
              ;;
  
          update|upgrade)
@@ -603,8 +813,104 @@ index 3e6e243..303f190 100644
              return 0
              ;;
          version)
+@@ -223,93 +319,9 @@ _yum()
+             ;;
+     esac
+ 
+-    local split=false
+-    type _split_longopt &>/dev/null && _split_longopt && split=true
+-
+-    case $prev in
+-
+-        -d|--debuglevel|-e|--errorlevel)
+-            COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        --rpmverbosity)
+-            COMPREPLY=( $( compgen -W 'info critical emergency error warn
+-                debug' -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        -c|--config)
+-            COMPREPLY=( $( compgen -f -o plusdirs -X "!*.conf" -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        --installroot|--downloaddir)
+-            COMPREPLY=( $( compgen -d -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        --enablerepo)
+-            _yum_repolist disabled "$cur"
+-            return 0
+-            ;;
+-
+-        --disablerepo)
+-            _yum_repolist enabled "$cur"
+-            return 0
+-            ;;
+-
+-        --disableexcludes)
+-            _yum_repolist all "$cur"
+-            COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all main' -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        --enableplugin)
+-            _yum_plugins 0 "$cur"
+-            return 0
+-            ;;
+-
+-        --disableplugin)
+-            _yum_plugins 1 "$cur"
+-            return 0
+-            ;;
+-
+-        --color)
+-            COMPREPLY=( $( compgen -W 'always auto never' -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        -R|--randomwait|-x|--exclude|-h|--help|--version|--releasever|--cve|\
+-        --bz|--advisory|--tmprepo|--verify-filenames|--setopt)
+-            return 0
+-            ;;
+-
+-        --download-order)
+-            COMPREPLY=( $( compgen -W 'default smallestfirst largestfirst' \
+-                -- "$cur" ) )
+-            return 0
+-            ;;
+-
+-        --override-protection)
+-            _yum_list installed "$cur"
+-            return 0
+-            ;;
+-
+-        --verify-configuration-files)
+-            COMPREPLY=( $( compgen -W '1 0' -- "$cur" ) )
+-            return 0
+-            ;;
+-    esac
+-
+-    $split && return 0
++    _yum_complete_baseopts "$cur" "$prev" && return 0
+ 
+-    COMPREPLY=( $( compgen -W '--help --tolerant --cacheonly --config
+-        --randomwait --debuglevel --showduplicates --errorlevel --rpmverbosity
+-        --quiet --verbose --assumeyes --version --installroot --enablerepo
+-        --disablerepo --exclude --disableexcludes --obsoletes --noplugins
+-        --nogpgcheck --disableplugin --enableplugin --skip-broken --color
+-        --releasever --setopt ${cmds[@]}' -- "$cur" ) )
++    COMPREPLY=( $( compgen -W '$( _yum_baseopts ) ${cmds[@]}' -- "$cur" ) )
+ } &&
+ complete -F _yum -o filenames yum yummain.py
+ 
 diff --git a/output.py b/output.py
-index 3a90995..983924a 100755
+index 3a90995..b1d92e5 100755
 --- a/output.py
 +++ b/output.py
 @@ -43,6 +43,8 @@ from yum.rpmtrans import RPMBaseCallback
@@ -616,7 +922,32 @@ index 3a90995..983924a 100755
  from yum.i18n import utf8_width, utf8_width_fill, utf8_text_fill
  
  def _term_width():
-@@ -1317,6 +1319,9 @@ to exit.
+@@ -782,6 +784,8 @@ class YumOutput:
+             pkg_names2pkgs = self._group_names2aipkgs(group.packages)
+         if group.ui_description:
+             print _(' Description: %s') % to_unicode(group.ui_description)
++        if group.langonly:
++            print _(' Language: %s') % group.langonly
+ 
+         sections = ((_(' Mandatory Packages:'),   group.mandatory_packages),
+                     (_(' Default Packages:'),     group.default_packages),
+@@ -1224,12 +1228,15 @@ Downgrade %5.5s Package(s)
+     def setupKeyImportCallbacks(self):
+         confirm_func = self._cli_confirm_gpg_key_import
+         gpg_import_func = self.getKeyForRepo
++        gpgca_import_func = self.getCAKeyForRepo
+         if hasattr(self, 'prerepoconf'):
+             self.prerepoconf.confirm_func = confirm_func
+             self.prerepoconf.gpg_import_func = gpg_import_func
++            self.prerepoconf.gpgca_import_func = gpgca_import_func
+         else:
+             self.repos.confirm_func = confirm_func
+             self.repos.gpg_import_func = gpg_import_func
++            self.repos.gpgca_import_func = gpgca_import_func
+ 
+     def interrupt_callback(self, cbobj):
+         '''Handle CTRL-C's during downloads
+@@ -1317,6 +1324,9 @@ to exit.
          return count, "".join(list(actions))
  
      def _pwd_ui_username(self, uid, limit=None):
@@ -626,7 +957,71 @@ index 3a90995..983924a 100755
          # loginuid is set to      -1 (0xFFFF_FFFF) on init, in newer kernels.
          # loginuid is set to INT_MAX (0x7FFF_FFFF) on init, in older kernels.
          if uid is None or uid in (0xFFFFFFFF, 0x7FFFFFFF):
-@@ -1378,7 +1383,7 @@ to exit.
+@@ -1346,7 +1356,52 @@ to exit.
+         except KeyError:
+             return to_unicode(str(uid))
+ 
++    @staticmethod
++    def _historyRangeRTIDs(old, tid):
++        ''' Convert a user "TID" string of 2..4 into: (2, 4). '''
++        def str2int(x):
++            try:
++                return int(x)
++            except ValueError:
++                return None
++
++        if '..' not in tid:
++            return None
++        btid, etid = tid.split('..', 2)
++        btid = str2int(btid)
++        if btid > old.tid:
++            return None
++        elif btid <= 0:
++            return None
++        etid = str2int(etid)
++        if etid > old.tid:
++            return None
++
++        # Have a range ... do a "merged" transaction.
++        if btid > etid:
++            btid, etid = etid, btid
++        return (btid, etid)
++
++    def _historyRangeTIDs(self, rtids):
++        ''' Convert a list of ranged tid typles into all the tids needed, Eg.
++            [(2,4), (6,8)] == [2, 3, 4, 6, 7, 8]. '''
++        tids = set()
++        last_end = -1 # This just makes displaying it easier...
++        for mtid in sorted(rtids):
++            if mtid[0] < last_end:
++                self.logger.warn(_('Skipping merged transaction %d to %d, as it overlaps' % (mtid[0], mtid[1])))
++                continue # Don't do overlapping
++            last_end = mtid[1]
++            for num in range(mtid[0], mtid[1] + 1):
++                tids.add(num)
++        return tids
++
+     def _history_list_transactions(self, extcmds):
++        old = self.history.last()
++        if old is None:
++            self.logger.critical(_('No transactions'))
++            return None, None
++
+         tids = set()
+         pats = []
+         usertids = extcmds[1:]
+@@ -1360,6 +1415,10 @@ to exit.
+                 int(tid)
+                 tids.add(tid)
+             except ValueError:
++                rtid = self._historyRangeRTIDs(old, tid)
++                if rtid:
++                    tids.update(self._historyRangeTIDs([rtid]))
++                    continue
+                 pats.append(tid)
+         if pats:
+             tids.update(self.history.search(pats))
+@@ -1378,7 +1437,7 @@ to exit.
  
          fmt = "%s | %s | %s | %s | %s"
          print fmt % (utf8_width_fill(_("ID"), 6, 6),
@@ -635,7 +1030,7 @@ index 3a90995..983924a 100755
                       utf8_width_fill(_("Date and time"), 16, 16),
                       utf8_width_fill(_("Action(s)"), 14, 14),
                       utf8_width_fill(_("Altered"), 7, 7))
-@@ -1393,11 +1398,11 @@ to exit.
+@@ -1393,11 +1452,11 @@ to exit.
                  break
  
              done += 1
@@ -649,7 +1044,7 @@ index 3a90995..983924a 100755
              uiacts = utf8_width_fill(uiacts, 14, 14)
              rmark = lmark = ' '
              if old.return_code is None:
-@@ -1471,21 +1476,60 @@ to exit.
+@@ -1471,21 +1530,41 @@ to exit.
          return old[0]
  
      def historyInfoCmd(self, extcmds):
@@ -673,22 +1068,10 @@ index 3a90995..983924a 100755
 -                tids.add(tid)
 -            except ValueError:
 -                pats.append(tid)
-+            if '..' in tid:
-+                btid, etid = tid.split('..', 2)
-+                btid = str2int(btid)
-+                if btid > old.tid:
-+                    btid = None
-+                elif btid <= 0:
-+                    btid = None
-+                etid = str2int(etid)
-+                if etid > old.tid:
-+                    etid = None
-+                if btid is not None and etid is not None:
-+                    # Have a range ... do a "merged" transaction.
-+                    if btid > etid:
-+                        btid, etid = etid, btid
-+                    mtids.add((btid, etid))
-+                    continue
++            if self._historyRangeRTIDs(old, tid):
++                # Have a range ... do a "merged" transaction.
++                mtids.add(self._historyRangeRTIDs(old, tid))
++                continue
 +            elif str2int(tid) is not None:
 +                tids.add(str2int(tid))
 +                continue
@@ -698,14 +1081,7 @@ index 3a90995..983924a 100755
 +        utids = tids.copy()
 +        if mtids:
 +            mtids = sorted(mtids)
-+            last_end = -1 # This just makes displaying it easier...
-+            for mtid in mtids:
-+                if mtid[0] < last_end:
-+                    self.logger.warn(_('Skipping merged transaction %d to %d, as it overlaps', mtid[0], mtid[1]))
-+                    continue # Don't do overlapping
-+                last_end = mtid[1]
-+                for num in range(mtid[0], mtid[1] + 1):
-+                    tids.add(num)
++            tids.update(self._historyRangeTIDs(mtids))
  
          if not tids and len(extcmds) < 2:
              old = self.history.last(complete_transactions_only=False)
@@ -715,7 +1091,7 @@ index 3a90995..983924a 100755
  
          if not tids:
              self.logger.critical(_('No transaction ID, or package, given'))
-@@ -1497,6 +1541,10 @@ to exit.
+@@ -1497,6 +1576,10 @@ to exit.
              lastdbv = lastdbv.end_rpmdbversion
  
          done = False
@@ -726,7 +1102,7 @@ index 3a90995..983924a 100755
          for tid in self.history.old(tids):
              if lastdbv is not None and tid.tid == lasttid:
                  #  If this is the last transaction, is good and it doesn't
-@@ -1506,10 +1554,35 @@ to exit.
+@@ -1506,10 +1589,35 @@ to exit.
                      tid.altered_gt_rpmdb = True
              lastdbv = None
  
@@ -764,7 +1140,7 @@ index 3a90995..983924a 100755
  
      def _historyInfoCmd(self, old, pats=[]):
          name = self._pwd_ui_username(old.loginuid)
-@@ -1549,7 +1622,10 @@ to exit.
+@@ -1549,7 +1657,10 @@ to exit.
              state = utf8_width_fill(state, _pkg_states['maxlen'])
              print "%s%s%s%s %s" % (prefix, hibeg, state, hiend, hpkg)
  
@@ -776,7 +1152,7 @@ index 3a90995..983924a 100755
          begtm = time.ctime(old.beg_timestamp)
          print _("Begin time     :"), begtm
          if old.beg_rpmdbversion is not None:
-@@ -1570,15 +1646,34 @@ to exit.
+@@ -1570,15 +1681,34 @@ to exit.
                          break
                      sofar += len(begtms[i]) + 1
                  endtm = (' ' * sofar) + endtm[sofar:]
@@ -814,7 +1190,7 @@ index 3a90995..983924a 100755
              print _("Return-Code    :"), "**", _("Aborted"), "**"
          elif old.return_code:
              print _("Return-Code    :"), _("Failure:"), old.return_code
-@@ -1586,16 +1681,21 @@ to exit.
+@@ -1586,16 +1716,21 @@ to exit.
              print _("Return-Code    :"), _("Success")
              
          if old.cmdline is not None:
@@ -845,7 +1221,7 @@ index 3a90995..983924a 100755
  
          print _("Transaction performed with:")
          for hpkg in old.trans_with:
-@@ -1629,23 +1729,24 @@ to exit.
+@@ -1629,23 +1764,24 @@ to exit.
                  num += 1
                  print "%4d" % num, line
  
@@ -882,7 +1258,7 @@ index 3a90995..983924a 100755
          maxlen = 0
          for hpkg in old.trans_data:
              uistate = all_uistates.get(hpkg.state, hpkg.state)
-@@ -1754,13 +1855,14 @@ to exit.
+@@ -1754,13 +1890,14 @@ to exit.
          tid = None
          if len(extcmds) > 1:
              tid = extcmds[1]
@@ -904,7 +1280,7 @@ index 3a90995..983924a 100755
  
          if tid is not None:
              old = self.history.old(tids=[tid])
-@@ -1794,6 +1896,90 @@ to exit.
+@@ -1794,6 +1931,90 @@ to exit.
  
              print ''
  
@@ -995,7 +1371,7 @@ index 3a90995..983924a 100755
  
  
  class DepSolveProgressCallBack:
-@@ -1807,15 +1993,17 @@ class DepSolveProgressCallBack:
+@@ -1807,15 +2028,17 @@ class DepSolveProgressCallBack:
  
      def pkgAdded(self, pkgtup, mode):
          modedict = { 'i': _('installed'),
@@ -1017,7 +1393,7 @@ index 3a90995..983924a 100755
              modeterm)
          
      def start(self):
-@@ -1882,10 +2070,12 @@ class DepSolveProgressCallBack:
+@@ -1882,10 +2105,12 @@ class DepSolveProgressCallBack:
                  msg += _('\n        Not found')
              return msg
  
@@ -1033,7 +1409,7 @@ index 3a90995..983924a 100755
              action = _('Installed')
              rmed = yb.tsInfo.getMembersWithState(pkg.pkgtup, TS_REMOVE_STATES)
              if rmed:
-@@ -1901,21 +2091,40 @@ class DepSolveProgressCallBack:
+@@ -1901,21 +2126,40 @@ class DepSolveProgressCallBack:
                      if rtype not in relmap:
                          continue
                      nevr = (rpkg.name, rpkg.epoch, rpkg.version, rpkg.release)
@@ -1080,7 +1456,7 @@ index 3a90995..983924a 100755
          return msg
      
      def procConflict(self, name, confname):
-@@ -1970,7 +2179,7 @@ def _pkgname_ui(ayum, pkgname, ts_states=None):
+@@ -1970,7 +2214,7 @@ def _pkgname_ui(ayum, pkgname, ts_states=None):
      if ts_states is None:
          #  Note 'd' is a placeholder for downgrade, and
          # 'r' is a placeholder for reinstall. Neither exist atm.
@@ -1089,7 +1465,7 @@ index 3a90995..983924a 100755
  
      matches = []
      def _cond_add(po):
-@@ -2030,7 +2239,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+@@ -2030,13 +2274,22 @@ class YumCliRPMCallBack(RPMBaseCallback):
  
      #  Installing things have pkg objects passed to the events, so only need to
      # lookup for erased/obsoleted.
@@ -1098,6 +1474,57 @@ index 3a90995..983924a 100755
          """ Get more information on a simple pkgname, if we can. """
          return _pkgname_ui(self.ayum, pkgname, ts_states)
  
+     def event(self, package, action, te_current, te_total, ts_current, ts_total):
+         # this is where a progress bar would be called
+         process = self.action[action]
++
++        if not hasattr(self, '_max_action_wid'):
++            wid1 = 0
++            for val in self.action.values():
++                wid_val = utf8_width(val)
++                if wid1 < wid_val:
++                    wid1 = wid_val
++            self._max_action_wid = wid1
++        wid1 = self._max_action_wid
+         
+         if type(package) not in types.StringTypes:
+             pkgname = str(package)
+@@ -2051,7 +2304,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+         
+         if self.output and (sys.stdout.isatty() or te_current == te_total):
+             (fmt, wid1, wid2) = self._makefmt(percent, ts_current, ts_total,
+-                                              pkgname=pkgname)
++                                              pkgname=pkgname, wid1=wid1)
+             msg = fmt % (utf8_width_fill(process, wid1, wid1),
+                          utf8_width_fill(pkgname, wid2, wid2))
+             if msg != self.lastmsg:
+@@ -2067,7 +2320,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+             sys.stdout.flush()
+ 
+     def _makefmt(self, percent, ts_current, ts_total, progress = True,
+-                 pkgname=None):
++                 pkgname=None, wid1=15):
+         l = len(str(ts_total))
+         size = "%s.%s" % (l, l)
+         fmt_done = "%" + size + "s/%" + size + "s"
+@@ -2081,7 +2334,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+             pnl = utf8_width(pkgname)
+ 
+         overhead  = (2 * l) + 2 # Length of done, above
+-        overhead += 19          # Length of begining
++        overhead +=  2+ wid1 +2 # Length of begining ("  " action " :")
+         overhead +=  1          # Space between pn and done
+         overhead +=  2          # Ends for progress
+         overhead +=  1          # Space for end
+@@ -2112,7 +2365,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
+             bar = fmt_bar % (self.mark * marks, )
+             fmt = "  %s: %s " + bar + " " + done
+             wid2 = pnl
+-        return fmt, 15, wid2
++        return fmt, wid1, wid2
+ 
+ 
+ def progressbar(current, total, name=None):
 diff --git a/po/es.po b/po/es.po
 index 4ac1f0a..0d6fc4d 100644
 --- a/po/es.po
@@ -8398,7 +8825,7 @@ index 7fecb6d..13d9063 100644
  #~ msgstr "%s rend obsolète %s"
  
 diff --git a/po/it.po b/po/it.po
-index 7d8e38d..bf8dd3a 100644
+index 7d8e38d..eda80af 100644
 --- a/po/it.po
 +++ b/po/it.po
 @@ -2,8 +2,8 @@
@@ -8412,16 +8839,20 @@ index 7d8e38d..bf8dd3a 100644
  # Silvio Pierro <perplesso82 at gmail.com>, 2008.
  # Gianluca Busiello <busiello at ceinge.unina.it>, 2008.
  # mario_santagiuliana <mario at marionline.it>, 2009.
-@@ -12,7 +12,7 @@ msgid ""
+@@ -12,17 +12,17 @@ msgid ""
  msgstr ""
  "Project-Id-Version: yum-it 3.2.8\n"
  "Report-Msgid-Bugs-To: \n"
 -"POT-Creation-Date: 2010-02-11 10:54-0500\n"
+-"PO-Revision-Date: 2001-02-17 02:12+0100\n"
 +"POT-Creation-Date: 2010-08-17 10:15-0400\n"
- "PO-Revision-Date: 2001-02-17 02:12+0100\n"
++"PO-Revision-Date: 2010-11-12 18:16+0100\n"
  "Last-Translator: Guido Grazioli <guido.grazioli at gmail.com>\n"
- "Language-Team: Italian <fedora-trans-it at redhat.com>\n"
-@@ -22,7 +22,7 @@ msgstr ""
+-"Language-Team: Italian <fedora-trans-it at redhat.com>\n"
++"Language-Team: Italian <trans-it at lists.fedoraproject.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
  "X-Generator: Lokalize 0.3\n"
  
@@ -9035,17 +9466,19 @@ index 7d8e38d..bf8dd3a 100644
  
  #: ../output.py:305
  msgid "Jan"
-@@ -566,104 +587,114 @@ msgstr "Dic"
+@@ -566,104 +587,116 @@ msgstr "Dic"
  msgid "Trying other mirror."
  msgstr "Connessione ad un altro mirror in corso."
  
 -#: ../output.py:534
++# occhio alla formattazione con gli spazi in tutte le voci sotto, è il
++# riepilogo degli attributi di un pacchetto
 +#: ../output.py:579
  #, python-format
 -msgid "Name       : %s%s%s"
 -msgstr "Nome       : %s%s%s"
 +msgid "Name        : %s%s%s"
-+msgstr "Nome : %s%s%s"
++msgstr "Nome         : %s%s%s"
  
 -#: ../output.py:535
 +#: ../output.py:580
@@ -9053,7 +9486,7 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Arch       : %s"
 -msgstr "Arch       : %s"
 +msgid "Arch        : %s"
-+msgstr "Arch : %s"
++msgstr "Arch         : %s"
  
 -#: ../output.py:537
 +#: ../output.py:582
@@ -9061,7 +9494,7 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Epoch      : %s"
 -msgstr "Epoch      : %s"
 +msgid "Epoch       : %s"
-+msgstr "Epoch : %s"
++msgstr "Epoch        : %s"
  
 -#: ../output.py:538
 +#: ../output.py:583
@@ -9069,7 +9502,7 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Version    : %s"
 -msgstr "Versione   : %s"
 +msgid "Version     : %s"
-+msgstr "Versione : %s"
++msgstr "Versione     : %s"
  
 -#: ../output.py:539
 +#: ../output.py:584
@@ -9077,14 +9510,15 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Release    : %s"
 -msgstr "Rilascio   : %s"
 +msgid "Release     : %s"
-+msgstr "Rilascio : %s"
++msgstr "Rilascio     : %s"
  
 -#: ../output.py:540
 +#: ../output.py:585
  #, python-format
 -msgid "Size       : %s"
+-msgstr "Dimensione : %s"
 +msgid "Size        : %s"
- msgstr "Dimensione : %s"
++msgstr "Dimensione   : %s"
  
 -#: ../output.py:541
 +#: ../output.py:586 ../output.py:890
@@ -9092,7 +9526,7 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Repo       : %s"
 -msgstr "Repo       : %s"
 +msgid "Repo        : %s"
-+msgstr "Repo        : %s"
++msgstr "Repo         : %s"
  
 -#: ../output.py:543
 +#: ../output.py:588
@@ -9100,14 +9534,15 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "From repo  : %s"
 -msgstr "Dal repo   : %s"
 +msgid "From repo   : %s"
-+msgstr "Dal repo  : %s"
++msgstr "Dal repo     : %s"
  
 -#: ../output.py:545
 +#: ../output.py:590
  #, python-format
 -msgid "Committer  : %s"
+-msgstr "Committer  : %s"
 +msgid "Committer   : %s"
- msgstr "Committer  : %s"
++msgstr "Committer    : %s"
  
 -#: ../output.py:546
 +#: ../output.py:591
@@ -9115,14 +9550,15 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Committime : %s"
 -msgstr "Data commit: %s"
 +msgid "Committime  : %s"
-+msgstr "Data commit : %s"
++msgstr "Data commit  : %s"
  
 -#: ../output.py:547
 +#: ../output.py:592
  #, python-format
 -msgid "Buildtime  : %s"
+-msgstr "Data build : %s"
 +msgid "Buildtime   : %s"
- msgstr "Data build : %s"
++msgstr "Data build   : %s"
  
 -#: ../output.py:549
 +#: ../output.py:594
@@ -9130,7 +9566,7 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "Installtime: %s"
 -msgstr "Data inst. : %s"
 +msgid "Install time: %s"
-+msgstr "Data inst.: %s"
++msgstr "Data inst.   : %s"
  
 -#: ../output.py:550
 -msgid "Summary    : "
@@ -9146,14 +9582,14 @@ index 7d8e38d..bf8dd3a 100644
 -msgid "URL        : %s"
 -msgstr "URL        : %s"
 +msgid "Changed by  : %s"
-+msgstr "Modificato da : %s"
++msgstr "Modificato da: %s"
  
 -#: ../output.py:553
 -msgid "License    : "
 -msgstr "Licenza    : "
 +#: ../output.py:610
 +msgid "Summary     : "
-+msgstr "Sommario: "
++msgstr "Sommario     : "
  
 -#: ../output.py:554
 -msgid "Description: "
@@ -9161,17 +9597,17 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../output.py:612 ../output.py:903
 +#, python-format
 +msgid "URL         : %s"
-+msgstr "URL         : %s"
- 
--#: ../output.py:622
++msgstr "URL          : %s"
++
 +#: ../output.py:613
 +msgid "License     : "
-+msgstr "Licenza: "
++msgstr "Licenza      : "
 +
 +#: ../output.py:614 ../output.py:900
 +msgid "Description : "
-+msgstr "Descrizione : "
-+
++msgstr "Descrizione  : "
+ 
+-#: ../output.py:622
 +#: ../output.py:682
  msgid "y"
  msgstr "s"
@@ -9201,7 +9637,7 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "\n"
-@@ -672,152 +703,145 @@ msgstr ""
+@@ -672,152 +705,145 @@ msgstr ""
  "\n"
  "Gruppo: %s"
  
@@ -9393,7 +9829,7 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "\n"
-@@ -828,52 +852,57 @@ msgstr ""
+@@ -828,52 +854,57 @@ msgstr ""
  "Riepilogo della transazione\n"
  "%s\n"
  
@@ -9474,7 +9910,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "two"
  msgstr "due"
  
-@@ -881,290 +910,350 @@ msgstr "due"
+@@ -881,299 +912,359 @@ msgstr "due"
  #. Current download cancelled, interrupt (ctrl-c) again within two seconds
  #. to exit.
  #. Where "interupt (ctrl-c) again" and "two" are highlighted.
@@ -9489,7 +9925,8 @@ index 7d8e38d..bf8dd3a 100644
  "to exit.\n"
  msgstr ""
  "\n"
- " Download interrotto, %spremi nuovamente (ctrl-c)%s entro %s%s%s secondi per "
+-" Download interrotto, %spremi nuovamente (ctrl-c)%s entro %s%s%s secondi per "
++" Download interrotto, %spremi nuovamente (ctrl-c)%s entro %s%s%s secondi\nper "
  "uscire.\n"
  
 -#: ../output.py:1162
@@ -9900,16 +10337,18 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "\n"
-@@ -1173,7 +1262,7 @@ msgstr ""
+ "    Requires: %s"
+ msgstr ""
  "\n"
- "    richiede: %s"
+-"    richiede: %s"
++"    Richiede: %s"
  
 -#: ../output.py:1649 ../output.py:1660
 +#: ../output.py:1875
  #, python-format
  msgid ""
  "\n"
-@@ -1182,83 +1271,106 @@ msgstr ""
+@@ -1182,83 +1273,106 @@ msgstr ""
  "\n"
  "    %s: %s (%s)"
  
@@ -9921,7 +10360,7 @@ index 7d8e38d..bf8dd3a 100644
 +"        %s"
 +msgstr ""
 +"\n"
-+" %s"
++"        %s"
 +
 +#: ../output.py:1882
 +msgid ""
@@ -9929,7 +10368,7 @@ index 7d8e38d..bf8dd3a 100644
 +"        Not found"
 +msgstr ""
 +"\n"
-+" Non trovato"
++"        Non trovato"
 +
 +#. These should be the only three things we care about:
 +#: ../output.py:1897
@@ -9952,7 +10391,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../output.py:1944 ../output.py:1949
  #, python-format
  msgid "--> Processing Conflict: %s conflicts %s"
- msgstr "--> Controllo conflitto: %s va in conflitto con %s"
+-msgstr "--> Controllo conflitto: %s va in conflitto con %s"
++msgstr "--> Analisi conflitto: %s va in conflitto con %s"
  
 -#: ../output.py:1674
 +#: ../output.py:1953
@@ -9968,7 +10408,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "---> Downloading header for %s to pack into transaction set."
 -msgstr "---> Download degli header per %s per impacchettarli nel set di transazione."
 +msgstr ""
-+"---> Download degli header per %s per impacchettarli nel set di transazione."
++"---> Download dell'header per includere %s nel set di transazione."
  
 -#: ../utils.py:93
 +#: ../utils.py:94
@@ -9993,7 +10433,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../utils.py:97
 +#: ../utils.py:98
  msgid "Traced/Stopped"
- msgstr "Tracciato/Arrestato"
+-msgstr "Tracciato/Arrestato"
++msgstr "Traced/Interrotto"
  
 -#: ../utils.py:98 ../yumcommands.py:917
 +#: ../utils.py:99 ../yumcommands.py:972
@@ -10044,7 +10485,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid ""
  "\n"
  "\n"
-@@ -1268,7 +1380,7 @@ msgstr ""
+@@ -1268,7 +1382,7 @@ msgstr ""
  "\n"
  "Uscita forzata da utente"
  
@@ -10053,7 +10494,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid ""
  "\n"
  "\n"
-@@ -1278,7 +1390,7 @@ msgstr ""
+@@ -1278,7 +1392,7 @@ msgstr ""
  "\n"
  "Uscita per broken pipe"
  
@@ -10062,7 +10503,7 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "\n"
-@@ -1289,7 +1401,51 @@ msgstr ""
+@@ -1289,7 +1403,51 @@ msgstr ""
  "\n"
  "%s"
  
@@ -10115,7 +10556,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "Complete!"
  msgstr "Completo!"
  
-@@ -1301,7 +1457,8 @@ msgstr "Occorre avere i privilegi di root per eseguire questo comando."
+@@ -1301,7 +1459,8 @@ msgstr "Occorre avere i privilegi di root per eseguire questo comando."
  msgid ""
  "\n"
  "You have enabled checking of packages via GPG keys. This is a good thing. \n"
@@ -10125,19 +10566,26 @@ index 7d8e38d..bf8dd3a 100644
  "the keys for packages you wish to install and install them.\n"
  "You can do that by running the command:\n"
  "    rpm --import public.gpg.key\n"
-@@ -1314,8 +1471,10 @@ msgid ""
+@@ -1314,16 +1473,16 @@ msgid ""
  "For more information contact your distribution or package provider.\n"
  msgstr ""
  "\n"
 -"Il controllo dei pacchetti via chiavi GPG è abilitato. Questa è una buona cosa.\n"
--"Tuttavia, non ci sono chiavi pubbliche GPG installate: è necessario scaricare\n"
-+"Il controllo dei pacchetti via chiavi GPG è abilitato. Questa è una buona "
-+"cosa.\n"
-+"Tuttavia, non ci sono chiavi pubbliche GPG installate: è necessario "
-+"scaricare\n"
- "le chiavi dei repository che si desidera utilizzare ed installarle.\n"
++"Il controllo dei pacchetti via chiavi GPG è abilitato. Ottima scelta.\n"
+ "Tuttavia, non ci sono chiavi pubbliche GPG installate: è necessario scaricare\n"
+-"le chiavi dei repository che si desidera utilizzare ed installarle.\n"
++"installare le chiavi dei repository che si desidera utilizzare.\n"
  "Per importare una chiave pubblica GPG eseguire il comando:\n"
  "    rpm --import public.gpg.key\n"
+ "\n"
+ "\n"
+ "In alternativa è possibile specificare gli indirizzi delle chiavi dei\n"
+ "repository nell'opzione 'gpgkey' dei relativi file di configurazione; yum\n"
+-"la installerà automaticamente.\n"
++"le installerà automaticamente.\n"
+ "\n"
+ "Per altre informazioni contattare il supporto della distribuzione.\n"
+ 
 @@ -1368,296 +1527,315 @@ msgstr "Il file %s dato come argomento per la shell non esiste."
  msgid "Error: more than one file given as argument to shell."
  msgstr "Errore: più di un file passato come argomento alla shell."
@@ -10150,7 +10598,7 @@ index 7d8e38d..bf8dd3a 100644
 +" You can enable repos with yum-config-manager --enable <repo>"
 +msgstr ""
 +"Non ci sono repository abilitati.\n"
-+" Esegui \"yum repolist all\" per vedere la lista dei repository.\n"
++" Eseguire \"yum repolist all\" per vedere la lista dei repository.\n"
 +" E' possibile abilitare i repository desiderati con yum-config-manager --"
 +"enable <repo>"
 +
@@ -10190,7 +10638,7 @@ index 7d8e38d..bf8dd3a 100644
 +
 +#: ../yumcommands.py:245
 +msgid "Setting up Distribution Synchronization Process"
-+msgstr "Impostazione processo di DIstribution Synchronization"
++msgstr "Impostazione processo di Distribution Synchronization"
 +
 +#: ../yumcommands.py:288
  msgid "Display details about a package or group of packages"
@@ -10354,7 +10802,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yumcommands.py:696
 +#: ../yumcommands.py:751
  msgid "Searching Packages for Dependency:"
- msgstr "Ricerca dei pacchetti per dipendenze:"
+-msgstr "Ricerca dei pacchetti per dipendenze:"
++msgstr "Ricerca dei pacchetti per le dipendenze:"
  
 -#: ../yumcommands.py:710
 +#: ../yumcommands.py:765
@@ -10787,7 +11236,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "Cannot find an update path for dep for: %s"
 -msgstr "Impossibile trovare un percorso di aggiornamento per dipendenze per: %s"
 +msgstr ""
-+"Impossibile trovare un percorso di aggiornamento per dipendenze per: %s"
++"Impossibile trovare un percorso di aggiornamento delle dipendenze per: %s"
  
 -#: ../yum/depsolve.py:449
 +#: ../yum/depsolve.py:435
@@ -10808,7 +11257,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "Potential resolving package %s has newer instance in ts."
 -msgstr "Potenziale risoluzione del pacchetto %s ha una instanza più nuova in ts."
 +msgstr ""
-+"Potenziale risoluzione del pacchetto %s ha una instanza più nuova in ts."
++"Il potenziale pacchetto risolutore %s ha già una più recente istanza in ts."
  
 -#: ../yum/depsolve.py:518
 +#: ../yum/depsolve.py:504
@@ -10816,7 +11265,7 @@ index 7d8e38d..bf8dd3a 100644
  msgid "Potential resolving package %s has newer instance installed."
 -msgstr "Potenziale risoluzione del pacchetto %s ha una istanza più recente installata."
 +msgstr ""
-+"Potenziale risoluzione del pacchetto %s ha una istanza più recente "
++"Il potenziale pacchetto risolutore %s ha una più recente istanza già "
 +"installata."
  
 -#: ../yum/depsolve.py:536
@@ -10829,20 +11278,30 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/depsolve.py:571
  #, python-format
  msgid "TSINFO: Marking %s as update for %s"
- msgstr "TSINFO: %s marcato come update per %s"
+-msgstr "TSINFO: %s marcato come update per %s"
++msgstr "TSINFO: %s marcato come aggiornamento per %s"
  
 -#: ../yum/depsolve.py:586
 +#: ../yum/depsolve.py:580
  #, python-format
  msgid "TSINFO: Marking %s as install for %s"
- msgstr "TSINFO: %s marcato come installa per %s"
+-msgstr "TSINFO: %s marcato come installa per %s"
++msgstr "TSINFO: %s marcato come da installare per %s"
  
 -#: ../yum/depsolve.py:690 ../yum/depsolve.py:781
 +#: ../yum/depsolve.py:690 ../yum/depsolve.py:780
  msgid "Success - empty transaction"
  msgstr "Successo - transazione vuota"
  
-@@ -1939,36 +2094,36 @@ msgstr "Processo delle dipendenze terminato"
+@@ -1932,43 +2087,43 @@ msgstr "Riavvio del ciclo"
+ 
+ #: ../yum/depsolve.py:760
+ msgid "Dependency Process ending"
+-msgstr "Processo delle dipendenze terminato"
++msgstr "Elaborazione delle dipendenze terminata"
+ 
+ #: ../yum/depsolve.py:774
+ #, python-format
  msgid "%s from %s has depsolving problems"
  msgstr "%s appartenente a %s ha problemi di dipendenze"
  
@@ -10861,7 +11320,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/depsolve.py:888
  #, python-format
  msgid "looking for %s as a requirement of %s"
- msgstr "ricerca di %s come un requisito di %s"
+-msgstr "ricerca di %s come un requisito di %s"
++msgstr "ricerca di %s come requisito di %s"
  
 -#: ../yum/depsolve.py:1090
 +#: ../yum/depsolve.py:1119
@@ -10886,7 +11346,7 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "archdist compared %s to %s on %s\n"
-@@ -1977,138 +2132,166 @@ msgstr ""
+@@ -1977,226 +2132,284 @@ msgstr ""
  "archdist ha comparato %s a %s su %s\n"
  "  Vincitore: %s"
  
@@ -10938,19 +11398,20 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:453
 +#, python-format
 +msgid "Repository %r: Error parsing config: %s"
-+msgstr "Repository %r: errore nella lettura dela configurazione: %s"
++msgstr "Repository %r: errore nella lettura della configurazione: %s"
 +
 +#: ../yum/__init__.py:459
  #, python-format
  msgid "Repository %r is missing name in configuration, using id"
--msgstr ""
+ msgstr ""
 -"Nella configurazione non è presente il nome nel repo %r, uso dell'id"
-+msgstr "Nella configurazione non è presente il nome nel repo %r, uso dell'id"
++"Nella configurazione non è presente il nome del repo %r, viene usato l'id"
  
 -#: ../yum/__init__.py:462
 +#: ../yum/__init__.py:497
  msgid "plugins already initialised"
- msgstr "plugin già inizializzato"
+-msgstr "plugin già inizializzato"
++msgstr "plugin già inizializzati"
  
 -#: ../yum/__init__.py:469
 +#: ../yum/__init__.py:504
@@ -10975,13 +11436,15 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yum/__init__.py:554
 +#: ../yum/__init__.py:607
  msgid "Setting up Package Sacks"
- msgstr "Settaggio pacchetti sack"
+-msgstr "Settaggio pacchetti sack"
++msgstr "Impostazione dei Package Sack"
  
 -#: ../yum/__init__.py:599
 +#: ../yum/__init__.py:652
  #, python-format
  msgid "repo object for repo %s lacks a _resetSack method\n"
- msgstr "l'oggetto repo per il repository %s manca del metodo _resetSack\n"
+-msgstr "l'oggetto repo per il repository %s manca del metodo _resetSack\n"
++msgstr "l'oggetto repo per il repository %s non dispone del metodo _resetSack\n"
  
 -#: ../yum/__init__.py:600
 +#: ../yum/__init__.py:653
@@ -11012,13 +11475,15 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:760
  #, python-format
  msgid "Adding group file from repository: %s"
- msgstr "Aggiunta file di gruppo dal repository: %s"
+-msgstr "Aggiunta file di gruppo dal repository: %s"
++msgstr "Aggiunta file group dal repository: %s"
  
 -#: ../yum/__init__.py:712
 +#: ../yum/__init__.py:769
  #, python-format
  msgid "Failed to add groups file for repository: %s - %s"
- msgstr "Fallita l'aggiunta di file di gruppi per repository: %s - %s"
+-msgstr "Fallita l'aggiunta di file di gruppi per repository: %s - %s"
++msgstr "Errore durante l'aggiunta del file groups per il repository: %s - %s"
  
 -#: ../yum/__init__.py:718
 +#: ../yum/__init__.py:775
@@ -11041,7 +11506,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:806
  #, python-format
  msgid "Failed to add Pkg Tags for repository: %s - %s"
- msgstr "Errore aggiungendo i Pgg Tags per il repository: %s - %s"
+-msgstr "Errore aggiungendo i Pgg Tags per il repository: %s - %s"
++msgstr "Errore aggiungendo i Pkg Tags per il repository: %s - %s"
  
 -#: ../yum/__init__.py:827
 +#: ../yum/__init__.py:884
@@ -11062,13 +11528,13 @@ index 7d8e38d..bf8dd3a 100644
 +"There are unfinished transactions remaining. You might consider running yum-"
 +"complete-transaction first to finish them."
 +msgstr ""
-+"Ci sono transazioni non completate. Considerare di lanciare prima yum-"
++"Ci sono transazioni non completate. Si consiglia di eseguire prima yum-"
 +"complete-transaction per portarle a termine."
 +
 +#: ../yum/__init__.py:985
 +#, python-format
 +msgid "Trying to remove \"%s\", which is protected"
-+msgstr "Tentativo di reimozione di \"%s\", che è protetto"
++msgstr "Tentativo di rimozione di \"%s\", che è protetto"
  
  #. Kind of hacky
 -#: ../yum/__init__.py:922
@@ -11081,16 +11547,18 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:1101
  #, python-format
  msgid "Skip-broken took %i rounds "
- msgstr "Raggiunti %i cicli skip-broken"
+-msgstr "Raggiunti %i cicli skip-broken"
++msgstr "Raggiunti %i cicli di skip-broken "
  
 -#: ../yum/__init__.py:976
 +#: ../yum/__init__.py:1102
  msgid ""
  "\n"
  "Packages skipped because of dependency problems:"
-@@ -2116,87 +2299,116 @@ msgstr ""
+ msgstr ""
  "\n"
- "Pacchetti ignorati a causa di problemi di dipendenza:"
+-"Pacchetti ignorati a causa di problemi di dipendenza:"
++"Pacchetti ignorati a causa di problemi di dipendenze:"
  
 -#: ../yum/__init__.py:980
 +#: ../yum/__init__.py:1106
@@ -11128,8 +11596,8 @@ index 7d8e38d..bf8dd3a 100644
 +msgid ""
 +"Warning: scriptlet or other non-fatal errors occurred during transaction."
 +msgstr ""
-+"Attenzione: errori in scriptlet o altri errori non fatali sono avvenuti "
-+"durante la transazione."
++"Attenzione: durante la transazione si sono verificati errori di scriptlet "
++"o altri errori non fatali."
 +
 +#: ../yum/__init__.py:1376
 +msgid "Transaction couldn't start:"
@@ -11203,7 +11671,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yum/__init__.py:1486
 +#: ../yum/__init__.py:1714
  msgid "Could not perform checksum"
- msgstr "Non è possibile calcolare il checksum"
+-msgstr "Non è possibile calcolare il checksum"
++msgstr "Non è stato possibile calcolare il checksum"
  
 -#: ../yum/__init__.py:1489
 +#: ../yum/__init__.py:1717
@@ -11227,7 +11696,7 @@ index 7d8e38d..bf8dd3a 100644
  #, python-format
  msgid ""
  "Insufficient space in download directory %s\n"
-@@ -2207,455 +2419,542 @@ msgstr ""
+@@ -2207,455 +2420,542 @@ msgstr ""
  "    * libero     %s\n"
  "    * necessario %s"
  
@@ -11311,7 +11780,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:2139
  #, python-format
  msgid "Nothing matches %s.%s %s:%s-%s from update"
- msgstr "Nessuna corrispondenza %s.%s %s:%s-%s dall'aggiornamento"
+-msgstr "Nessuna corrispondenza %s.%s %s:%s-%s dall'aggiornamento"
++msgstr "Nessuna corrispondenza per %s.%s %s:%s-%s dall'aggiornamento"
  
 -#: ../yum/__init__.py:2180
 -msgid "searchPackages() will go away in a future version of Yum.                      Use searchGenerator() instead. \n"
@@ -11334,7 +11804,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:2476
  #, python-format
  msgid "searching package %s"
- msgstr "Ricerca del pacchetto %s"
+-msgstr "Ricerca del pacchetto %s"
++msgstr "ricerca del pacchetto %s"
  
 -#: ../yum/__init__.py:2235
 +#: ../yum/__init__.py:2488
@@ -11371,7 +11842,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:2639 ../yum/__init__.py:2766
  #, python-format
  msgid "package %s was not marked in group %s"
- msgstr "Il pacchetto %s non è stato marcato nel gruppo %s"
+-msgstr "Il pacchetto %s non è stato marcato nel gruppo %s"
++msgstr "il pacchetto %s non è stato contrassegnato nel gruppo %s"
  
 -#: ../yum/__init__.py:2433
 +#: ../yum/__init__.py:2686
@@ -11416,7 +11888,8 @@ index 7d8e38d..bf8dd3a 100644
 +
 +#: ../yum/__init__.py:3145
  msgid "Package Object was not a package object instance"
- msgstr "L'oggetto Package non era un'istanza dell'oggetto pacchetto"
+-msgstr "L'oggetto Package non era un'istanza dell'oggetto pacchetto"
++msgstr "Package Object non è un'istanza di un oggetto package"
  
 -#: ../yum/__init__.py:2859
 +#: ../yum/__init__.py:3149
@@ -11483,7 +11956,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:3307
  #, python-format
  msgid "Package %s already installed and latest version"
- msgstr "Il pacchetto %s è già aggiornato all'ultima versione"
+-msgstr "Il pacchetto %s è già aggiornato all'ultima versione"
++msgstr "Il pacchetto %s è già installato e aggiornato all'ultima versione"
  
 -#: ../yum/__init__.py:3023
 +#: ../yum/__init__.py:3321
@@ -11497,7 +11971,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yum/__init__.py:3126
 +#: ../yum/__init__.py:3424
  msgid "Updating Everything"
- msgstr "Aggiornamento sistema"
+-msgstr "Aggiornamento sistema"
++msgstr "Aggiornamento completo"
  
 -#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
 -#: ../yum/__init__.py:3315
@@ -11571,19 +12046,19 @@ index 7d8e38d..bf8dd3a 100644
 +msgstr ""
 +"Impossibile aggiungere il pacchetto %s alla transazione. Architettura non "
 +"compatibile: %s"
-+
+ 
+-#: ../yum/__init__.py:3431
 +#: ../yum/__init__.py:3766
-+#, python-format
+ #, python-format
+-msgid "Package %s not installed, cannot update it. Run yum install to install it instead."
+-msgstr "Non è possibile aggiornare il pacchetto %s perchè non è installato. Eseguire yum install per installarlo."
 +msgid "Cannot install package %s. It is obsoleted by installed package %s"
 +msgstr ""
 +"Impossibile installare il pacchetto %s. E' reso obsoleto dal pacchetto "
 +"installato %s"
- 
--#: ../yum/__init__.py:3431
++
 +#: ../yum/__init__.py:3774
- #, python-format
--msgid "Package %s not installed, cannot update it. Run yum install to install it instead."
--msgstr "Non è possibile aggiornare il pacchetto %s perchè non è installato. Eseguire yum install per installarlo."
++#, python-format
 +msgid ""
 +"Package %s not installed, cannot update it. Run yum install to install it "
 +"instead."
@@ -11681,7 +12156,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yum/__init__.py:3897
 +#: ../yum/__init__.py:4238
  msgid "GPG key retrieval failed: "
- msgstr "Recupero chiavi GPG fallito: "
+-msgstr "Recupero chiavi GPG fallito: "
++msgstr "Recupero chiave GPG fallito: "
  
 -#: ../yum/__init__.py:3903
 +#: ../yum/__init__.py:4244
@@ -11693,7 +12169,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/__init__.py:4253
  #, python-format
  msgid "GPG key parsing failed: key does not have value %s"
- msgstr "Analisi chiave GPG fallita: la chiave non ha valore %s"
+-msgstr "Analisi chiave GPG fallita: la chiave non ha valore %s"
++msgstr "Analisi chiave GPG fallita: la chiave non ha il valore %s"
  
 -#: ../yum/__init__.py:3944
 +#: ../yum/__init__.py:4267
@@ -11708,15 +12185,11 @@ index 7d8e38d..bf8dd3a 100644
 +msgstr ""
 +"Importazione chiave GPG 0x%s:\n"
 +" Id utente : %s\n"
-+"Pacchetto: %s (%s)\n"
-+" Da : %s"
- 
--#. Try installing/updating GPG key
--#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
++" Pacchetto : %s (%s)\n"
++" Da        : %s"
++
 +#: ../yum/__init__.py:4275
- #, python-format
--msgid "Importing GPG key 0x%s \"%s\" from %s"
--msgstr "Importazione chiave GPG 0x%s \"%s\" da %s"
++#, python-format
 +msgid ""
 +"Importing GPG key 0x%s:\n"
 +" Userid: \"%s\"\n"
@@ -11724,14 +12197,18 @@ index 7d8e38d..bf8dd3a 100644
 +msgstr ""
 +"Importazione chiave GPG 0x%s:\n"
 +" Id utente: \"%s\"\n"
-+" Da : %s"
++" Da       : %s"
  
--#: ../yum/__init__.py:3966
+-#. Try installing/updating GPG key
+-#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
 +#: ../yum/__init__.py:4307
-+#, python-format
+ #, python-format
+-msgid "Importing GPG key 0x%s \"%s\" from %s"
+-msgstr "Importazione chiave GPG 0x%s \"%s\" da %s"
 +msgid "GPG key at %s (0x%s) is already installed"
 +msgstr "Chiave GPG in %s (0x%s) già installata"
-+
+ 
+-#: ../yum/__init__.py:3966
 +#: ../yum/__init__.py:4326
  msgid "Not installing key"
  msgstr "Non installo le chiavi"
@@ -11760,7 +12237,7 @@ index 7d8e38d..bf8dd3a 100644
 -"Controllare che le URL delle chiavi di questo repository siano configurate correttamente."
 +"Le chiavi GPG elencate per il repository \"%s\" sono attualmente installate "
 +"ma non sono corrette per questo pacchetto.\n"
-+"Controllare che le URL delle chiavi di questo repository siano configurate "
++"Controllare che gli URL delle chiavi di questo repository siano configurati "
 +"correttamente."
  
 -#: ../yum/__init__.py:3987
@@ -11795,7 +12272,7 @@ index 7d8e38d..bf8dd3a 100644
 +msgstr ""
 +"Le chiavi GPG elencate per il repository \"%s\" sono attualmente installate "
 +"ma non sono corrette.\n"
-+"Controllare che le URL delle chiavi di questo repository siano configurate "
++"Controllare che gli URL delle chiavi di questo repository siano configurati "
 +"correttamente."
 +
 +#: ../yum/__init__.py:4521
@@ -11805,7 +12282,8 @@ index 7d8e38d..bf8dd3a 100644
 -#: ../yum/__init__.py:4159
 +#: ../yum/__init__.py:4523
  msgid "Errors were encountered while downloading packages."
- msgstr "Sono stati riscontrati degli errori durante il download dei pacchetti."
+-msgstr "Sono stati riscontrati degli errori durante il download dei pacchetti."
++msgstr "Si sono verificati degli errori durante il download dei pacchetti."
  
 -#: ../yum/__init__.py:4209
 +#: ../yum/__init__.py:4573
@@ -11840,7 +12318,8 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/plugins.py:258
  #, python-format
  msgid "Not loading \"%s\" plugin, as it is disabled"
- msgstr "Plugin \"%s\" non caricato, perchè è disabilitato"
+-msgstr "Plugin \"%s\" non caricato, perchè è disabilitato"
++msgstr "Il plugin \"%s\" non è stato caricato, perchè è disabilitato"
  
  #. Give full backtrace:
 -#: ../yum/plugins.py:264
@@ -11874,7 +12353,8 @@ index 7d8e38d..bf8dd3a 100644
 +msgid ""
 +"Two or more plugins with the name \"%s\" exist in the plugin search path"
  msgstr ""
- "Esistono due o più plugin con nome \"%s\" nel percorso di ricerca dei plugin"
+-"Esistono due o più plugin con nome \"%s\" nel percorso di ricerca dei plugin"
++"Esiste più di un plugin con nome \"%s\" nel percorso di ricerca dei plugin"
  
 -#: ../yum/plugins.py:336
 +#: ../yum/plugins.py:342
@@ -11888,14 +12368,15 @@ index 7d8e38d..bf8dd3a 100644
 +#: ../yum/plugins.py:345
  #, python-format
  msgid "Unable to find configuration file for plugin %s"
- msgstr "Non posso trovare il file di configurazione per il plugin %s"
+-msgstr "Non posso trovare il file di configurazione per il plugin %s"
++msgstr "Impossibile trovare il file di configurazione per il plugin %s"
  
 -#: ../yum/plugins.py:501
 +#: ../yum/plugins.py:507
  msgid "registration of commands not supported"
  msgstr "registrazione dei comandi non supportata"
  
-@@ -2672,6 +2971,16 @@ msgstr "ha conflitti con pacchetti installati"
+@@ -2672,6 +2972,16 @@ msgstr "ha conflitti con pacchetti installati"
  msgid "%s is a duplicate with %s"
  msgstr "%s è un duplicato di %s"
  
@@ -11912,7 +12393,7 @@ index 7d8e38d..bf8dd3a 100644
  #: ../yum/rpmtrans.py:79
  msgid "Repackaging"
  msgstr "Reimpacchettamento"
-@@ -2706,6 +3015,33 @@ msgstr "Header %s danneggiato"
+@@ -2706,6 +3016,33 @@ msgstr "Header %s danneggiato"
  msgid "Error opening rpm %s - error %s"
  msgstr "Errore nell'apertura dell'rpm %s - errore %s"
  
@@ -11946,7 +12427,7 @@ index 7d8e38d..bf8dd3a 100644
  #~ msgid "Finished Transaction Test"
  #~ msgstr "Test di transazione terminato"
  
-@@ -2724,7 +3060,9 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
+@@ -2724,7 +3061,9 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
  #~ msgstr "Dipendenza mancante: %s è necessario per il pacchetto %s"
  
  #~ msgid "Matching packages for package list to user args"
@@ -11957,7 +12438,7 @@ index 7d8e38d..bf8dd3a 100644
  
  #~ msgid ""
  #~ "\n"
-@@ -2753,23 +3091,27 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
+@@ -2753,23 +3092,27 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
  #~ msgid "Reducing %s to included packages only"
  #~ msgstr "Riduzione %s ai soli pacchetti inclusi"
  
@@ -11992,7 +12473,7 @@ index 7d8e38d..bf8dd3a 100644
  
  #~ msgid "Comparing best: %s to po: %s"
  #~ msgstr "Comparando meglio: %s in po: %s"
-@@ -2796,7 +3138,9 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
+@@ -2796,7 +3139,9 @@ msgstr "Errore nell'apertura dell'rpm %s - errore %s"
  #~ msgstr "bestpkg %s condivide piu del prefisso del nome con %s"
  
  #~ msgid "Invalid versioned dependency string, try quoting it."
@@ -26148,21 +26629,16 @@ index 91cea8f..2afd5d9 100644
  #~ msgstr "Apagando: %s %d/%d"
  
 diff --git a/po/ru.po b/po/ru.po
-index f1cbc2f..922be6f 100644
+index f1cbc2f..2f91eb1 100644
 --- a/po/ru.po
 +++ b/po/ru.po
-@@ -1,71 +1,53 @@
- # Russian translation of yum.
- # Copyright (C) 2010 yum's COPYRIGHT HOLDER
- # This file is distributed under the same license as the yum package.
--#
-+# 
+@@ -5,22 +5,23 @@
  # Vladimir Bormotov <bor at insight.donbass.com>, 2002
  # Grigory Bakunov <black at asplinux.ru>, 2002, 2003
  # Timur Malikin <sora_tm at mail.ru>, 2010
 -# Misha Shnurapet <zayzayats at yandex.ru>, 2010
 +# Misha Shnurapet <shnurapet at fedoraproject.org>, 2010
-+# 
++#
  msgid ""
  msgstr ""
  "Project-Id-Version: yum\n"
@@ -26170,91 +26646,88 @@ index f1cbc2f..922be6f 100644
 -"POT-Creation-Date: 2010-02-11 10:54-0500\n"
 -"PO-Revision-Date: 2010-06-28 16:09+0500\n"
 -"Last-Translator: Timon <timosha at gmail.com>\n"
+-"Language-Team: ru <fedora-localization at www.russianfedora.ru>\n"
 +"POT-Creation-Date: 2010-08-17 10:15-0400\n"
-+"PO-Revision-Date: 2010-09-07 10:36+0800\n"
++"PO-Revision-Date: 2010-11-15 13:02+0800\n"
 +"Last-Translator: Misha Shnurapet <shnurapet at fedoraproject.org>\n"
- "Language-Team: ru <fedora-localization at www.russianfedora.ru>\n"
++"Language-Team: ru\n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=UTF-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  "Generated-By: pygettext.py 1.1\n"
  
--#: ../callback.py:48
+ #: ../callback.py:48
 -#: ../output.py:947
--#: ../yum/rpmtrans.py:72
-+#: ../callback.py:48 ../output.py:1027 ../yum/rpmtrans.py:72
++#: ../output.py:1027
+ #: ../yum/rpmtrans.py:72
  msgid "Updating"
  msgstr "Обновление"
- 
--#: ../callback.py:49
--#: ../yum/rpmtrans.py:73
-+#: ../callback.py:49 ../yum/rpmtrans.py:73
- msgid "Erasing"
- msgstr "Удаление"
- 
--#: ../callback.py:50
--#: ../callback.py:51
--#: ../callback.py:53
+@@ -33,8 +34,8 @@ 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
++#: ../output.py:1026
++#: ../output.py:1919
+ #: ../yum/rpmtrans.py:74
+ #: ../yum/rpmtrans.py:75
  #: ../yum/rpmtrans.py:77
- msgid "Installing"
- msgstr "Установка"
+@@ -43,29 +44,30 @@ msgstr "Установка"
  
--#: ../callback.py:52
--#: ../callback.py:58
+ #: ../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
++#: ../output.py:1640
+ #: ../yum/rpmtrans.py:76
  msgid "Obsoleted"
  msgstr "Исключено"
  
--#: ../callback.py:54
+ #: ../callback.py:54
 -#: ../output.py:1070
 -#: ../output.py:1442
 -#: ../output.py:1491
-+#: ../callback.py:54 ../output.py:1157 ../output.py:1518 ../output.py:1647
++#: ../output.py:1157
++#: ../output.py:1518
++#: ../output.py:1647
  msgid "Updated"
  msgstr "Обновлено"
  
--#: ../callback.py:55
+ #: ../callback.py:55
 -#: ../output.py:1438
-+#: ../callback.py:55 ../output.py:1517
++#: ../output.py:1517
  msgid "Erased"
  msgstr "Удалено"
  
--#: ../callback.py:56
--#: ../callback.py:57
--#: ../callback.py:59
+ #: ../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
++#: ../output.py:1155
++#: ../output.py:1517
++#: ../output.py:1519
++#: ../output.py:1891
  msgid "Installed"
  msgstr "Установлено"
  
-@@ -85,81 +67,75 @@ msgstr "Ошибка: неверный выходной статус: %s для
+@@ -85,11 +87,11 @@ msgstr "Ошибка: неверный выходной статус: %s для
  #: ../callback.py:212
  #, python-format
  msgid "Erased: %s"
 -msgstr "Удалено: %s"
 +msgstr "Удален: %s"
  
--#: ../callback.py:217
+ #: ../callback.py:217
 -#: ../output.py:948
 -#: ../output.py:1648
-+#: ../callback.py:217 ../output.py:1028 ../output.py:1894
++#: ../output.py:1028
++#: ../output.py:1894
  msgid "Removing"
  msgstr "Удаление"
  
--#: ../callback.py:219
--#: ../yum/rpmtrans.py:78
-+#: ../callback.py:219 ../yum/rpmtrans.py:78
+@@ -98,68 +100,68 @@ msgstr "Удаление"
  msgid "Cleanup"
  msgstr "Очистка"
  
@@ -26276,7 +26749,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../cli.py:194
 -#: ../utils.py:193
-+#: ../cli.py:234 ../utils.py:254
++#: ../cli.py:234
++#: ../utils.py:254
  #, python-format
  msgid "Config Error: %s"
  msgstr "Ошибка конфигурации: %s"
@@ -26284,7 +26758,9 @@ index f1cbc2f..922be6f 100644
 -#: ../cli.py:197
 -#: ../cli.py:1272
 -#: ../utils.py:196
-+#: ../cli.py:237 ../cli.py:1403 ../utils.py:257
++#: ../cli.py:237
++#: ../cli.py:1403
++#: ../utils.py:257
  #, python-format
  msgid "Options Error: %s"
  msgstr "Ошибка опции: %s"
@@ -26336,7 +26812,7 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "Error Summary\n"
  "-------------\n"
-@@ -167,63 +143,60 @@ msgstr ""
+@@ -167,63 +169,63 @@ msgstr ""
  "Обзор ошибок \n"
  "-------------\n"
  
@@ -26362,19 +26838,22 @@ index f1cbc2f..922be6f 100644
  
 -#: ../cli.py:426
 -#: ../yum/__init__.py:4195
-+#: ../cli.py:474 ../yum/__init__.py:4559
++#: ../cli.py:474
++#: ../yum/__init__.py:4559
  msgid "Running rpm_check_debug"
  msgstr "Запуск rpm_check_debug"
  
 -#: ../cli.py:435
 -#: ../yum/__init__.py:4204
-+#: ../cli.py:483 ../yum/__init__.py:4568
++#: ../cli.py:483
++#: ../yum/__init__.py:4568
  msgid "ERROR You need to update rpm to handle:"
  msgstr "ОШИБКА Вам необходимо обновить rpm:"
  
 -#: ../cli.py:437
 -#: ../yum/__init__.py:4207
-+#: ../cli.py:485 ../yum/__init__.py:4571
++#: ../cli.py:485
++#: ../yum/__init__.py:4571
  msgid "ERROR with rpm_check_debug vs depsolve:"
  msgstr "ОШИБКА в rpm_check_debug и разрешении зависимостей:"
  
@@ -26414,20 +26893,22 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "Refusing to automatically import keys when running unattended.\n"
  "Use \"-y\" to override."
-@@ -231,92 +204,93 @@ msgstr ""
+@@ -231,92 +233,102 @@ msgstr ""
  "Отмена автоматического импорта ключей во время запуска без контроля.\n"
  "Используйте \"-y\" для игнорирования."
  
 -#: ../cli.py:544
 -#: ../cli.py:578
-+#: ../cli.py:592 ../cli.py:626
++#: ../cli.py:592
++#: ../cli.py:626
  msgid "  * Maybe you meant: "
 -msgstr "  * Возможно вы имели в виду: "
 +msgstr "  * Возможно, вы имели в виду: "
  
 -#: ../cli.py:561
 -#: ../cli.py:569
-+#: ../cli.py:609 ../cli.py:617
++#: ../cli.py:609
++#: ../cli.py:617
  #, python-format
  msgid "Package(s) %s%s%s available, but not installed."
  msgstr "Пакет(ы) %s%s%s доступны, но не установлены."
@@ -26435,14 +26916,17 @@ index f1cbc2f..922be6f 100644
 -#: ../cli.py:575
 -#: ../cli.py:607
 -#: ../cli.py:687
-+#: ../cli.py:623 ../cli.py:656 ../cli.py:810
++#: ../cli.py:623
++#: ../cli.py:656
++#: ../cli.py:810
  #, python-format
  msgid "No package %s%s%s available."
  msgstr "Пакет %s%s%s недоступен."
  
 -#: ../cli.py:612
 -#: ../cli.py:748
-+#: ../cli.py:663 ../cli.py:875
++#: ../cli.py:663
++#: ../cli.py:875
  msgid "Package(s) to install"
  msgstr "Пакет(ы) для установки"
  
@@ -26451,7 +26935,11 @@ index f1cbc2f..922be6f 100644
 -#: ../cli.py:727
 -#: ../cli.py:749
 -#: ../yumcommands.py:160
-+#: ../cli.py:666 ../cli.py:667 ../cli.py:816 ../cli.py:850 ../cli.py:876
++#: ../cli.py:666
++#: ../cli.py:667
++#: ../cli.py:816
++#: ../cli.py:850
++#: ../cli.py:876
 +#: ../yumcommands.py:179
  msgid "Nothing to do"
  msgstr "Выполнять нечего"
@@ -26536,7 +27024,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "Warning: 3.0.x versions of yum would erroneously match against filenames.\n"
-@@ -326,113 +300,113 @@ msgstr ""
+@@ -326,113 +338,117 @@ msgstr ""
  " Вы можете использовать \"%s*/%s%s\" и/или \"%s*bin/%s%s\" \n"
  " чтобы получить соответствующее поведение"
  
@@ -26609,7 +27097,10 @@ index f1cbc2f..922be6f 100644
 -#: ../cli.py:1006
 -#: ../cli.py:1012
 -#: ../yum/__init__.py:2788
-+#: ../cli.py:1118 ../cli.py:1136 ../cli.py:1142 ../yum/__init__.py:3069
++#: ../cli.py:1118
++#: ../cli.py:1136
++#: ../cli.py:1142
++#: ../yum/__init__.py:3069
  #, python-format
  msgid "Warning: Group %s does not exist."
  msgstr "Внимание: коллекции %s не существует."
@@ -26627,7 +27118,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../cli.py:1028
 -#: ../yum/__init__.py:2800
-+#: ../cli.py:1158 ../yum/__init__.py:3081
++#: ../cli.py:1158
++#: ../yum/__init__.py:3081
  #, python-format
  msgid "No group named %s exists"
  msgstr "Коллекции с названием %s не существует"
@@ -26678,7 +27170,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -443,114 +417,118 @@ msgstr ""
+@@ -443,114 +459,118 @@ msgstr ""
  "\n"
  "%s: %s опцию необходимо указать с аргументом"
  
@@ -26824,7 +27316,7 @@ index f1cbc2f..922be6f 100644
  #: ../output.py:305
  msgid "Jan"
  msgstr "Янв"
-@@ -603,104 +581,114 @@ msgstr "Дек"
+@@ -603,104 +623,117 @@ msgstr "Дек"
  msgid "Trying other mirror."
  msgstr "Пробуем другое зеркало."
  
@@ -26877,7 +27369,8 @@ index f1cbc2f..922be6f 100644
 +msgstr "Объем: %s"
  
 -#: ../output.py:541
-+#: ../output.py:586 ../output.py:890
++#: ../output.py:586
++#: ../output.py:890
  #, python-format
 -msgid "Repo       : %s"
 -msgstr "Репозиторий    : %s"
@@ -26938,28 +27431,30 @@ index f1cbc2f..922be6f 100644
 -msgstr "Ссылка         : %s"
 +msgid "Changed by  : %s"
 +msgstr "Изменил: %s"
- 
--#: ../output.py:553
--msgid "License    : "
--msgstr "Лицензия       : "
++
 +#: ../output.py:610
 +msgid "Summary     : "
 +msgstr "Аннотация: "
  
--#: ../output.py:554
--msgid "Description: "
--msgstr "Описание       : "
-+#: ../output.py:612 ../output.py:903
+-#: ../output.py:553
+-msgid "License    : "
+-msgstr "Лицензия       : "
++#: ../output.py:612
++#: ../output.py:903
 +#, python-format
 +msgid "URL         : %s"
 +msgstr "Ссылка: %s"
  
--#: ../output.py:622
+-#: ../output.py:554
+-msgid "Description: "
+-msgstr "Описание       : "
 +#: ../output.py:613
 +msgid "License     : "
 +msgstr "Лицензия: "
-+
-+#: ../output.py:614 ../output.py:900
+ 
+-#: ../output.py:622
++#: ../output.py:614
++#: ../output.py:900
 +msgid "Description : "
 +msgstr "Описание: "
 +
@@ -26992,7 +27487,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -709,152 +697,141 @@ msgstr ""
+@@ -709,152 +742,143 @@ msgstr ""
  "\n"
  "Коллекция: %s"
  
@@ -27104,7 +27599,8 @@ index f1cbc2f..922be6f 100644
  msgstr "Объем загрузки: %s"
  
 -#: ../output.py:908
-+#: ../output.py:968 ../output.py:988
++#: ../output.py:968
++#: ../output.py:988
  #, python-format
  msgid "Installed size: %s"
  msgstr "Будет установлено: %s"
@@ -27140,7 +27636,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:960
 -#: ../output.py:1072
-+#: ../output.py:1040 ../output.py:1159
++#: ../output.py:1040
++#: ../output.py:1159
  msgid "Skipped (dependency problems)"
  msgstr "Пропущено (ошибка зависимостей)"
  
@@ -27180,7 +27677,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -865,52 +842,57 @@ msgstr ""
+@@ -865,60 +889,65 @@ msgstr ""
  "Результат операции\n"
  "%s\n"
  
@@ -27209,13 +27706,13 @@ index f1cbc2f..922be6f 100644
 -"Откат версии  %5.5s пакет(ов)\n"
 +msgid "Upgrade   %5.5s Package(s)\n"
 +msgstr "Обновить %5.5s пакет(а,ов)\n"
-+
+ 
+-#: ../output.py:1066
 +#: ../output.py:1105
 +#, python-format
 +msgid "Remove    %5.5s Package(s)\n"
 +msgstr "Удалить %5.5s пакет(а,ов)\n"
- 
--#: ../output.py:1066
++
 +#: ../output.py:1109
 +#, python-format
 +msgid "Reinstall %5.5s Package(s)\n"
@@ -27259,9 +27756,10 @@ index f1cbc2f..922be6f 100644
 -#: ../output.py:1140
 +#: ../output.py:1245
  msgid "two"
- msgstr "два"
+-msgstr "два"
++msgstr "двух"
  
-@@ -918,7 +900,7 @@ msgstr "два"
+ #. For translators: This is output like:
  #. Current download cancelled, interrupt (ctrl-c) again within two seconds
  #. to exit.
  #. Where "interupt (ctrl-c) again" and "two" are highlighted.
@@ -27270,9 +27768,14 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -929,280 +911,328 @@ msgstr ""
- " Текущая закачка отменена, %sвызвано (ctrl-c) повторите%s в течении %s%s%s секунд\n"
- "для выхода.\n"
+@@ -926,283 +955,343 @@ msgid ""
+ "to exit.\n"
+ msgstr ""
+ "\n"
+-" Текущая закачка отменена, %sвызвано (ctrl-c) повторите%s в течении %s%s%s секунд\n"
+-"для выхода.\n"
++" Текущая загрузка отменена, %sпрервите (ctrl-c) повторно%s в течение %s%s%s секунд,\n"
++"чтобы выйти.\n"
  
 -#: ../output.py:1162
 +#: ../output.py:1267
@@ -27336,7 +27839,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1267
 -#: ../output.py:1520
-+#: ../output.py:1381 ../output.py:1699
++#: ../output.py:1381
++#: ../output.py:1699
  msgid "Login user"
  msgstr "Вход пользователя"
  
@@ -27347,18 +27851,21 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1269
 -#: ../output.py:1522
-+#: ../output.py:1383 ../output.py:1701
++#: ../output.py:1383
++#: ../output.py:1701
  msgid "Action(s)"
  msgstr "Действия"
  
 -#: ../output.py:1270
 -#: ../output.py:1523
-+#: ../output.py:1384 ../output.py:1702
++#: ../output.py:1384
++#: ../output.py:1702
  msgid "Altered"
  msgstr "Изменено"
  
 -#: ../output.py:1310
-+#: ../output.py:1431 ../output.py:1760
++#: ../output.py:1431
++#: ../output.py:1760
  msgid "No transaction ID given"
  msgstr "Код действия не задан"
  
@@ -27378,12 +27885,14 @@ index f1cbc2f..922be6f 100644
  msgstr "Указано более одной операции!"
  
 -#: ../output.py:1370
-+#: ../output.py:1491 ../output.py:1770
++#: ../output.py:1491
++#: ../output.py:1770
  msgid "No transaction ID, or package, given"
  msgstr "Не задан код действия или пакет"
  
 -#: ../output.py:1396
-+#: ../output.py:1518 ../output.py:1645
++#: ../output.py:1518
++#: ../output.py:1645
 +msgid "Downgraded"
 +msgstr "Откачено"
 +
@@ -27410,7 +27919,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1401
 -#: ../output.py:1403
-+#: ../output.py:1557 ../output.py:1559
++#: ../output.py:1557
++#: ../output.py:1559
  msgid "Begin rpmdb    :"
  msgstr "Начало rpmdb   :"
  
@@ -27427,7 +27937,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1421
 -#: ../output.py:1423
-+#: ../output.py:1577 ../output.py:1579
++#: ../output.py:1577
++#: ../output.py:1579
  msgid "End rpmdb      :"
  msgstr "Конец rpmdb    :"
  
@@ -27439,7 +27950,9 @@ index f1cbc2f..922be6f 100644
 -#: ../output.py:1426
 -#: ../output.py:1428
 -#: ../output.py:1430
-+#: ../output.py:1582 ../output.py:1584 ../output.py:1586
++#: ../output.py:1582
++#: ../output.py:1584
++#: ../output.py:1586
  msgid "Return-Code    :"
  msgstr "Код возврата   :"
  
@@ -27510,7 +28023,8 @@ index f1cbc2f..922be6f 100644
 +#. 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
++#: ../output.py:1637
++#: ../output.py:1638
  msgid "Install"
  msgstr "Установка "
  
@@ -27654,7 +28168,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1614
 -#: ../output.py:1619
-+#: ../output.py:1840 ../output.py:1845
++#: ../output.py:1840
++#: ../output.py:1845
  #, python-format
  msgid "--> Processing Dependency: %s for package: %s"
  msgstr "--> Обработка зависимостей: %s для пакета: %s"
@@ -27681,7 +28196,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -1211,8 +1241,7 @@ msgstr ""
+@@ -1211,8 +1300,7 @@ msgstr ""
  "\n"
  "    Необходимо: %s"
  
@@ -27691,7 +28206,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "\n"
-@@ -1221,86 +1250,103 @@ msgstr ""
+@@ -1221,85 +1309,105 @@ msgstr ""
  "\n"
  "    %s: %s (%s)"
  
@@ -27732,7 +28247,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../output.py:1665
 -#: ../output.py:1670
-+#: ../output.py:1944 ../output.py:1949
++#: ../output.py:1944
++#: ../output.py:1949
  #, python-format
  msgid "--> Processing Conflict: %s conflicts %s"
  msgstr "--> Обработка конфликта: %s конфликтует с %s"
@@ -27775,7 +28291,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../utils.py:98
 -#: ../yumcommands.py:917
-+#: ../utils.py:99 ../yumcommands.py:972
++#: ../utils.py:99
++#: ../yumcommands.py:972
  msgid "Unknown"
  msgstr "Неизвестно"
  
@@ -27819,38 +28336,36 @@ index f1cbc2f..922be6f 100644
 -msgstr "Ошибка Yum: %s"
 -
 -#: ../utils.py:235
--#: ../yummain.py:42
-+#: ../utils.py:143 ../yummain.py:42
++#: ../utils.py:143
+ #: ../yummain.py:42
  msgid ""
  "\n"
- "\n"
-@@ -1310,8 +1356,7 @@ msgstr ""
+@@ -1310,7 +1418,7 @@ msgstr ""
  "\n"
  "Выход по запросу пользователя"
  
 -#: ../utils.py:241
--#: ../yummain.py:48
-+#: ../utils.py:149 ../yummain.py:48
++#: ../utils.py:149
+ #: ../yummain.py:48
  msgid ""
  "\n"
- "\n"
-@@ -1321,8 +1366,7 @@ msgstr ""
+@@ -1321,7 +1429,7 @@ msgstr ""
  "\n"
  "Выход из-за разрыва связи"
  
 -#: ../utils.py:243
--#: ../yummain.py:50
-+#: ../utils.py:151 ../yummain.py:50
++#: ../utils.py:151
+ #: ../yummain.py:50
  #, python-format
  msgid ""
- "\n"
-@@ -1333,8 +1377,47 @@ msgstr ""
+@@ -1333,8 +1441,57 @@ msgstr ""
  "\n"
  "%s"
  
 -#: ../utils.py:282
 -#: ../yummain.py:211
-+#: ../utils.py:201 ../yummain.py:107
++#: ../utils.py:201
++#: ../yummain.py:107
 +msgid "Another app is currently holding the yum lock; exiting as configured by exit_on_lock"
 +msgstr "Другое приложение удерживает данные yum; выход согласно exit_on_lock"
 +
@@ -27864,25 +28379,33 @@ index f1cbc2f..922be6f 100644
 +msgid "Yum Error: %s"
 +msgstr "Ошибка Yum: %s"
 +
-+#: ../utils.py:315 ../yummain.py:134 ../yummain.py:173
++#: ../utils.py:315
++#: ../yummain.py:134
++#: ../yummain.py:173
 +#, python-format
 +msgid "Error: %s"
 +msgstr "Ошибка: %s"
 +
-+#: ../utils.py:319 ../yummain.py:177
++#: ../utils.py:319
++#: ../yummain.py:177
 +msgid " You could try using --skip-broken to work around the problem"
 +msgstr " Вы можете попробовать --skip-broken чтобы обойти проблему"
 +
-+#: ../utils.py:321 ../yummain.py:179 ../yummain.py:212
++#: ../utils.py:321
++#: ../yummain.py:179
++#: ../yummain.py:212
 +msgid " You could try running: rpm -Va --nofiles --nodigest"
 +msgstr " Вы можете попробовать запустить: rpm -Va --nofiles --nodigest"
 +
-+#: ../utils.py:328 ../yummain.py:144 ../yummain.py:186
++#: ../utils.py:328
++#: ../yummain.py:144
++#: ../yummain.py:186
 +#, python-format
 +msgid "Unknown Error(s): Exit Code: %d:"
 +msgstr "Неизвестная ошибка(ошибки): Код выхода: %d:"
 +
-+#: ../utils.py:334 ../yummain.py:192
++#: ../utils.py:334
++#: ../yummain.py:192
 +msgid ""
 +"\n"
 +"Dependencies Resolved"
@@ -27890,11 +28413,12 @@ index f1cbc2f..922be6f 100644
 +"\n"
 +"Зависимости разрешены"
 +
-+#: ../utils.py:349 ../yummain.py:215
++#: ../utils.py:349
++#: ../yummain.py:215
  msgid "Complete!"
  msgstr "Готово!"
  
-@@ -1413,301 +1496,312 @@ msgstr "Файл %s переданный в качестве аргумента
+@@ -1413,301 +1570,320 @@ msgstr "Файл %s переданный в качестве аргумента
  msgid "Error: more than one file given as argument to shell."
  msgstr "Ошибка: более чем один файл указан в качестве аргумента для командной оболочки."
  
@@ -27924,7 +28448,8 @@ index f1cbc2f..922be6f 100644
  msgstr "Подготовка к установке"
  
 -#: ../yumcommands.py:192
-+#: ../yumcommands.py:212 ../yumcommands.py:234
++#: ../yumcommands.py:212
++#: ../yumcommands.py:234
  msgid "[PACKAGE...]"
  msgstr "[ПАКЕТ...]"
  
@@ -27975,7 +28500,9 @@ index f1cbc2f..922be6f 100644
 -#: ../yumcommands.py:317
 -#: ../yumcommands.py:324
 -#: ../yumcommands.py:601
-+#: ../yumcommands.py:361 ../yumcommands.py:368 ../yumcommands.py:655
++#: ../yumcommands.py:361
++#: ../yumcommands.py:368
++#: ../yumcommands.py:655
  msgid "Obsoleting Packages"
  msgstr "Исключенные пакеты"
  
@@ -28136,13 +28663,15 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yumcommands.py:822
 -#: ../yumcommands.py:823
-+#: ../yumcommands.py:877 ../yumcommands.py:878
++#: ../yumcommands.py:877
++#: ../yumcommands.py:878
  msgid "enabled"
  msgstr "включено"
  
 -#: ../yumcommands.py:849
 -#: ../yumcommands.py:850
-+#: ../yumcommands.py:904 ../yumcommands.py:905
++#: ../yumcommands.py:904
++#: ../yumcommands.py:905
  msgid "disabled"
  msgstr "отключено"
  
@@ -28253,14 +28782,17 @@ index f1cbc2f..922be6f 100644
  #. then chop the middle (name)...
 -#: ../yumcommands.py:951
 -#: ../yumcommands.py:980
-+#: ../yumcommands.py:1006 ../yumcommands.py:1035
++#: ../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
++#: ../yumcommands.py:1023
++#: ../yumcommands.py:1024
++#: ../yumcommands.py:1042
  msgid "status"
  msgstr "состояние"
  
@@ -28285,7 +28817,7 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "\n"
  "\n"
-@@ -1717,7 +1811,7 @@ msgstr ""
+@@ -1717,7 +1893,7 @@ msgstr ""
  "\n"
  "альтернативные названия: "
  
@@ -28294,7 +28826,7 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "\n"
  "\n"
-@@ -1727,106 +1821,81 @@ msgstr ""
+@@ -1727,106 +1903,81 @@ msgstr ""
  "\n"
  "альтернативное название: "
  
@@ -28423,7 +28955,7 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "\n"
  "\n"
-@@ -1844,147 +1913,134 @@ msgstr "doTsSetup() будет устранен в следующей верси
+@@ -1844,147 +1995,136 @@ msgstr "doTsSetup() будет устранен в следующей верси
  msgid "Setting up TransactionSets before config class is up"
  msgstr "Составление списка действий до включения класса конфигурации"
  
@@ -28456,8 +28988,8 @@ index f1cbc2f..922be6f 100644
  msgstr "Член: %s"
  
 -#: ../yum/depsolve.py:239
--#: ../yum/depsolve.py:754
-+#: ../yum/depsolve.py:219 ../yum/depsolve.py:754
++#: ../yum/depsolve.py:219
+ #: ../yum/depsolve.py:754
  #, python-format
  msgid "%s converted to install"
  msgstr "%s преобразован для установки"
@@ -28582,23 +29114,22 @@ index f1cbc2f..922be6f 100644
  msgid "TSINFO: Marking %s as install for %s"
  msgstr "TSINFO: Отмечен %s чтобы установить %s"
  
--#: ../yum/depsolve.py:690
+ #: ../yum/depsolve.py:690
 -#: ../yum/depsolve.py:781
-+#: ../yum/depsolve.py:690 ../yum/depsolve.py:780
++#: ../yum/depsolve.py:780
  msgid "Success - empty transaction"
  msgstr "Успешно — пустой сценарий"
  
--#: ../yum/depsolve.py:729
--#: ../yum/depsolve.py:744
-+#: ../yum/depsolve.py:729 ../yum/depsolve.py:744
- #, fuzzy
+ #: ../yum/depsolve.py:729
+ #: ../yum/depsolve.py:744
+-#, fuzzy
  msgid "Restarting Loop"
 -msgstr "Перезапуск петли"
-+msgstr "Цикл перезапуска"
++msgstr "Перезапуск цикла"
  
  #: ../yum/depsolve.py:760
  msgid "Dependency Process ending"
-@@ -1995,176 +2051,200 @@ msgstr "Завершение процесса разрешения зависи
+@@ -1995,176 +2135,201 @@ msgstr "Завершение процесса разрешения зависи
  msgid "%s from %s has depsolving problems"
  msgstr "%s из %s имеет проблемы с разрешением зависимостей"
  
@@ -28627,7 +29158,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/depsolve.py:1117
 -#: ../yum/depsolve.py:1123
-+#: ../yum/depsolve.py:1146 ../yum/depsolve.py:1152
++#: ../yum/depsolve.py:1146
++#: ../yum/depsolve.py:1152
  #, python-format
  msgid "better arch in po %s"
  msgstr "Лучший архив в %s"
@@ -28844,7 +29376,7 @@ index f1cbc2f..922be6f 100644
  msgid ""
  "\n"
  "Packages skipped because of dependency problems:"
-@@ -2172,90 +2252,110 @@ msgstr ""
+@@ -2172,90 +2337,111 @@ msgstr ""
  "\n"
  "Пакеты пропущены из-за проблем с зависимостями:"
  
@@ -28969,7 +29501,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:1534
 -#: ../yum/__init__.py:1563
-+#: ../yum/__init__.py:1772 ../yum/__init__.py:1801
++#: ../yum/__init__.py:1772
++#: ../yum/__init__.py:1801
  #, python-format
  msgid "using local copy of %s"
  msgstr "использование локальной копии %s"
@@ -28979,7 +29512,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "Insufficient space in download directory %s\n"
-@@ -2266,380 +2366,398 @@ msgstr ""
+@@ -2266,380 +2452,419 @@ msgstr ""
  "    * свободно   %s\n"
  "    * необходимо %s"
  
@@ -29107,8 +29640,12 @@ index f1cbc2f..922be6f 100644
 -#: ../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: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"
@@ -29116,7 +29653,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:2386
 -#: ../yum/__init__.py:2513
-+#: ../yum/__init__.py:2639 ../yum/__init__.py:2766
++#: ../yum/__init__.py:2639
++#: ../yum/__init__.py:2766
  #, python-format
  msgid "package %s was not marked in group %s"
  msgstr "пакет %s не отмечен в коллекции %s"
@@ -29154,20 +29692,22 @@ index f1cbc2f..922be6f 100644
 -
 -#: ../yum/__init__.py:2634
 -#: ../yum/__init__.py:2639
-+#: ../yum/__init__.py:2868 ../yum/__init__.py:2873
++#: ../yum/__init__.py:2868
++#: ../yum/__init__.py:2873
  #, python-format
  msgid "No Package found for %s"
  msgstr "Пакет %s не найден"
  
 -#: ../yum/__init__.py:2855
+-#, fuzzy
 +#: ../yum/__init__.py:2901
 +msgid "Invalid version flag"
 +msgstr "Неверная версия флага"
 +
 +#: ../yum/__init__.py:3145
- #, fuzzy
  msgid "Package Object was not a package object instance"
- msgstr "Объект пакета не являлся экземпляром объекта пакета"
+-msgstr "Объект пакета не являлся экземпляром объекта пакета"
++msgstr ""
  
 -#: ../yum/__init__.py:2859
 +#: ../yum/__init__.py:3149
@@ -29176,7 +29716,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:2875
 -#: ../yum/__init__.py:3652
-+#: ../yum/__init__.py:3168 ../yum/__init__.py:3992
++#: ../yum/__init__.py:3168
++#: ../yum/__init__.py:3992
  #, python-format
  msgid "Checking for virtual provide or file-provide for %s"
  msgstr "Проверка виртуального провайдера или файлового провайдера для %s"
@@ -29185,7 +29726,9 @@ index f1cbc2f..922be6f 100644
 -#: ../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:3174
++#: ../yum/__init__.py:3504
++#: ../yum/__init__.py:3684
 +#: ../yum/__init__.py:3998
  #, python-format
  msgid "No Match for argument: %s"
@@ -29247,7 +29790,9 @@ index f1cbc2f..922be6f 100644
 -#: ../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: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"
@@ -29255,7 +29800,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:3182
 -#: ../yum/__init__.py:3362
-+#: ../yum/__init__.py:3489 ../yum/__init__.py:3680
++#: ../yum/__init__.py:3489
++#: ../yum/__init__.py:3680
  #, python-format
  msgid "%s"
  msgstr "%s"
@@ -29274,7 +29820,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:3293
 -#: ../yum/__init__.py:3319
-+#: ../yum/__init__.py:3608 ../yum/__init__.py:3634
++#: ../yum/__init__.py:3608
++#: ../yum/__init__.py:3634
  #, python-format
  msgid "Not Updating Package that is already updated: %s.%s %s:%s-%s"
  msgstr "Необновленный пакет, который был обновлен ранее: %s.%s %s:%s-%s"
@@ -29303,7 +29850,9 @@ index f1cbc2f..922be6f 100644
 -#: ../yum/__init__.py:3415
 -#: ../yum/__init__.py:3514
 -#: ../yum/__init__.py:3598
-+#: ../yum/__init__.py:3747 ../yum/__init__.py:3859 ../yum/__init__.py:3935
++#: ../yum/__init__.py:3747
++#: ../yum/__init__.py:3859
++#: ../yum/__init__.py:3935
  #, python-format
  msgid "Examining %s: %s"
  msgstr "Проверка %s: %s"
@@ -29316,7 +29865,9 @@ index f1cbc2f..922be6f 100644
 +msgid "Cannot localinstall deltarpm: %s. Skipping."
 +msgstr "Нельзя произвести localinstall deltarpm %s. Пропуск."
 +
-+#: ../yum/__init__.py:3760 ../yum/__init__.py:3862 ../yum/__init__.py:3938
++#: ../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 "Невозможно добавить пакет %s в список действий. Несовместимая архитектура: %s"
@@ -29335,7 +29886,9 @@ index f1cbc2f..922be6f 100644
 -#: ../yum/__init__.py:3460
 -#: ../yum/__init__.py:3522
 -#: ../yum/__init__.py:3606
-+#: ../yum/__init__.py:3803 ../yum/__init__.py:3867 ../yum/__init__.py:3943
++#: ../yum/__init__.py:3803
++#: ../yum/__init__.py:3867
++#: ../yum/__init__.py:3943
  #, python-format
  msgid "Excluding %s"
  msgstr "Исключаем %s"
@@ -29360,7 +29913,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:3511
 -#: ../yum/__init__.py:3595
-+#: ../yum/__init__.py:3856 ../yum/__init__.py:3932
++#: ../yum/__init__.py:3856
++#: ../yum/__init__.py:3932
  #, python-format
  msgid "Cannot open file: %s. Skipping."
  msgstr "Невозможно открыть файл %s. Пропуск."
@@ -29406,7 +29960,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:3808
 -#: ../yum/__init__.py:3845
-+#: ../yum/__init__.py:4149 ../yum/__init__.py:4186
++#: ../yum/__init__.py:4149
++#: ../yum/__init__.py:4186
  #, python-format
  msgid "Failed to downgrade: %s"
  msgstr "Ошибка отката версии: %s"
@@ -29484,7 +30039,8 @@ index f1cbc2f..922be6f 100644
  
 -#: ../yum/__init__.py:3973
 -#: ../yum/__init__.py:4032
-+#: ../yum/__init__.py:4333 ../yum/__init__.py:4389
++#: ../yum/__init__.py:4333
++#: ../yum/__init__.py:4389
  msgid "Key imported successfully"
  msgstr "Импорт ключа успешно завершен"
  
@@ -29494,7 +30050,7 @@ index f1cbc2f..922be6f 100644
  #, python-format
  msgid ""
  "The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
-@@ -2648,118 +2766,136 @@ msgstr ""
+@@ -2648,118 +2873,137 @@ msgstr ""
  "GPG ключи включены для репозитория \"%s\", но они не является правильными для данного пакета.\n"
  "Пожалуйста, проверьте правильно ли настроены URL ключей для данного репозитория."
  
@@ -29564,8 +30120,8 @@ index f1cbc2f..922be6f 100644
  msgstr "Загружены модули: "
  
 -#: ../yum/plugins.py:216
--#: ../yum/plugins.py:222
-+#: ../yum/plugins.py:222 ../yum/plugins.py:228
+ #: ../yum/plugins.py:222
++#: ../yum/plugins.py:228
  #, python-format
  msgid "No plugin match for: %s"
  msgstr "Нет модуля: %s"
@@ -29655,20 +30211,7 @@ index f1cbc2f..922be6f 100644
  #: ../yum/rpmtrans.py:79
  msgid "Repackaging"
  msgstr "Переупаковка"
-@@ -2782,10 +2918,8 @@ msgstr "Невозможно открыть базу RPM для чтения. В
- msgid "Got an empty Header, something has gone wrong"
- msgstr "Получен пустой заголовок, что-то не так"
- 
--#: ../rpmUtils/oldUtils.py:253
--#: ../rpmUtils/oldUtils.py:260
--#: ../rpmUtils/oldUtils.py:263
--#: ../rpmUtils/oldUtils.py:266
-+#: ../rpmUtils/oldUtils.py:253 ../rpmUtils/oldUtils.py:260
-+#: ../rpmUtils/oldUtils.py:263 ../rpmUtils/oldUtils.py:266
- #, python-format
- msgid "Damaged Header %s"
- msgstr "Поврежденный заголовок %s"
-@@ -2795,15 +2929,39 @@ msgstr "Поврежденный заголовок %s"
+@@ -2795,15 +3039,39 @@ msgstr "Поврежденный заголовок %s"
  msgid "Error opening rpm %s - error %s"
  msgstr "Невозможно открыть пакет %s — ошибка %s"
  
@@ -29711,7 +30254,7 @@ index f1cbc2f..922be6f 100644
  #~ msgid "Removing unmatched package %s"
  #~ msgstr "Поиск обновленных пакетов"
  
-@@ -3223,9 +3381,6 @@ msgstr "Невозможно открыть пакет %s — ошибка %s"
+@@ -3223,9 +3491,6 @@ msgstr "Невозможно открыть пакет %s — ошибка %s"
  #~ msgid "depcheck: package %s needs %s"
  #~ msgstr "зависимости: пакету %s необходим %s"
  
@@ -31694,228 +32237,3630 @@ index 48b836b..7578c68 100644
 -#: ../yumcommands.py:890
 +#: ../yumcommands.py:945
  msgid "Repo-pkgs    : "
- msgstr "Förrådspaket    : "
+ msgstr "Förrådspaket    : "
+ 
+-#: ../yumcommands.py:891
++#: ../yumcommands.py:946
+ msgid "Repo-size    : "
+ msgstr "Förrådstorlek   : "
+ 
+-#: ../yumcommands.py:898
++#: ../yumcommands.py:953
+ msgid "Repo-baseurl : "
+ msgstr "Förrådsbasurl   : "
+ 
+-#: ../yumcommands.py:906
++#: ../yumcommands.py:961
+ msgid "Repo-metalink: "
+ msgstr "Förrådsmetalänk : "
+ 
+-#: ../yumcommands.py:910
++#: ../yumcommands.py:965
+ msgid "  Updated    : "
+ msgstr "  Uppdaterat    :"
+ 
+-#: ../yumcommands.py:913
++#: ../yumcommands.py:968
+ msgid "Repo-mirrors : "
+ msgstr "Förrådspeglar   : "
+ 
+-#: ../yumcommands.py:923
++#: ../yumcommands.py:978
+ #, python-format
+ msgid "Never (last: %s)"
+ msgstr "Aldrig (senast: %s)"
+ 
+-#: ../yumcommands.py:925
++#: ../yumcommands.py:980
+ #, python-format
+ msgid "Instant (last: %s)"
+ msgstr "Omedelbart (senast: %s)"
+ 
+-#: ../yumcommands.py:928
++#: ../yumcommands.py:983
+ #, python-format
+ msgid "%s second(s) (last: %s)"
+ msgstr "%s sekunder (senast: %s)"
+ 
+-#: ../yumcommands.py:930
++#: ../yumcommands.py:985
+ msgid "Repo-expire  : "
+ msgstr "Förråd går ut    : "
+ 
+-#: ../yumcommands.py:933
++#: ../yumcommands.py:988
+ msgid "Repo-exclude : "
+ msgstr "Förråd utesluter : "
+ 
+-#: ../yumcommands.py:937
++#: ../yumcommands.py:992
+ msgid "Repo-include : "
+ msgstr "Förråd inkluderar: "
+ 
+-#: ../yumcommands.py:941
++#: ../yumcommands.py:996
+ msgid "Repo-excluded: "
+ 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 "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 "status"
+ 
+-#: ../yumcommands.py:981
++#: ../yumcommands.py:1036
+ msgid "repo name"
+ msgstr "förrådsnamn"
+ 
+-#: ../yumcommands.py:1018
++#: ../yumcommands.py:1073
+ msgid "Display a helpful usage message"
+ msgstr "Visa ett hjälpsamt meddelande om användning"
+ 
+-#: ../yumcommands.py:1052
++#: ../yumcommands.py:1107
+ #, python-format
+ msgid "No help available for %s"
+ msgstr "Ingen hjälp tillgänglig för %s"
+ 
+-#: ../yumcommands.py:1057
++#: ../yumcommands.py:1112
+ msgid ""
+ "\n"
+ "\n"
+@@ -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/uk.po b/po/uk.po
+index cbc03c8..314a9cc 100644
+--- a/po/uk.po
++++ b/po/uk.po
+@@ -6,8 +6,8 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: \n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2010-02-11 10:54-0500\n"
+-"PO-Revision-Date: 2010-06-16 20:45+0300\n"
++"POT-Creation-Date: 2010-08-17 10:15-0400\n"
++"PO-Revision-Date: 2010-11-21 16:33+0200\n"
+ "Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
+ "Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
+ "MIME-Version: 1.0\n"
+@@ -16,7 +16,7 @@ msgstr ""
+ "X-Generator: Lokalize 1.1\n"
+ "Plural-Forms: nplurals=1; plural=0;\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 +24,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 +65,7 @@ msgstr "Помилка: некоректний стан виводу: %s для
+ msgid "Erased: %s"
+ msgstr "Вилучено: %s"
+ 
+-#: ../callback.py:217 ../output.py:948 ../output.py:1648
++#: ../callback.py:217 ../output.py:1028 ../output.py:1894
+ msgid "Removing"
+ msgstr "Вилучення"
+ 
+@@ -73,58 +73,58 @@ msgstr "Вилучення"
+ msgid "Cleanup"
+ msgstr "Очищення диска"
+ 
+-#: ../cli.py:107
++#: ../cli.py:108
+ #, python-format
+ msgid "Command \"%s\" already defined"
+ msgstr "Команду «%s» вже визначено"
+ 
+-#: ../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 "Помилка налаштування: %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 "Помилка у параметрах: %s"
+ 
+-#: ../cli.py:227
++#: ../cli.py:267
+ #, python-format
+ msgid "  Installed: %s-%s at %s"
+ msgstr "  Встановлено: %s-%s у %s"
+ 
+-#: ../cli.py:229
++#: ../cli.py:269
+ #, python-format
+ msgid "  Built    : %s at %s"
+ msgstr "  Зібрано    : %s о %s"
+ 
+-#: ../cli.py:231
++#: ../cli.py:271
+ #, python-format
+ msgid "  Committed: %s at %s"
+ msgstr "  Надіслано  : %s о %s"
+ 
+-#: ../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 "Команди %s не виявлено. Будь ласка, скористайтеся командою %s --help"
+ 
+-#: ../cli.py:314
++#: ../cli.py:354
+ msgid "Disk Requirements:\n"
+ msgstr "Вимоги до диска:\n"
+ 
+-#: ../cli.py:316
++#: ../cli.py:356
+ #, python-format
+ msgid "  At least %dMB more space needed on the %s filesystem.\n"
+ msgstr ""
+@@ -132,7 +132,7 @@ msgstr ""
+ 
+ #. TODO: simplify the dependency errors?
+ #. Fixup the summary
+-#: ../cli.py:321
++#: ../cli.py:361
+ msgid ""
+ "Error Summary\n"
+ "-------------\n"
+@@ -140,62 +140,62 @@ msgstr ""
+ "Резюме помилок\n"
+ "-------------\n"
+ 
+-#: ../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 "Помилка завантаження пакетів:\n"
+ 
+-#: ../cli.py:426 ../yum/__init__.py:4195
++#: ../cli.py:474 ../yum/__init__.py:4559
+ msgid "Running rpm_check_debug"
+ msgstr "Виконання 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 "ПОМИЛКА. Вам слід оновити rpm для обробки:"
+ 
+-#: ../cli.py:437 ../yum/__init__.py:4207
++#: ../cli.py:485 ../yum/__init__.py:4571
+ msgid "ERROR with rpm_check_debug vs depsolve:"
+ msgstr "ПОМИЛКА у rpm_check_debug через depsolve:"
+ 
+-#: ../cli.py:443
++#: ../cli.py:491
+ msgid "RPM needs to be updated"
+ msgstr "RPM слід оновити"
+ 
+-#: ../cli.py:444
++#: ../cli.py:492
+ #, python-format
+ msgid "Please report this error in %s"
+ msgstr "Будь ласка, повідомте про цю помилку за адресою %s"
+ 
+-#: ../cli.py:450
++#: ../cli.py:498
+ msgid "Running Transaction Test"
+ msgstr "Запускається операція з перевірки"
+ 
+-#: ../cli.py:466
++#: ../cli.py:514
+ msgid "Transaction Check Error:\n"
+ msgstr "Помилка під час перевірки операції:\n"
+ 
+-#: ../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."
+@@ -203,84 +203,93 @@ msgstr ""
+ "Автоматичне імпортування ключів під час некерованого запуску заборонено.\n"
+ "Скасувати заборону можна параметром «-y»."
+ 
+-#: ../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 "Доступні невстановлені пакунки %s%s%s."
+ 
+-#: ../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 "Пакунок %s%s%s недоступний."
+ 
+-#: ../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 "%d пакунків позначено для оновлення"
+ 
+-#: ../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 "%d пакунків позначено для виконання синхронізації дистрибутивів"
++
++#: ../cli.py:773
++msgid "No Packages marked for Distribution Synchronization"
++msgstr "Для виконання синхронізації дистрибутивів не позначено жодного пакунка"
++
++#: ../cli.py:787
+ #, python-format
+ msgid "%d packages marked for removal"
+ msgstr "%d пакунків позначено для вилучення"
+ 
+-#: ../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 " (з %s)"
+ 
+-#: ../cli.py:719
++#: ../cli.py:841
+ #, python-format
+ msgid "Installed package %s%s%s%s not available."
+ msgstr "Встановлений пакунок %s%s%s%s недоступний."
+ 
+-#: ../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 "Відповідників: %s"
++msgstr "Відповідники: %s"
+ 
+-#: ../cli.py:825
++#: ../cli.py:952
+ #, python-format
+ msgid "Warning: No matches found for: %s"
+ msgstr "Попередження: відповідників %s не знайдено"
+ 
+-#: ../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"
+@@ -288,112 +297,115 @@ msgid ""
+ msgstr ""
+ "Попередження: у версіях 3.0.x yum відповідність назв файлів встановлюється з "
+ "помилками.\n"
+-" Щоб знайти відповідники, вам слід скористатися «%s*/%s%s» і/або "
+-"«%s*bin/%s%s»."
++" Щоб знайти відповідники, вам слід скористатися «%s*/%s%s» і/або «%s*bin/%s%s»."
+ 
+-#: ../cli.py:884
++#: ../cli.py:1011
+ #, python-format
+ msgid "No Package Found for %s"
+ msgstr "Пакунків з %s не знайдено"
+ 
+-#: ../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 "Вилучення метаданих xml"
+ 
+-#: ../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 "Вилучення кешованих даних rpmdb"
+ 
+-#: ../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 "Попередження: групи з назвою %s не існує."
+ 
+-#: ../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 "%d пакунків для встановлення"
+ 
+-#: ../cli.py:1028 ../yum/__init__.py:2800
++#: ../cli.py:1158 ../yum/__init__.py:3081
+ #, python-format
+ msgid "No group named %s exists"
+ msgstr "Групи з назвою %s не існує"
+ 
+-#: ../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 "%d пакунків для вилучення"
+ 
+-#: ../cli.py:1078
++#: ../cli.py:1208
+ #, python-format
+ msgid "Package %s is already installed, skipping"
+ msgstr "Пакунок %s вже встановлено, пропускаємо"
+ 
+-#: ../cli.py:1089
++#: ../cli.py:1219
+ #, python-format
+ msgid "Discarding non-comparable pkg %s.%s"
+ msgstr "Відкинуто несумісний пакунок %s.%s"
+ 
+ #. 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 "Не встановлено інших %s, додаємо до списку потенційного встановлення"
+ 
+-#: ../cli.py:1135
++#: ../cli.py:1265
+ msgid "Plugin Options"
+ msgstr "Параметри додатка"
+ 
+-#: ../cli.py:1143
++#: ../cli.py:1273
+ #, python-format
+ msgid "Command line error: %s"
+ msgstr "Помилка виконання команди: %s"
+ 
+-#: ../cli.py:1156
++#: ../cli.py:1287
+ #, python-format
+ msgid ""
+ "\n"
+@@ -404,116 +416,118 @@ msgstr ""
+ "\n"
+ "%s: для параметра %s потрібен аргумент"
+ 
+-#: ../cli.py:1209
++#: ../cli.py:1340
+ msgid "--color takes one of: auto, always, never"
+ msgstr "--color повинен мати один з аргументів: auto, always, never"
+ 
+-#: ../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 "рівень докладності діагностичних повідомлень rpm"
+ 
+-#: ../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 "показати версію Yum і завершити роботу"
+ 
+-#: ../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 ""
+-"вимкнути одне або декілька сховищ (можна використовувати шаблони заміни)"
++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 "вимкнути виключення з main для сховища або на загальному рівні"
+ 
+-#: ../cli.py:1369
++#: ../cli.py:1500
+ msgid "enable obsoletes processing during updates"
+ msgstr "увімкнути обробку застарілих пакунків під час оновлень"
+ 
+-#: ../cli.py:1371
++#: ../cli.py:1502
+ msgid "disable Yum plugins"
+ msgstr "вимкнути додатки Yum"
+ 
+-#: ../cli.py:1373
++#: ../cli.py:1504
+ msgid "disable gpg signature checking"
+ msgstr "вимкнути перевірку підписів gpg"
+ 
+-#: ../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 ""
+-"встановити значення $releasever у налаштуванні yum config and repo files"
++msgstr "встановити значення $releasever у налаштуванні yum config and repo files"
++
++#: ../cli.py:1518
++msgid "set arbitrary config and repo options"
++msgstr "встановити довільні параметри налаштування і сховищ"
+ 
+ #: ../output.py:305
+ msgid "Jan"
+@@ -567,104 +581,114 @@ msgstr "гру"
+ msgid "Trying other mirror."
+ msgstr "Спроба використання іншого дзеркала."
+ 
+-#: ../output.py:534
++#: ../output.py:579
+ #, python-format
+-msgid "Name       : %s%s%s"
++msgid "Name        : %s%s%s"
+ msgstr "Назва       : %s%s%s"
+ 
+-#: ../output.py:535
++#: ../output.py:580
+ #, python-format
+-msgid "Arch       : %s"
+-msgstr "Архітектура: %s"
++msgid "Arch        : %s"
++msgstr "Архітектура : %s"
+ 
+-#: ../output.py:537
++#: ../output.py:582
+ #, python-format
+-msgid "Epoch      : %s"
++msgid "Epoch       : %s"
+ msgstr "Епоха       : %s"
+ 
+-#: ../output.py:538
++#: ../output.py:583
+ #, python-format
+-msgid "Version    : %s"
++msgid "Version     : %s"
+ msgstr "Версія      : %s"
+ 
+-#: ../output.py:539
++#: ../output.py:584
+ #, python-format
+-msgid "Release    : %s"
++msgid "Release     : %s"
+ msgstr "Випуск      : %s"
+ 
+-#: ../output.py:540
++#: ../output.py:585
+ #, python-format
+-msgid "Size       : %s"
++msgid "Size        : %s"
+ msgstr "Розмір      : %s"
+ 
+-#: ../output.py:541
++#: ../output.py:586 ../output.py:890
+ #, python-format
+-msgid "Repo       : %s"
++msgid "Repo        : %s"
+ msgstr "Сховище     : %s"
+ 
+-#: ../output.py:543
++#: ../output.py:588
+ #, python-format
+-msgid "From repo  : %s"
++msgid "From repo   : %s"
+ msgstr "Зі сховища  : %s"
+ 
+-#: ../output.py:545
++#: ../output.py:590
+ #, python-format
+-msgid "Committer  : %s"
+-msgstr "Автор      : %s"
++msgid "Committer   : %s"
++msgstr "Автор       : %s"
+ 
+-#: ../output.py:546
++#: ../output.py:591
+ #, python-format
+-msgid "Committime : %s"
++msgid "Committime  : %s"
+ msgstr "Час внеску  : %s"
+ 
+-#: ../output.py:547
++#: ../output.py:592
+ #, python-format
+-msgid "Buildtime  : %s"
++msgid "Buildtime   : %s"
+ msgstr "Час збирання : %s"
+ 
+-#: ../output.py:549
++#: ../output.py:594
+ #, python-format
+-msgid "Installtime: %s"
++msgid "Install time: %s"
+ msgstr "Встановлення: %s"
+ 
+-#: ../output.py:550
+-msgid "Summary    : "
++#: ../output.py:602
++#, python-format
++msgid "Installed by: %s"
++msgstr "Користувач : %s"
++
++#: ../output.py:609
++#, python-format
++msgid "Changed by  : %s"
++msgstr "Змінено     : %s"
++
++#: ../output.py:610
++msgid "Summary     : "
+ msgstr "Резюме      : "
+ 
+-#: ../output.py:552
++#: ../output.py:612 ../output.py:903
+ #, python-format
+-msgid "URL        : %s"
++msgid "URL         : %s"
+ msgstr "Адреса      : %s"
+ 
+-#: ../output.py:553
+-msgid "License    : "
+-msgstr "Ліцензія    : "
++#: ../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 "y"
+ 
+-#: ../output.py:622
++#: ../output.py:682
+ msgid "yes"
+ msgstr "так"
+ 
+-#: ../output.py:623
++#: ../output.py:683
+ msgid "n"
+ msgstr "n"
+ 
+-#: ../output.py:623
++#: ../output.py:683
+ msgid "no"
+ msgstr "ні"
+ 
+-#: ../output.py:627
++#: ../output.py:687
+ msgid "Is this ok [y/N]: "
+ msgstr "Виконати дію? [y/N]: "
+ 
+-#: ../output.py:715
++#: ../output.py:775
+ #, python-format
+ msgid ""
+ "\n"
+@@ -673,151 +697,141 @@ msgstr ""
+ "\n"
+ "Група: %s"
+ 
+-#: ../output.py:719
++#: ../output.py:779
+ #, python-format
+ msgid " Group-Id: %s"
+ msgstr " Ід. групи: %s"
+ 
+-#: ../output.py:724
++#: ../output.py:784
+ #, python-format
+ msgid " Description: %s"
+ msgstr " Опис: %s"
+ 
+-#: ../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 "пакунок: %s"
+ 
+-#: ../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 "  залежність: %s"
+ 
+-#: ../output.py:758
++#: ../output.py:818
+ msgid "   Unsatisfied dependency"
+ msgstr "   Незадоволена залежність"
+ 
+-#: ../output.py:830
+-#, python-format
+-msgid "Repo        : %s"
+-msgstr "Сховище     : %s"
+-
+-#: ../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 "Адреса      : %s"
+-
+-#: ../output.py:846
++#: ../output.py:906
+ #, python-format
+ msgid "License     : %s"
+ msgstr "Ліцензія    : %s"
+ 
+-#: ../output.py:849
++#: ../output.py:909
+ #, python-format
+ msgid "Filename    : %s"
+ msgstr "Назва файла : %s"
+ 
+-#: ../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 "Загальний обсяг: %s"
+ 
+-#: ../output.py:904
++#: ../output.py:964
+ #, python-format
+ msgid "Total download size: %s"
+ msgstr "Загальний обсяг звантаження: %s"
+ 
+-#: ../output.py:908
++#: ../output.py:968 ../output.py:988
+ #, python-format
+ msgid "Installed size: %s"
+ msgstr "Розмір після встановлення: %s"
+ 
+-#: ../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 "     заміна  %s%s%s.%s %s\n"
+ 
+-#: ../output.py:1006
++#: ../output.py:1086
+ #, python-format
+ msgid ""
+ "\n"
+@@ -828,52 +842,57 @@ msgstr ""
+ "Резюме операції\n"
+ "%s\n"
+ 
+-#: ../output.py:1013
++#: ../output.py:1097
+ #, python-format
+-msgid ""
+-"Install   %5.5s Package(s)\n"
+-"Upgrade   %5.5s Package(s)\n"
+-msgstr ""
+-"Встановлення   %5.5s пакунків\n"
+-"Оновлення      %5.5s пакунків\n"
++msgid "Install   %5.5s Package(s)\n"
++msgstr "Встановлення %5.5s пакунків\n"
+ 
+-#: ../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"
+-msgstr ""
+-"Вилучення        %5.5s пакунків\n"
+-"Перевстановлення %5.5s пакунків\n"
+-"Зниження версії  %5.5s пакунків\n"
++msgid "Upgrade   %5.5s Package(s)\n"
++msgstr "Оновлення  %5.5s пакунків\n"
++
++#: ../output.py:1105
++#, python-format
++msgid "Remove    %5.5s Package(s)\n"
++msgstr "Вилучення %5.5s пакунків\n"
++
++#: ../output.py:1109
++#, python-format
++msgid "Reinstall %5.5s Package(s)\n"
++msgstr "Перевстановлення %5.5s пакунків\n"
++
++#: ../output.py:1113
++#, python-format
++msgid "Downgrade %5.5s Package(s)\n"
++msgstr "Зниження версії %5.5s пакунків\n"
+ 
+-#: ../output.py:1066
++#: ../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 "два"
+ 
+@@ -881,7 +900,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"
+@@ -894,270 +913,328 @@ msgstr ""
+ "протягом %s%s%s секунд,\n"
+ "щоб завершити операцію.\n"
+ 
+-#: ../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 "I"
+ 
+-#: ../output.py:1203
++#: ../output.py:1308
+ msgid "O"
+ msgstr "O"
+ 
+-#: ../output.py:1204
++#: ../output.py:1309
+ msgid "E"
+ msgstr "E"
+ 
+-#: ../output.py:1205
++#: ../output.py:1310
+ msgid "R"
+ msgstr "R"
+ 
+-#: ../output.py:1206
++#: ../output.py:1311
+ msgid "D"
+ msgstr "D"
+ 
+-#: ../output.py:1207
++#: ../output.py:1312
+ msgid "U"
+ msgstr "U"
+ 
+-#: ../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 "Початок rpmdb   :"
+ 
+-#: ../output.py:1417
++#: ../output.py:1573
+ #, python-format
+ msgid "(%s seconds)"
+ msgstr "(%s секунд)"
+ 
+-#: ../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 "Завершення rpmdb:"
+ 
+-#: ../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:"
+-msgstr "Результат виконання операції:"
++#: ../output.py:1589
++msgid "Command Line   :"
++msgstr "Командний рядок :"
+ 
+-#: ../output.py:1444 ../output.py:1489
+-msgid "Downgraded"
+-msgstr "Знижено версію"
++#: ../output.py:1597
++#, python-format
++msgid "Additional non-default information stored: %d"
++msgstr "Збережені додаткові нетипові дані        : %d"
+ 
+-#. multiple versions installed, both older and newer
+-#: ../output.py:1446
+-msgid "Weird"
+-msgstr "Дивно"
++#: ../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 "Проблеми з rpmdb:"
++
++#: ../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 "Попередні 2 тижні"
+ 
+ #. US default :p
+-#: ../output.py:1550
++#: ../output.py:1729
+ msgid "Last 3 months"
+ msgstr "Попередні 3 місяці"
+ 
+-#: ../output.py:1551
++#: ../output.py:1730
+ msgid "Last 6 months"
+ msgstr "Попередні 6 місяців"
+ 
+-#: ../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 "Не знайдено операції %s"
++
++#: ../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 "%s: для цієї назви додаткових даних не знайдено"
++
++#: ../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 "---> Пакунок %s.%s %s:%s-%s позначено для %s"
+ 
+-#: ../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 "--> Обробка залежності: %s для пакунка: %s"
+ 
+-#: ../output.py:1623
++#: ../output.py:1850
++#, python-format
++msgid "---> Keeping package: %s"
++msgstr "---> Збережено пакунок: %s"
++
++#: ../output.py:1853
+ #, python-format
+ msgid "--> Unresolved Dependency: %s"
+ msgstr "--> Нерозв'язана залежність: %s"
+ 
+-#: ../output.py:1634
++#: ../output.py:1864
+ #, python-format
+ msgid "Package: %s"
+ msgstr "Пакунок: %s"
+ 
+-#: ../output.py:1636
++#: ../output.py:1866
+ #, python-format
+ msgid ""
+ "\n"
+@@ -1166,7 +1243,7 @@ msgstr ""
+ "\n"
+ "    Потребує: %s"
+ 
+-#: ../output.py:1649 ../output.py:1660
++#: ../output.py:1875
+ #, python-format
+ msgid ""
+ "\n"
+@@ -1175,83 +1252,103 @@ msgstr ""
+ "\n"
+ "    %s: %s (%s)"
+ 
+-#: ../output.py:1657
++#: ../output.py:1880
++#, python-format
++msgid ""
++"\n"
++"        %s"
++msgstr ""
++"\n"
++"        %s"
++
++#: ../output.py:1882
++msgid ""
++"\n"
++"        Not found"
++msgstr ""
++"\n"
++"        Не знайдено"
++
++#. 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 "--> Обробка конфлікту: %s конфліктів %s"
+ 
+-#: ../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 "---> У список операцій звантажується заголовок пакунка %s."
+ 
+-#: ../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 "  Сторонньою програмою є: PackageKit"
+ 
+-#: ../utils.py:111
++#: ../utils.py:112
+ #, python-format
+ msgid "  The other application is: %s"
+ msgstr "  Сторонньою програмою є: %s"
+ 
+-#: ../utils.py:114
++#: ../utils.py:115
+ #, python-format
+ msgid "    Memory : %5s RSS (%5sB VSZ)"
+ msgstr "    Пм’ять : %5s RSS (%5sБ VSZ)"
+ 
+-#: ../utils.py:119
++#: ../utils.py:120
+ #, python-format
+ msgid "    Started: %s - %s ago"
+ msgstr "    Почато: %s - %s тому"
+ 
+-#: ../utils.py:121
++#: ../utils.py:122
+ #, python-format
+ msgid "    State  : %s, pid: %d"
+ msgstr "    Стан   : %s, PID: %d"
+ 
+-#: ../utils.py:199
+-#, python-format
+-msgid "PluginExit Error: %s"
+-msgstr "Помилка PluginExit: %s"
+-
+-#: ../utils.py:202
+-#, python-format
+-msgid "Yum Error: %s"
+-msgstr "Помилка Yum: %s"
+-
+-#: ../utils.py:235 ../yummain.py:42
++#: ../utils.py:143 ../yummain.py:42
+ msgid ""
+ "\n"
+ "\n"
+@@ -1261,7 +1358,7 @@ msgstr ""
+ "\n"
+ "Завершення роботи на запит користувача"
+ 
+-#: ../utils.py:241 ../yummain.py:48
++#: ../utils.py:149 ../yummain.py:48
+ msgid ""
+ "\n"
+ "\n"
+@@ -1271,7 +1368,7 @@ msgstr ""
+ "\n"
+ "Завершення роботи через розрив зв’язку"
+ 
+-#: ../utils.py:243 ../yummain.py:50
++#: ../utils.py:151 ../yummain.py:50
+ #, python-format
+ msgid ""
+ "\n"
+@@ -1282,7 +1379,51 @@ msgstr ""
+ "\n"
+ "%s"
+ 
+-#: ../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 ""
++"Зараз yum блокує стороння програма. Завершуємо роботу відповідно до "
++"налаштування exit_on_lock"
++
++#: ../utils.py:260
++#, python-format
++msgid "PluginExit Error: %s"
++msgstr "Помилка PluginExit: %s"
++
++#: ../utils.py:263
++#, python-format
++msgid "Yum Error: %s"
++msgstr "Помилка Yum: %s"
++
++#: ../utils.py:315 ../yummain.py:134 ../yummain.py:173
++#, python-format
++msgid "Error: %s"
++msgstr "Помилка: %s"
++
++#: ../utils.py:319 ../yummain.py:177
++msgid " You could try using --skip-broken to work around the problem"
++msgstr " Щоб обійти проблему, спробуйте скористатися параметром --skip-broken"
++
++#: ../utils.py:321 ../yummain.py:179 ../yummain.py:212
++msgid " You could try running: rpm -Va --nofiles --nodigest"
++msgstr " Спробуйте віддати команду: rpm -Va --nofiles --nodigest"
++
++#: ../utils.py:328 ../yummain.py:144 ../yummain.py:186
++#, python-format
++msgid "Unknown Error(s): Exit Code: %d:"
++msgstr "Невідомі помилки: код виходу: %d:"
++
++#: ../utils.py:334 ../yummain.py:192
++msgid ""
++"\n"
++"Dependencies Resolved"
++msgstr ""
++"\n"
++"Залежності розв’язано"
++
++#: ../utils.py:349 ../yummain.py:215
+ msgid "Complete!"
+ msgstr "Завершено!"
+ 
+@@ -1369,296 +1510,315 @@ msgstr "Файла %s, переданого як аргумент парамет
+ msgid "Error: more than one file given as argument to shell."
+ msgstr "Помилка: shell передано як аргументи декілька файлів."
+ 
+-#: ../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 ""
++"Не увімкнено жодного сховища.\n"
++" Для перегляду списку всіх сховищ віддайте команду «yum repolist all».\n"
++" Увімкнути сховище можна за допомогою команди yum-config-manager --enable <"
++"repo>"
++
++#: ../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 "Встановлення локального пакунка RPM"
+ 
+-#: ../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 "Запуск інтерактивної оболонки yum"
+ 
+-#: ../yumcommands.py:716
++#: ../yumcommands.py:771
+ msgid "Setting up Yum Shell"
+ msgstr "Налаштування оболонки Yum"
+ 
+-#: ../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 "Förrådstorlek   : "
+ msgstr "Розмір сховища: "
  
 -#: ../yumcommands.py:898
 +#: ../yumcommands.py:953
  msgid "Repo-baseurl : "
- msgstr "Förrådsbasurl   : "
+ msgstr "Адреса сховища: "
  
 -#: ../yumcommands.py:906
 +#: ../yumcommands.py:961
  msgid "Repo-metalink: "
- msgstr "Förrådsmetalänk : "
+ msgstr "Метапосилання сховища: "
  
 -#: ../yumcommands.py:910
 +#: ../yumcommands.py:965
  msgid "  Updated    : "
- msgstr "  Uppdaterat    :"
+ msgstr "  Оновлено   : "
  
 -#: ../yumcommands.py:913
 +#: ../yumcommands.py:968
  msgid "Repo-mirrors : "
- msgstr "Förrådspeglar   : "
+ msgstr "Дзеркала сховищ: "
  
 -#: ../yumcommands.py:923
 +#: ../yumcommands.py:978
  #, python-format
  msgid "Never (last: %s)"
- msgstr "Aldrig (senast: %s)"
+ msgstr "Ніколи (востаннє: %s)"
  
 -#: ../yumcommands.py:925
 +#: ../yumcommands.py:980
  #, python-format
  msgid "Instant (last: %s)"
- msgstr "Omedelbart (senast: %s)"
+ msgstr "Негайно (лишилося: %s)"
  
 -#: ../yumcommands.py:928
 +#: ../yumcommands.py:983
  #, python-format
  msgid "%s second(s) (last: %s)"
- msgstr "%s sekunder (senast: %s)"
+ msgstr "%s секунд (лишилося: %s)"
  
 -#: ../yumcommands.py:930
 +#: ../yumcommands.py:985
  msgid "Repo-expire  : "
- msgstr "Förråd går ut    : "
+ msgstr "Строк дії сховища: "
  
 -#: ../yumcommands.py:933
 +#: ../yumcommands.py:988
  msgid "Repo-exclude : "
- msgstr "Förråd utesluter : "
+ msgstr "Виключення сховища: "
  
 -#: ../yumcommands.py:937
 +#: ../yumcommands.py:992
  msgid "Repo-include : "
- msgstr "Förråd inkluderar: "
+ msgstr "Включення сховища: "
  
 -#: ../yumcommands.py:941
 +#: ../yumcommands.py:996
  msgid "Repo-excluded: "
- msgstr "Förråd uteslutet : "
+ 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 "förråds-id"
+ msgstr "ід. сховища"
  
 -#: ../yumcommands.py:968 ../yumcommands.py:969 ../yumcommands.py:987
 +#: ../yumcommands.py:1023 ../yumcommands.py:1024 ../yumcommands.py:1042
  msgid "status"
- msgstr "status"
+ msgstr "стан"
  
 -#: ../yumcommands.py:981
 +#: ../yumcommands.py:1036
  msgid "repo name"
- msgstr "förrådsnamn"
+ msgstr "назва сховища"
  
 -#: ../yumcommands.py:1018
 +#: ../yumcommands.py:1073
  msgid "Display a helpful usage message"
- msgstr "Visa ett hjälpsamt meddelande om användning"
+ msgstr "Показати корисну підказку щодо використання"
  
 -#: ../yumcommands.py:1052
 +#: ../yumcommands.py:1107
  #, python-format
  msgid "No help available for %s"
- msgstr "Ingen hjälp tillgänglig för %s"
+ msgstr "Довідки щодо %s не виявлено"
  
 -#: ../yumcommands.py:1057
 +#: ../yumcommands.py:1112
  msgid ""
  "\n"
  "\n"
-@@ -1651,7 +1817,7 @@ msgstr ""
+@@ -1668,7 +1828,7 @@ msgstr ""
  "\n"
- "alias: "
+ "інші назви: "
  
 -#: ../yumcommands.py:1059
 +#: ../yumcommands.py:1114
  msgid ""
  "\n"
  "\n"
-@@ -1661,106 +1827,84 @@ msgstr ""
+@@ -1678,105 +1838,81 @@ msgstr ""
  "\n"
- "alias: "
+ "інша назва: "
  
 -#: ../yumcommands.py:1087
 +#: ../yumcommands.py:1143
  msgid "Setting up Reinstall Process"
- msgstr "Förbereder ominstallationsprocessen"
+ msgstr "Налаштування процесу перевстановлення"
  
 -#: ../yumcommands.py:1095
 +#: ../yumcommands.py:1151
  msgid "reinstall a package"
- msgstr "ominstallera ett paket"
+ msgstr "перевстановлення пакунка"
  
 -#: ../yumcommands.py:1113
 +#: ../yumcommands.py:1170
  msgid "Setting up Downgrade Process"
- msgstr "Förbereder nedgraderingsprocessen"
+ msgstr "Налаштування процесу зниження версії"
  
 -#: ../yumcommands.py:1120
 +#: ../yumcommands.py:1177
  msgid "downgrade a package"
- msgstr "nedgradera ett paket"
+ msgstr "зниження версії пакунка"
  
 -#: ../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."
+ msgstr "Показ версії для вашої архітектури і/або списку доступних сховищ."
  
 -#: ../yumcommands.py:1173
 +#: ../yumcommands.py:1230
  msgid " Yum version groups:"
- msgstr " Yum versionsgrupper:"
+ msgstr " Групи версій Yum:"
  
 -#: ../yumcommands.py:1183
 +#: ../yumcommands.py:1240
  msgid " Group   :"
- msgstr " Grupp:"
+ msgstr " Група   :"
  
 -#: ../yumcommands.py:1184
 +#: ../yumcommands.py:1241
  msgid " Packages:"
- msgstr " Paket:"
+ msgstr " Пакунки:"
  
 -#: ../yumcommands.py:1213
 +#: ../yumcommands.py:1270
  msgid "Installed:"
- msgstr "Installerade:"
+ msgstr "Встановлено:"
  
 -#: ../yumcommands.py:1218
 +#: ../yumcommands.py:1278
  msgid "Group-Installed:"
- msgstr "Gruppinstallerade:"
+ msgstr "Встановлені групи:"
  
 -#: ../yumcommands.py:1227
 +#: ../yumcommands.py:1287
  msgid "Available:"
- msgstr "Tillgängliga:"
+ msgstr "Доступні:"
  
 -#: ../yumcommands.py:1233
 +#: ../yumcommands.py:1296
  msgid "Group-Available:"
- msgstr "Grupptillgängliga:"
+ msgstr "Доступні групи:"
  
 -#: ../yumcommands.py:1272
 +#: ../yumcommands.py:1335
  msgid "Display, or use, the transaction history"
- msgstr "Visa, eller använd, transaktionshistorien"
+ msgstr "Показ або використання журналу операцій"
  
 -#: ../yumcommands.py:1300
 +#: ../yumcommands.py:1363
  #, python-format
  msgid "Invalid history sub-command, use: %s."
- msgstr "Ogiltigt underkommando till history, använd: %s."
+ msgstr "Некоректна підкоманда журналу, скористайтеся: %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."
++msgstr "У вас немає права доступу до бази даних журналу."
 +
 +#: ../yumcommands.py:1413
  msgid "Check for problems in the rpmdb"
- msgstr "Kontrollera om det finns problem i rpmdb:n"
+ msgstr "Пошук проблем у rpmdb"
  
 -#: ../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 ..."
- 
+-msgid ""
+-"Another app is currently holding the yum lock; waiting for it to exit..."
+-msgstr ""
+-"Зараз yum блокує стороння програма. Зачекаємо на завершення її роботи..."
+-
 -#: ../yummain.py:130 ../yummain.py:169
 -#, python-format
 -msgid "Error: %s"
--msgstr "Fel: %s"
+-msgstr "Помилка: %s"
 -
 -#: ../yummain.py:140 ../yummain.py:182
 -#, python-format
 -msgid "Unknown Error(s): Exit Code: %d:"
--msgstr "Okänt fel: Felkod: %d:"
--
+-msgstr "Невідомі помилки: код виходу: %d:"
++#: ../yummain.py:103
++msgid "Another app is currently holding the yum lock; waiting for it to exit..."
++msgstr "Зараз yum блокує стороння програма. Зачекаємо на завершення її роботи..."
+ 
  #. Depsolve stage
 -#: ../yummain.py:147
 +#: ../yummain.py:151
  msgid "Resolving Dependencies"
- msgstr "Löser upp beroenden"
+ msgstr "Розв’язання залежностей"
  
 -#: ../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"
+-msgstr " Щоб обійти проблему, спробуйте скористатися параметром --skip-broken"
 -
 -#: ../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"
+-msgstr " Спробуйте віддати команду: rpm -Va --nofiles --nodigest"
 -
 -#: ../yummain.py:188
 -msgid ""
@@ -31923,133 +35868,134 @@ index 48b836b..7578c68 100644
 -"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"
+@@ -1794,139 +1930,129 @@ msgstr "doTsSetup() буде усунуто у майбутніх версіях
  msgid "Setting up TransactionSets before config class is up"
- msgstr "Förbereder transaktionsmängder före konfigurationsklass är uppe"
+ msgstr "Налаштування наборів операцій до включення класу налаштувань"
  
 -#: ../yum/depsolve.py:148
 +#: ../yum/depsolve.py:151
  #, python-format
  msgid "Invalid tsflag in config file: %s"
- msgstr "Ogiltig tsflag i konfigurationsfil: %s"
+ msgstr "Некоректне значення tsflag у файлі налаштувань: %s"
  
 -#: ../yum/depsolve.py:159
 +#: ../yum/depsolve.py:162
  #, python-format
  msgid "Searching pkgSack for dep: %s"
- msgstr "Söker pkgSack efter beroende: %s"
+ msgstr "Пошук pkgSack для залежності: %s"
  
 -#: ../yum/depsolve.py:175
 -#, python-format
 -msgid "Potential match for %s from %s"
--msgstr "Potentiell match av %s från %s"
+-msgstr "Потенційний відповідник %s з %s"
 -
 -#: ../yum/depsolve.py:183
 -#, python-format
 -msgid "Matched %s to require for %s"
--msgstr "Matchade %s mot behov från %s"
+-msgstr "%s відповідає потрібному для %s"
 -
 -#: ../yum/depsolve.py:225
 +#: ../yum/depsolve.py:205
  #, python-format
  msgid "Member: %s"
- msgstr "Medlem: %s"
+ msgstr "Частина: %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"
+ msgstr "%s перетворено для встановлення"
  
 -#: ../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"
+ msgstr "Додавання пакунка %s у режимі %s"
  
 -#: ../yum/depsolve.py:256
 +#: ../yum/depsolve.py:242
  #, python-format
  msgid "Removing Package %s"
- msgstr "Tar bort paket %s"
+ msgstr "Вилучення пакунка %s"
  
 -#: ../yum/depsolve.py:278
 +#: ../yum/depsolve.py:264
  #, python-format
  msgid "%s requires: %s"
- msgstr "%s behöver: %s"
+ msgstr "%s потребує: %s"
  
 -#: ../yum/depsolve.py:319
 +#: ../yum/depsolve.py:305
  #, python-format
  msgid "%s requires %s"
- msgstr "%s behöver %s"
+ msgstr "%s потребує %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"
+ msgstr "Потрібний пакунок вже знайдено, обхідний маневр"
  
 -#: ../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"
+ msgstr "Потрібна залежність задана не яка назва пакунка. Шукаємо: %s"
  
 -#: ../yum/depsolve.py:363
 +#: ../yum/depsolve.py:349
  #, python-format
  msgid "Potential Provider: %s"
- msgstr "Potentiell tillhandahållare: %s"
+ msgstr "Можливе джерело залежності: %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"
+ msgstr "Режим %s для надання %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"
+ msgstr "Режим надання пакунка %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"
+ msgstr "TSINFO: пакунок %s, потрібний для %s, позначено для вилучення"
  
 -#: ../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."
+ msgstr ""
+ "TSINFO: %s стає застарілим після встановлення %s для розв’язання залежностей."
  
 -#: ../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"
+ msgstr "TSINFO: оновлення %s для розв’язання залежностей."
  
 -#: ../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"
+ msgstr "Не вдалося знайти шлях оновлення для залежності %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"
+ msgstr "Встановлено швидку відповідність %s пакунку потрібному для пакунка %s"
  
  #. is it already installed?
 -#: ../yum/depsolve.py:491
@@ -32057,338 +36003,341 @@ index 48b836b..7578c68 100644
  #, 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."
+ "%s належить до списку супутніх пакунків, його вже встановлено, пропускаємо."
  
 -#: ../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."
+ msgstr "Потенційний пакунок розв’язання %s має новішу версію у 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."
+ msgstr "Встановлено новішу версію потенційного пакунка розв’язання %s."
  
 -#: ../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"
+ msgstr "%s вже перебуває у списку, пропускаємо його"
  
 -#: ../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"
+ msgstr "TSINFO: позначення %s як оновлення для %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"
+ msgstr "TSINFO: позначення %s як такий, який слід встановити для %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"
+ msgstr "Успіх — порожня операція"
  
-@@ -1927,36 +2061,36 @@ msgstr "Beroendeprocessen avslutas"
+@@ -1943,36 +2069,36 @@ msgstr "Завершення процесу розв’язання залежн
  msgid "%s from %s has depsolving problems"
- msgstr "%s från %s har problem att lösa beroenden"
+ msgstr "У %s з %s виникли проблеми з розв’язанням залежностей"
  
 -#: ../yum/depsolve.py:782
 +#: ../yum/depsolve.py:781
  msgid "Success - deps resolved"
- msgstr "Klart - beroenden upplösta"
+ msgstr "Успіх — залежності розв’язано"
  
 -#: ../yum/depsolve.py:796
 +#: ../yum/depsolve.py:802
  #, python-format
  msgid "Checking deps for %s"
- msgstr "Kontrollerar beroenden för %s"
+ msgstr "Перевірка залежностей для %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"
+ msgstr "пошук %s, потрібного для %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"
+ msgstr "Виконання compare_providers() для %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"
+ msgstr "краща архітектура у po %s"
  
 -#: ../yum/depsolve.py:1218
 +#: ../yum/depsolve.py:1244
  #, python-format
  msgid "%s obsoletes %s"
- msgstr "%s fasar ut %s"
+ msgstr "%s робить застарілим %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"
+@@ -1981,123 +2107,143 @@ msgstr ""
+ "archdist порівняно %s з %s у %s\n"
+ "  Кращий варіант: %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"
+ msgstr "загальний sourcerpm %s і %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"
+ msgstr "базовий пакунок %s встановлено для %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"
+ msgstr "загальний префікс %s для %s і %s"
  
 -#: ../yum/depsolve.py:1256
 +#: ../yum/depsolve.py:1305
 +#, python-format
 +msgid "requires minimal: %d"
-+msgstr "behöver minst: %d"
++msgstr "мінімальна вимога: %d"
 +
 +#: ../yum/depsolve.py:1309
 +#, python-format
 +msgid " Winner: %s"
-+msgstr "Vinnare: %s"
++msgstr " Переможець: %s"
 +
 +#: ../yum/depsolve.py:1314
 +#, python-format
 +msgid " Loser(with %d): %s"
-+msgstr " Förlorare(med %d): %s"
++msgstr " Невдаха(з %d): %s"
 +
 +#: ../yum/depsolve.py:1330
  #, python-format
  msgid "Best Order: %s"
- msgstr "Bästa ordning: %s"
+ msgstr "Найкращий порядок: %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"
+ msgstr "doConfigSetup() буде усунуто у майбутніх версіях 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"
++msgstr "Сховище %r: помилка під час обробки налаштувань: %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"
+ msgstr ""
+ "Для сховища %r у налаштуваннях не вказано назви, використовуємо ідентифікатор"
  
 -#: ../yum/__init__.py:462
 +#: ../yum/__init__.py:497
  msgid "plugins already initialised"
- msgstr "insticksmoduler redan initierade"
+ msgstr "додатки вже ініціалізовано"
  
 -#: ../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"
+ msgstr "doRpmDBSetup() буде усунуто у наступних версіях Yum.\n"
  
 -#: ../yum/__init__.py:480
 +#: ../yum/__init__.py:515
  msgid "Reading Local RPMDB"
- msgstr "Läser lokal RPMDB"
+ msgstr "Читання локальної 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"
+ msgstr "doRepoSetup() буде усунуто у майбутніх версіях 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"
+ msgstr "doSackSetup() буде усунуто у майбутніх версіях Yum.\n"
  
 -#: ../yum/__init__.py:554
 +#: ../yum/__init__.py:607
  msgid "Setting up Package Sacks"
- msgstr "Förbereder paketsäckar"
+ msgstr "Налаштування наборів пакунків"
  
 -#: ../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"
+ msgstr "Об’єкт сховища %s не має _resetSack method,\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"
+ msgstr "тому параметри цього сховища не може бути відновлено до початкових.\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"
+ msgstr "doUpdateSetup() буде усунуто у майбутніх версіях Yum.\n"
  
 -#: ../yum/__init__.py:617
 +#: ../yum/__init__.py:670
  msgid "Building updates object"
- msgstr "Bygger uppdateringsobjekt"
+ msgstr "Побудова об’єкта оновлення"
  
 -#: ../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"
+ msgstr "doGroupSetup() буде усунуто у майбутніх версіях Yum.\n"
  
 -#: ../yum/__init__.py:677
 +#: ../yum/__init__.py:734
  msgid "Getting group metadata"
- msgstr "Hämtar gruppmetadata"
+ msgstr "Отримання метаданих групи"
  
 -#: ../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"
+ msgstr "Додавання файла групи зі сховища: %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"
+ msgstr "Не вдалося додати файл груп зі сховища: %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"
+ msgstr "У жодному сховищі немає доступних груп"
  
 -#: ../yum/__init__.py:730
 +#: ../yum/__init__.py:787
  msgid "Getting pkgtags metadata"
- msgstr "Hämtar pakettaggsmetadata"
+ msgstr "Отримання метаданих міток пакунків"
  
 -#: ../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"
+ msgstr "Додавання міток зі сховища: %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"
+ msgstr "Не вдалося додати мітки пакунків для сховища: %s — %s"
  
 -#: ../yum/__init__.py:827
 +#: ../yum/__init__.py:884
  msgid "Importing additional filelist information"
- msgstr "Importerar ytterligare fillisteinformation"
+ msgstr "Імпортування додаткових відомостей списку файлів"
  
 -#: ../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."
+ msgstr "У пакунку yum-utils виявлено програму %s%s%s."
  
 -#: ../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."
+@@ -2105,18 +2251,23 @@ msgstr ""
+ "Залишилися незавершені операції. Для їх завершення вам слід спочатку "
+ "запустити yum-complete-transaction."
  
 +#: ../yum/__init__.py:985
 +#, python-format
 +msgid "Trying to remove \"%s\", which is protected"
-+msgstr "Försöker ta bort ”%s”, som är skyddad"
++msgstr "Спроба вилучення захищеного запису «%s»"
 +
  #. Kind of hacky
 -#: ../yum/__init__.py:922
 +#: ../yum/__init__.py:1044
  #, python-format
  msgid "Skip-broken round %i"
- msgstr "Hoppa-över-trasiga runda %i"
+ msgstr "Цикл пропуску пошкоджених %i"
  
 -#: ../yum/__init__.py:975
 +#: ../yum/__init__.py:1101
  #, python-format
  msgid "Skip-broken took %i rounds "
- msgstr "Hoppa-över-trasiga tog %i rundor "
+ msgstr "На усування пропущених і пошкоджених пакунків витрачено %i циклів "
  
 -#: ../yum/__init__.py:976
 +#: ../yum/__init__.py:1102
  msgid ""
  "\n"
  "Packages skipped because of dependency problems:"
-@@ -2107,91 +2266,115 @@ msgstr ""
+@@ -2124,93 +2275,116 @@ 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"
+ msgstr "    %s з %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:"
++msgstr ""
++"** Знайдено %d проблем rpmdb, які вже існували, командою «yum check» виведено "
++"такі дані:"
 +
 +#: ../yum/__init__.py:1255
  msgid "Warning: RPMDB altered outside of yum."
- msgstr "Varning: RPMDB ändrad utanför yum."
+ msgstr "Попередження: RPMDB змінено поза межами yum."
  
 -#: ../yum/__init__.py:1126
 +#: ../yum/__init__.py:1267
  msgid "missing requires"
- msgstr "saknade behov"
+ msgstr "не має потрібних"
  
 -#: ../yum/__init__.py:1127
 +#: ../yum/__init__.py:1268
  msgid "installed conflict"
- msgstr "installerade konflikter"
+ msgstr "конфлікт встановлення"
  
 -#: ../yum/__init__.py:1180
+-msgid ""
+-"Warning: scriptlet or other non-fatal errors occurred during transaction."
 +#: ../yum/__init__.py:1366
- msgid ""
- "Warning: scriptlet or other non-fatal errors occurred during transaction."
++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:"
++msgstr "Не вдалося розпочати операцію:"
 +
 +#. should this be 'to_unicoded'?
 +#: ../yum/__init__.py:1379
 +msgid "Could not run transaction."
-+msgstr "Kunde inte köra transaktionen."
++msgstr "Не вдалося розпочати операцію."
 +
 +#: ../yum/__init__.py:1392
  #, python-format
  msgid "Failed to remove transaction file %s"
- msgstr "Kunde inte ta bort transaktionsfilen %s"
+ msgstr "Не вдалося вилучити файл операції %s"
  
  #. maybe a file log here, too
  #. but raising an exception is not going to do any good
@@ -32396,7 +36345,7 @@ index 48b836b..7578c68 100644
 +#: ../yum/__init__.py:1424
  #, python-format
  msgid "%s was supposed to be installed but is not!"
- msgstr "%s skulle installerats men gjordes det inte!"
+ msgstr "%s мало бути встановлено, але цю дію не було виконано!"
  
  #. maybe a file log here, too
  #. but raising an exception is not going to do any good
@@ -32404,204 +36353,198 @@ index 48b836b..7578c68 100644
 +#: ../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!"
+ msgstr "%s мало бути вилучено, але цього не сталося!"
  
 +#: ../yum/__init__.py:1597
 +#, python-format
 +msgid "Could not open lock %s: %s"
-+msgstr "Kunde inte öppna låset %s: %s "
++msgstr "Не вдалося вилучити блокування %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"
+ msgstr "Не вдалося перевірити, чи є активним PID %s"
  
  #. 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."
+ msgstr "Блокування %s: запущено іншу копію з 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 "
+ msgstr "Не вдалося створити блокування %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"
++"Package does not match intended download. Suggestion: run yum --enablerepo=%"
++"s clean metadata"
+ msgstr ""
+ "Пакунок не відповідає тому, який програма має намір звантажити. Пропозиція: "
+-"віддайте команду yum clean metadata"
++"віддайте команду yum -enablerepo=%s clean metadata"
  
 -#: ../yum/__init__.py:1486
 +#: ../yum/__init__.py:1714
  msgid "Could not perform checksum"
- msgstr "Kunde inte utföra kontrollsummering"
+ msgstr "Не вдалося перевірити контрольну суму"
  
 -#: ../yum/__init__.py:1489
 +#: ../yum/__init__.py:1717
  msgid "Package does not match checksum"
- msgstr "Paketet stämmer inte med kontrollsumman"
+ msgstr "Контрольна сума пакунка не збігається з еталонною"
  
 -#: ../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"
+ msgstr "контрольна сума пакунка не збігається, кешування для %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"
+ msgstr "використано локальну копію %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"
+@@ -2221,11 +2395,11 @@ msgstr ""
+ "    * вільно   %s\n"
+ "    * потрібно %s"
  
 -#: ../yum/__init__.py:1624
 +#: ../yum/__init__.py:1862
  msgid "Header is not complete."
- msgstr "Huvudet är inte komplett."
+ msgstr "Заголовок не завершено."
  
 -#: ../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"
+@@ -2233,62 +2407,62 @@ msgstr ""
+ "Заголовка немає у локальному кеші, увімкнено режим «лише кешування». Не "
+ "вдалося звантажити %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"
+ msgstr "Відкритий ключ для %s не встановлено"
  
 -#: ../yum/__init__.py:1720
 +#: ../yum/__init__.py:1958
  #, python-format
  msgid "Problem opening package %s"
- msgstr "Problem att öppna paketet %s"
+ msgstr "Проблеми з відкриттям пакунка %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"
+ msgstr "Відкритий ключ %s не є надійним"
  
 -#: ../yum/__init__.py:1732
 +#: ../yum/__init__.py:1970
  #, python-format
  msgid "Package %s is not signed"
- msgstr "Paket %s är inte signerat"
+ msgstr "Пакунок %s не підписано"
  
 -#: ../yum/__init__.py:1770
 +#: ../yum/__init__.py:2008
  #, python-format
  msgid "Cannot remove %s"
- msgstr "Det går inte att ta bort %s"
+ msgstr "Не вдалося вилучити %s"
  
 -#: ../yum/__init__.py:1774
 +#: ../yum/__init__.py:2012
  #, python-format
  msgid "%s removed"
- msgstr "%s borttaget"
+ msgstr "%s вилучено"
  
- # 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"
+ msgstr "Не вдалося вилучити файл %s, %s"
  
 -#: ../yum/__init__.py:1824
 +#: ../yum/__init__.py:2062
  #, python-format
  msgid "%s file %s removed"
- msgstr "%s-filen %s borttagen"
+ msgstr "Файл %s, %s, вилучено"
  
 -#: ../yum/__init__.py:1826
 +#: ../yum/__init__.py:2064
  #, python-format
  msgid "%d %s files removed"
- msgstr "%d %s-filer borttagna"
+ msgstr "Вилучено %d файлів %s"
  
 -#: ../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"
+ msgstr "У наборі для %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"
+ msgstr "Немає відповідників %s.%s %s:%s-%s з оновлення"
  
 -#: ../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"
+ "searchPackages() will go away in a future version of "
+ "Yum.                      Use searchGenerator() instead. \n"
+@@ -2296,180 +2470,213 @@ msgstr ""
+ "searchPackages() буде усунуто у майбутніх версіях Yum.                      "
+ "Використовуйте краще searchGenerator(). \n"
  
 -#: ../yum/__init__.py:2219
 +#: ../yum/__init__.py:2472
  #, python-format
  msgid "Searching %d packages"
- msgstr "Söker i %d paket"
+ msgstr "Пошук %d пакунків"
  
 -#: ../yum/__init__.py:2223
 +#: ../yum/__init__.py:2476
  #, python-format
  msgid "searching package %s"
- msgstr "söker i paketet %s"
+ msgstr "пошук пакунка %s"
  
 -#: ../yum/__init__.py:2235
 +#: ../yum/__init__.py:2488
  msgid "searching in file entries"
- msgstr "söker i filposter"
+ msgstr "пошук серед файлів"
  
 -#: ../yum/__init__.py:2242
 +#: ../yum/__init__.py:2495
  msgid "searching in provides entries"
- msgstr "söker i tillhandahållandeposter"
+ msgstr "пошук у супутніх записах"
  
 -#: ../yum/__init__.py:2275
 +#: ../yum/__init__.py:2528
  #, python-format
  msgid "Provides-match: %s"
- msgstr "Tillhandahållandematchning: %s"
+ msgstr "Відповідність встановленому: %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"
+ msgstr "Для налаштованих сховищ дані груп недоступні"
  
 -#: ../yum/__init__.py:2355 ../yum/__init__.py:2374 ../yum/__init__.py:2405
 -#: ../yum/__init__.py:2411 ../yum/__init__.py:2493 ../yum/__init__.py:2497
@@ -32611,25 +36554,25 @@ index 48b836b..7578c68 100644
 +#: ../yum/__init__.py:3095
  #, python-format
  msgid "No Group named %s exists"
- msgstr "Det finns ingen grupp med namnet %s"
+ msgstr "Групи з назвою %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"
+ msgstr "пакунок %s було позначено у групі %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"
+ msgstr "Додавання пакунка %s з групи %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"
+ msgstr "Не вдалося знайти пакунок з назвою %s для встановлення"
  
 -#: ../yum/__init__.py:2539
 +#. This can happen due to excludes after .up has
@@ -32637,44 +36580,43 @@ index 48b836b..7578c68 100644
 +#: ../yum/__init__.py:2794
  #, python-format
  msgid "Package tuple %s could not be found in packagesack"
- msgstr "Pakettupel %s fanns inte i paketsäcken"
+ msgstr "У наборі пакунків не вдалося знайти кортеж пакунків %s"
  
 -#: ../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"
+ msgstr "У базі даних RPM не вдалося знайти кортеж пакунків %s"
  
 -#: ../yum/__init__.py:2614 ../yum/__init__.py:2664
 -msgid "Invalid version flag"
--msgstr "Ogiltig versionsflagga"
+-msgstr "Некоректний прапорець версії"
 -
 -#: ../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"
+ msgstr "Пакунків з %s не знайдено"
  
 -#: ../yum/__init__.py:2855
 +#: ../yum/__init__.py:2901
 +msgid "Invalid version flag"
-+msgstr "Ogiltig versionsflagga"
++msgstr "Некоректний прапорець версії"
 +
 +#: ../yum/__init__.py:3145
  msgid "Package Object was not a package object instance"
- msgstr "Paketobjektet var inte en paketobjektinstans"
+ msgstr "Об’єкт пакунка не був екземпляром об’єкта пакунка"
  
 -#: ../yum/__init__.py:2859
 +#: ../yum/__init__.py:3149
  msgid "Nothing specified to install"
- msgstr "Inget angivet att installeras"
+ msgstr "Список встановлення порожній"
  
 -#: ../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"
+ msgstr "Пошук віртуальних супутніх пакунків або файлів для %s"
  
 -#: ../yum/__init__.py:2881 ../yum/__init__.py:3197 ../yum/__init__.py:3365
 -#: ../yum/__init__.py:3658
@@ -32682,30 +36624,30 @@ index 48b836b..7578c68 100644
 +#: ../yum/__init__.py:3998
  #, python-format
  msgid "No Match for argument: %s"
- msgstr "Ingen matchning för argument: %s"
+ msgstr "Відповідника параметра не знайдено: %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"
+ msgstr "Пакунок %s вже встановлено, його не можна позначити"
  
 -#: ../yum/__init__.py:2960
 +#: ../yum/__init__.py:3253
  msgid "No package(s) available to install"
- msgstr "Inga paket tillgängliga att installera"
+ msgstr "Немає доступних для встановлення пакунків"
  
 -#: ../yum/__init__.py:2972
 +#: ../yum/__init__.py:3265
  #, python-format
  msgid "Package: %s  - already in transaction set"
- msgstr "Paket: %s - redan i transaktionsmängden"
+ msgstr "Пакунок: %s  — вже у наборі операцій"
  
 -#: ../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"
+ msgstr "Пакунок %s став застарілим після встановлення %s"
  
 -#: ../yum/__init__.py:3001
 +#: ../yum/__init__.py:3296
@@ -32714,31 +36656,33 @@ index 48b836b..7578c68 100644
 +"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"
++"Пакунок %s став застарілим після встановлення %s, але застарілий пакунок не "
++"містить вимог до інших пакунків"
 +
 +#: ../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"
+ msgstr ""
+ "Пакунок %s став застарілим після встановлення %s, спробуємо встановити "
+ "замість нього %s"
  
 -#: ../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"
+ msgstr "Пакунок %s вже встановлено, його версія є найсвіжішою"
  
 -#: ../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."
+ msgstr "Відповідник пакунка %s вже встановлено. Перевірка існування оновлень."
  
  #. update everything (the easy case)
 -#: ../yum/__init__.py:3126
 +#: ../yum/__init__.py:3424
  msgid "Updating Everything"
- msgstr "Uppdaterar allt"
+ msgstr "Повне оновлення"
  
 -#: ../yum/__init__.py:3147 ../yum/__init__.py:3262 ../yum/__init__.py:3289
 -#: ../yum/__init__.py:3315
@@ -32746,7 +36690,7 @@ index 48b836b..7578c68 100644
 +#: ../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"
+ msgstr "Неоновлюваний пакунок, який вже застарів: %s.%s %s:%s-%s"
  
 -#: ../yum/__init__.py:3182 ../yum/__init__.py:3362
 +#: ../yum/__init__.py:3489 ../yum/__init__.py:3680
@@ -32758,253 +36702,261 @@ index 48b836b..7578c68 100644
 +#: ../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"
+ msgstr "Пакунок вже застарілий: %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"
+ msgstr "Неоновлюваний пакунок, який застарів: %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"
+ msgstr "Неоновлюваний пакунок, який було оновлено раніше: %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"
+ msgstr "Відповідного пакунка для вилучення не знайдено"
  
 -#: ../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"
++msgstr "Пропущено поточне робоче ядро: %s"
 +
 +#: ../yum/__init__.py:3709
 +#, python-format
 +msgid "Removing %s from the transaction"
-+msgstr "Ta bort %s från transaktionen"
++msgstr "Вилучення %s з запису операції"
 +
 +#: ../yum/__init__.py:3744
  #, python-format
  msgid "Cannot open: %s. Skipping."
- msgstr "Det går inte att öppna: %s.  Hoppar över."
+ msgstr "Не вдалося відкрити: %s. Пропускаємо."
  
 -#: ../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"
+ msgstr "Перевірка %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."
++msgstr "Не вдалося виконати локальне встановлення deltarpm: %s. Пропущено."
 +
 +#: ../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"
+ msgstr "Не вдалося додати пакунок %s до операції. Несумісна архітектура: %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"
++msgstr ""
++"Не вдалося встановити пакунок %s. Він є застарілим після встановлення пакунка "
++"%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."
+@@ -2478,216 +2685,242 @@ msgstr ""
+ "Пакунок %s не встановлено, не вдалося оновити його. Віддайте команду yum "
+ "install, щоб встановити цей пакунок."
  
 -#: ../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"
+ msgstr "Виключення %s"
  
 -#: ../yum/__init__.py:3465
 +#: ../yum/__init__.py:3808
  #, python-format
  msgid "Marking %s to be installed"
- msgstr "Noterar %s för installation"
+ msgstr "Позначення %s для встановлення"
  
 -#: ../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"
+ msgstr "Позначення %s як оновлення %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."
+ msgstr "%s: не оновлює встановлений пакунок."
  
 -#: ../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."
+ msgstr "Не вдалося відкрити файл %s. Пропускаємо."
  
 -#: ../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"
+ msgstr "Проблема з перевстановленням: не виявлено пакунків для вилучення"
  
 -#: ../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"
+-msgstr ""
+-"Пакунок %s можна встановлювати паралельно з іншими версіями, пропускаємо"
 -
 -#: ../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"
+ msgstr ""
+ "Проблема з перевстановленням: не виявлено відповідного пакунка %s для "
+ "встановлення"
  
 -#: ../yum/__init__.py:3678
 +#: ../yum/__init__.py:4018
  msgid "No package(s) available to downgrade"
- msgstr "Inga paket tillgängliga att nedgradera"
+ msgstr "Немає доступних для зниження версії пакунків"
  
 -#: ../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"
++msgstr "Пакунок %s можна встановлювати паралельно з іншими версіями, пропускаємо"
 +
 +#: ../yum/__init__.py:4072
  #, python-format
  msgid "No Match for available package: %s"
- msgstr "Ingen matchning för tillgängliga paket: %s"
+ msgstr "Немає відповідників для доступного пакунка: %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"
+ msgstr "Для пакунка доступне лише оновлення: %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"
+ msgstr "Не вдалося знизити версію: %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"
+ msgstr "Отримання ключа GPG з %s"
  
 -#: ../yum/__init__.py:3897
 +#: ../yum/__init__.py:4238
  msgid "GPG key retrieval failed: "
- msgstr "Hämtandet av GPG-nyckeln misslyckades: "
+ msgstr "Невдала спроба отримання ключа GPG: "
  
 -#: ../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"
+ msgstr "Некоректний ключ GPG з %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"
+ msgstr "Помилка обробник ключа GPG: у ключі немає значення %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"
+-msgstr "Ключ GPG у %s (0x%s) вже встановлено"
 +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"
-+
++"Імпортування ключа GPG 0x%s:\n"
++" Ідентифікатор: «%s»\n"
++" Пакунок      : %s (%s)\n"
++" Джерело      : %s"
+ 
+-#. Try installing/updating GPG key
+-#: ../yum/__init__.py:3949 ../yum/__init__.py:4011
 +#: ../yum/__init__.py:4275
-+#, python-format
+ #, python-format
+-msgid "Importing GPG key 0x%s \"%s\" from %s"
+-msgstr "Імпортування ключа GPG 0x%s «%s» з %s"
 +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
++"Імпортування ключа GPG 0x%s:\n"
++" Ідентифікатор: «%s»\n"
++" Джерело      : %s"
++
 +#: ../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"
++#, python-format
 +msgid "GPG key at %s (0x%s) is already installed"
-+msgstr "GPG-nyckel vid %s (0x%s) är redan installerad"
++msgstr "Ключ GPG у %s (0x%s) вже встановлено"
  
 -#: ../yum/__init__.py:3966
 +#: ../yum/__init__.py:4326
  msgid "Not installing key"
- msgstr "Installerar inte nyckeln"
+ msgstr "Ключ не встановлюється"
  
 -#: ../yum/__init__.py:3972
 +#: ../yum/__init__.py:4332
  #, python-format
  msgid "Key import failed (code %d)"
- msgstr "Nyckelimport misslyckades (kod %d)"
+ msgstr "Помилка імпортування ключа (код %d)"
  
 -#: ../yum/__init__.py:3973 ../yum/__init__.py:4032
 +#: ../yum/__init__.py:4333 ../yum/__init__.py:4389
  msgid "Key imported successfully"
- msgstr "Nyckelimport lyckades"
+ msgstr "Ключ успішно імпортовано"
  
 -#: ../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."
+ "are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+-"Ключі GPG зі списку сховища «%s» вже встановлено, але вони є некоректними "
+-"для цього пакунка.\n"
++"Ключі GPG зі списку сховища «%s» вже встановлено, але вони є некоректними для "
++"цього пакунка.\n"
+ "Перевірте, чи правильно вказано адреси URL для цього сховища."
  
 -#: ../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?"
+ msgstr "Імпортування ключів не допомогло, помилкові ключі?"
  
 -#: ../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"
+ msgstr "Ключ GPG у %s (0x%s) вже імпортовано"
  
 -#: ../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"
+ msgstr "Ключ сховища %s не встановлюється"
  
 -#: ../yum/__init__.py:4031
 +#: ../yum/__init__.py:4388
  msgid "Key import failed"
- msgstr "Nyckelimport misslyckades"
+ msgstr "Помилка імпортування ключа"
  
 -#: ../yum/__init__.py:4157
 +#: ../yum/__init__.py:4394
@@ -33014,93 +36966,91 @@ index 48b836b..7578c68 100644
 +"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."
++"Ключі GPG зі списку сховища «%s» вже встановлено, але вони є некоректними.\n"
++"Перевірте, чи правильно вказано адреси URL для цього сховища."
 +
 +#: ../yum/__init__.py:4521
  msgid "Unable to find a suitable mirror."
- msgstr "Kan inte hitta en lämplig spegel."
+ msgstr "Не вдалося знайти відповідного дзеркала."
  
 -#: ../yum/__init__.py:4159
 +#: ../yum/__init__.py:4523
  msgid "Errors were encountered while downloading packages."
- msgstr "Fel uppstod när paket hämtades."
+ msgstr "Під час спроби звантаження пакунків сталися помилки."
  
 -#: ../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"
+ msgstr "Повідомте про цю помилку за адресою %s"
  
 -#: ../yum/__init__.py:4233
 +#: ../yum/__init__.py:4597
  msgid "Test Transaction Errors: "
- msgstr "Transaktionstestfel: "
+ msgstr "Помилки під час тестування: "
  
 -#: ../yum/__init__.py:4334
 +#: ../yum/__init__.py:4700
  #, python-format
  msgid "Could not set cachedir: %s"
- msgstr "Kunde inte sätta cache-katalog: %s"
+ msgstr "Не вдалося визначити теку кешування: %s"
  
  #. Mostly copied from YumOutput._outKeyValFill()
 -#: ../yum/plugins.py:202
 +#: ../yum/plugins.py:208
  msgid "Loaded plugins: "
- msgstr "Inlästa insticksmoduler: "
+ msgstr "Завантажені додатки: "
  
 -#: ../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"
+ msgstr "Не виявлено відповідника додатка %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"
+ msgstr "Додаток «%s» не завантажується, оскільки його вимкнено"
  
  #. 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"
+ msgstr "Додаток «%s» не можна імпортувати"
  
 -#: ../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"
+ msgstr "Додаток «%s» не визначає потрібної версії API"
  
 -#: ../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."
+ msgstr "Для додатка «%s» потрібна версія API %s. Поточна версія API — %s."
  
 -#: ../yum/plugins.py:309
 +#: ../yum/plugins.py:315
  #, python-format
  msgid "Loading \"%s\" plugin"
- msgstr "Läser in insticksmodulen \"%s\""
+ msgstr "Завантаження додатка «%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"
+-msgid ""
+-"Two or more plugins with the name \"%s\" exist in the plugin search path"
++msgid "Two or more plugins with the name \"%s\" exist in the plugin search path"
+ msgstr "За адресою пошуку додатків виявлено декілька додатків з назвою «%s»"
  
 -#: ../yum/plugins.py:336
 +#: ../yum/plugins.py:342
  #, python-format
  msgid "Configuration file %s not found"
- msgstr "Konfigurationsfilen %s finns inte"
+ msgstr "Файл налаштувань %s не знайдено"
  
  #. for
  #. Configuration files for the plugin not found
@@ -33108,30 +37058,60 @@ index 48b836b..7578c68 100644
 +#: ../yum/plugins.py:345
  #, python-format
  msgid "Unable to find configuration file for plugin %s"
- msgstr "Kan inte hitta konfigurationsfil för insticksmodulen %s"
+ msgstr "Не вдалося знайти файл налаштувань для додатка %s"
  
 -#: ../yum/plugins.py:501
 +#: ../yum/plugins.py:507
  msgid "registration of commands not supported"
- msgstr "registrering av kommandon stöds inte"
+ msgstr "підтримки реєстрації команд не передбачено"
  
-@@ -2687,6 +2930,16 @@ msgstr "har installerad konflikt"
+@@ -2704,6 +2937,16 @@ msgstr "конфліктує зі встановленими пакунками"
  msgid "%s is a duplicate with %s"
- msgstr "%s är en dubblett med %s"
+ msgstr "%s є дублікатом з %s"
  
 +#: ../yum/rpmsack.py:122
 +#, python-format
 +msgid "%s is obsoleted by %s"
-+msgstr "%s fasas ut av %s"
++msgstr "%s є застарілим після встановлення %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"
++msgstr "%s містить %s, але його не вдалося знайти"
 +
  #: ../yum/rpmtrans.py:79
  msgid "Repackaging"
- msgstr "Paketerar om"
+ msgstr "Перепакування"
+@@ -2739,4 +2982,29 @@ msgstr "Пошкоджений заголовок %s"
+ msgid "Error opening rpm %s - error %s"
+ msgstr "Помилка під час відкриття rpm %s — помилка %s"
+ 
++#~ msgid "Repo       : %s"
++#~ msgstr "Сховище     : %s"
++
++#~ msgid "URL        : %s"
++#~ msgstr "Адреса      : %s"
++
++#~ msgid "Description: "
++#~ msgstr "Опис        : "
++
++#~ msgid ""
++#~ "Remove    %5.5s Package(s)\n"
++#~ "Reinstall %5.5s Package(s)\n"
++#~ "Downgrade %5.5s Package(s)\n"
++#~ msgstr ""
++#~ "Вилучення        %5.5s пакунків\n"
++#~ "Перевстановлення %5.5s пакунків\n"
++#~ "Зниження версії  %5.5s пакунків\n"
++
++#~ msgid "Weird"
++#~ msgstr "Дивно"
++
++#~ msgid "Potential match for %s from %s"
++#~ msgstr "Потенційний відповідник %s з %s"
+ 
++#~ msgid "Matched %s to require for %s"
++#~ msgstr "%s відповідає потрібному для %s"
 diff --git a/po/yum.pot b/po/yum.pot
 index f9a1d35..c9d7199 100644
 --- a/po/yum.pot
@@ -37652,7 +41632,7 @@ index 43b0726..9f09e87 100644
          solver.conf = FakeConf()
          solver.conf.skip_broken = skip
 diff --git a/test/testbase.py b/test/testbase.py
-index f91fbf1..4d7bd8d 100644
+index f91fbf1..d9e23f1 100644
 --- a/test/testbase.py
 +++ b/test/testbase.py
 @@ -27,6 +27,10 @@ from rpmUtils.transaction import initReadOnlyTransaction
@@ -37666,15 +41646,16 @@ index f91fbf1..4d7bd8d 100644
  class FakeConf(object):
  
      def __init__(self):
-@@ -47,6 +51,7 @@ class FakeConf(object):
+@@ -47,6 +51,8 @@ class FakeConf(object):
          self.uid = 0
          self.groupremove_leaf_only = False
          self.protected_packages = []
++        self.protected_multilib = False
 +        self.clean_requirements_on_remove = True
  
  class FakeSack:
      """ Fake PackageSack to use with FakeRepository"""
-@@ -112,6 +117,10 @@ class FakePackage(packages.YumAvailablePackage):
+@@ -112,6 +118,10 @@ class FakePackage(packages.YumAvailablePackage):
          self.prco['obsoletes'].append((name, flag, evr))
      def addFile(self, name, ftype='file'):
          self.files[ftype].append(name)
@@ -37685,7 +41666,7 @@ index f91fbf1..4d7bd8d 100644
  
  class _Container(object):
      pass
-@@ -127,13 +136,17 @@ class DepSolveProgressCallBack:
+@@ -127,13 +137,17 @@ class DepSolveProgressCallBack:
      
      def pkgAdded(self, pkgtup, mode):
          modedict = { 'i': _('installed'),
@@ -37707,7 +41688,7 @@ index f91fbf1..4d7bd8d 100644
              modeterm)
          
      def start(self):
-@@ -356,9 +369,9 @@ class DepsolveTests(_DepsolveTestsBase):
+@@ -356,9 +370,9 @@ class DepsolveTests(_DepsolveTestsBase):
      def resetTsInfo(self):
          self.tsInfo = transactioninfo.TransactionData()
          
@@ -37718,7 +41699,7 @@ index f91fbf1..4d7bd8d 100644
          solver.conf = FakeConf()
          solver.arch.setup_arch('x86_64')
          solver.tsInfo = solver._tsInfo = self.tsInfo
-@@ -399,7 +412,7 @@ class OperationsTests(_DepsolveTestsBase):
+@@ -399,7 +413,7 @@ class OperationsTests(_DepsolveTestsBase):
      """
  
      def runOperation(self, args, installed=[], available=[],
@@ -37727,7 +41708,7 @@ index f91fbf1..4d7bd8d 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
-@@ -407,6 +420,7 @@ class OperationsTests(_DepsolveTestsBase):
+@@ -407,6 +421,7 @@ class OperationsTests(_DepsolveTestsBase):
          requirements from.
          """
          depsolver = YumBaseCli()
@@ -37735,7 +41716,7 @@ index f91fbf1..4d7bd8d 100644
          depsolver.arch.setup_arch('x86_64')
          self.rpmdb = depsolver.rpmdb = FakeRpmDb()
          self.xsack = depsolver._pkgSack  = packageSack.PackageSack()
-@@ -428,9 +442,18 @@ class OperationsTests(_DepsolveTestsBase):
+@@ -428,9 +443,18 @@ class OperationsTests(_DepsolveTestsBase):
              po.repoid = po.repo.id
              self.depsolver._pkgSack.addPackage(po)
  
@@ -37758,7 +41739,7 @@ index f91fbf1..4d7bd8d 100644
          if res!=2:
              return res, msg
 diff --git a/utils.py b/utils.py
-index 9335112..837c9b6 100644
+index 9335112..ced6ba0 100644
 --- a/utils.py
 +++ b/utils.py
 @@ -58,6 +58,11 @@ def get_process_info(pid):
@@ -37790,19 +41771,116 @@ index 9335112..837c9b6 100644
          nmsg = _("  The other application is: PackageKit")
      else:
          nmsg = _("  The other application is: %s") % ps['name']
-@@ -121,6 +126,7 @@ def show_lock_owner(pid, logger):
+@@ -121,6 +126,28 @@ def show_lock_owner(pid, logger):
                      (time.ctime(ps['start_time']), ago))
      logger.critical(_("    State  : %s, pid: %d") % (ps['state'], pid))
  
 +    return ps
++
++
++def exception2msg(e):
++    """ DIE python DIE! Which one works:
++        to_unicode(e.value); unicode(e); str(e); 
++        Call this so you don't have to care. """
++    try:
++        return to_unicode(e.value)
++    except:
++        pass
++
++    try:
++        return unicode(e)
++    except:
++        pass
++
++    try:
++        return str(e)
++    except:
++        pass
++    return "<exception failed to convert to text>"
  
  
  class YumUtilBase(YumBaseCli):
+@@ -148,7 +175,7 @@ class YumUtilBase(YumBaseCli):
+         if e.errno == 32:
+             self.logger.critical(_('\n\nExiting on Broken Pipe'))
+         else:
+-            self.logger.critical(_('\n\n%s') % str(e))
++            self.logger.critical(_('\n\n%s') % exception2msg(e))
+         if self.unlock(): return 200
+         return 1
+ 
+@@ -157,14 +184,14 @@ class YumUtilBase(YumBaseCli):
+ 
+         Log the plugin's exit message if one was supplied.
+         ''' # ' xemacs hack
+-        exitmsg = str(e)
++        exitmsg = exception2msg(e)
+         if exitmsg:
+             self.logger.warn('\n\n%s', exitmsg)
+         if self.unlock(): return 200
+         return 1
+ 
+     def exFatal(self, e):
+-        self.logger.critical('\n\n%s', to_unicode(e.value))
++        self.logger.critical('\n\n%s', exception2msg(e))
+         if self.unlock(): return 200
+         return 1
+         
+@@ -190,8 +217,8 @@ class YumUtilBase(YumBaseCli):
+             try:
+                 self.doLock()
+             except Errors.LockError, e:
+-                if "%s" %(e.msg,) != lockerr:
+-                    lockerr = "%s" %(e.msg,)
++                if exception2msg(e) != lockerr:
++                    lockerr = exception2msg(e)
+                     self.logger.critical(lockerr)
+                 if not self.conf.exit_on_lock:
+                     self.logger.critical("Another app is currently holding the yum lock; waiting for it to exit...")  
+@@ -251,16 +278,16 @@ class YumUtilBase(YumBaseCli):
+                     setattr(self.conf, opt, getattr(self.main_setopts, opt))
+ 
+         except Errors.ConfigError, e:
+-            self.logger.critical(_('Config Error: %s'), e)
++            self.logger.critical(_('Config Error: %s'), exception2msg(e))
+             sys.exit(1)
+         except ValueError, e:
+-            self.logger.critical(_('Options Error: %s'), e)
++            self.logger.critical(_('Options Error: %s'), exception2msg(e))
+             sys.exit(1)
+         except plugins.PluginYumExit, e:
+-            self.logger.critical(_('PluginExit Error: %s'), e)
++            self.logger.critical(_('PluginExit Error: %s'), exception2msg(e))
+             sys.exit(1)
+         except Errors.YumBaseError, e:
+-            self.logger.critical(_('Yum Error: %s'), e)
++            self.logger.critical(_('Yum Error: %s'), exception2msg(e))
+             sys.exit(1)
+             
+         # update usage in case plugins have added commands
+@@ -288,7 +315,7 @@ class YumUtilBase(YumBaseCli):
+             self._getRepos(doSetup = True)
+             self._getSacks()
+         except Errors.YumBaseError, msg:
+-            self.logger.critical(str(msg))
++            self.logger.critical(exception2msg(msg))
+             sys.exit(1)
+ 
+     def doUtilBuildTransaction(self, unfinished_transactions_check=True):
+@@ -298,7 +325,7 @@ class YumUtilBase(YumBaseCli):
+             return self.exPluginExit(e)
+         except Errors.YumBaseError, e:
+             result = 1
+-            resultmsgs = [unicode(e)]
++            resultmsgs = [exception2msg(e)]
+         except KeyboardInterrupt:
+             return self.exUserCancel()
+         except IOError, e:
 diff --git a/yum.spec b/yum.spec
-index c3c7133..fc05aa6 100644
+index c3c7133..e9282e0 100644
 --- a/yum.spec
 +++ b/yum.spec
-@@ -15,7 +15,7 @@ BuildRequires: intltool
+@@ -15,13 +15,28 @@ BuildRequires: intltool
  Requires: python >= 2.4
  Requires: rpm-python, rpm >= 0:4.4.2
  Requires: python-sqlite
@@ -37811,8 +41889,42 @@ index c3c7133..fc05aa6 100644
  Requires: yum-metadata-parser >= 1.1.0
  Requires: python-iniparse
  Requires: pygpgme
+ Prereq: /sbin/chkconfig, /sbin/service, coreutils
+ Conflicts: yum-skip-broken
+ Conflicts: rpm >= 5-0
++# Zif is a re-implementation of yum in C, however:
++#
++# 1. There is no co-operation/etc. with us.
++# 2. It touches our private data directly.
++#
++# ...both of which mean that even if there were _zero_ bugs in zif, we'd
++# never be able to change anything after the first user started using it. And
++# of course:
++#
++# 3. Users will never be able to tell that it isn't weird yum bugs, when they
++# hit them (and we'll probably never be able to debug them, without becoming
++# zif experts).
++#
++# ...so we have two sane choices: i) Conflict with it. 2) Stop developing yum.
++Conflicts: zif
+ Obsoletes: yum-skip-broken <= 1.1.18
+ Obsoletes: yum-basearchonly <= 1.1.9
+ Obsoletes: yum-allow-downgrade < 1.1.20-0
+diff --git a/yum/Errors.py b/yum/Errors.py
+index 143c9a4..c1af4ad 100644
+--- a/yum/Errors.py
++++ b/yum/Errors.py
+@@ -65,7 +65,7 @@ class YumRPMTransError(YumBaseError):
+ 
+ class LockError(YumBaseError):
+     def __init__(self, errno, msg, pid=0):
+-        YumBaseError.__init__(self)
++        YumBaseError.__init__(self, msg)
+         self.errno = errno
+         self.msg = msg
+         self.pid = pid
 diff --git a/yum/__init__.py b/yum/__init__.py
-index 2ea9f20..cfb60b3 100644
+index 2ea9f20..fcf5076 100644
 --- a/yum/__init__.py
 +++ b/yum/__init__.py
 @@ -21,6 +21,19 @@ The Yum RPM software updater.
@@ -37844,7 +41956,15 @@ index 2ea9f20..cfb60b3 100644
  
  import yum.i18n
  _ = yum.i18n._
-@@ -86,6 +99,7 @@ __version_info__ = tuple([ int(num) for num in __version__.split('.')])
+@@ -72,6 +85,7 @@ from yum.rpmtrans import RPMTransaction,SimpleCliCallBack
+ from yum.i18n import to_unicode, to_str
+ 
+ import string
++import StringIO
+ 
+ from weakref import proxy as weakref
+ 
+@@ -86,6 +100,7 @@ __version_info__ = tuple([ int(num) for num in __version__.split('.')])
  # multiple YumBase() objects.
  default_grabber.opts.user_agent += " yum/" + __version__
  
@@ -37852,7 +41972,15 @@ index 2ea9f20..cfb60b3 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.
-@@ -164,6 +178,7 @@ class YumBase(depsolve.Depsolve):
+@@ -121,6 +136,7 @@ class _YumPreRepoConf:
+         self.interrupt_callback = None
+         self.confirm_func = None
+         self.gpg_import_func = None
++        self.gpgca_import_func = None
+         self.cachedir = None
+         self.cache = None
+ 
+@@ -164,9 +180,11 @@ class YumBase(depsolve.Depsolve):
          self._pkgSack = None
          self._lockfile = None
          self._tags = None
@@ -37860,7 +41988,11 @@ index 2ea9f20..cfb60b3 100644
          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):
++        self._override_sigchecks = False
+         self._repos = RepoStorage(self)
+         self.repo_setopts = {} # since we have to use repo_setopts in base and 
+                                # not in cli - set it up as empty so no one
+@@ -294,6 +312,11 @@ class YumBase(depsolve.Depsolve):
              startupconf.syslog_facility = syslog_facility
          if syslog_device != None:
              startupconf.syslog_device = syslog_device
@@ -37872,12 +42004,17 @@ index 2ea9f20..cfb60b3 100644
          if releasever != None:
              startupconf.releasever = releasever
  
-@@ -395,9 +415,12 @@ class YumBase(depsolve.Depsolve):
+@@ -395,9 +418,18 @@ class YumBase(depsolve.Depsolve):
              else:
                  thisrepo.repo_config_age = repo_age
                  thisrepo.repofile = repofn
--
-+                
++                # repos are ver/arch specific so add $basearch/$releasever
++                self.conf._repos_persistdir = os.path.normpath('%s/repos/%s/%s/'
++                     % (self.conf.persistdir,  self.yumvar.get('basearch', '$basearch'),
++                        self.yumvar.get('releasever', '$releasever')))
++                thisrepo.base_persistdir = self.conf._repos_persistdir
++
+ 
              if thisrepo.id in self.repo_setopts:
                  for opt in self.repo_setopts[thisrepo.id].items:
 +                    if not hasattr(thisrepo, opt):
@@ -37886,7 +42023,7 @@ index 2ea9f20..cfb60b3 100644
                      setattr(thisrepo, opt, getattr(self.repo_setopts[thisrepo.id], opt))
                      
              if validate and not validate(thisrepo):
-@@ -442,7 +465,11 @@ class YumBase(depsolve.Depsolve):
+@@ -442,7 +474,11 @@ class YumBase(depsolve.Depsolve):
          @return: YumRepository instance.
          '''
          repo = yumRepo.YumRepository(section)
@@ -37899,26 +42036,37 @@ index 2ea9f20..cfb60b3 100644
  
          # Ensure that the repo name is set
          if not repo.name:
-@@ -752,7 +779,7 @@ class YumBase(depsolve.Depsolve):
+@@ -548,6 +584,7 @@ class YumBase(depsolve.Depsolve):
+             self.repos.setInterruptCallback(prerepoconf.interrupt_callback)
+             self.repos.confirm_func = prerepoconf.confirm_func
+             self.repos.gpg_import_func = prerepoconf.gpg_import_func
++            self.repos.gpgca_import_func = prerepoconf.gpgca_import_func
+             if prerepoconf.cachedir is not None:
+                 self.repos.setCacheDir(prerepoconf.cachedir)
+             if prerepoconf.cache is not None:
+@@ -752,7 +789,9 @@ class YumBase(depsolve.Depsolve):
              groupfile = repo.getGroups()
              # open it up as a file object so iterparse can cope with our compressed file
              if groupfile:
 -                groupfile = misc.decompress(groupfile)
-+                groupfile = misc.repo_gen_decompress(groupfile, 'groups.xml')
++                groupfile = misc.repo_gen_decompress(groupfile, 'groups.xml',
++                                                     cached=repo.cache)
++                # Do we want a RepoError here?
                  
              try:
                  self._comps.add(groupfile)
-@@ -790,7 +817,8 @@ class YumBase(depsolve.Depsolve):
+@@ -790,7 +829,9 @@ class YumBase(depsolve.Depsolve):
                  # fetch the sqlite tagdb
                  try:
                      tag_md = repo.retrieveMD('pkgtags')
 -                    tag_sqlite  = yum.misc.decompress(tag_md)
 +                    tag_sqlite  = misc.repo_gen_decompress(tag_md,
-+                                                           'pkgtags.sqlite')
++                                                           'pkgtags.sqlite',
++                                                           cached=repo.cache)
                      # feed it into _tags.add()
                      self._tags.add(repo.id, tag_sqlite)
                  except (Errors.RepoError, Errors.PkgTagsError), e:
-@@ -909,7 +937,10 @@ class YumBase(depsolve.Depsolve):
+@@ -909,12 +950,15 @@ class YumBase(depsolve.Depsolve):
  
          (rescode, restring) = self.resolveDeps()
          self._limit_installonly_pkgs()
@@ -37930,7 +42078,54 @@ index 2ea9f20..cfb60b3 100644
          #  We _must_ get rid of all the used tses before we go on, so that C-c
          # works for downloads / mirror failover etc.
          kern_pkgtup = None
-@@ -976,8 +1007,8 @@ class YumBase(depsolve.Depsolve):
+         if rescode == 2 and self.conf.protected_packages:
+-            kern_pkgtup = misc.get_running_kernel_pkgtup(self.rpmdb.ts)
++            kern_pkgtup =misc.get_running_kernel_pkgtup(self.rpmdb.readOnlyTS())
+         self.rpmdb.ts = None
+ 
+         # do the skip broken magic, if enabled and problems exist
+@@ -930,6 +974,40 @@ class YumBase(depsolve.Depsolve):
+         if self.tsInfo.pkgSack is not None: # rm Transactions don't have pkgSack
+             self.tsInfo.pkgSack.dropCachedData()
+ 
++        txmbrs = []
++        if rescode == 2 and self.conf.protected_multilib and self.arch.multilib:
++            txmbrs = self.tsInfo.getMembersWithState(None, TS_INSTALL_STATES)
++        vers = {}
++        for txmbr in txmbrs:
++            #  In theory we could skip noarch packages here, but it's really
++            # fast and there are some edge cases where it'll help.
++            if txmbr.name not in vers:
++                vers[txmbr.name] = [txmbr.po]
++                continue
++            vers[txmbr.name].append(txmbr.po)
++
++        fine = []
++        xrestring = []
++        for pkgname in vers:
++            if len(vers[pkgname]) <= 1:
++                # We have to go govelling through the rpmdb data to get
++                for pkg in self.rpmdb.searchNames([pkgname]):
++                    if self.tsInfo.getMembersWithState(pkg.pkgtup,
++                                                       TS_REMOVE_STATES):
++                        continue
++                    vers[pkgname].append(pkg)
++
++            # If all the versions are equal, we should be fine.
++            first = vers[pkgname][0]
++            for other in vers[pkgname][1:]:
++                if first.verEQ(other):
++                    continue
++                msg = _('Protected multilib versions: %s != %s')
++                xrestring.append(msg % (first, other))
++        if xrestring:
++            rescode = 1
++            restring = xrestring
++
+         #  This is a version of the old "protect-packages" plugin, it allows
+         # you to erase duplicates and do remove+install.
+         #  But we don't allow you to turn it off!:)
+@@ -976,8 +1054,8 @@ class YumBase(depsolve.Depsolve):
                  restring.append(_('Trying to remove "%s", which is protected') %
                                  pkgname)
  
@@ -37941,7 +42136,7 @@ index 2ea9f20..cfb60b3 100644
          self.verbose_logger.debug('Depsolve time: %0.3f' % (time.time() - ds_st))
          return rescode, restring
  
-@@ -1032,7 +1063,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1032,7 +1110,7 @@ class YumBase(depsolve.Depsolve):
              # and skip-broken shouldn't care too much about speed.
              self.rpmdb.transactionReset()
              self.installedFileRequires = None # Kind of hacky
@@ -37950,7 +42145,7 @@ index 2ea9f20..cfb60b3 100644
              self._printTransaction()        
              depTree = self._buildDepTree()
              startTs = set(self.tsInfo)
-@@ -1089,7 +1120,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1089,7 +1167,7 @@ class YumBase(depsolve.Depsolve):
                  self._checkUpdatedLeftovers() # Cleanup updated leftovers
                  rescode, restring = self.resolveDeps()
          if rescode != 1:
@@ -37959,7 +42154,7 @@ index 2ea9f20..cfb60b3 100644
              self.verbose_logger.info(_('\nPackages skipped because of dependency problems:'))
              skipped_list = [p for p in skipped_po]
              skipped_list.sort()
-@@ -1203,14 +1234,14 @@ class YumBase(depsolve.Depsolve):
+@@ -1203,14 +1281,14 @@ class YumBase(depsolve.Depsolve):
                    TS_AVAILABLE  : "available",
                    TS_UPDATED    : "updated"}
  
@@ -37978,7 +42173,7 @@ index 2ea9f20..cfb60b3 100644
                                      
      def _getPackagesToRemove(self,po,deptree,toRemove):
          '''
-@@ -1221,6 +1252,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1221,6 +1299,10 @@ class YumBase(depsolve.Depsolve):
              for pkg in (txmbr.updates + txmbr.obsoletes):
                  toRemove.add(pkg)
                  self._getDepsToRemove(pkg, deptree, toRemove)
@@ -37989,7 +42184,7 @@ index 2ea9f20..cfb60b3 100644
          self._getDepsToRemove(po, deptree, toRemove)
  
      def _getDepsToRemove(self,po, deptree, toRemove):
-@@ -1311,7 +1346,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1311,7 +1393,10 @@ class YumBase(depsolve.Depsolve):
                  self.run_with_package_names.add('yum-metadata-parser')
                  break
  
@@ -38001,7 +42196,7 @@ index 2ea9f20..cfb60b3 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 +1368,14 @@ class YumBase(depsolve.Depsolve):
+@@ -1330,10 +1415,14 @@ class YumBase(depsolve.Depsolve):
                  cmdline = ' '.join(self.args)
              elif hasattr(self, 'cmds') and self.cmds:
                  cmdline = ' '.join(self.cmds)
@@ -38016,7 +42211,7 @@ index 2ea9f20..cfb60b3 100644
              
              self.plugins.run('historybegin')
          #  Just before we update the transaction, update what we think the
-@@ -1341,8 +1383,15 @@ class YumBase(depsolve.Depsolve):
+@@ -1341,8 +1430,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).
@@ -38033,7 +42228,17 @@ index 2ea9f20..cfb60b3 100644
          errors = self.ts.run(cb.callback, '')
          # ts.run() exit codes are, hmm, "creative": None means all ok, empty 
          # list means some errors happened in the transaction and non-empty 
-@@ -1382,7 +1431,9 @@ class YumBase(depsolve.Depsolve):
+@@ -1371,7 +1467,8 @@ class YumBase(depsolve.Depsolve):
+                                           errors=errors)
+ 
+                           
+-        if not self.conf.keepcache:
++        if (not self.conf.keepcache and
++            not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST)):
+             self.cleanUsedHeadersPackages()
+         
+         for i in ('ts_all_fn', 'ts_done_fn'):
+@@ -1382,7 +1479,9 @@ class YumBase(depsolve.Depsolve):
                  except (IOError, OSError), e:
                      self.logger.critical(_('Failed to remove transaction file %s') % fn)
  
@@ -38044,7 +42249,7 @@ index 2ea9f20..cfb60b3 100644
          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 +1454,8 @@ class YumBase(depsolve.Depsolve):
+@@ -1403,8 +1502,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
@@ -38055,7 +42260,49 @@ index 2ea9f20..cfb60b3 100644
          self.plugins.run('preverifytrans')
          for txmbr in self.tsInfo:
              if txmbr.output_state in TS_INSTALL_STATES:
-@@ -1482,13 +1533,15 @@ class YumBase(depsolve.Depsolve):
+@@ -1437,19 +1536,17 @@ class YumBase(depsolve.Depsolve):
+                         po.yumdb_info.from_repo_timestamp = lp_mtime
+                     except: pass
+ 
+-                if not hasattr(rpo.repo, 'repoXML'):
+-                    continue
++                if rpo.xattr_origin_url is not None:
++                    po.yumdb_info.origin_url = rpo.xattr_origin_url
+ 
+-                md = rpo.repo.repoXML
+-                if md and md.revision is not None:
+-                    po.yumdb_info.from_repo_revision  = str(md.revision)
+-                if md:
+-                    po.yumdb_info.from_repo_timestamp = str(md.timestamp)
++                if hasattr(rpo.repo, 'repoXML'):
++                    md = rpo.repo.repoXML
++                    if md and md.revision is not None:
++                        po.yumdb_info.from_repo_revision  = str(md.revision)
++                    if md:
++                        po.yumdb_info.from_repo_timestamp = str(md.timestamp)
+ 
+                 loginuid = misc.getloginuid()
+-                if loginuid is None:
+-                    continue
+-                loginuid = str(loginuid)
+                 if txmbr.updates or txmbr.downgrades or txmbr.reinstall:
+                     if txmbr.updates:
+                         opo = txmbr.updates[0]
+@@ -1459,9 +1556,10 @@ class YumBase(depsolve.Depsolve):
+                         opo = po
+                     if 'installed_by' in opo.yumdb_info:
+                         po.yumdb_info.installed_by = opo.yumdb_info.installed_by
+-                    po.yumdb_info.changed_by = loginuid
+-                else:
+-                    po.yumdb_info.installed_by = loginuid
++                    if loginuid is not None:
++                        po.yumdb_info.changed_by = str(loginuid)
++                elif loginuid is not None:
++                    po.yumdb_info.installed_by = str(loginuid)
+ 
+         # Remove old ones after installing new ones, so we can copy values.
+         for txmbr in self.tsInfo:
+@@ -1482,13 +1580,15 @@ class YumBase(depsolve.Depsolve):
                  self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
  
          self.plugins.run('postverifytrans')
@@ -38072,7 +42319,30 @@ index 2ea9f20..cfb60b3 100644
  
      def costExcludePackages(self):
          """ Create an excluder for repos. with higher cost. Eg.
-@@ -1836,6 +1889,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1780,6 +1880,7 @@ class YumBase(depsolve.Depsolve):
+         beg_download = time.time()
+         i = 0
+         local_size = 0
++        done_repos = set()
+         for po in remote_pkgs:
+             #  Recheck if the file is there, works around a couple of weird
+             # edge cases.
+@@ -1822,6 +1923,14 @@ class YumBase(depsolve.Depsolve):
+                 if hasattr(urlgrabber.progress, 'text_meter_total_size'):
+                     urlgrabber.progress.text_meter_total_size(remote_size,
+                                                               local_size)
++                if po.repoid not in done_repos:
++                    #  Check a single package per. repo. ... to give a hint to
++                    # the user on big downloads.
++                    result, errmsg = self.sigCheckPkg(po)
++                    if result != 0:
++                        self.verbose_logger.warn("%s", errmsg)
++                done_repos.add(po.repoid)
++
+             except Errors.RepoError, e:
+                 adderror(po, str(e))
+             else:
+@@ -1836,6 +1945,10 @@ class YumBase(depsolve.Depsolve):
  
          self.plugins.run('postdownload', pkglist=pkglist, errors=errors)
  
@@ -38083,16 +42353,38 @@ index 2ea9f20..cfb60b3 100644
          return errors
  
      def verifyHeader(self, fo, po, raiseError):
-@@ -1919,7 +1976,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1918,8 +2031,11 @@ class YumBase(depsolve.Depsolve):
+                   might help.
              - 2 - Fatal GPG verification error, give up.
          '''
-         if hasattr(po, 'pkgtype') and po.pkgtype == 'local':
+-        if hasattr(po, 'pkgtype') and po.pkgtype == 'local':
 -            check = self.conf.gpgcheck
++        if self._override_sigchecks:
++            check = False
++            hasgpgkey = 0
++        elif hasattr(po, 'pkgtype') and po.pkgtype == 'local':
 +            check = self.conf.localpkg_gpgcheck
              hasgpgkey = 0
          else:
              repo = self.repos.getRepo(po.repoid)
-@@ -2276,7 +2333,8 @@ class YumBase(depsolve.Depsolve):
+@@ -1985,6 +2101,7 @@ class YumBase(depsolve.Depsolve):
+             if local:
+                 filelist.extend([txmbr.po.localHdr()])
+             else:
++                txmbr.po.xattr_origin_url # Load this, before we rm the file.
+                 filelist.extend([txmbr.po.localPkg(), txmbr.po.localHdr()])
+ 
+         # now remove them
+@@ -2009,7 +2126,7 @@ class YumBase(depsolve.Depsolve):
+         return self._cleanFiles(exts, 'pkgdir', 'package')
+ 
+     def cleanSqlite(self):
+-        exts = ['sqlite', 'sqlite.bz2']
++        exts = ['sqlite', 'sqlite.bz2', 'sqlite-journal']
+         return self._cleanFiles(exts, 'cachedir', 'sqlite')
+ 
+     def cleanMetadata(self):
+@@ -2276,7 +2393,8 @@ class YumBase(depsolve.Depsolve):
          return results
      
      # pre 3.2.10 API used to always showdups, so that's the default atm.
@@ -38102,7 +42394,7 @@ index 2ea9f20..cfb60b3 100644
          """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 +2380,45 @@ class YumBase(depsolve.Depsolve):
+@@ -2322,41 +2440,45 @@ class YumBase(depsolve.Depsolve):
  
                  if len(tmpvalues) > 0:
                      sorted_lists[count].append((po, tmpkeys, tmpvalues))
@@ -38178,7 +42470,93 @@ index 2ea9f20..cfb60b3 100644
  
          # take our existing dict-by-pkg and make the dict-by-count for 
          # this bizarro sorted_lists format
-@@ -2887,7 +2949,7 @@ class YumBase(depsolve.Depsolve):
+@@ -2437,10 +2559,7 @@ class YumBase(depsolve.Depsolve):
+     
+     def searchPackageProvides(self, args, callback=None,
+                               callback_has_matchfor=False):
+-        
+-        matches = {}
+-        for arg in args:
+-            arg = to_unicode(arg)
++        def _arg_data(arg):
+             if not misc.re_glob(arg):
+                 isglob = False
+                 if arg[0] != '/':
+@@ -2450,7 +2569,14 @@ class YumBase(depsolve.Depsolve):
+             else:
+                 isglob = True
+                 canBeFile = misc.re_filename(arg)
+-                
++
++            return isglob, canBeFile
++
++        matches = {}
++        for arg in args:
++            arg = to_unicode(arg)
++            isglob, canBeFile = _arg_data(arg)
++
+             if not isglob:
+                 usedDepString = True
+                 where = self.returnPackagesByDep(arg)
+@@ -2498,16 +2624,9 @@ class YumBase(depsolve.Depsolve):
+         
+         # installed rpms, too
+         taglist = ['filelist', 'dirnames', 'provides_names']
++        taglist_provonly = ['provides_names']
+         for arg in args:
+-            if not misc.re_glob(arg):
+-                isglob = False
+-                if arg[0] != '/':
+-                    canBeFile = False
+-                else:
+-                    canBeFile = True
+-            else:
+-                isglob = True
+-                canBeFile = True
++            isglob, canBeFile = _arg_data(arg)
+             
+             if not isglob:
+                 where = self.returnInstalledPackagesByDep(arg)
+@@ -2528,11 +2647,17 @@ class YumBase(depsolve.Depsolve):
+             else:
+                 usedDepString = False
+                 where = self.rpmdb
+-                
++
++                if canBeFile:
++                    arg_taglist = taglist
++                else:
++                    arg_taglist = taglist_provonly
++
++                arg_regex = re.compile(fnmatch.translate(arg))
+                 for po in where:
+                     searchlist = []
+                     tmpvalues = []
+-                    for tag in taglist:
++                    for tag in arg_taglist:
+                         tagdata = getattr(po, tag)
+                         if tagdata is None:
+                             continue
+@@ -2542,7 +2667,7 @@ class YumBase(depsolve.Depsolve):
+                             searchlist.append(tagdata)
+                     
+                     for item in searchlist:
+-                        if fnmatch.fnmatch(item, arg):
++                        if arg_regex.match(item):
+                             tmpvalues.append(item)
+                 
+                     if len(tmpvalues) > 0:
+@@ -2670,6 +2795,9 @@ class YumBase(depsolve.Depsolve):
+             if 'optional' in package_types:
+                 pkgs.extend(thisgroup.optional_packages)
+ 
++            if not pkgs:
++                self.logger.critical(_('Warning: Group %s does not have any packages.'), thisgroup.groupid)
++
+             for pkg in pkgs:
+                 self.verbose_logger.log(logginglevels.DEBUG_2,
+                     _('Adding package %s from group %s'), pkg, thisgroup.groupid)
+@@ -2887,7 +3015,7 @@ class YumBase(depsolve.Depsolve):
                  if len(dep_split) == 3:
                      depname, flagsymbol, depver = dep_split
                      if not flagsymbol in SYMBOLFLAGS:
@@ -38187,7 +42565,7 @@ index 2ea9f20..cfb60b3 100644
                      depflags = SYMBOLFLAGS[flagsymbol]
  
          return self.rpmdb.getProvides(depname, depflags, depver).keys()
-@@ -3100,6 +3162,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3100,6 +3228,9 @@ class YumBase(depsolve.Depsolve):
  
      def _find_obsoletees(self, po):
          """ Return the pkgs. that are obsoleted by the po we pass in. """
@@ -38197,7 +42575,7 @@ index 2ea9f20..cfb60b3 100644
          if not isinstance(po, YumLocalPackage):
              for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name):
                  if po.pkgtup == obstup:
-@@ -3160,7 +3225,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3160,7 +3291,7 @@ class YumBase(depsolve.Depsolve):
                      try:
                          mypkgs = self.returnPackagesByDep(arg)
                      except yum.Errors.YumBaseError, e:
@@ -38206,7 +42584,7 @@ index 2ea9f20..cfb60b3 100644
                      else:
                          # install MTA* == fail, because provides don't do globs
                          # install /usr/kerberos/bin/* == success (and we want
-@@ -3490,7 +3555,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3490,7 +3621,7 @@ class YumBase(depsolve.Depsolve):
              availpkgs.extend(m)
  
              if not availpkgs and not instpkgs:
@@ -38215,7 +42593,7 @@ index 2ea9f20..cfb60b3 100644
          
          else: # we have kwargs, sort them out.
              nevra_dict = self._nevra_kwarg_parse(kwargs)
-@@ -3576,6 +3641,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3576,6 +3707,9 @@ class YumBase(depsolve.Depsolve):
                          self.tsInfo.addObsoleted(obsoletee, po)
                          tx_return.append(txmbr)
                  else:
@@ -38225,7 +42603,7 @@ index 2ea9f20..cfb60b3 100644
                      txmbr = self._add_up_txmbr(requiringPo, po, installed_pkg)
                      tx_return.append(txmbr)
                          
-@@ -3599,6 +3667,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3599,6 +3733,9 @@ class YumBase(depsolve.Depsolve):
                  
                  else:
                      updated_pkg =  self.getInstalledPackageObject(updated)
@@ -38235,7 +42613,7 @@ index 2ea9f20..cfb60b3 100644
                      txmbr = self._add_up_txmbr(requiringPo,
                                                 available_pkg, updated_pkg)
                      tx_return.append(txmbr)
-@@ -3669,7 +3740,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3669,7 +3806,8 @@ class YumBase(depsolve.Depsolve):
                          self.logger.critical(_('%s') % e)
                      
                      if not depmatches:
@@ -38245,7 +42623,7 @@ index 2ea9f20..cfb60b3 100644
                      else:
                          pkgs.extend(depmatches)
                  
-@@ -3690,6 +3762,14 @@ class YumBase(depsolve.Depsolve):
+@@ -3690,6 +3828,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
@@ -38260,7 +42638,7 @@ index 2ea9f20..cfb60b3 100644
              txmbr = self.tsInfo.addErase(po)
              tx_return.append(txmbr)
          
-@@ -3952,7 +4032,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3952,7 +4098,7 @@ class YumBase(depsolve.Depsolve):
              EOL """
  
          if not po and not kwargs:
@@ -38269,7 +42647,7 @@ index 2ea9f20..cfb60b3 100644
  
          doing_group_pkgs = False
          if po:
-@@ -3975,7 +4055,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3975,7 +4121,7 @@ class YumBase(depsolve.Depsolve):
                      try:
                          apkgs = self.returnPackagesByDep(arg)
                      except yum.Errors.YumBaseError, e:
@@ -38278,11 +42656,36 @@ index 2ea9f20..cfb60b3 100644
  
          else:
              nevra_dict = self._nevra_kwarg_parse(kwargs)
-@@ -4196,23 +4276,20 @@ class YumBase(depsolve.Depsolve):
+@@ -4170,6 +4316,11 @@ class YumBase(depsolve.Depsolve):
+                     done = True
+         for pkg in transaction.trans_data:
+             if pkg.state == 'Obsoleting':
++                #  Note that obsoleting can mean anything, so if this is part of
++                # something else, it should be done by now (so do nothing).
++                if self.tsInfo.getMembers(pkg.pkgtup):
++                    continue
++                #  If not it should be an install/obsolete ... so remove it.
+                 if self.remove(pkgtup=pkg.pkgtup):
+                     done = True
+         for pkg in transaction.trans_data:
+@@ -4187,36 +4338,61 @@ class YumBase(depsolve.Depsolve):
+         self.conf.obsoletes = old_conf_obs
+         return done
+ 
+-    def _retrievePublicKey(self, keyurl, repo=None):
++    def _retrievePublicKey(self, keyurl, repo=None, getSig=True):
+         """
+         Retrieve a key file
+         @param keyurl: url to the key to retrieve
+         Returns a list of dicts with all the keyinfo
+         """
          key_installed = False
- 
-         self.logger.info(_('Retrieving GPG key from %s') % keyurl)
 -
+-        self.logger.info(_('Retrieving GPG key from %s') % keyurl)
+-
++        
++        msg = _('Retrieving key from %s') % keyurl
++        self.verbose_logger.log(logginglevels.INFO_2, msg)
 +       
          # Go get the GPG key from the given URL
          try:
@@ -38308,7 +42711,75 @@ index 2ea9f20..cfb60b3 100644
  
          except urlgrabber.grabber.URLGrabError, e:
              raise Errors.YumBaseError(_('GPG key retrieval failed: ') +
-@@ -4276,12 +4353,11 @@ class YumBase(depsolve.Depsolve):
+                                       to_unicode(str(e)))
++                                      
++        # check for a .asc file accompanying it - that's our gpg sig on the key
++        # suck it down and do the check
++        sigfile = None
++        valid_sig = False
++        if getSig and repo and repo.gpgcakey:
++            self.getCAKeyForRepo(repo, callback=repo.confirm_func)
++            try:
++                url = misc.to_utf8(keyurl + '.asc')
++                opts = repo._default_grabopts()
++                text = repo.id + '/gpgkeysig'
++                sigfile = urlgrabber.urlopen(url, **opts)
++
++            except urlgrabber.grabber.URLGrabError, e:
++                sigfile = None
++
++            if sigfile:
++                if not misc.valid_detached_sig(sigfile, 
++                                    StringIO.StringIO(rawkey), repo.gpgcadir):
++                    #if we decide we want to check, even though the sig failed
++                    # here is where we would do that
++                    raise Errors.YumBaseError(_('GPG key signature on key %s does not match CA Key for repo: %s') % (url, repo.id))
++                else:
++                    msg = _('GPG key signature verified against CA Key(s)')
++                    self.verbose_logger.log(logginglevels.INFO_2, msg)
++                    valid_sig = True
++            
+         # Parse the key
+         try:
+             keys_info = misc.getgpgkeyinfo(rawkey, multiple=True)
+@@ -4233,29 +4409,31 @@ class YumBase(depsolve.Depsolve):
+                       _('GPG key parsing failed: key does not have value %s') + info
+                 thiskey[info] = keyinfo[info]
+             thiskey['hexkeyid'] = misc.keyIdToRPMVer(keyinfo['keyid']).upper()
++            thiskey['valid_sig'] = valid_sig
++            thiskey['has_sig'] = bool(sigfile)
+             keys.append(thiskey)
+         
+         return keys
+ 
+-    def _getKeyImportMessage(self, info, keyurl):
++    def _getKeyImportMessage(self, info, keyurl, keytype='GPG'):
+         msg = None
+         if keyurl.startswith("file:"):
+             fname = keyurl[len("file:"):]
+             pkgs = self.rpmdb.searchFiles(fname)
+             if pkgs:
+                 pkgs = sorted(pkgs)[-1]
+-                msg = (_('Importing GPG key 0x%s:\n'
++                msg = (_('Importing %s key 0x%s:\n'
+                          ' Userid : %s\n'
+                          ' Package: %s (%s)\n'
+                          ' From   : %s') %
+-                       (info['hexkeyid'], to_unicode(info['userid']),
++                       (keytype, info['hexkeyid'], to_unicode(info['userid']),
+                         pkgs, pkgs.ui_from_repo,
+                         keyurl.replace("file://","")))
+         if msg is None:
+-            msg = (_('Importing GPG key 0x%s:\n'
++            msg = (_('Importing %s key 0x%s:\n'
+                      ' Userid: "%s"\n'
+                      ' From  : %s') %
+-                   (info['hexkeyid'], to_unicode(info['userid']),
++                   (keytype, info['hexkeyid'], to_unicode(info['userid']),
+                     keyurl.replace("file://","")))
+         self.logger.critical("%s", msg)
+ 
+@@ -4276,36 +4454,46 @@ class YumBase(depsolve.Depsolve):
          keyurls = repo.gpgkey
          key_installed = False
  
@@ -38322,15 +42793,164 @@ index 2ea9f20..cfb60b3 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 +4382,7 @@ class YumBase(depsolve.Depsolve):
-                     raise Errors.YumBaseError, _("Not installing key")
+                         keyurl, info['hexkeyid']))
+                     continue
+-
+-                # Try installing/updating GPG key
+-                self._getKeyImportMessage(info, keyurl)
+-                rc = False
+-                if self.conf.assumeyes:
+-                    rc = True
+-                elif fullaskcb:
+-                    rc = fullaskcb({"po": po, "userid": info['userid'],
+-                                    "hexkeyid": info['hexkeyid'], 
+-                                    "keyurl": keyurl,
+-                                    "fingerprint": info['fingerprint'],
+-                                    "timestamp": info['timestamp']})
+-                elif askcb:
+-                    rc = askcb(po, info['userid'], info['hexkeyid'])
+-
+-                if not rc:
+-                    raise Errors.YumBaseError, _("Not installing key")
                  
++                if repo.gpgcakey and info['has_sig'] and info['valid_sig']:
++                    key_installed = True
++                else:
++                    # Try installing/updating GPG key
++                    self._getKeyImportMessage(info, keyurl)
++                    rc = False
++                    if self.conf.assumeyes:
++                        rc = True
++                        
++                    # grab the .sig/.asc for the keyurl, if it exists
++                    # if it does check the signature on the key
++                    # if it is signed by one of our ca-keys for this repo or the global one
++                    # then rc = True
++                    # else ask as normal.
++
++                    elif fullaskcb:
++                        rc = fullaskcb({"po": po, "userid": info['userid'],
++                                        "hexkeyid": info['hexkeyid'], 
++                                        "keyurl": keyurl,
++                                        "fingerprint": info['fingerprint'],
++                                        "timestamp": info['timestamp']})
++                    elif askcb:
++                        rc = askcb(po, info['userid'], info['hexkeyid'])
++
++                    if not rc:
++                        raise Errors.YumBaseError, _("Not installing key")
++                    
                  # Import the key
 +                ts = self.rpmdb.readOnlyTS()
                  result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key']))
                  if result != 0:
                      raise Errors.YumBaseError, \
-@@ -4626,6 +4703,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4327,43 +4515,55 @@ class YumBase(depsolve.Depsolve):
+             self.logger.info(_("Import of key(s) didn't help, wrong key(s)?"))
+             raise Errors.YumBaseError, errmsg
+     
+-    def getKeyForRepo(self, repo, callback=None):
++    def _getAnyKeyForRepo(self, repo, destdir, keyurl_list, is_cakey=False, callback=None):
+         """
+         Retrieve a key for a repository If needed, prompt for if the key should
+         be imported using callback
+         
+         @param repo: Repository object to retrieve the key of.
++        @param destdir: destination of the gpg pub ring
++        @param keyurl_list: list of urls for gpg keys
++        @param is_cakey: bool - are we pulling in a ca key or not
+         @param callback: Callback function to use for asking for verification
+                           of a key. Takes a dictionary of key info.
+         """
+-        keyurls = repo.gpgkey
++
+         key_installed = False
+-        for keyurl in keyurls:
+-            keys = self._retrievePublicKey(keyurl, repo)
++        for keyurl in keyurl_list:
++            keys = self._retrievePublicKey(keyurl, repo, getSig=not is_cakey)
+             for info in keys:
+                 # Check if key is already installed
+-                if info['keyid'] in misc.return_keyids_from_pubring(repo.gpgdir):
++                if hex(int(info['keyid']))[2:-1].upper() in misc.return_keyids_from_pubring(destdir):
+                     self.logger.info(_('GPG key at %s (0x%s) is already imported') % (
+                         keyurl, info['hexkeyid']))
++                    key_installed = True
+                     continue
+ 
+                 # Try installing/updating GPG key
+-                self._getKeyImportMessage(info, keyurl)
+-                rc = False
+-                if self.conf.assumeyes:
+-                    rc = True
+-                elif callback:
+-                    rc = callback({"repo": repo, "userid": info['userid'],
+-                                    "hexkeyid": info['hexkeyid'], "keyurl": keyurl,
+-                                    "fingerprint": info['fingerprint'],
+-                                    "timestamp": info['timestamp']})
+-
+-
+-                if not rc:
+-                    raise Errors.YumBaseError, _("Not installing key for repo %s") % repo
++                if is_cakey:
++                    keytype = 'CA'
++                else:
++                    keytype = 'GPG'
++
++                if repo.gpgcakey and info['has_sig'] and info['valid_sig']:
++                    key_installed = True
++                else:
++                    self._getKeyImportMessage(info, keyurl, keytype)
++                    rc = False
++                    if self.conf.assumeyes:
++                        rc = True
++                    elif callback:
++                        rc = callback({"repo": repo, "userid": info['userid'],
++                                        "hexkeyid": info['hexkeyid'], "keyurl": keyurl,
++                                        "fingerprint": info['fingerprint'],
++                                        "timestamp": info['timestamp']})
++
++
++                    if not rc:
++                        raise Errors.YumBaseError, _("Not installing key for repo %s") % repo
+                 
+                 # Import the key
+-                result = misc.import_key_to_pubring(info['raw_key'], info['hexkeyid'], gpgdir=repo.gpgdir)
++                result = misc.import_key_to_pubring(info['raw_key'], info['hexkeyid'], gpgdir=destdir)
+                 if not result:
+                     raise Errors.YumBaseError, _('Key import failed')
+                 self.logger.info(_('Key imported successfully'))
+@@ -4376,6 +4576,29 @@ class YumBase(depsolve.Depsolve):
+                   'Check that the correct key URLs are configured for ' \
+                   'this repository.') % (repo.name)
+ 
++    def getKeyForRepo(self, repo, callback=None):
++        """
++        Retrieve a key for a repository If needed, prompt for if the key should
++        be imported using callback
++        
++        @param repo: Repository object to retrieve the key of.
++        @param callback: Callback function to use for asking for verification
++                          of a key. Takes a dictionary of key info.
++        """
++        self._getAnyKeyForRepo(repo, repo.gpgdir, repo.gpgkey, is_cakey=False, callback=callback)
++
++    def getCAKeyForRepo(self, repo, callback=None):
++        """
++        Retrieve a key for a repository If needed, prompt for if the key should
++        be imported using callback
++        
++        @param repo: Repository object to retrieve the key of.
++        @param callback: Callback function to use for asking for verification
++                          of a key. Takes a dictionary of key info.
++        """
++
++        self._getAnyKeyForRepo(repo, repo.gpgcadir, repo.gpgcakey, is_cakey=True, callback=callback)
++
+     def _limit_installonly_pkgs(self):
+         """ Limit packages based on conf.installonly_limit, if any of the
+             packages being installed have a provide in conf.installonlypkgs.
+@@ -4626,6 +4849,7 @@ class YumBase(depsolve.Depsolve):
          newrepo = yumRepo.YumRepository(repoid)
          newrepo.name = repoid
          newrepo.basecachedir = self.conf.cachedir
@@ -38338,7 +42958,15 @@ index 2ea9f20..cfb60b3 100644
          var_convert = kwargs.get('variable_convert', True)
          
          if baseurls:
-@@ -4722,3 +4800,267 @@ class YumBase(depsolve.Depsolve):
+@@ -4652,6 +4876,7 @@ class YumBase(depsolve.Depsolve):
+         newrepo.gpgcheck = self.conf.gpgcheck
+         newrepo.repo_gpgcheck = self.conf.repo_gpgcheck
+         newrepo.basecachedir = self.conf.cachedir
++        newrepo.base_persistdir = self.conf._repos_persistdir
+ 
+         for key in kwargs.keys():
+             if not hasattr(newrepo, key): continue # skip the ones which aren't vars
+@@ -4722,3 +4947,267 @@ class YumBase(depsolve.Depsolve):
          self.plugins.run('verify_package', verify_package=verify_package)
          return verify_package
  
@@ -38607,7 +43235,7 @@ index 2ea9f20..cfb60b3 100644
 +        
 +                    
 diff --git a/yum/comps.py b/yum/comps.py
-index 5ccfba2..408bb1c 100755
+index 5ccfba2..65f6d5e 100755
 --- a/yum/comps.py
 +++ b/yum/comps.py
 @@ -1,3 +1,4 @@
@@ -38615,8 +43243,20 @@ index 5ccfba2..408bb1c 100755
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 2 of the License, or
+@@ -502,7 +503,10 @@ class Comps(object):
+             
+         if type(srcfile) in types.StringTypes:
+             # srcfile is a filename string
+-            infile = open(srcfile, 'rt')
++            try:
++                infile = open(srcfile, 'rt')
++            except IOError, e:
++                raise CompsException, 'open(%s): #%u %s' % (srcfile, e.errno, e.strerror)
+         else:
+             # srcfile is a file object
+             infile = srcfile
 diff --git a/yum/config.py b/yum/config.py
-index 650d7b9..aecef44 100644
+index 650d7b9..97e5e3d 100644
 --- a/yum/config.py
 +++ b/yum/config.py
 @@ -645,6 +645,8 @@ class YumConf(StartupConf):
@@ -38636,8 +43276,11 @@ index 650d7b9..aecef44 100644
      obsoletes = BoolOption(True)
      showdupesfromrepos = BoolOption(False)
      enabled = BoolOption(True)
-@@ -737,6 +740,10 @@ class YumConf(StartupConf):
+@@ -735,8 +738,13 @@ class YumConf(StartupConf):
+ 
+     protected_packages = ListOption("yum, glob:/etc/yum/protected.d/*.conf",
                                      parse_default=True)
++    protected_multilib = BoolOption(True)
      exit_on_lock = BoolOption(False)
      
 +    loadts_ignoremissing = BoolOption(False)
@@ -38647,7 +43290,15 @@ index 650d7b9..aecef44 100644
      _reposlist = []
  
      def dump(self):
-@@ -794,6 +801,8 @@ class RepoConf(BaseConfig):
+@@ -786,6 +794,7 @@ class RepoConf(BaseConfig):
+     metalink   = UrlOption()
+     mediaid = Option()
+     gpgkey = UrlListOption()
++    gpgcakey = UrlListOption()
+     exclude = ListOption() 
+     includepkgs = ListOption() 
+ 
+@@ -794,6 +803,8 @@ class RepoConf(BaseConfig):
      proxy_password = Inherit(YumConf.proxy_password)
      retries = Inherit(YumConf.retries)
      failovermethod = Inherit(YumConf.failovermethod)
@@ -39286,7 +43937,7 @@ index 194d5d1..8631f06 100644
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
 diff --git a/yum/misc.py b/yum/misc.py
-index 0f80d7d..4fa5ed9 100644
+index 0f80d7d..15e571f 100644
 --- a/yum/misc.py
 +++ b/yum/misc.py
 @@ -1,3 +1,4 @@
@@ -39294,7 +43945,15 @@ index 0f80d7d..4fa5ed9 100644
  """
  Assorted utility functions for yum.
  """
-@@ -35,7 +36,7 @@ except ImportError:
+@@ -19,6 +20,7 @@ import pwd
+ import fnmatch
+ import bz2
+ import gzip
++import shutil
+ _available_compression = ['gz', 'bz2']
+ try:
+     import lzma
+@@ -35,7 +37,7 @@ except ImportError:
      gpgme = None
  try:
      import hashlib
@@ -39303,7 +43962,110 @@ index 0f80d7d..4fa5ed9 100644
      _default_checksums = ['sha256']
  except ImportError:
      # Python-2.4.z ... gah!
-@@ -1035,7 +1036,7 @@ def get_uuid(savepath):
+@@ -430,6 +432,8 @@ def getgpgkeyinfo(rawkey, multiple=False):
+             'timestamp': key.public_key.timestamp,
+             'fingerprint' : key.public_key.fingerprint,
+             'raw_key' : key.raw_key,
++            'has_sig' : False,
++            'valid_sig': False,
+         }
+ 
+         # Retrieve the timestamp from the matching signature packet 
+@@ -493,7 +497,7 @@ def keyInstalled(ts, keyid, timestamp):
+ 
+     return -1
+ 
+-def import_key_to_pubring(rawkey, keyid, cachedir=None, gpgdir=None):
++def import_key_to_pubring(rawkey, keyid, cachedir=None, gpgdir=None, make_ro_copy=True):
+     # FIXME - cachedir can be removed from this method when we break api
+     if gpgme is None:
+         return False
+@@ -516,6 +520,30 @@ def import_key_to_pubring(rawkey, keyid, cachedir=None, gpgdir=None):
+     # ultimately trust the key or pygpgme is definitionally stupid
+     k = ctx.get_key(keyid)
+     gpgme.editutil.edit_trust(ctx, k, gpgme.VALIDITY_ULTIMATE)
++    
++    if make_ro_copy:
++
++        rodir = gpgdir + '-ro'
++        if not os.path.exists(rodir):
++            os.makedirs(rodir, mode=0755)
++            for f in glob.glob(gpgdir + '/*'):
++                basename = os.path.basename(f)
++                ro_f = rodir + '/' + basename
++                shutil.copy(f, ro_f)
++                os.chmod(ro_f, 0755)
++            fp = open(rodir + '/gpg.conf', 'w', 0755)
++            # yes it is this stupid, why do you ask?
++            opts="""lock-never    
++no-auto-check-trustdb    
++trust-model direct
++no-expensive-trust-checks
++no-permission-warning         
++preserve-permissions
++"""
++            fp.write(opts)
++            fp.close()
++
++        
+     return True
+     
+ def return_keyids_from_pubring(gpgdir):
+@@ -538,11 +566,19 @@ def valid_detached_sig(sig_file, signed_file, gpghome=None):
+     if gpgme is None:
+         return False
+ 
+-    if gpghome and os.path.exists(gpghome):
++    if gpghome:
++        if not os.path.exists(gpghome):
++            return False
+         os.environ['GNUPGHOME'] = gpghome
+ 
+-    sig = open(sig_file, 'r')
+-    signed_text = open(signed_file, 'r')
++    if hasattr(sig_file, 'read'):
++        sig = sig_file
++    else:
++        sig = open(sig_file, 'r')
++    if hasattr(signed_file, 'read'):
++        signed_text = signed_file
++    else:
++        signed_text = open(signed_file, 'r')
+     plaintext = None
+     ctx = gpgme.Context()
+ 
+@@ -551,6 +587,8 @@ def valid_detached_sig(sig_file, signed_file, gpghome=None):
+     except gpgme.GpgmeError, e:
+         return False
+     else:
++        if not sigs:
++            return False
+         # is there ever a case where we care about a sig beyond the first one?
+         thissig = sigs[0]
+         if not thissig:
+@@ -562,7 +600,7 @@ def valid_detached_sig(sig_file, signed_file, gpghome=None):
+ 
+     return False
+ 
+-def getCacheDir(tmpdir='/var/tmp', reuse=True):
++def getCacheDir(tmpdir='/var/tmp', reuse=True, prefix='yum-'):
+     """return a path to a valid and safe cachedir - only used when not running
+        as root or when --tempcache is set"""
+     
+@@ -573,11 +611,9 @@ def getCacheDir(tmpdir='/var/tmp', reuse=True):
+     except KeyError:
+         return None # if it returns None then, well, it's bollocksed
+ 
+-    prefix = 'yum-'
+-
+     if reuse:
+         # check for /var/tmp/yum-username-* - 
+-        prefix = 'yum-%s-' % username    
++        prefix = '%s%s-' % (prefix, username)
+         dirpath = '%s/%s*' % (tmpdir, prefix)
+         cachedirs = sorted(glob.glob(dirpath))
+         for thisdir in cachedirs:
+@@ -1035,7 +1071,7 @@ def get_uuid(savepath):
          
          return myid
          
@@ -39312,7 +44074,7 @@ index 0f80d7d..4fa5ed9 100644
      """take a filename and decompress it into the same relative location.
         if the file is not compressed just return the file"""
      
-@@ -1066,10 +1067,26 @@ def decompress(filename, dest=None, fn_only=False):
+@@ -1066,10 +1102,26 @@ def decompress(filename, dest=None, fn_only=False):
          ztype = None
      
      if ztype and not fn_only:
@@ -39326,7 +44088,7 @@ index 0f80d7d..4fa5ed9 100644
          
      return out
      
-+def repo_gen_decompress(filename, generated_name):
++def repo_gen_decompress(filename, generated_name, cached=False):
 +    """ This is a wrapper around decompress, where we work out a cached
 +        generated name, and use check_timestamps. filename _must_ be from
 +        a repo. and generated_name is the type of the file. """
@@ -39335,7 +44097,7 @@ index 0f80d7d..4fa5ed9 100644
 +    if not os.path.exists(dest):
 +        os.makedirs(dest, mode=0755)
 +    dest += '/' + generated_name
-+    return decompress(filename, dest=dest, check_timestamps=True)
++    return decompress(filename, dest=dest, check_timestamps=True,fn_only=cached)
      
  def read_in_items_from_dot_dir(thisglob, line_as_list=True):
      """takes a glob of a dir (like /etc/foo.d/*.foo)
@@ -39423,10 +44185,24 @@ 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..093d3c8 100644
+index b5a7d40..6f61fea 100644
 --- a/yum/packages.py
 +++ b/yum/packages.py
-@@ -290,8 +290,9 @@ class PackageObject(object):
+@@ -41,6 +41,13 @@ import urlparse
+ urlparse.uses_fragment.append("media")
+ from urlgrabber.grabber import URLGrabber, URLGrabError
+ 
++try:
++    import xattr
++    if not hasattr(xattr, 'get'):
++        xattr = None # This is a "newer" API.
++except ImportError:
++    xattr = None
++
+ # For verify
+ import pwd
+ import grp
+@@ -290,8 +297,9 @@ class PackageObject(object):
              return False
          if self.pkgtup != other.pkgtup:
              return False
@@ -39438,7 +44214,7 @@ index b5a7d40..093d3c8 100644
          return True
      def __ne__(self, other):
          if not (self == other):
-@@ -805,7 +806,10 @@ class YumAvailablePackage(PackageObject, RpmBase):
+@@ -805,7 +813,10 @@ class YumAvailablePackage(PackageObject, RpmBase):
      def returnHeaderFromPackage(self):
          rpmfile = self.localPkg()
          ts = rpmUtils.transaction.initReadOnlyTransaction()
@@ -39450,7 +44226,7 @@ index b5a7d40..093d3c8 100644
          return hdr
          
      def returnLocalHeader(self):
-@@ -817,9 +821,9 @@ class YumAvailablePackage(PackageObject, RpmBase):
+@@ -817,9 +828,9 @@ class YumAvailablePackage(PackageObject, RpmBase):
                  hlist = rpm.readHeaderListFromFile(self.localHdr())
                  hdr = hlist[0]
              except (rpm.error, IndexError):
@@ -39462,7 +44238,41 @@ index b5a7d40..093d3c8 100644
  
          return hdr
  
-@@ -1571,7 +1575,7 @@ class _RPMVerifyPackageFile(YUMVerifyPackageFile):
+@@ -875,7 +886,32 @@ class YumAvailablePackage(PackageObject, RpmBase):
+         self._verify_local_pkg_cache = nst
+ 
+         return True
+-        
++
++    # See: http://www.freedesktop.org/wiki/CommonExtendedAttributes
++    def _localXattrUrl(self):
++        """ Get the user.xdg.origin.url value from the local pkg. ... if it's
++            present. We cache this so we can access it after the file has been
++            deleted (keepcache=False). """
++
++        if xattr is None:
++            return None
++
++        if hasattr(self, '__cached_localXattrUrl'):
++            return getattr(self, '__cached_localXattrUrl')
++
++        if not self.verifyLocalPkg():
++            return None
++
++        try:
++            ret = xattr.get(self.localPkg(), 'user.xdg.origin.url')
++        except: # Documented to be "EnvironmentError", but make sure
++            return None
++
++        setattr(self, '__cached_localXattrUrl', ret)
++        return ret
++
++    xattr_origin_url = property(lambda x: x._localXattrUrl())
++
+     def prcoPrintable(self, prcoTuple):
+         """convert the prco tuples into a nicer human string"""
+         warnings.warn('prcoPrintable() will go away in a future version of Yum.\n',
+@@ -1571,7 +1607,7 @@ class _RPMVerifyPackageFile(YUMVerifyPackageFile):
          if vflags & _RPMVERIFY_DIGEST:
              self.digest    = (csum_type, filetuple[12])
  
@@ -39547,8 +44357,61 @@ index afc7947..31b1080 100755
                  itemlist = list(item) # frellingsets.
                  if cpeid:
                      tag = """   <distro cpeid="%s">%s</distro>\n""" % (
+diff --git a/yum/repos.py b/yum/repos.py
+index 4b74ac6..4ea4961 100644
+--- a/yum/repos.py
++++ b/yum/repos.py
+@@ -32,9 +32,12 @@ class _wrap_ayum_getKeyForRepo:
+         we have a seperate class).
+         A "better" fix might be to explicitly pass the YumBase instance to
+         the callback ... API change! """
+-    def __init__(self, ayum):
++    def __init__(self, ayum, ca=False):
+         self.ayum = weakref(ayum)
++        self.ca = ca
+     def __call__(self, repo, callback=None):
++        if self.ca:
++            return self.ayum.getCAKeyForRepo(repo, callback)
+         return self.ayum.getKeyForRepo(repo, callback)
+ 
+ class RepoStorage:
+@@ -57,6 +60,7 @@ class RepoStorage:
+         # even quasi-useful
+         # defaults to what is probably sane-ish
+         self.gpg_import_func = _wrap_ayum_getKeyForRepo(ayum)
++        self.gpgca_import_func = _wrap_ayum_getKeyForRepo(ayum, ca=True)
+         self.confirm_func = None
+ 
+         # This allow listEnabled() to be O(1) most of the time.
+@@ -77,7 +81,8 @@ class RepoStorage:
+ 
+         for repo in repos:
+             repo.setup(self.ayum.conf.cache, self.ayum.mediagrabber,
+-                   gpg_import_func = self.gpg_import_func, confirm_func=self.confirm_func)
++                   gpg_import_func = self.gpg_import_func, confirm_func=self.confirm_func,
++                   gpgca_import_func = self.gpgca_import_func)
+             # if we come back from setup NOT enabled then mark as disabled
+             # so nothing else touches us
+             if not repo.enabled:
+@@ -105,6 +110,7 @@ class RepoStorage:
+             repoobj.quick_enable_disable = self.quick_enable_disable
+         else:
+             self._cache_enabled_repos = None
++        repoobj._override_sigchecks = self.ayum._override_sigchecks
+ 
+     def delete(self, repoid):
+         if repoid in self.repos:
+@@ -214,7 +220,7 @@ class RepoStorage:
+         for repo in self.repos.values():
+             repo.old_base_cache_dir = repo.basecachedir
+             repo.basecachedir = cachedir
+-            
++
+ 
+     def setProgressBar(self, obj):
+         """sets the progress bar for downloading files from repos"""
 diff --git a/yum/rpmsack.py b/yum/rpmsack.py
-index ae73c32..2302cf6 100644
+index ae73c32..0982a7c 100644
 --- a/yum/rpmsack.py
 +++ b/yum/rpmsack.py
 @@ -40,6 +40,7 @@ import yum.depsolve
@@ -39718,15 +44581,20 @@ index ae73c32..2302cf6 100644
      def readOnlyTS(self):
          if not self.ts:
              self.ts =  initReadOnlyTransaction(root=self.root)
-@@ -293,6 +407,7 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -293,7 +407,12 @@ class RPMDBPackageSack(PackageSackBase):
          ts = self.readOnlyTS()
          result = {}
          
 +        name = os.path.normpath(name)
          mi = ts.dbMatch('basenames', name)
++        # Note that globs can't be done. As of 4.8.1:
++        #   mi.pattern('basenames', rpm.RPMMIRE_GLOB, name)
++        # ...produces no results.
++
          for hdr in mi:
              if hdr['name'] == 'gpg-pubkey':
-@@ -511,12 +626,38 @@ class RPMDBPackageSack(PackageSackBase):
+                 continue
+@@ -511,12 +630,38 @@ class RPMDBPackageSack(PackageSackBase):
          return pkgobjlist
  
      def _uncached_returnConflictPackages(self):
@@ -39770,7 +44638,7 @@ index ae73c32..2302cf6 100644
          return self._cached_conflicts_data
  
      def _write_conflicts_new(self, pkgs, rpmdbv):
-@@ -543,7 +684,7 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -543,7 +688,7 @@ class RPMDBPackageSack(PackageSackBase):
          misc.unlink_f(self._cachedir + "/version")
          misc.unlink_f(self._cachedir + '/conflicts')
          misc.unlink_f(self._cachedir + '/file-requires')
@@ -39779,7 +44647,7 @@ index ae73c32..2302cf6 100644
          #  We have a couple of options here, we can:
          #
          # . Ignore it and continue - least invasive, least likely to get any
-@@ -627,8 +768,8 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -627,8 +772,8 @@ class RPMDBPackageSack(PackageSackBase):
              data = self._trans_cache_store['file-requires']
              self._write_file_requires(rpmdbv, data)
  
@@ -39790,7 +44658,7 @@ index ae73c32..2302cf6 100644
              self._write_package_checksums(rpmdbv, data)
  
          self._trans_cache_store = {}
-@@ -803,22 +944,23 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -803,22 +948,23 @@ class RPMDBPackageSack(PackageSackBase):
          os.rename(self._cachedir + '/file-requires.tmp',
                    self._cachedir + '/file-requires')
  
@@ -39818,7 +44686,7 @@ index ae73c32..2302cf6 100644
          frpmdbv = fo.readline()
          if not frpmdbv or rpmdbv != frpmdbv[:-1]:
              return
-@@ -837,7 +979,10 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -837,7 +983,10 @@ class RPMDBPackageSack(PackageSackBase):
  
                  T = _read_str(fo)
                  D = _read_str(fo)
@@ -39830,7 +44698,7 @@ index ae73c32..2302cf6 100644
  
              if fo.readline() != '': # Should be EOF
                  return
-@@ -845,7 +990,13 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -845,7 +994,13 @@ class RPMDBPackageSack(PackageSackBase):
              self._deal_with_bad_rpmdbcache("pkg checksums")
              return
  
@@ -39844,7 +44712,7 @@ index ae73c32..2302cf6 100644
              (n, a, e, v, r) = pkgtup
              pkg = self.searchNevra(n, e, v, r, a)
              if not pkg:
-@@ -863,24 +1014,26 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -863,24 +1018,26 @@ class RPMDBPackageSack(PackageSackBase):
          if not self.__cache_rpmdb__:
              return
  
@@ -39875,7 +44743,7 @@ index ae73c32..2302cf6 100644
  
      def _get_cached_simpleVersion_main(self):
          """ Return the cached string of the main rpmdbv. """
-@@ -1046,7 +1199,6 @@ class RPMDBPackageSack(PackageSackBase):
+@@ -1046,7 +1203,6 @@ class RPMDBPackageSack(PackageSackBase):
          if self.auto_close:
              self.ts.close()
  
@@ -39883,7 +44751,7 @@ index ae73c32..2302cf6 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 +1574,10 @@ class RPMDBAdditionalData(object):
+@@ -1422,9 +1578,10 @@ class RPMDBAdditionalData(object):
      # dirs have files per piece of info we're keeping
      #    repoid, install reason, status, blah, (group installed for?), notes?
      
@@ -39895,7 +44763,7 @@ index ae73c32..2302cf6 100644
          self.conf.writable = False
          
          self._packages = {} # pkgid = dir
-@@ -1566,7 +1719,6 @@ class RPMDBAdditionalDataPackage(object):
+@@ -1566,7 +1723,6 @@ class RPMDBAdditionalDataPackage(object):
  
          self._yumdb_cache['attr'][value][2].add(fn)
          self._yumdb_cache[fn] = value
@@ -39903,7 +44771,7 @@ index ae73c32..2302cf6 100644
  
          return True
  
-@@ -1587,6 +1739,11 @@ class RPMDBAdditionalDataPackage(object):
+@@ -1587,6 +1743,11 @@ class RPMDBAdditionalDataPackage(object):
          if attr.endswith('.tmp'):
              raise AttributeError, "Cannot set attribute %s on %s" % (attr, self)
  
@@ -39916,7 +44784,7 @@ index ae73c32..2302cf6 100644
          if self._link_yumdb_cache(fn, value):
              return
 diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
-index 820f003..ed681fb 100644
+index 820f003..8a6f6f3 100644
 --- a/yum/sqlitesack.py
 +++ b/yum/sqlitesack.py
 @@ -845,6 +845,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
@@ -39935,7 +44803,22 @@ index 820f003..ed681fb 100644
          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):
+@@ -930,10 +932,14 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+         # Check to make sure the DB data matches, this should always pass but
+         # we've had weird errors. So check it for a bit.
+         for repo in self.filelistsdb:
++            # Only check each repo. once ... the libguestfs check :).
++            if hasattr(repo, '_checked_filelists_pkgs'):
++                continue
+             pri_pkgs = self._sql_MD_pkg_num('primary',   repo)
+             fil_pkgs = self._sql_MD_pkg_num('filelists', repo)
+             if pri_pkgs != fil_pkgs:
+                 raise Errors.RepoError
++            repo._checked_filelists_pkgs = True
+ 
+         sql_params = []
+         dirname_check = ""
+@@ -1263,7 +1269,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
          return self._search("requires", name, flags, version)
  
      @catchSqliteException
@@ -39944,7 +44827,7 @@ index 820f003..ed681fb 100644
          """return a list of packages matching any of the given names. This is 
             only a match on package name, nothing else"""
          
-@@ -1283,6 +1285,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1283,6 +1289,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
              else:
                  names.append(pkgname)
  
@@ -39953,7 +44836,7 @@ index 820f003..ed681fb 100644
          if not names:
              return returnList
  
-@@ -1290,7 +1294,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1290,7 +1298,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):
@@ -39962,7 +44845,7 @@ index 820f003..ed681fb 100644
              return returnList
  
          pat_sqls = []
-@@ -1304,10 +1308,19 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
+@@ -1304,10 +1312,19 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
              cur = cache.cursor()
              executeSQL(cur, qsql, names)
  
@@ -40313,7 +45196,7 @@ index 9e492ba..83e56c6 100644
          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
+index dd595f0..6a27805 100644
 --- a/yum/yumRepo.py
 +++ b/yum/yumRepo.py
 @@ -1,3 +1,4 @@
@@ -40321,7 +45204,33 @@ index dd595f0..b0e23c6 100644
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 2 of the License, or
-@@ -501,6 +502,8 @@ class YumRepository(Repository, config.RepoConf):
+@@ -254,6 +255,7 @@ class YumRepository(Repository, config.RepoConf):
+                                  # config is very, very old
+         # throw in some stubs for things that will be set by the config class
+         self.basecachedir = ""
++        self.base_persistdir = ""
+         self.cost = 1000
+         self.copy_local = 0
+         # holder for stuff we've grabbed
+@@ -272,6 +274,7 @@ class YumRepository(Repository, config.RepoConf):
+ 
+         # callbacks for gpg key importing and confirmation
+         self.gpg_import_func = None
++        self.gpgca_import_func = None
+         self.confirm_func = None
+ 
+         #  The reason we want to turn this off are things like repoids
+@@ -367,7 +370,8 @@ class YumRepository(Repository, config.RepoConf):
+         # we exclude all vars which start with _ or are in this list:
+         excluded_vars = ('mediafunc', 'sack', 'metalink_data', 'grab', 
+                          'grabfunc', 'repoXML', 'cfg', 'retrieved',
+-                        'mirrorlistparsed', 'gpg_import_func', 'failure_obj',
++                        'mirrorlistparsed', 'gpg_import_func', 
++                        'gpgca_import_func', 'failure_obj',
+                         'callback', 'confirm_func', 'groups_added', 
+                         'interrupt_callback', 'id', 'mirror_failure_obj',
+                         'repo_config_age', 'groupsfilename', 'copy_local', 
+@@ -501,6 +505,8 @@ class YumRepository(Repository, config.RepoConf):
                   'ssl_cert': self.sslclientcert,
                   'ssl_key': self.sslclientkey,
                   'user_agent': default_grabber.opts.user_agent,
@@ -40330,7 +45239,73 @@ index dd595f0..b0e23c6 100644
                   }
          return opts
  
-@@ -1117,6 +1120,7 @@ class YumRepository(Repository, config.RepoConf):
+@@ -538,12 +544,18 @@ class YumRepository(Repository, config.RepoConf):
+         """make the necessary dirs, if possible, raise on failure"""
+ 
+         cachedir = os.path.join(self.basecachedir, self.id)
++        persistdir = os.path.join(self.base_persistdir, self.id)
+         pkgdir = os.path.join(cachedir, 'packages')
+         hdrdir = os.path.join(cachedir, 'headers')
+         self.setAttribute('_dir_setup_cachedir', cachedir)
+         self.setAttribute('_dir_setup_pkgdir', pkgdir)
+         self.setAttribute('_dir_setup_hdrdir', hdrdir)
+-        self.setAttribute('_dir_setup_gpgdir', self.cachedir + '/gpgdir')
++        self.setAttribute('_dir_setup_persistdir', persistdir)
++        ext=''
++        if os.geteuid() != 0:
++            ext = '-ro'
++        self.setAttribute('_dir_setup_gpgdir', persistdir + '/gpgdir' + ext)
++        self.setAttribute('_dir_setup_gpgcadir', persistdir + '/gpgcadir' + ext)
+ 
+         cookie = self.cachedir + '/' + self.metadata_cookie_fn
+         self.setAttribute('_dir_setup_metadata_cookie', cookie)
+@@ -551,6 +563,14 @@ class YumRepository(Repository, config.RepoConf):
+         for dir in [self.cachedir, self.pkgdir]:
+             self._dirSetupMkdir_p(dir)
+ 
++        # persistdir is really root-only but try the make anyway and just
++        # catch the exception
++        for dir in [self.persistdir]:
++            try:
++                self._dirSetupMkdir_p(dir)
++            except Errors.RepoError, e:
++                pass
++                
+         # if we're using a cachedir that's not the system one, copy over these
+         # basic items from the system one
+         self._preload_md_from_system_cache('repomd.xml')
+@@ -580,12 +600,16 @@ class YumRepository(Repository, config.RepoConf):
+             self._dirSetupMkdir_p(val)
+         return ret
+     cachedir = property(lambda self: self._dirGetAttr('cachedir'))
++    persistdir = property(lambda self: self._dirGetAttr('persistdir'))
++
+     pkgdir   = property(lambda self: self._dirGetAttr('pkgdir'),
+                         lambda self, x: self._dirSetAttr('pkgdir', x))
+     hdrdir   = property(lambda self: self._dirGetAttr('hdrdir'),
+                         lambda self, x: self._dirSetAttr('hdrdir', x))
+     gpgdir   = property(lambda self: self._dirGetAttr('gpgdir'),
+                         lambda self, x: self._dirSetAttr('gpgdir', x))
++    gpgcadir   = property(lambda self: self._dirGetAttr('gpgcadir'),  
++                        lambda self, x: self._dirSetAttr('gpgcadir', x))
+     metadata_cookie = property(lambda self: self._dirGetAttr('metadata_cookie'))
+ 
+     def baseurlSetup(self):
+@@ -944,11 +968,12 @@ class YumRepository(Repository, config.RepoConf):
+             fo.close()
+             del fo
+ 
+-    def setup(self, cache, mediafunc = None, gpg_import_func=None, confirm_func=None):
++    def setup(self, cache, mediafunc = None, gpg_import_func=None, confirm_func=None, gpgca_import_func=None):
+         try:
+             self.cache = cache
+             self.mediafunc = mediafunc
+             self.gpg_import_func = gpg_import_func
++            self.gpgca_import_func = gpgca_import_func
+             self.confirm_func = confirm_func
+         except Errors.RepoError, e:
+             raise
+@@ -1117,6 +1142,7 @@ class YumRepository(Repository, config.RepoConf):
          if repoXML.length != repomd.size:
              return False
  
@@ -40338,7 +45313,7 @@ index dd595f0..b0e23c6 100644
          for checksum in repoXML.checksums:
              if checksum not in repomd.chksums:
                  continue
-@@ -1124,11 +1128,11 @@ class YumRepository(Repository, config.RepoConf):
+@@ -1124,11 +1150,11 @@ class YumRepository(Repository, config.RepoConf):
              if repoXML.checksums[checksum] != repomd.chksums[checksum]:
                  return False
  
@@ -40354,7 +45329,7 @@ index dd595f0..b0e23c6 100644
  
      def _checkRepoMetalink(self, repoXML=None, metalink_data=None):
          """ Check the repomd.xml against the metalink data, if we have it. """
-@@ -1312,6 +1316,16 @@ class YumRepository(Repository, config.RepoConf):
+@@ -1312,6 +1338,16 @@ class YumRepository(Repository, config.RepoConf):
                      os.rename(local, local + '.old.tmp')
                      reverts.append(local)
  
@@ -40371,6 +45346,23 @@ index dd595f0..b0e23c6 100644
              if ndata is None: # Doesn't exist in this repo
                  continue
  
+@@ -1420,7 +1456,7 @@ class YumRepository(Repository, config.RepoConf):
+         else:
+             filepath = fo
+ 
+-        if self.repo_gpgcheck:
++        if self.repo_gpgcheck and not self._override_sigchecks:
+ 
+             if misc.gpgme is None:
+                 raise URLGrabError(-1, 'pygpgme is not working so repomd.xml can not be verified for %s' % (self))
+@@ -1437,7 +1473,6 @@ class YumRepository(Repository, config.RepoConf):
+                                        size=102400)
+             except URLGrabError, e:
+                 raise URLGrabError(-1, 'Error finding signature for repomd.xml for %s: %s' % (self, e))
+-
+             valid = misc.valid_detached_sig(result, filepath, self.gpgdir)
+             if not valid and self.gpg_import_func:
+                 try:
 diff --git a/yumcommands.py b/yumcommands.py
 index a7f5d9e..ecce347 100644
 --- a/yumcommands.py
@@ -40602,10 +45594,52 @@ index a7f5d9e..ecce347 100644
 +        return True
 +
 diff --git a/yummain.py b/yummain.py
-index 95c7462..0241684 100755
+index 95c7462..c64b140 100755
 --- a/yummain.py
 +++ b/yummain.py
-@@ -101,8 +101,10 @@ def main(args):
+@@ -31,7 +31,7 @@ from yum import _
+ from yum.i18n import to_unicode, utf8_width
+ import yum.misc
+ import cli
+-from utils import suppress_keyboard_interrupt_message, show_lock_owner
++from utils import suppress_keyboard_interrupt_message, show_lock_owner, exception2msg
+ 
+ def main(args):
+     """This does all the real work"""
+@@ -47,7 +47,7 @@ def main(args):
+         if e.errno == 32:
+             logger.critical(_('\n\nExiting on Broken Pipe'))
+         else:
+-            logger.critical(_('\n\n%s') % str(e))
++            logger.critical(_('\n\n%s') % exception2msg(e))
+         if unlock(): return 200
+         return 1
+ 
+@@ -56,14 +56,14 @@ def main(args):
+ 
+         Log the plugin's exit message if one was supplied.
+         ''' # ' xemacs hack
+-        exitmsg = str(e)
++        exitmsg = exception2msg(e)
+         if exitmsg:
+             logger.warn('\n\n%s', exitmsg)
+         if unlock(): return 200
+         return 1
+ 
+     def exFatal(e):
+-        logger.critical('\n\n%s', to_unicode(e.value))
++        logger.critical('\n\n%s', exception2msg(e.value))
+         if unlock(): return 200
+         return 1
+ 
+@@ -96,13 +96,15 @@ def main(args):
+         try:
+             base.doLock()
+         except Errors.LockError, e:
+-            if "%s" %(e.msg,) != lockerr:
+-                lockerr = "%s" %(e.msg,)
++            if exception2msg(e) != lockerr:
++                lockerr = exception2msg(e)
                  logger.critical(lockerr)
              if not base.conf.exit_on_lock:
                  logger.critical(_("Another app is currently holding the yum lock; waiting for it to exit..."))
@@ -40618,6 +45652,24 @@ index 95c7462..0241684 100755
              else:
                  logger.critical(_("Another app is currently holding the yum lock; exiting as configured by exit_on_lock"))
                  return 1
+@@ -115,7 +117,7 @@ def main(args):
+         return exPluginExit(e)
+     except Errors.YumBaseError, e:
+         result = 1
+-        resultmsgs = [unicode(e)]
++        resultmsgs = [exception2msg(e)]
+     except KeyboardInterrupt:
+         return exUserCancel()
+     except IOError, e:
+@@ -156,7 +158,7 @@ def main(args):
+         return exPluginExit(e)
+     except Errors.YumBaseError, e:
+         result = 1
+-        resultmsgs = [unicode(e)]
++        resultmsgs = [exception2msg(e)]
+     except KeyboardInterrupt:
+         return exUserCancel()
+     except IOError, e:
 @@ -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"))
diff --git a/yum.spec b/yum.spec
index a25f7bf..28341d2 100644
--- a/yum.spec
+++ b/yum.spec
@@ -7,7 +7,7 @@
 Summary: RPM installer/updater
 Name: yum
 Version: 3.2.28
-Release: 14%{?dist}
+Release: 15%{?dist}
 License: GPLv2+
 Group: System Environment/Base
 Source0: http://yum.baseurl.org/download/3.2/%{name}-%{version}.tar.gz
@@ -179,6 +179,10 @@ rm -rf $RPM_BUILD_ROOT
 %dir %{yum_pluginsshare}
 
 %changelog
+* Tue Jan  4 2011 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-15
+- latest head
+- conflicts zif
+
 * Thu Nov 11 2010 James Antill <james at fedoraproject.org> - 3.2.28-14
 - latest head
 - Perf. fixes/improvements.


More information about the scm-commits mailing list